0% found this document useful (0 votes)
12 views14 pages

Hidden Markov Model 1740223320

The document discusses a project on stock trading using Hidden Markov Models (HMM) to predict economic regimes and stock prices, specifically focusing on data from Electronic Arts. It outlines the principles of HMM, including algorithms such as Forward-Backward, Baum-Welch, and Viterbi for evaluation, learning, and decoding. The project successfully demonstrates stock price prediction through programming in Python, achieving reasonable accuracy in forecasting.

Uploaded by

yufengwu9876
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
12 views14 pages

Hidden Markov Model 1740223320

The document discusses a project on stock trading using Hidden Markov Models (HMM) to predict economic regimes and stock prices, specifically focusing on data from Electronic Arts. It outlines the principles of HMM, including algorithms such as Forward-Backward, Baum-Welch, and Viterbi for evaluation, learning, and decoding. The project successfully demonstrates stock price prediction through programming in Python, achieving reasonable accuracy in forecasting.

Uploaded by

yufengwu9876
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 14

Adrovic Belmin 4​th​ Semester

Di Cino Luca
Proença Raphael

Experimental Mathematics:
Stock trading with hidden
Markov models
Project supervisor: George Kerchev
Table of contents

Introduction 3

Part I: Hidden Markov Model 4


Hidden Markov Model 4
Hidden Markov Model for Stock trading 6
Three basic problems of HMMs 6
Forward-Backward algorithm 7
Baum-Welch algorithm 8
Viterbi algorithm 9

Part ll: Programming 10


Stock price prediction using Python 10
Conclusion 14

2
Stock trading with hidden Markov models

Introduction

The aggregation of buyers and sellers of stocks also called shares is called a stock
market. A stock or a share represents ownership claims on businesses. Stock
trading consists of buying shares low and selling them high by profiting in doing so.
The goal of our project was to be able to predict economic regimes and stock prices
using the ​Hidden Markov Model (HMM), a probabilistic model. After gathering
economic data from the company ​Electronic Arts,​ we tried to model it with a HMM. In
order to predict the stock prices, we needed to train the model while optimizing the
model parameters.

3
Part I: Hidden Markov Model

Hidden Markov Model

Named after the russian mathematician Andrey Andreyevich, the Hidden Markov
Models is a doubly stochastic process where one of the underlying stochastic
process is hidden. The hidden process is a Markov chain going from one state to
another but cannot be observed directly. The other process is observable and
depends on the hidden states. The goal of HMM is to capture the hidden information
from the observables. HMM is widely used in speech recognition and in forecasting
of the stock market.

X - hidden states
Y - observables
a - ​transition probabilities​: probability of moving from one state to another state
b - ​emission probabilities​: probability of an observation being generated from a
state
X​0 - ​initial probability distribution​: probability that the Markov chain will start at a
certain state

4
Example​:

An application of the HMM is often the determination of the weather which is hidden.
The hidden states in our example are sunny and rainy. The activities of a certain
person which depend on the weather can be observed. The observables are the
following activities: walk, shop or clean. The transition probabilities here represent
the change of weather from one day to another. The emission probabilities represent
the likelihood of an activity being performed on each day depending on the state of
the weather.

Let’s suppose that for two consecutive days this person went for a walk. We will
furthermore assume that it rained the first day and the second day it was sunny.

P((walk,walk),(rainy,sunny)) = P((walk,walk)|(rainy,sunny)) P(rainy,sunny)


= P(walk|rainy) P(walk|sunny) P(sunny|rainy) P(rainy)
= 0.1 * 0.6 * 0.3 * 0.6 = 0.0108

5
Hidden Markov Model for Stock trading

HMM are capable of predicting and analyzing time-based phenomena, hence, they
are very useful for financial market prediction. The price of the stock, in this case our
observable, is impacted by hidden volatility regimes. The hidden states are namely
low volatility regimes, high volatility regimes and neutral volatility regimes. The goal
here is to estimate the most likely regime, including the associated time varying
means and volatilities, in order to create a reliable predictive model. So by analyzing
the stock behavioral pattern in the past, we can forecast its future outcomes.

Three basic problems of HMMs

- Evaluation: computation of the probability of the observation sequence


→ Forward-Backward algorithm

- Learning: determination of the parameters of the model


→ Baum-Welch algorithm

- Decoding: determination of the most probable state sequence


→ Viterbi algorithm

6
Forward-Backward algorithm

The Forward-Backward algorithm computes the posterior marginals of all hidden


state variables. This means that it gives the probability distribution with relevant
evidence and each background being taken into account. To achieve this it makes
use of the principle of dynamic programming, which means simplifying a complicated
problem by breaking it down into simpler sub-problems, as we can see on this
image.

The algorithm uses two passes, the first pass goes forward in time and the second
pass goes backward. The first pass computes a set of forward probabilities which
provide the probability of ending up in any particular state. In the second pass, the
algorithm computes a set of backward probabilities which provide the probability of
observing the remaining observations given any starting point. So we have two sets
of probabilities that can then be combined to obtain the distribution over states at any
specific point in time given.

Conclusion:
The Forward-Backward algorithm is used to find the most likely state for any point in
time.

7
Baum-Welch algorithm

The Baum-Welch algorithm is used to find the unknown parameters of a hidden


Markov model. It’s a special case of the EM algorithm (expectation–maximization
algorithm) which is a method to find maximum a posteriori estimates of parameters
in a statistical model.
To achieve this, the algorithm makes use of the Forward-Backward algorithm.

So we have two steps, the E-step, ‘E’ stands for


expectation, re-estimating the responsibility profile 𝛑
given the current HMM parameters.
(​emitted string ​, ​? ​, ​Parameters​) → ​𝛑

The other step is the M-step, ‘M’ stands for maximization,


re-estimating the HMM parameters given the current
responsibility profile 𝛑.
(​emitted string​,​ 𝛑​, ​?​) → ​Parameters

The Baum-Welch algorithm is needed because the state paths are hidden, and the
equations cannot be solved analytically.

Conclusion:
The Baum-Welch algorithm attempts to find the model that assigns the training data
the highest likelihood.

8
Viterbi algorithm

The Viterbi algorithm is most useful when one wants to calculate the most likely path
through the state transitions of these models over time. Let’s say we have N states
and T moments in time, calculating the probabilities of all transitions over time would
be N T probability calculations. This algorithm is used to speed all these calculations
up.
The observation made by the Viterbi algorithm is that for any state at time T, there is
only one most likely path to that state. Therefore, if several paths converge at a
particular state at time T, instead of redoing them all when calculating the transitions
from this state to states at time T+1, one can discard the less likely paths, and only
use the most likely one.

Conclusion:
Using the Viterbi algorithm we can identify the most likely sequence of hidden states
given the sequence of observations.

9
Part ll: Programming

Stock price prediction using Python

In this section, we’ll talk about the program of which the main goal was to predict
stock prices using a Hidden Markov Model to fit the data, and we’ll give some
detailed explanations on the functioning of the code.

First of all we have to import several packages in order to be able to run the code
properly. The most important ones are the ‘‘pandas_datareader’ package, which is
used to get our stock data from the ‘Yahoo Finance’ website, as well as the
‘hmmlearn.hmm’ package, which is used to fit the data with the Hidden Markov
Model.
As mentioned above, the stock data that we use comes from the company ​Electronic
Arts. ​We collect the data from the 1st January 2019 until the current date and
convert it into a table using the ‘data.datareader()’ function.
This will look like that:

10
Now we rearrange the table. We only want to have the data that we’ll need later on.
That means we remove every column except the one with the closing prices of each
day, which is the ‘Close’ column and the ‘Date’ column containing the dates.
Then we transform the dates into Gregorian ordinals which are representing the
number of days passed since 1/1/0001. So for example the first day of our data, the
2nd of January 2019 (on the 1st of January the stock market is closed) would be
represented by the number 737061.
After that we transform the table into a list containing the Gregorian ordinals and the
closing prices for each day. We also define our lists ‘dates’ which are the Georgian
ordinals, ‘close_val’ which are the closing prices and ‘close’. For the ‘close’ list we
take the closing price of a given day and divide it by the closing price of the previous
day in order to have an indicator of the current stock situation.
At last, we plot the closing prices and get the following plot:

11
We will now proceed to the actual ‘prediction’ part of the program.

We start by defining the set of our data which will be used to train our model. For
reasons of simplification we only use the first 5 days of our data as the training set.
Then we convert every element of our training set ‘train_x’ into a list, so that we get
a list of lists. This step is necessary in order to be able to train our model on our
data.
The model we use is the ‘GaussianHMM’ model which uses the algorithms explained
earlier in this report (Forward-Backward, Baum-Welch and Viterbi). As already
mentioned, we train the model on the set ‘train_x’.

Now we define the 2 lists ‘predicted_prices’ and ‘predicted_dates’ that are evidently
empty in the beginning. In order to fill these lists, we’re using a for loop with range
100.
We start the loop by fitting our model and then looking at the hidden states. As we
only want to predict the price for 1 day in the future, we just look at what the hidden
state corresponds to for the last day of the training set. As an example, let’s say that
for the last day the hidden state corresponds to 1. Then we look at the mean
parameter of the hidden state corresponding to the one we found (our expected
return), so in that case we would be getting the mean parameter for the hidden state
1.

12
As we want to compare the actual prices with our predicted prices, we first set our
current date to be the last day of our training set and look at the closing price for that
day. Our predicted date will then be the following day.
Now we want to update our training set after every run of the loop. We add to the list
the element ‘[means[0]]’ and we remove the first element.
Then we just need to calculate our predicted price by multiplying the current price
with our expected returns.
This process gets repeated 100 times in order to predict the prices for 100 days.

Finally we print and plot our actual and our predicted prices.

13
Conclusion
The purpose of our project was to use the Hidden Markov Model as a tool in financial
forecasting. We successfully predicted the closing prices of a stock using HMM.
Looking at the last chart about the predicted and actual prices, we see that the
model is not that bad. It was able to catch the massive rise of the stock.

14

You might also like

pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy