Abstract

There is not yet reliable software for stock prediction, because most experts of this area have been trying to predict an exact stock index. Considering that the fluctuation of a stock index usually is no more than 1% in a day, the error between the forecasted and the actual values should be no more than 0.5%. It is too difficult to realize. However, forecasting whether a stock index will rise or fall does not need to be so exact a numerical value. A few scholars noted the fact, but their systems do not yet work very well because different periods of a stock have different inherent laws. So, we should not depend on a single model or a set of parameters to solve the problem. In this paper, we developed a data-divider to divide a set of historical stock data into two parts according to rising period and falling period, training, respectively, two neural networks optimized by a GA. Above all, the data-divider enables us to avoid the most difficult problem, the effect of unexpected news, which could hardly be predicted. Experiments show that the accuracy of our method increases 20% compared to those of traditional methods.

1. Introduction

People have been trying to predict stock prices or indexes since a successful prediction means huge income. However, from the point of view of system theory, the formation mechanism of stock price is a nonlinear system with a high degree of complexity [1], so it is difficult to predict. With the development of neural networks, its strong nonlinear fitting ability has shown huge potential in stock prediction. According to predicted objects about stocks, there are two primary methods to construct neural networks models for stock prediction.

Most scholars prefer the first method, predicting an exact stock price or index (exact prediction for short). Qiu et al. tried to predict the return of Nikkei 225 index by combining the performance of the accuracy of prediction and run time and concluded that the hybrid of genetic algorithm (GA) and backpropagation (BP) provides more accurate forecasting of future values than other prediction models [2] do. In J. Wang and J. Wang’s paper, they introduced the stochastic time effective neural network with principal component analysis model to forecast the indexes of Shanghai Stock Exchange (SSE), Hong Kong Hang Seng 300 Index (HS300), Standard & Poor’s 500 Index (S&P500), and Dow Jones Industrial Average Index (DJIA). Their results show that the proposed neural network model improves the accuracy of forecasting results [3]. In Al-Hnaity and Abbod’s paper, they proposed a hybrid ensemble model based on BP neural network and EEMD to predict FTSE100 closing price. The results show that this method can effectively reduce the stock price prediction error [4]. The accuracy of this kind of prediction methods seems very high, but it is still not enough to help stock investors to make a decision since the fluctuation of a stock price or index usually is no more than 1% in a day (that is to say, prediction accuracy should be up to 99.5%).

The others, a few scholars, prefer the rise or fall of a stock index (trend prediction for short) to its exact numerical value. In Wang et al.’s paper, they used an NNK-ELM model which is based on market news and stock prices to forecast Hong Kong stock indexes. The prediction results show that the proposed method is better than the traditional BP algorithm in trend prediction accuracy [5]. Sun and Gao directly used the forecast accuracy of the stock trend as the criterion of their model. They proposed a hybrid BP neural network combining adaptive particle swarm optimization algorithm (HBP-PSO) to predict the stock price of “Zhong Guo Yi Yao” (600056). The results support that the trend prediction accuracy of HBP-PSO is better than that of the simple neural network [6]. Using this criterion can ensure the prediction accuracy of the up and down signals of stock price to reduce the possibility of trading errors.

For most stock investors, forecasting whether a stock price or index will rise or fall (trend prediction) is enough to make a decision, buying or selling. Therefore, the second method is more practical than the first. However, the second way does not yet work very well. One important reason is that different periods of a stock market, for example, rising period and falling period, have different inherent laws and scholars usually use a single neural networks model and the same set of parameters to deal with the different periods [5, 6]. Another reason, the most difficult problem, is the effect of unexpected news, which could hardly be predicted. Recently, some scholars try to deal with the problem through collecting and mining present financial information [7, 8]. However, the effect of the information is difficult to quantize and the relationship between present information and future news is uncertain.

In this paper, we developed a data-divider to divide a set of historical stock data into two parts according to rising period and falling period, training, respectively, two neural networks optimized by a GA. Above all, the data-divider enables us to avoid the most difficult problem, the effect of unexpected news. Experiments show that the accuracy of our method increases 20% than those of traditional methods.

2. The General Frameworks of the Bimodel Algorithm with Data-Divider

The whole framework of the bimodel algorithm with data-divider (BADD) is shown as Figure 1. In Figure 1, arrow lines show directs of data flows. Arrow dotted lines indicate adjusting parameters. In the stage of training neural networks, GA optimizes parameters of BP1 and BP2 separately. After the stage, GA does not work.

In the following paragraphs, we will give details of all components of Figure 1 sequentially.

3. Input and Output

The input of Figure 1, real historical data, include current and previous two day’s closing values and volumes and current day’s KDJ index, MACD index, and RSI. The output of Figure 1 is predictive data, tomorrow’s closing value.

According to Joseph E. Granville’s theoretical research on volume-price relationship, volume is the leading indicator of stock price, so this paper uses volume as an important factor of the input. Based on the practical experience of stock exchange, too “old” stock data usually is insignificant for stock forecasting. Therefore, this paper chooses previous two days’ closing price and volume as two of input variables.

The Stochastic Oscillator (KDJ), including value, value, and value, is a momentum indicator [9]. When value, value, and value are all above 50, the stock market is in a bullish mood. When they are all below 50, the stock market is in a bearish mood. This paper treats as an input variable.

The moving average convergence (MACD) is widely used for medium- and long-term stock forecasting. Observing a MACD line, we can easily find out the bullish signal and the bearish signal. Therefore, this paper chooses the MACD value as an input variable.

The Relative Strength Index (RSI) defines a trading rule to measure the speed and change of price movements [9]. Therefore, this paper chooses RSI as part of the input.

As three typical reference indicators, MACD, RSI, and KDJ have become an essential reference standard for many stock traders. So, these three indicators also have psychological significance to a certain extent.

4. Data-Divider

As two different stages, rising period and falling period have different inherent laws. If we use the same neural network with the same parameters to predict stock, these complex data will easily cause the overfitting problems and reduce the neural network prediction accuracy. So, this paper proposes a data-divider to divide a historical data set into two different training data sets and use two models to train separately.

However, these data should not be roughly divided once and for all since the accidental fluctuation of stock markets complicate stock data. A long stock period include some short rising periods and falling periods, which may be nested within each other. Further, there is always a long-term rising with some small range fluctuations which will not affect the general trend. The falling period is so too.

The presented data-divider, as Figure 2 shows, can reduce the complexity of a data set and improve the prediction accuracy of neural networks. From this figure, we can see that those data in a small range of fluctuation (around 2%) are retained, for the reason that stock with absolutely monotonic trend without any fluctuation does not exist in actual stock market. Additionally, the data-divider “ignores” the data of big unexpected news making violent changes (the index drop or rise over 2%). That is to say, we do not try to predict the effect of big unexpected news but predict the following trend.

5. Data Normalization

Sigmoid function is used as the activation function between the input layer and the hidden layer. The formula of this function is

Because the range of this function is between 0 and 1 and when the range is and , the trend of this function is smooth. However, stock data are very complicated. For example, trading volume could be very large, even reaching the level of , but the value of MACD is under the level of . After normalization, these data are unified into the same reference frame, which makes the calculation of next step easier.

We normalized input data to the range of . The normalization function is

is the result; is the value before normalizing; is the max value of the range.

6. The Approach to Combine BPNN and GA

BP neural network (hereinafter called BPNN) can achieve good results in stock forecasting [1013]. On the one hand, BPNN may fast converge to a local optimal solution, but it can not ensure a globally optimal solution because of the problem of the local optimum. On the other hand, genetic algorithm (hereinafter called GA) can search the whole space, but its convergence rate is slow. GA-BP algorithm combines the two methods to fast obtain the global optimal solution. There are two different approaches to combine BPNN and GA.

First approach uses BPNN to optimize several different initial values and then obtains several local extreme values. GA combines these extreme values to get better values. However, this approach shows serious premature convergence and easily falls into local optimal solution [14].

Second approach uses a GA to obtain some low-precision solutions firstly. Starting from these solutions, BPNN makes local search to obtain some high-precision solutions. From the point of view of neural networks, the search of the GA is to obtain a group of better initial weights of the neural network than random initial weights. The local search by BPNN is to revise this group of initial weights and obtain the global optimal result. As a result, this approach got a better global solution than the first approach. Therefore, in this paper, we used the second approach. Figure 3 is the flow chart of the second approach.

6.1. Momentum Factor

Using momentum factor can not only minimize the error of the network, which easily falls into local minimum, but also speed up the convergence process of the algorithm [15]. After using momentum factor, the change of weight is

In this formula, is the momentum factor, with a domain of . If and are both positive or negative, this formula will accelerate convergence; if it is not the case, the speed of convergence will be reduced and greater stability will be achieved without falling into a local minimum. A dynamic method is adopted in choosing an appropriate momentum factor: where is the number of iterations. A large momentum factor can speed up convergence in the BP algorithm. As the number of iterations increases, the momentum factor decreases. Therefore, the volatility of results is minimized.

6.2. L2 Regularization

The L2 Regularization can reduce weights, reducing the complexity of the network. This method can avoid overfitting problems caused by high network complexity and increases the accuracy of prediction. The formula of L2 Regularization iswhere is the cost function and is the number of input vectors.

6.3. Details of the GA

Since this paper takes into account not only the error of the prediction results but also the trend prediction accuracy, the following fitness function is proposed:where is the ideal output and is the prediction result. represents the result of trend prediction.

This paper uses the adaptive crossover rate and mutation rate algorithm mentioned in [16]. The formulae of this algorithm are

and represent the upper and lower limits of the value of crossover rate, respectively; and represent the upper and lower limits of the mutation rate value, respectively; is the maximum fitness of the population; is the average fitness; is the fitness of the individual currently in crossover process. This algorithm increases the crossover rates and mutation rates of individuals whose fitness values lie between and and decreases those of individuals whose fitness values lie between and . As a result, dominant individuals are retained, and disadvantaged individuals are changed.

The remainder stochastic sampling with replacement (RSSR) selection operator [17] is used and its basic steps are as follows.

Let the population size be and the sum of all individual fitness be sum. is defined as the fitness of the th individual, and the survival expectation of the th individual has the following explicit form:Let be the new fitness of the th individual. Remaining individuals are generated by ordinary roulette method.

Compared with conventional roulette methods, this selection operator reduces the selection error so that individuals with fitness above average can survive to the next generation and increases population diversity. Therefore, the premature convergence problem of GA can be improved.

An arithmetic crossover operator [18] is used. In the case of longer chromosome, this method will generate better individual and avoid massive destruction of chromosome. Meanwhile, its computing efficiency is high. So, this method fits real-coded chromosomes better. The main operation isIn these two formulae, is a random parameter and or means a gene (a real number) on the chromosome of the individual to crossover before crossover. or means the gene after crossover.

Mutation operator plays a vital role in maintaining population diversity. A suitable mutation operator can greatly improve premature convergence problem of genetic algorithm. According to Bitwise mutation operator, for every gene on a chromosome, a random value is calculated, if is larger than the probability of mutation, another random number is calculated and added to the gene value. A mutation probability that is too high or too low will cause problem like heavy loss of excellent genes or premature convergence. Therefore, to keep a proper mutation probability, this paper chooses adaptive mutation probability.

7. Simulations

In this paper, the data-divider can divide a stock data set into two different data subsets, the rising one and the falling one. So, our system includes two models, rising model and falling model. The falling data set trains falling model and the rising data set trains the rising model. The following experiments will test them, respectively. A conventional method (called single model method in this paper), which uses the same neural network with the same parameter to train historical data, was used for comparison.

This paper focuses on actual stock exchange, which is nothing more than buying or selling. It is an obvious buying signal for the stock traders when the price trend of a stock is rising. And when the price trend of the stock is falling, the stock trader will sell it. In fact, the stock trader is more concerned about the future price trend of a stock, so this paper uses not only average error and maximum error as the criterion of experimental results, but also the accuracy of trend prediction as the criterion.

The formula of the error calculation iswhere is the actual closing price and is the prediction result. The following formula was used to judging the trend prediction result

7.1. Trend Forecast for Rising Model in a Long Period of Index

The SSE index from 13 October 2009 to 29 January 2016 (1533 groups of samples) was selected as a training set. SSE indexes in four long periods which match the rising model from 15 June 2016 to 29 November 2016 were selected as test sets.

With the same GA-BP algorithm, the results of the rising model (one part of bimodel) and the single model are, respectively, listed in Table 1.

In Figures 4 and 5, green lines represent closing prices, blue points represent prediction results and red points represent real closing prices. For each day, if the red point and the blue point are on the same side, it means that this trend prediction is accurate.

From Table 2, we can easily see that, in four periods, trend prediction accuracy of the rising model method is about 20% higher than that of the single model method. These results prove that rising model can obtain not only lower prediction error but also higher accuracy of trend prediction. In the figure of single model, for most days, the red point is close to blue point but they are on the different side of the green line, which means prediction failure. So, the single model method may mislead the operation of the stock traders. Oppositely, in the figure of rising model, even if two points are far away, they are still on the same side of the green line, which means prediction success. So rising model, that is, the bimodel method, can greatly reduce misleading signals.

7.2. Trend Forecast for Rising Model in the Long Period of Individual Share

This paper selected the stock of industrial and commercial bank of China (ICBC) from 31 March 2008 to 07 April 2017 (2176 sets of data) as an experimental training set and selected the stock of ICBC from four long periods which match the rising model from 17 May 2017 to 12 October 2017 as test sets. The test sets have 49 groups.

With the same GA-BP algorithm, the result of the rising model method and that of the single model method are shown in Table 3.

In Figures 6 and 7, green lines represent closing prices, blue points represent prediction results, and red points represent real closing prices. For each day, if the red point and the blue point are on the same side, it means that this trend prediction is accurate.

From Tables 2 and 4, we can know that rising model can improve trend prediction accuracy not only in stock index but also in individual share. This model can keep error in a low level.

7.3. Trend Forecast for Falling Model in the Long Period of Index

This paper selected the SSE index from 13 October 2009 to 29 January 2016 (1533 sets of data) as the experimental training set and selected the SSE index from three long periods which match the falling model from 15 July 2016 to 03 November 2016 as test sets. The test sets have 26 groups.

With the same GA-BP algorithm, the result of the falling model (another part of bimodel) method and that of the single model method are shown in Table 5.

In Figures 8 and 9, green lines represent closing prices, blue points represent prediction results, and red points represent real closing prices. For each day, if the red point and the blue point are on the same side, it means that this trend prediction is accurate.

From Table 6, we can know that falling model not only can keep error in a low level but also can improve the accuracy of trend prediction. According to the experimental results of 7.1 and 7.2, bimodel method, including rising model and falling model, reaches nearly 75% accuracy and keeps the error in a low level.

7.4. Trend Forecast for Falling Model in a Long Period of Individual Share

This paper selected the stock of industrial and commercial bank of China (ICBC) from 31 March 2008 to 31 July 2015 (1768 sets of data) as an experimental training set and selected the stock of ICBC from three long periods which match the falling model from 11 August 2015 to 03 November 2017 as test sets. The test sets have 31 groups.

With the same GA-BP algorithm, the result of the falling model method and that of the single model method are shown in Table 7.

In Figures 10 and 11, green lines represent closing prices, blue points represent prediction results, and red points represent real closing prices. For each day, if the red point and the blue point are on the same side, it means that this trend prediction is accurate.

Form Tables 6 and 8, we can easily know that falling model can improve trend prediction accuracy not only in stock index but also in individual share. From the above experiments, these results prove the certain practical significance of the bimodel method.

8. Conclusion

Stock prediction is an interesting and difficult question. Existing algorithms, including BP and many current algorithms, still could not provide helpful prediction results for stock investors. An important reason may be that stock data in a long period are too complex and include too many modes. The data-divider, which divides a complex data set into two simple sets, enables two “old” BP models to get satisfactory prediction results for the difficult question. It is interesting that “old” BP neural networks are still potential. An intelligent and self-adaptive data-divider is our future object.

Conflicts of Interest

The authors declare that there are no conflicts of interest regarding the publication of this paper.

Acknowledgments

The authors would like to thank the Chinese National Natural Science Foundation (61370177), Guangdong industry-university-research (2012B090600017 and 2011B090400204), and Student Research Project of South China University of Technology (2016).