When you hear that 70% percent of trading
volume in the entire US stock market is generated
by algorithms, you might think you are missing
out something big.
Are we the only fools in the market who still
trade the traditional way?
If the machines dominate the market today,
do us mere mortals even stand a chance against
the mighty machines?
Well, a big chunk of that automated 70% is
a result of high-frequency trading algorithms
trying to predict only milliseconds into the
future.
And those algorithms usually use very very
simple methods, nothing fancier than a chain
of hardcoded rules or a simple linear regression
model.
So yes, if you race against milliseconds,
then you do need to be a machine.
But for casual investors like us, that shouldn't
really matter.
Or should it?
Deep learning models can learn much more complex
patterns in data.
Is it possible to predict longer-term price
movements in the market using deep learning?
Nobody knows for sure.
Many large financial institutions are hiring
data scientists, machine learning engineers,
and deep learning experts with hefty salaries.
So, does that mean it works for sure?
Well, that may give us a sign about the trends
in investing strategies, but institutional
investing can be different from individual
investing.
For example, unless you are buying a very-low-volume
stock, the shares you buy or sell barely have
any impact on the price.
But if you are buying and selling in large
amounts, how you execute your trades can make
a big difference.
A machine learning model can help decide how
you should split up your sales over time to
avoid causing big price movements.
To actually predict the price movements, you
can try a lot of things.
From very simple things such as training LSTMs
or Temporal Convolutional Networks on historical
prices to overly complex models such as training
Convolutional LSTMs on satellite imagery to
predict macroeconomic movements.
Any predictive model you may build practically
tries to find some inefficiencies in the market.
So, in a fully efficient market, none of these
models should work.
For example, your model can analyze text from
various sources, such as financial news websites
and social media, to decide whether a particular
stock will go up or down.
You can do sentiment analysis at character
level text or audio.
You can analyze not only what's in an earnings
statement but also the way it's announced.
However, the efficient market hypothesis states
that the stock prices reflect all available
and relevant information immediately.
It's likely that any new information that
can impact the prices is already incorporated
in the price by the time your model gets to
parse it from the web.
If you think this hypothesis is true, then
using any data beyond the prices would be
redundant.
Then, should we just use nothing but the historical
price information to build a predictive model?
That saves us a lot of trouble.
Technically, that's the opposite of what the
hypothesis says.
But for now, let's forget about that and talk
about what we can do with historical price
data.
Trying to forecast the direction of prices
by finding patterns in past market data is
a form of technical analysis.
Day traders do this all the time.
They look at charts and name the patterns
they see things like head and shoulders, cup
holders, shooting stars, etc.
Neural networks are very good at finding patterns
in data.
If there are really such patterns, a neural
network with enough capacity would be easily
able to pick up any patterns that might lead
to profit.
Give a neural network a price chart, then
it will fit a function to that chart as closely
as possible.
The problem is that being able to find patterns
in past data doesn't mean that those patterns
will generalize and hold in the future as
well.
A neural network can even find 'patterns'
in completely random data.
But what the model actually learns wouldn't
be any more useful than a lookup table.
A table that holds the price information for
the past data while having no predictive power.
This is called overfitting, you can check
out my earlier videos to learn more about
it.
Machine learning models are not the only ones
who find patterns in data that don't exist.
Humans do too.
We see faces in the clouds and inanimate objects.
We see patterns in price charts and assume
that the prices will regress to the mean.
I generated this chart, for example, completely
randomly by changing the price by some random
percentage at each point.
Yet there seems to be some pattern.
So, I would be cautious about technical analysis.
There are so many books and success stories
about how some authors got rich by doing technical
analysis, but honestly, most of those authors
are getting rich by either writing the books
about how they got rich or they just happened
to be lucky.
Yes, the odds of such luck is not very high,
but there's a lot of survivorship bias.
Because losers hardly ever write books about
their failure stories.
If you gather 1000 people in a room and ask
them to predict coin flips, the odds of at
least one person predicting the outcome of
8 flips in a row is over 98%.
It takes only a room of people to find a clairvoyant.
There are many many more people trading in
the market.
Earlier I mentioned that according to the
efficient market hypothesis, any publicly
available information that might have an impact
on the price of an asset has already done
it.
Past market data is publicly available information.
So, any information it might have, such as
some patterns, is likely to be already in
the price in an efficient market.
Not all markets are efficient or rational,
though.
For example, something as simple as the log-periodic
power law model was able to predict the 2018
Bitcoin bubble 8 days before the bubble burst.
It doesn't mean that it will predict the next
one, or whether there'll be another cryptocurrency
bubble at all.
Still, it's an interesting observation in
hindsight.
Ok, let's say you want to experiment with
machine learning models to predict the stock
market just for fun, so where to start?
You can start with defining the goal of your
model and pick a corresponding loss function.
For example, if you want your model to pick
the best stocks among some options, you can
treat this as an n-way classification problem
and use a softmax cross-entropy as your loss
function.
If you want your model to give a rating between
0 and 1 to any given stock, then you can use
sigmoid cross entropy.
Next, you can go on to design your model architecture.
It doesn't have to be a sophisticated model.
You can stack one or two layers of LSTMs or
gated recurrent units.
You can even use temporal convolutional networks,
which are simple and easy to train.
You can check out my earlier video on recurrent
models to learn more.
What about hardware?
GPUs are one of the first things that come
to mind when the topic is machine learning.
In this particular case, you probably won't
need any special hardware.
If you already have a GPU, then use it.
Otherwise, unless you plan to use some extraordinarily
large volume data, any model that is too big
to train on a CPU will wildly overfit.
So, whatever hardware you already have will
probably be enough to get started.
If you want to speed up your experiments using
GPUs, you can always use cloud services and
pay as much as you use.
One of the problems we have with using stock
market data in deep models is that we don't
have enough data to train a large model without
overfitting.
To reduce the risk of overfitting, you can
do all sorts of data preprocessing and augmentation.
For example, you can add a small amount of
noise to your data.
Pick a random subset of stocks for each time
interval at every epoch.
And Generate new samples by taking random
linear combinations of existing stocks.
Those samples should essentially behave like
randomly managed mutual funds or ETFs.
If you want to use data other than just price
and volume information you can look into Google
Trends to see how much people are searching
for particular keywords.
However, any signal you might get from there
is likely to be lagged.
None of these will probably work.
So, I wouldn't expect too much.
But give it a try anyway, you'll learn a lot
while you try even if it doesn't work.
If you find a trick that no one has found
yet and it does work, have fun and enjoy the
profits.
Anything I say here is clearly not investment
advice.
I don't have a financial background.
I'm a computer scientist who played a little
bit with financial data in my spare time just
for fun.
I do have a decent amount of experience in
machine learning, but my area of expertise
is its applications on imaging data.
Alright, that's all for today.
I hope you liked it.
Subscribe for more videos, while keeping in
mind that this is not the type of videos that
I usually make.
And as always, thanks for watching, stay tuned,
and see you next time.
