- Hello, YouTube.
Hello, James.
- Michael, thank you for having me.
- Yeah, it's great to be here.
Are you ready to kick this podcast off?
- Let's do it.
- All right, awesome.
People out there watching, please throw in some questions,
comments, feedback in the live chat.
If you're watching later, well, there is no live chat
'cause it's in the past, but thanks for watching anyway.
All right, James, welcome to Talk Bythonomy.
- Yeah, no, thank you so much for having us.
I'm looking forward to the next hour or so.
- Yeah, so am I.
I ran across OpenBB not too long ago.
I talked about it on my other podcast,
Python Bytes, I do with Brian Okken.
We cover like interesting projects and news and whatnot.
I'm like, dang, this thing is,
this thing is loaded with the Python data science stack.
And on top of that, it's a newly,
really successful open source project
in the sort of business VC space as well.
So congratulations on building a project and on that.
And I think people are gonna be pretty fascinated
to hear the story behind it.
- Yeah, thank you so much.
- Yeah, you bet.
Before we get to the story of OpenBB,
let's get to the story of James.
How'd you get into programming Python?
- So I've only been in Python for a couple years.
My background, I'm, along with OpenBB,
I'm a PhD student at University of Maryland Physics.
Got into Python when I was getting bored of MATLAB.
So started taking an interest
in some machine learning, data science.
Python seemed to be the way to go.
It was super straightforward.
A lot of similarities with MATLAB,
especially NumPy, PyPlot.
So it was straightforward, never looked back.
- That's awesome.
Yeah, the Jupyter side, data science side of Python
is quite similar to MATLAB.
Although it's a slightly cleaner language,
starts with zero, not one on the indexes.
- It does.
And MATLAB, their attempt at Jupyter
is not exactly where Jupyter is yet.
- So they had a head start, right?
I mean, MATLAB predates Jupyter by a long ways.
- Yeah, well, their live editor is only a couple years old.
- Okay.
- Or at least a couple years old to me.
- Yeah, yeah, sure.
It probably is.
My last experience with MATLAB was
when I was in grad school as well,
which has been a while.
So it's a little bit back there.
Awesome.
Well, that sounds like really fun.
I guess you started playing with Jupyter
and the various data science tools for physics, right?
Not for finance.
- Correct.
Correct.
It was, you know, NumPy, all that fun stuff
for doing some physics, SciPy calculations.
- I did go right into the machine learning Kaggle
fantastic exercise, really actually my first dive
into Python, I love doing these NFL challenges
that they have every year.
So that was where I first fell in love
with the language, if you will.
- The NFL's challenge sounds really interesting.
I've seen some Kaggle challenges
and done other similar type of challenges,
but I'm not familiar with this one, tell us about it.
- So every year it seems like they,
actually they have a couple as far as I know.
they usually do like an analytics one
where you got to present some kind of notebook
and then a numeric one,
think of you're watching Sunday football AWS,
which actually if you got my bills flag in the background.
So this particular one that I started on,
you were looking at,
you were given the information at a given point in time
and you were to estimate using whatever machine learning,
not machine learning, how far the runner would go.
And so that was a great introduction,
Voronoi regions and decision trees, all that fun stuff.
- I think those kinds of challenges are really interesting
because they don't require you to be
developer or code enthusiasts.
You can just be excited about football
and it could drag you into programming
instead of the other way around.
- Yeah, actually the way that I did it,
And I don't think I did, I didn't do too great on the challenge, you know, no medals or anything,
but I actually treated it as a physics problem as a, all the players as a gas particles and
this fun, fun stuff.
So there really wasn't any machine learning there.
Yeah.
But interesting.
And just sidebar, I gotta say the Chiefs, Bills, I'm a Chiefs fan, grew up in Kent City.
Gotta say that was one, that's probably the best game of all last year out of all the
games.
That was, that's the best game of all time.
I mean, I mean, maybe not a little painful if you're on the bill side, but wow, what
an insane game.
All right.
I don't want to make it a football show, but boy, that was, that was the highlight of the
entire year.
I think actually, well, low light, low light on my side.
Yeah.
Cause for those who don't know, basically the, the chiefs came back and beat the bills
in the last like minute and a half in some insane way, which is unfortunate, but it was
really exciting.
All right.
Final, final background question.
What kind of physics did you study?
- So I do atomic, molecular, and optical,
particularly cold atoms and optical lattices,
Fouquet periodically driving, this kind of stuff.
- Cool, that sounds awesome.
All right, well, let's talk about this,
the space of these things, this thing you've created here.
So what you've created is something called OpenBB,
which described as the most affordable,
advanced, open, customizable investment research platform.
And to me, from the outside,
not having a ton of experience,
this looks like maybe a competitor to a Bloomberg terminal,
which I hear is required basically
if you're a stock trader, an investor,
that's doing sort of real-time interaction with the market.
Yeah, yeah, so, I do have to take a step back as well and say that
uh, the
founder of this program, or this project didier
Um, you know, he's the one with the real insight. I was just lucky enough to join on early
Um to build a lot of this with him. he spent his christmas, uh coding this and you know
from there, but but to but to talk a little bit about it, yeah, so the
I don't like to call us a Bloomberg competitor.
You know, Bloomberg has been in the game for quite a long time.
They're very advanced.
They have all the markets and whatnot.
Sure.
But people will say, well, do you have this one feature?
Well, then we can't.
You know, I guess it's not like a competitor because it has that other.
Yeah, sure.
But from a really high level perspective, it kind of is in that realm, right?
Right, right, right.
At a high level, yes.
We're trying to achieve a lot of the same goals, right?
Investment research.
That's free.
Open source.
and available to anyone.
We want to target the people who can't drop 25 grand a year
for the terminal.
- Yeah.
Well, what's interesting to me,
what struck me about this is it's not just,
here's an open source version,
or here's a free version,
or a cheaper version that would be something of a stand-in
for that type of thing.
but here is something that is from the ground up
embracing all of these data science tools
and libraries from the Python space.
So to me, this looks like a completely customizable,
programmable, extendable thing
for people who have Python skills.
And in that way, it's massively better
than a lot of these commercial projects, right?
- That's exactly it, right?
So Bloomberg is the big name in this space.
You got your icons, your refinitives.
There's a lot of great other tools.
You got coinfinmoney.net terminals out there.
But none of them provide the level of customization
and open source that we do.
As you said, it's super Python based.
The reason we chose Python is that's up and coming.
Everyone in data science seems to be learning it.
Finance is very embedded in Excel.
And there's some shift towards more Python learning
in the space.
So doing this in Python, as you said,
is super customizable.
You can do it the way, you know,
you can add on very easily, fork it, add on a feature,
add on your own datasets, and pretty user-friendly.
- Yeah, absolutely.
You know, just to sort of back up what you're saying,
pre-COVID, I was hired by an investment firm
to actually spend time with their day traders.
And it was weird because they're like,
well, they can't be away from their desk
when the market is open.
So this class has to start at 4.30 or 5 p.m.
and then go for a little afterwards.
So it was an interesting setup, but it was just that.
It was a bunch of traders who were using Excel
to try to figure out how well they were doing.
And then a couple of people on the team were like,
we have to learn Python, we have to get better tools.
So I went and helped them learn Python
so that they could stop using Excel and start using Python.
It's absolutely where a lot of this momentum is going.
- Yeah, and I think that they complement each other
very well, you know, pandas.
I don't think anyone can say enough
about how great pandas is.
You know, you can enter in all of your,
whatever your trades are, whatever your research is,
and it's right in a Jupyter notebook in one line.
- Yeah, yeah, absolutely.
Not to say stop using it,
but there's a ton of stuff happening
in the financial space around Python.
And I do believe that Pandas actually came out
of investment out of Wall Street.
I'm not 100% sure, but I think that's the history.
So let's start with open source, right?
So we could go to the website.
Your website is openbb.co, fan of the .co.
We don't need that M.
But we can go over to GitHub here and there it is.
we can fork it, do whatever we want.
Let's see, what is your license?
It's MIT, which is like go crazy sort of thing, right?
- Yeah, we're permissive.
Feel free to do whatever you want with it.
- Yeah, it's really nice.
Even commercial uses the MIT license has.
But what stood out most to me
when I thought, oh, this is really interesting.
And then I looked at this, I'm like,
oh, this actually has a lot of momentum here.
is you've got 12,000 stars and 1.3 thousand forks, right?
That's a lot for any project.
I mean, we're on par with some of the big web frameworks
not long ago and stuff like that.
You all must be really happy with the uptake
that it's getting.
- Yeah, the community response has been overwhelming.
When I joined on, it was a couple thousand stars.
Didier and I, you know, we've fired up Discord.
We were hitting Reddit with posts weekly, monthly,
and it took very well.
People were very excited and we're super thankful
for the community that's gotten us to where we are.
- Yeah.
I guess one thing I would maybe,
that's not what I was hoping to happen.
I guess one thing I maybe would like to see possibly,
I think what would be really fun
is maybe you could just talk us through
what the experience of using this is,
because it's an unusual UI.
And I don't mean that like, oh, it's weird,
but it's just, it's not a webpage.
It's not a Jupyter notebook.
It's, imagine pretty much exactly opening up iTerm
or terminal.
- Yeah, it's a terminal.
- And it's weird in like, in very much the sense
that it's as a terminal,
it means it runs as a Tui,
a text-based user interface type thing.
But then as you do reports and interact with it
through a CLI style or almost of a IPython style experience,
it pops up windows of really beautiful interactive graphs,
the various things you're asking for.
Can you give people a sense of what it's like to use?
What's the user experience there?
Yeah, so the terminal is a command line interface tool.
So you open it, you launch it, python terminal.py,
and you're presented with a list of choices.
So we call these contexts.
That's either going to be your stocks or your crypto ETFs.
We provide a lot of data.
And in order to access these, you type in.
It's one of these old video games
where you got to type in what you want.
So if you want to go into stocks, you type in stocks,
and then you're presented with a new menu.
So you hit it exactly how it is, that it's completely textual.
All of our commands have additional options flags
as well.
Our documentation for some of these functions
is listed on our GitHub page.
We're trying to really enhance the user experience in terms
of guides and documentation, since we
do know that this is a very unusual user experience.
As you said, it's not a website.
There's nothing to click.
It's all textual-based, which we understand is going to be--
not everyone using this product is
going to be familiar with the command line interface.
And our team, we actually like to call it hacker man,
because you feel like you're using it.
doing your financial research, you feel kind of hackery.
- Yeah, absolutely.
You're just, you're typing away stuff is streaming by,
you know, it's so funny to have normal people
who are not coders watch people doing stuff with terminals,
especially if there's colors.
They think something nefarious is going on
or something crazy is going on.
'Cause that's how it's always represented for hackers.
I remember somebody asked me at a coffee shop,
I had like five terminal windows all running scripts
with stuff scrolling by.
Like, are you trying to hack the coffee shop?
Like, no, I'm just working.
Don't interrupt me, please.
I'm not hacking anyone, leave me alone.
Yeah, it kind of has that feel, right?
But it also, something that I think that speaks to
is like the seriousness and the real,
like this is for people who are trying to do real work.
It doesn't come up and just go,
like here's some buttons you can click and it's flashy.
It's like, you gotta get in there,
focus on the various aspects,
whether you're doing stocks or whatever it is
and learn the commands,
but then you should be able to fly through it, right?
- Yeah, and we actually,
one of the things that we spent a little bit of time on
earlier this year was making it
so that you can actually chain commands, right?
You can, if you know what your workflow is,
you can either run it through a script,
so you can basically go into the terminal,
set up what we call an OpenBB file.
You know, every morning what you do,
you go, you do stocks, you look at, I don't know,
the top gainers, and then you look at
what Apple's volume was yesterday.
You can put this all in a script, run it,
go fire up your coffee, come back,
and you've got all your graphs,
you've got all of your tables,
and really simplifying the workflow.
And then when you're done with that,
if you forgot something in one line,
you know what it is, you can type in,
you can do a backslash stocks,
load in your ticker and whatever you want.
So as you said, once you know the terminal,
it's really easy to hop around.
- Yeah, that's awesome.
Now, before we talk about some of the features
and some of the things you can do,
because I think I'll point people
to the right part on your website,
but once you see what you've got here,
it's like, wow, this has a bunch
of great visualizations and so on.
But let's just talk about some of the Python libraries
that are available.
It sounds like a lot of the big hitters
from the data science and machine learning space are there?
- Very much so, right?
So the number one library we pretty much use
is gonna be requests.
You know, we're hitting APIs,
turning those into data frames,
you know, reading HTMLs, displaying.
Yeah, so.
- All right, before we move on from requests,
because a request is a very cool library,
but it also opens up the question of
where does requests go?
Like it looks like there's tons of real-time data here.
And I know that financial data,
especially in the real-time variation
can be tricky to get ahold of,
or maybe not tricky, but requires money.
- This is a very good--
- That's some variant of tricky, isn't it?
- That is, and actually you do raise a very good point.
So in the terminal, we do provide different endpoints
for different sources.
So for example, if you want to load in stocks,
you can either go from Yahoo Finance,
you can go from an Alpha Vantage,
or you can go from Polygon or IEX Cloud.
All of these require your own API key.
So in order to-- part of the onboarding into the terminal
is to explore all the data sources we have available.
Go get your API keys.
And we do have--
we try to keep it free, but we are
starting to incorporate some more kind of paid,
you know, endpoints that can be paid.
- Right, right.
So if somebody already has a subscription
to some data source,
why not let them integrate that, right?
- Exactly, that's exactly it.
- Okay.
- So we're not, you know,
we're not distributing any of the data.
We're just basically providing the tools
for you to access it.
- Got it.
Yeah, that sounds really neat.
Is there some web scraping, some beautiful soup,
Or is it all APIs?
- There is, so we try to keep it to APIs.
- They're more stable.
- Yeah, you never know what tag's gonna change.
But yeah, Beautiful Soup is in there, right?
Beautiful Soup's a great library.
There is web scraping, yeah.
- Yeah, I figured, you know, like,
sometimes that's just how it works, right?
Sometimes people don't have APIs,
but they've got websites, which is kind of--
- They do. - A cumbersome API
if you go to it.
I've also become a fan of pandas.
Just you can, pandas will do all that for you
and do the scraping for you with their read HTML
if you just type in a link.
- Oh, yeah.
I was blown away.
Chris Moffett did a course for TalkBython
on replacing Excel with pandas and stuff.
And some of the things you can do
to get data off the internet with pandas.
I'm like, why don't I just do this?
This is so much better.
you can put it in a webpage that might have
a whole bunch of text and images
and somewhere in there is a table,
could be multiple tables,
you can say, go to the third table
and get me that as a data frame and bam.
Like evil and beautiful soup,
there's a lot of steps to get to a parsed data frame
with header values.
- Yeah, pandas is fantastic and that's a lot of requests,
a lot of pandas, a lot of soup.
- Yeah, awesome.
Okay, so I sort of derailed your conversation
but one of the things that first came to mind is like,
okay, this is open source.
Where is it getting all this interesting data from?
So thanks for some of the story there.
What else?
What other major libraries are at play here?
- So all of our plotting right now is through PyPlot.
We have--
- Okay.
When people see those, when you're in the terminal
and you ask for some kind of visualization,
it pops up with that interactive window.
Those are PyPlots?
- Yes.
- Okay. - So, PyPlots,
all the styling is done in-house.
We have a fantastic designer, fantastic engineer,
did a great job of doing some style sheets.
- Yeah.
Yeah, it really does look quite strikingly nice, so.
Awesome. - Yeah, and all of these
are, as we like to say, it's customizable.
All these style sheets are available to the end user.
They're packaged right into the terminal.
You can go through, if you don't like our blue,
you can change that to green.
- Uh-huh, okay.
- Yeah, you've got machine learning,
PyTorch, TensorFlow, SKLearn.
- So PyTorch is a tricky subject for us
because it's tough to bundle into an installer.
Currently we have some Keras models built in.
You do have to install that, right,
'cause TensorFlow's a pretty big library.
We are working on incorporating
the open source in Dart's library,
which is PyTorch based.
And that'll also allow for, you know,
flares like an example of an NLP model
that's deep learning based,
you know, talking about machine learning,
you know, we do also have NLP models using Vader sentiment.
- Oh, interesting.
Because if you could say,
what is the sentiment on Twitter?
Or what is it on, you know, the news sites?
Maybe that's going to affect.
- Yeah, so that's actually something we had done.
You can actually try to do some correlation
with beta sentiment on news headlines
from one of our data providers,
and we'll actually throw that on the same chart
as the price, as the stock price.
- Yeah, okay.
Super cool.
All right, now before I was gonna ask you
about how to like sort of do your,
add your own extras to it,
but let's actually go and just talk about
some more of the visualizations
and some of the pictures,
on the graphs that you guys,
types of questions you can answer basically.
Okay. - Yeah, of course.
- Yeah, so you can get it through a Windows
or a macOS installer.
Are you doing something like using Pi to app
or Pi to EXE or Pi installer or something like that
to try to bundle all up or is it just sort of a scripted--
- We bundle with Pi installer.
- Pi installer, okay.
- Yes, so we use Pi installer,
by we, I mean our engineering team.
That's a little above my ability there.
And yeah, so we are in the process
of getting this signed through Apple
and I believe Windows came through today.
So at the end of the week--
- You don't get the yellow,
do you wanna let this happen?
You get the just a regular, do you wanna let this happen?
- Yes.
- UAC dialogue in Windows
and you'll get something similar in Mac.
- Yes, and the reason we have this installer
is we understand the end user is not necessarily
gonna be someone that wants to go through
and change all the Python.
- Sure, well, it's awesome that it is Python
and that people could do it,
but it's certainly not intended just for Python people.
It's intended for investors who may or may not be.
- And we have, I don't wanna give an accurate,
but we've got what, almost 200 dependencies.
So, and everyone's machine acts differently.
You do a GIF pull and then you run poetry install,
Maybe it acts differently on everyone's machine.
So we wanted to provide this option for folks
to be able to just click a button and have it right there.
- Well, I think it's great.
And that is ideally how software should be delivered.
You shouldn't have to build it and download all the pieces.
You just go, here's the thing I click.
I put it there and now it runs.
But it's often not how it is distributed.
I guess just calling out two other ways people get it.
they can go to Anaconda and get it there.
And you can also do a Docker type of thing, right?
If you want, but.
- Yeah.
- Yeah, cool.
- For developers, if you wanna, you know,
you can do a Git pull with your content environment for Git,
feel free to change it.
We're always open to any pull requests.
- Awesome.
All right, so let's maybe talk through some of the things
that I can do, and then we'll talk about
some of the internals.
So you mentioned that there's this whole stock section
and I just totally encourage people to come over
to openbb.co/products/terminal
and then you sort of just scroll through here
and you get a bunch of cool visualizations.
You'll see why I was impressed, I think.
So here's like you come up and say,
I want the Qsum, I guess the cumulative sum
as a sequential analysis technique
that shows any sort of cumulative function
applied to something like a stock price over time or whatever.
- So this is just an example.
So if you go into stocks and just for everyone listening,
we're going through the website right now.
And the first thing you'll see on our stocks,
on our product, on our terminal product page under stocks,
is this QSUM.
And for example, you would load in whatever your ticker is,
and this would be found under quantitative analysis.
So stocks load in Apple, and then you'd type in QA,
and then you'd have all these options.
QSUM is one of them.
And this is a time series, like you said there,
it's a time series technique of detecting anomalies,
if you will.
- Yeah, you got little call outs of those events and so on.
You've got 3D graphs of volatility surfaces
for in this case for Apple.
- Yep, volatility surface, you know, they're big,
everyone loves their volatility smiles.
And so, you can show the implied volatility
as a function of time to expiration and strike price.
- And I guess because these are, do you say Plotly?
I'm sorry, I forgot that.
- So we have some-- - Pipe lots, we said.
- We use Pipe lot. - Okay.
- Plotly, I think, so I've kind of,
early on I did some plots in Plotly
and there may be some laying around that,
the interactivity of Plotly is very nice.
- Right, so what I was gonna say is when these pop up
with the Piplot stuff, you can basically explore the graphs
just because it's like the nature of those tools, right?
- Yeah, Piplot has a, what is it, plt.ion
that'll allow you to use the interactive.
So you'll pop up, you'll be able to zoom or pan
with the usual buttons in the window.
- Okay, let's, you mentioned the sentiment.
So there's sentiment news.
- Instantly correlating article headline sentiment
through NLP models with historical price.
Yeah.
- Yeah, so for this example, yeah.
This example, this applies a Vader sentiment, right?
Which is basically just a rules mapping to certain words
to give you a sentiment score.
And you can see the stock price on the same chart
as from the headlines from our given source.
- Super cool.
All right, yeah.
So all these nice different visualizations and so on here,
maybe talk us through what,
so to get these cool things generated
by the Python libraries,
what is my experience as somebody sitting
at the terminal CLI?
Like how do I pull up, say, the sentiment news thing
or the QSUM or so on?
- Right.
So as I mentioned, once you launch the terminal,
you either use the installer, two clicks and it's up,
or you run Python terminal.py
and you're provided with some options.
The first thing you wanna do, let's say,
for example, we're doing this QSUM that's up right here.
You would type into the command line interface,
you would type in stocks.
- Okay, yeah, and it kind of puts it into the stocks mode
where different subcommands apply or something, right?
- Yep, and then once you have there,
you'll have a bunch of different menus.
You can look at fundamental analysis,
you can look at technical analysis,
you can do due diligence.
we've got a bunch of menus on there.
So you would load in your relevant ticker.
So you'd either do load Apple,
or we do have some, if you have the feature flag enabled,
if you just type in Apple, or A-A-P-L, it'll load in.
So once you have that ticker loaded in,
it does a pandas data frame in memory.
So from there, we can pass it to the different functions.
And for this particular one, to do the quantitative analysis,
I would then type in QA.
So when you're on the Stocks menu,
you would-- you can type H for help,
or you can do a question mark, and it'll parse that.
And you'd see QA, quantitative analysis,
with a couple of examples of what you can do there.
And then once you go into that menu,
it would pop up with different functions.
And you would type in the function you want.
If there's arguments, maybe there's
Windows or exporting data, you would just type in -help and you'll get a pop-up of the
usage and the optional arguments.
And you would type in QSUM with whatever your arguments are and you would get this plot.
Nice.
All right.
That's very cool to hear how that sort of flows through there.
All right.
What else?
Got a bunch of stuff on crypto, like you've got Bitcoin rainbow charts, which I've never
seen but...
- That's fun.
- Interesting.
Yeah, just a bunch of open interest by exchange,
different exchanges, how much traffic there is,
things like that.
It's pretty awesome.
The ETFs, let's see.
Some of these are coming up as just almost like,
some of them even come up almost like a report.
You've got an Excel report and you've got,
- Yeah, so actually the ETFs.
- It's like a train station looking,
Like here's the incoming information or whatever, right?
- Yeah, and actually, 'cause for example,
this ETF Excel report is a third party or third,
so one of our contributors has their own database.
It's the author of the finance database
and he has this workbook.
It loads in an ETF and it basically does
what you see on the screen there.
And it pops up in an Excel.
- Yeah, it pops this up in an Excel workbook.
We do have another feature that's DCF.
Someone who was working on their MBA at the time said,
"Hey, you guys provide the data.
"I need to do a DCF analysis."
And so we coded it up, and now we have a DCF analysis tool
that uses some linear regression in the terminal,
and it all saves to an Excel file.
- That's cool.
And the fact that it goes out to Excel,
that means you could hand it off to somebody
who just lives in Excel and they can still use that, right?
- Exactly.
So, you know, we don't want to completely replace Excel
because we know it's very widely used, but.
- Yeah, but hook into all these different data sources,
real-time data sources and pulling it together,
like that's not Excel's forte.
- Yeah, yeah, that's why.
- That's why I should be doing it for everything.
- Yeah, okay, so you've got sort of
technical analysis stuff,
you can compare different stocks
and even check out the news over for the ETF.
- Yeah, we do have over, well, I don't wanna say over,
we're sitting around 700 different functionalities.
So we do understand it can be slightly
intimidating at first.
- Yeah, that was my feeling as well
when I first saw this is like, wow,
this is pretty intense.
There's a lot going on.
You have to be an expert, which is what I was talking about at the beginning.
You get into the terminal and you've got to really become an expert, but then you get
this really great quick power to do it.
But I would also imagine you're probably not doing stocks, crypto, ETF, economic analysis,
all the same.
You're probably focused on one of these areas, right?
If you narrow it down, it probably gets more doable as you go.
And I mean, you know, maybe you're trying, one of the things, for example, we have this
econometrics menu, which, you know, one of our target audiences is kind of the academics
and in your econometrics course, right?
That's basically a linear regression of certain things.
So maybe you want to look at the effect of a company's balance sheet on and relate that
to inflation, I don't know, inflation is a hot topic.
And you can actually go in into the econometrics menu,
load in both of these and do your preferred
regression techniques and get some insights.
- Oh, that's cool.
You know, thinking about education,
that's a big opportunity for you all, right?
- It is.
- People, students are gonna be buying Bloomberg terminals
and other commercial things most likely, right?
Not the high-end ones anyway.
- Yeah.
Here's a really simple way that you could actually,
if you're a teacher teaching economics
or finance or investing,
here's something you could bring into your class
as a resource and really analyze it, right?
When your projects could be, okay, pick a stock.
These are the questions we have,
back it up with the other data that you can find
through these other areas and make predictions, right?
- Exactly, that's one thing we love.
some of our some of the people we talk with their experiences for their courses, they have they have
assignments that they need to do use the one Bloomberg terminal that they have among 30
students. So they're queued up for, you know, an hour or two, just just to get basically the same
data, if you will. And, you know, we, that's one of the things we pain points we'd like to address
is everyone can have this on their machine and get the data they need and do the analysis they want
- Sure, I don't think it would be a very detailed thing,
but it would be also interesting that the professor
or the instructor could say, look here in the source code,
these four lines of code, this is showing,
this is where it's doing that theory
we talked about last week.
Like here's how it's applying this model.
And I don't expect you to totally understand the code,
but like you can see this is how software does it.
You know, you could have a little bit more insight,
whereas a lot of the commercial things,
through a website for sure.
But even if they're just compiled closed source,
- Yeah.
- You won't be able to do that.
- We had a contributor reach out to us,
part of the from Greece,
part of their software business course
was to submit a pull request somewhere.
So he reached out to us,
he did a nice little report.
He did a pull request,
added a feature to the terminal.
So you know, using the theory in class there.
Another professor reached out to us,
he had his students write a kind of an intro guide
for us that we're kind of working with
and we're gonna make available.
- Okay, awesome.
Yeah, the intro guide for OpenBB for his students
or something like that, yeah.
- Yeah.
- Yeah, nice.
All right, let me just sort of skim through here.
There's a, you said 700 people.
I'm not so sure I wanna touch on all of them,
but every single one of them you come to,
almost like some of them are just sort of tables,
But so many of them, like this portfolio optimization,
you know, it's beautiful, it looks really good.
And--
- Thanks, we have a lot and the pipeline's really good.
The rainbow chart's always a fun one.
It's, you know, it's really pretty.
- Yeah, I like it a lot.
These are great.
So I just, to me, it feels like something
if I were working, doing this kind of stuff,
it would be pleasing to sit down
and look at these graphs and this analysis rather than,
oh, well, there's just some software you look at,
like it does the job, but it doesn't make you feel good
using it while it's doing the job.
- Yeah.
- Battleship gray or I don't know, something like that.
- And also, like I mentioned too,
you can customize the colors,
even if you wanna change the terminal colors.
When you launch our terminal,
you'll see some blues and reds.
If you want it to be orange and green,
you can go in and change it, it's fully customizable.
- Cool.
So there's a Jupyter section as well.
- There is?
- Yeah, tell us about the Jupyter section.
I think that's a super big tie-in for iGN people.
- Yeah, so there's two ways you can really
make the most out of Jupyter.
The first way is we've started kind of building
an API wrapper for a lot of our functions.
So one thing we haven't gone into is a little bit the architecture.
And we use like an MVC model view controller
where all these plots are generated in the view,
and we can wrap that into an API and you can import that.
So in Jupyter, if your workflow is X, Y, and Z,
in the terminal, you can, from OpenBB terminal,
import the API as whatever, as OpenBB.
OpenBB, Vue, Vue Stock, Apple, whatever,
however that works.
And you can create your workflows there.
One other--
- You get a plot back and you just plot.show
or just like empty one line and it goes on there, yeah?
- Yeah, I mean, you do an inline,
you can also do, you can adjust it, right?
So we'll wrap, the API wraps our load function.
So you can load in your stock and, you know,
maybe you want to resample it
or maybe you want to make your own machine learning model
or whatever you want to do, you can do that with the API.
Another interesting thing is that we use Paper Mill
to automatically run some reports.
So the example in the terminal,
there's a default example called equity.ipy notebook.
And if you go into the terminal,
so once it launches, you go to the reports menu,
just by typing reports,
you type in equity, Apple, or whatever your ticker is,
it'll run through paper mill,
which automatically fills in your ticker,
whatnot generates a predefined PDF basically
with it's fully customizable.
We have some fun widgets that you can play around with.
And you can add KPIs.
Hey, if, I don't know, if the RSI is high
or if insider trading is low,
I think those are some of the examples.
So you can create your own custom notebooks
and kind of automate your research workflow.
- That's, yeah, that's super interesting.
I haven't spoken about Paper Mill for a while in here,
but it's a really interesting project,
I think from the Netflix team, right?
- I have no idea.
- Yeah, I think so.
Maybe tell people just a bit about
about what the whole purpose of paper millage, what it is.
- So, what we use paper mill for
is to basically just automatically
execute a notebook template.
So there's, you kind of have to go a little bit
into the metadata of the Jupyter notebook
and there's a cell that has like parameters
and by the terminal, we can parse what the argument is.
You know, for example, the ticker.
And basically all the same commands will be run
just replacing the ticker with whatever is executed.
So paper mill is just a really nice,
very, very great tool at wrapping Jupyter.
- It turns notebooks almost into functions
that you can call, but the output is the notebook
in the form that has the results,
the intermediate results and the pictures and everything,
not just the answer like a function would have.
- Yep, you get the whole notebook
and you know you can customize it, PDF, HTML,
you can send it to your buddies.
- Yeah, well, you touched on the architecture a bit.
Maybe we could dive into that just a little bit more.
What are some of the notable things about how this is built?
- Yeah, so as I kind of hinted at,
actually specifically said,
our code is, we use an MVC structure,
so Model View Controller.
So how this goes, and for example,
every submenu will have a controller,
and we have abstracted that,
so that there's a base controller
and a base docs controller
that inherit all the same methods,
save ourselves a little bit of redundancy.
- So there's controllers like parsing and processing
the commands you send in the terminal CLI.
- Yes, so something I failed to mention
was that we use arg parse.
- Yeah.
So the controller wraps in, it basically takes in,
it creates an argparse object, adds the arguments,
and then does the parsing, makes sure that if I type in,
if I try to load a stock ticker that's four,
not an actual ticker, if I try to enter a number,
it'll say, "Hey, you need to be a ticker,"
it does some of the logic.
Our model functions get the data,
transfer the data, edit the data,
modify it, manipulate it in certain ways.
And then the views do either tables, graphs.
So, for example, if you wanted,
if you look at how we do our fundamental analysis,
the workflow is the controller has income
and the way we do it, the function is called callIncome.
We just kind of add this call underscore
to whatever you type into the terminal
And callIncome is a method of the controller.
So that'll, you can add the arguments.
And for example, the income statement has an argument
that's -L, that tells you how many quarters you want to get.
So the namespace, the namespace,
so the parser, the argparse namespace
then has the information stored.
So we know, hey, we're trying to get income
and we're trying to get five quarters.
So that will call, it'll call the view,
which will then pass in, you know,
the view will say, hey, alpha vantage model,
get me my five quarters of Apple income statements,
and that'll return it as a data frame.
And, you know, either,
I guess that function doesn't have a graph,
but if it's a graphing function,
it would do the graph.
- Call graph, pops up the window in the pipelot window.
and then off it goes.
That's really interesting.
I have never really thought about
how you might do the processing of CLI commands,
but within an application.
When I think arg pars, I think startup.
Like what commands are passed to my application
during startup to figure it out?
But of course, as you continue to issue commands,
if that's text on a line,
it makes sense to sort of treat it the same, right?
- Yeah, and while we actually do on startup
actually do have our parts.
So you can, for example, my favorite flag
that we have for the terminal is debug.
That way you can actually get a full
instead of catching all the errors, right?
'Cause if we're not catching all the errors
in the terminal, it would crash every time
you had an exception or whatnot.
But with this debug flag,
it'll actually show you the full stack trace
and just instead of just the exception.
So we actually do wrap around the startup and whatnot.
And we also do like, we have a reset command
that if you're in the terminal, you type in reset,
maybe you changed an API key or you're developing
and you change your function, you need to reload it.
You hit reset, it'll relaunch the terminal,
exit then relaunch.
So that's the general workflow.
- Yeah, does the terminal run in whatever terminal
of your OS?
Like if I have iTerm set up on my Mac,
it'll run there.
If I have Windows Terminal and PowerShell,
it'll run over there.
- Yeah, just make sure you're in the right directory.
- Yeah, okay, fantastic.
Yeah, super, super interesting.
Let's see, what did I wanna ask you about here?
One other thing I'm trying to remember.
It's gone, it's lost.
I wanted to follow up with something, but that's okay.
- Well, I can also, I can even add a statement
that doing this MVC allows us to have different views.
I know one thing you'll probably ask me about
is that we have these bots on our website and the ideas.
- Yeah, I did notice over here that you have a products,
you got a terminal and then documentation
and then you have bots.
Yeah, coming soon bots.
I do remember now what I would ask you,
but let's talk bots for a second.
- Yeah. - Come back to it.
- So bots, I don't wanna give away,
we do have some exciting announcement coming soon.
And I would like to take this opportunity
to apologize to anyone that's trying to get this,
get the Discord bot in our server
as we're currently limited to the maximum 100 servers
we can be in without the verification
that we're working on.
- Got it.
So under the listing here,
you have bots coming for Discord, Telegram, Slack, and more.
And yeah, I guess news is coming, huh?
- Yeah, and all of this,
one of the kind of using MVC, we're able to extract,
extract, abstract all of our methods
and then we can just, we do all the processing
on the same model function
and then we can pass it to different views
for Discord or Telegram or Slack.
- Nice, yeah, I'm sure, or comment as much as you can,
but you can build a Slack bot in Flask, for example,
or something like that, right,
where it kind of uses a web communication
to talk to your bot.
And so I guess you could do things like go into Slack
and say, "Hey, OpenBB bot,
"tell me about important events in stock
"or I've been watching this thing.
"If it crosses the threshold,
"just yell at me about it, right?
"Let me know."
Something like that.
Is that kind of the flow?
- Pretty much.
Yeah, just some async stuff.
It's running on a server somewhere
and it waits to read in the command.
So. - Cool.
One other question I wanted to ask you
Is what I've seen so far looks like really cool ways to,
all of it's static, so you can only read so much into it,
but it looks like, let me answer a question
about this information, either historical
or sort of up to now about some stock
or the economy or whatever.
Is there a way to have like a dashboard
where I can put different things up
and they're just constantly churning with real data?
- That is possible, yes.
- Not to make a case, but possible.
- I mean, it is possible and I'll leave it at that,
that it is possible.
- All right, sounds good.
That was the one I was asking about.
All right, now one thing I wanna touch on here
before we get too far away with time
is two things stood out to me when I went
and sort of clicked around your site.
Now that's pretty interesting.
I can't remember, you know, some news article
that talked about OpenBB that I thought
was pretty interesting.
I come over here, okay, wow, this is really pretty.
It's pretty cool.
It's open source and so on.
The other one is like right across the top,
it says announcing our $8.5 million seed fund funding
and public launch.
And that sounds like a non-trivial deal.
- That's awesome, congratulations.
- Yeah, thank you so much.
I mean, yeah, that's a pretty big deal for us.
- I would think.
- So yeah, I mean, actually fun fact about this was that,
so Didier and I were just doing this for fun on the side,
you know, and then my wife and I,
we got married in 20, about a year ago,
actually a year ago in 11 days.
- Oh cool, great.
- So we're on our honeymoon in Napa Valley,
good old land of the VC.
And on our last night there,
last night there, you know,
fun day of wine touring and whatnot,
I get a LinkedIn message from someone saying,
"Hey, we're interested in investing in you."
And needless to say, that turned into
meeting up with meeting up with him on quick 20 minute chat the day of driving through
San Francisco before actually trying to get out to Alcatraz because we had that scheduled.
Wow. What funny timing on one hand, it's like terrible timing on other it's perfect. You're
right there. Yeah, I mean, I was like, Hey, I'm in Napa. And so I'll give a shout out
to JJ over at OSS Capital. He's been fantastic working with us. JJ was like, I will meet
you wherever you are right now. And I'm like, man, I am not in any state to be talking to
anyone right now. So yeah, no, it was a great opportunity to reach out with him. They led
the round. We have a great group of angels on board as well.
So yeah, well I guess there's a couple other call outs I want to make real quick.
One Travis Oliphant is an advisor to you all, which is pretty awesome.
People surely know him as one of the founders of Anaconda.
Yep.
Travis is on board as an advisor for us.
It's been fantastic working with him, getting to know him a little bit.
That's super cool.
Then also Naval Rivacant is one of the investors and I know him from this Twitter storm thing
turned into a discussion called how to get rich.
Have you listened to this?
- Parts.
- Yeah, it's pretty interesting, pretty fascinating.
So he's involved as well, which is pretty cool.
Awesome, I think that's really neat.
Like I said, congratulations to you guys.
Keep good, gonna keep working on this.
But open source projects often struggle to get support,
even when it blows my mind that they do.
see projects like requests or flask or something like that.
And so much of the world and the tech world in particular,
where there's tons of extra money
and there's not very much support, right?
You know, as far as I know,
David Lord isn't just mostly on his yacht
and periodically accepting PRs, right?
Like, but if you think of how foundational
some of these projects are for so many companies.
It seems almost like David should be on a yacht.
You know what I mean?
Like it should be easier for them
to get really strong support.
And here's an example of a company
getting really good support,
giving away to some degree.
Can you talk about what the business model is
or is it just growth and-
- Right now we primarily,
primarily we wanna focus on growth
and really hammering home the user experience, right?
One of the things you talked about is,
maybe when someone fires this up,
they're not used to seeing a textual type thing
where I need to type in all the commands there.
Everyone's just used to buttons, fancy web apps.
So right now we really wanna hammer home
the user experience, make it as fluid as possible.
We're working on documentation, we're working on guides.
Yeah, it seems like something that would lend itself really well to a bunch of small video
videos on like you could just say help this goes, would you like to watch a video on how
to do this?
Two minutes?
Yes.
All right, I'll watch the video.
Just like pop that up or something.
Yeah, yeah, no, that's it.
And you know, some series of those.
Yeah.
Because for example, you know, fundamental analysis or technical analysis are buried
three or four menus down.
And if you're downloading the tool to do that, you know, maybe you're going to be intimidated
at first, 'cause you don't know where it is.
- Right, right.
I tried, I couldn't find it or whatever, yeah.
- Yeah, so right now we wanna focus on the community
and we wanna focus on the user experience.
- Cool.
All right, well, you've definitely got a little runway there
so that's great.
How many people are working on it now?
- So our team is, so our team,
first off, shout out to everyone
bothering me on Slack during this.
- I'm ignoring you because I'm talking about you, okay.
- Pretty much.
So shout out, we're at 15 right now.
- Awesome.
- I'll take this opportunity to mention
that we do have some open job postings
on our website as well at the moment.
- Oh really, okay.
- So yeah, just throwing that out there on our website,
Openbb.co/company/careers.
- Yeah, so I'm guessing some of these are Python-related ones?
- Yep, yep.
Or currently, currently we're looking for DevOps
and we're also looking for some social media managers
at the time. - Sure, cool.
Remote, remote an option?
- 100%.
- Yeah.
- Yeah, 100% remote, flexible hours.
- Cool, very cool.
Yeah, I know a lot of people are interested
in finding new jobs.
On one hand, if you're a software developer,
you can kind of find jobs pretty easily these days
because there's such a demand,
but on the other, it's like, well, you can have this job,
but all right, you've got to move to this city
that you don't already live in,
or you don't wanna move to,
or you wanna change countries or whatever, right?
So I think remote's pretty awesome.
- Yeah, and we're spread out all over the globe.
So it's a good time.
- Yeah, absolutely.
That's the way it should be, beautiful.
Okay, well, I think that's about all I had to ask
about all the things I wanted to make sure we covered,
but yeah, it's something really cool you all built
with Python and the data science stack
and the open source growth is cool
and the funding is, looks real positive, so awesome.
I guess, you know, sounds like you accept PRs,
people wanna contribute.
- Yeah.
- It seems like one of those projects that is very easy,
not easy, but very open to contributions
'cause it has so many sort of standalone little features,
like, oh, I wanna add this new algorithm
or this new picture to this part of it, right?
You don't have to understand the whole system massively
in order to do that, right?
- Yeah, this was actually the first open source project
that I myself worked on.
I picked a good one to start on.
No PR is too small, no issue.
We are on Discord.
I know a lot of people aren't huge fans of,
you know, are putting the support there,
saying, "Hey, come on Discord."
But we're there if anyone has questions on how to install
and how to submit a PR, any ideas, we're around to talk.
- Yeah.
- Awesome.
All right, James, before you get out of here, though,
I've got to ask you the final two questions.
- Shoot.
- All right, so if you're gonna work on this,
write some Python code,
what editor do you open up these days?
- Oh, man, so I'm gonna get a lot of bad feedback
from my team on this one,
but I am a PyCharm person.
Git scares me, and the fact that I can open up
a GUI window makes my life a lot easier.
Everyone else uses VS Code,
so there's always a constant debate,
but I'm a PyCharm.
- Well, you won't get any negative feedback from me.
I think PyCharm's awesome.
I use it as well, and all the PR features
and get features built into it are pretty excellent.
- Yeah, VS Code's also great.
Love to those guys as well.
- Yeah, I think, you know,
when I started asking this question,
six, seven years ago, whatever it was,
it was like, I don't know what this person,
like, I really don't know what this person is gonna say.
It could be anything.
It could be something like random thing
I haven't even heard of.
Like, that's an editor?
Okay, let me research that.
These days, it's really down,
it's down to two contenders, pretty much,
unless you get the Vim, Emacs, Engel,
which is not as popular, but yeah,
it's down to those two pretty much.
Awesome. - Yeah.
- Notepad.
- Yeah.
You just gotta read something.
All right, and then,
notable PyPI package,
something you wanna give a shout out to?
- Oh man, we have so many, as I said,
you know, 200-ish.
One of the ones that's been really great,
another open source project, the rich package.
That's what we use to add all the colorful text interfaces,
as well as the prompt toolkit,
another great open source package
that's what does our auto-completes and whatnot
to try to make it a little bit easier
on the user experience.
- That's fantastic, okay.
- So there's two.
- Yeah, I like Prompt Toolkit as well,
and of course Rich.
And you know, speaking of--
- Textual. - Oh, I/O, right.
Speaking of open source projects,
that is not the right one.
But it's really cool that
Will McGugan has got textualize.io
is what I was looking for.
Has really found a place building great TUIs,
text user interfaces with Rich,
and there's just so many things based on it.
And he also has some funding as well to keep going there,
which is, I think, another one of the bright,
awesome pieces of news around sort of, you know,
vibrant open source in Python.
- Yeah, I mean, the rich package is fantastic.
Yeah, it's all we use now.
- That's awesome.
It's like got some crazy new feature every week.
It's all-- - Pretty much.
- Never sitting still.
All right, well, James,
it's been great to have you on the show.
Thank you so much for coming on
and sharing a look with your project.
- Yeah, no, thank you so much for having me.
It's really great.
- Yeah, you bet.
See you later.
- All right, take care.
- Bye. - Go Bills.