Stock trend prediction has been a challenge task for many traders. For stock traders, promptly predicting the bearish or bullish market status is very helpful in reducing the losses and increasing returns. This paper presents a Hidden Markov Models (HMM) approach for determining stock trend status: “upper trend”, “low trend”, or “Medium”. And a simple trade strategy based on the estimated trend status is formulated. Then the strategy is applied to three telecommunication stocks: AT & T, Verizon, and China Mobile for trade performance evaluation. We use the real daily trading data of NYSE from October 25, 2016 to November 06, 2017 to test performance of the strategy. The results show that the strategy is actually very encouraging. For the generally bearish period of telecommunication sector, a 9.7% and 3.7% return rate can still be achieved for AT & T and Verizon. For China Mobile, although the return is negative, the final loss is still 2% less than if “Buy and Hold”.
Predicting stock price has been a challenging task for many investors and researchers. Methods such as time Series Models (ARIMA), Neural Networks, Fuzzy Logic and Support Vector Machines have been used to predict the stock price, or determine the stock trend. In addition, there have been some applications using Hidden Markov Model (HMM) for this problem. Md. Rafiul Hassan and Baikunth Nath [
In this paper, instead of predicting the stock price, we try to determine the current market price level for a stock with Gaussian type HMM. Based on the estimated trend levels, our trade strategy is very simple: sell when stock is in high trend level and buy when it is in low trend. We apply this strategy to three telecommunication stocks: AT & T, Verizon, and China for 260 trading days from October 25, 2016 to November 06, 2017. With $100 in hand on October 25, 2016, we compare the trade results with a simple “buy and hold” practice. The results show that even for a general bearish period for telecommunication sector for tested period, we can still get a reasonable benefit by using the HMM model strategy.
This paper is organized as follows: Sections 2 gives general description of HMM model and related estimation and evaluation algorithms. Section 3 introduces the three stock price series used for model calibration and model performance test. In addition, to mimic the real stock trade scenario, method of one day shift for data block window for is also described. Section 4 presents the simulated results. Section 5 includes conclusions and discussions of possible modifications.
Hidden Markov Model assumes that the distributions of the observation series are determined by an unobserved Markov Chain Process. Rabiner, L. R. [
a) s 0 , s 1 , ⋯ , s T is a Markov Chain Process ;
b) Given the state of s t , the observation O t is independent of other observations and states;
c) For a fixed state, the observation O t is generated according to a fixed probability law.
Given a state k, the probability of O t can be specified as:
b k ( O t ) = probability mass function, if O t is discrete
b k ( O t ) = ∑ m = 1 J C k m b k m ( O t ) , if O t is continuous
where each b k m ( O t ) is density defined by
b k m ( O t ) = 1 2 π d | ∑ k m | exp ( − 1 2 ( O t − u k m ) ′ ∑ k m − 1 ( O t − u k m ) )
And C k m is the mixture coefficient for the m t h mixture in state k. In a simple case, j can be one, and b k ( O t ) becomes Gaussian in each state, and the HMM model is called Gaussian HMM. In such a case, the conditional observation probability can de described by: B = b k ( O t ) , k = 1 , ⋯ , M .
Let A = ( a i , j ) is the transition probability matrix, and π = ( π i ) is the initial state probability, i = 1 , ⋯ , M , j = 1 , ⋯ , M . AHMM model can be described by parameters: ( A , B , π ) = λ .
A full HMM model can be described by parameters: ( A , B , π ) = λ . Given the form of HMM model as discussed above, three basic problems can be resolved:
1) Given the observation vector O = ( O 1 , O 2 , ⋯ , O T ) and model parameters ( A , B , π ) , what is P(O|λ)?
2) Given the observation vector O = ( O 1 , O 2 , ⋯ , O T ) and model parameters ( A , B , π ) , how to guess the “best” state sequence who generates the O?
3) How to estimate the model parameters λ to maximize P(O|λ)?
The algorithms that can be used to solve these problems are:
1) Forward Algorithm
α t ( i ) = P ( O 1 , … , O t , s t = i | λ )
2) Backward Algorithm
β t ( i ) = P ( O t + 1 , … , O T | s t = i , λ )
3) Viterbi Algorithm
δ t ( i ) = max s 1 , s 2 , … , s t − 1 P ( s 1 s 2 … , s t − 1 , s t = i , O 1 , … , O t , | λ )
With α t ( i ) the evaluation problem can be resolved as: P ( O 1 , … , O t | λ ) = L t = ∑ i = 1 M α t (i)
Maximizing L T will solve the learning problem. With β t ( i ) the filtering and smoothing problem can be resolved by:
f t ( i ) = P ( s t = i | O 1 , … , O t , λ ) = P ( O 1 , … , O t , s t = i | λ ) / P ( O 1 , … , O t | λ ) = α t ( i ) / L t
s t ( i ) = P ( s t = i | O 1 , … , O t , λ ) = α t ( i ) β t ( i ) / ∑ j M α t ( j ) β t (j)
Finally, the Decoding problem can be resolved with Viterbi Algorithm:
1) δ 1 ( i ) = π i b i ( O 1 ) , 1 ≤ i ≤ M ,
ψ 1 ( i ) = 0
2) δ t ( i ) = max 1 ≤ i ≤ M [ δ t − 1 ( i ) a i j ] b j ( O t ) , 1 ≤ i ≤ M , 2 ≤ t ≤ T
ψ t ( j ) = arg max 1 ≤ i ≤ M [ δ t − 1 ( i ) a i j ] , 1 ≤ i ≤ M , 2 ≤ t ≤ T
3) P * = max 1 ≤ i ≤ M [ δ T ( i ) ]
s T * = arg max 1 ≤ i ≤ M [ δ T ( i ) ]
4) s t * = ψ t + 1 ( s t + 1 * ) , t = T − 1 , T − 2 , … , 1
For the three telecommunication company AT & T, Verizon, and China Mobile, we obtain daily stock close price of NYSE from google finance service (finance.google.com). Totally 760 trading day prices from October 30, 2014 to November 06, 2017 are pulled for each company.
To mimic the actual trade scenario, we use the last 260 trading prices from October 25, 2016 to November 06, 2017 for model performance test, assuming that we have $100 in hand on October 25, 2016. Start on October 25, 2016, for each trading date in the test period, we use the last 500 trading prices before that date to calibrate the HMM model and obtain the current stock trend level state with Viterbi method. We then make the decision of buying or selling based on the
estimated trend level status. After that we move to make the decision for the next trading date, and repeat the process by moving the training dataset one day forward, until we reach November 06, 2017. PROC HMM in SAS Econometrics 8.2 [
Although the number of states for a HMM model can be determined with criteria such as AIC, BIC, etc., we use a three states HMM model here, assuming that the stock trend may have “Upper trend”, “Lower trend”, or “Medium” state.
The HMM based trading strategy used here is pretty straightforward: on each test date, if the calibrated HMM indicates the stock is currently in “Upper trend”, we will sell if we have the stock. If HMM tells that it is in “Lower trend”, we will buy if we have cash in hand. Otherwise do nothing. Finally, the trading results are compared with “Buy and Hold” at the end of the test date. We did not consider the costs of trading fees here.
Final Market Value | Company | ||
---|---|---|---|
AT & T | Verizon | China Mobile | |
With HMM Buy and Hold | $109.67 $89.54 | $103.70 $95.17 | $88.86 $86.89 |
a) Assume that there was $100.00 at beginning of the testing.
Similarly, for Verizon, HMM successfully tell us to get out of the market from December 14, 2016 to April 25, 2017, and avoid the big downturn from January to March of 2017. For China Mobile, although the final return is negative, HMM model helps us not to enter the market until November 02, 2016. That reduces our final losses about 2%.
This paper demonstrates an approach to use a simple Gaussian Hidden Markov Model to determine the stock price “trend status” and make the stock trade decision based on that. The trading results are evaluated for 260 trading dates from October 25, 2016 to November 06, 2017. Trading results show that for the generally bearish period, a 9.7% return is achieved for AT & T with HMM based strategy, comparing with more than 10% loss with “Buy and Hold” trade. Similarly, for Verizon, a 3.7% return is achieved with HMM model, while a “Buy and Hold” results in about 5% loss. For China Mobile, HMM model delays our entering into the market until November 02, 2016, hence reduces our final losses by 2%, comparing with “Buy and Hold”.
It seems that in our cases, HMM model can indicate a downturn promptly and hence help us to avoid possible losses. For people who are interested in this application, possible modifications or improvements include:
1) In this paper we apply the HMM model directly on the stock close price. Hence our HMM model in fact juts tell use which “level” status the stock price is at. It will be interesting to see how it will work if apply the HMM on returns, or difference.
2) We use the Viterbi algorithm to determine the “current status”. It is actually the “status” of last traded date. It is possible to use the one step ahead forecast to determine the current status.
3) The Simple Gaussian HMM used here can describe relatively long term pattern of the observation level status. To capture the short variability and influence of other factors, a HMM with regression, or auto regression may be considered.
4) The Gaussian assumption for distribution of each state could be extended to Gaussian mixture distribution.
Finally, it should be pointed out that the stocks in our example have stock prices up and down periodically for period we considered. If a stock is in a pure long term growing, or downing period, the trading strategy described here may not be modified.
Sun, C.Z. (2018) Implementing Trade Strategy with HMM Model: A Practice on Some Telecommunication Companies. Open Journal of Social Sciences, 6, 12-19. https://doi.org/10.4236/jss.2018.63002