C++ Neural Networks and Fuzzy Logic
Take the predicted scaled target value and calculate, the result value as Result = (Scaled
Download 1.14 Mb. Pdf ko'rish
|
C neural networks and fuzzy logic
- Bu sahifa navigatsiya:
- Projected SP 10 weeks from now = (This week’s SP value)(1+ Result/100) Only the Beginning
- C++ Neural Networks and Fuzzy Logic by Valluru B. Rao MTBooks, IDG Books Worldwide, Inc. ISBN
- Momentum and Rate of Change
- Accumulation−Distribution
- What Others Have Reported
- Can a Three−Year−Old Trade Commodities
- Forecasting Treasury Bill and Treasury Note Yields
- Neural Nets versus Box−Jenkins Time−Series Forecasting
- Neural Nets versus Regression Analysis
- Hierarchical Neural Network
- The Walk−Forward Methodology of Market Prediction
- Dual Confirmation Trading System
- A Turning Point Predictor
1. Take the predicted scaled target value and calculate, the result value as Result = (Scaled target/0.02) − 14.8 2. Take the result from step 1 (which is the percentage change 10 weeks from now) and calculate the projected value, Projected S&P 10 weeks from now = (This week’s S&P value)(1+ Result/100) Only the Beginning This is only a very brief illustration (not meant for trading !) of what you can do with neural networks in financial forecasting. You need to further analyze the data, provide more predictive indicators, and optimize/redesign your neural network architecture to get better generalization and lower error. You need to present many, many more test cases representing different market conditions to have a robust predictor that can be traded with. A graph of the expected and predicted output for the test set and the training set is shown in Figure 14.6. Here, the normalized values are used for the output. Note that the error is about 13.9% on average over the test set and 6.9% over the training set. You can see that the test set did well in the beginning, but showed great divergence in the last few weeks.
Comparison of predicted versus actual for the training and test data sets. The preprocessing steps shown in this chapter should serve as one example of the kinds of steps you can use. There are a vast variety of analysis and statistical methods that can be used in preprocessing. For applying fuzzy data, you can use a program like the fuzzifier program that was developed in Chapter 3 to preprocess some of the data. What’s Next? There are many other experiments you can do from here on. The example chosen was in the field of financial forecasting. But you could certainly try the simulator on other problems like sales forecasting or perhaps even weather forecasting. The key to all of the applications though, is how you present and enhance data, and working through parameter selection by trial and error. Before concluding this chapter, we will cover more topics in preprocessing and present some case studies in financial forecasting. You should consider the suggestions made in the 12−step approach to forecasting model design and research some of the resources listed at the end of this chapter if you have more interest in this area. C++ Neural Networks and Fuzzy Logic:Preface Only the Beginning 315
Previous Table of Contents Next Copyright © IDG Books Worldwide, Inc. C++ Neural Networks and Fuzzy Logic:Preface Only the Beginning 316
C++ Neural Networks and Fuzzy Logic by Valluru B. Rao MTBooks, IDG Books Worldwide, Inc. ISBN: 1558515526 Pub Date: 06/01/95 Previous Table of Contents Next Technical Analysis and Neural Network Preprocessing We cannot overstate the importance of preprocessing in developing a forecasting model. There is a large body of information related to the study of financial market behavior called Technical Analysis. You can use the mathematical studies defined by Technical Analysis to preprocess your input data to reveal predictive features. We will present a sampling of Technical Analysis studies that can be used, with formulae and graphs.
Moving Averages Moving averages are used very widely to capture the underlying trend of a price move. Moving averages are simple filters that average data over a moving window. Popular moving averages include 5−, 10−, and 20 period moving averages. The formula is shown below for a simple moving average, SMA: SMA t = ( P t + P
t−1 + ... P t−n )/ n
where n = the number of time periods back P −n = price at n time periods back An exponential moving average is a weighted moving average that places more weight on the most recent data. The formula for this indicator, EMA is as follows: EMA t = (1 − a)P t + a ( EMA t−1 )
P t = price at time t Momentum and Rate of Change Momentum is really velocity, or rate of price change with time. The formula for this is M t
t − P
t−a )
where a = lookback parameter for a 5−day momentum value, a = 5 The Rate of Change indicator is actually a ratio. It is the current price divided by the price some interval, a, ago divided by a constant. Specifically, ROC = P t / P t−a x 1000
Relative Strength Index The Relative Strength Index (RSI) is the strength of up closes versus down closes over a certain time interval. It is calculated over a time interval T as : RSI = 100 − [ 100 / (1 + RS )] C++ Neural Networks and Fuzzy Logic:Preface Technical Analysis and Neural Network Preprocessing 317
where RS = average of x days’ up closes/ average of x days’ down closes
A typical time interval, T, is 14 days. The assumption with the use of RSI is that higher values up closes relative to down closes indicates a strong market, and the opposite indicates weak markets. Percentage R This indicator measures where in a recent range of prices today’s price falls. The indicator assumes that prices regress to their mean. A low %R indicates that prices are hitting the ceiling of a range, while a high %R indicates that prices are at their low in a range. The formula is: %R = 100 x (HighX − P)/(HighX − LowX) where HighX is the highest price over the price interval of interest LowX is the lowest price over the price interval of interest P is the current price Herrick Payoff Index This indicator makes use of other market data that is available besides price information. It uses the volume of the security, which, for a stock, is the number of shares traded for a stock during a particular interval. It also uses the open interest, which is the value of the total number of open trades at a particular time. For a commodity future, this is the number of open short and long positions. This study attempts to measure the flow of money in and out of a market. The formula for this is as follows (note that a tick is the smallest permissible move in a given market) : Let MP = mean price over a particular interval OI = the larger of yesterday’s or today’s open interest then
K =[ (MP t − MP t−1 ) x dollar value of 1 tick move x volume ] x [1 +/− 2/OI] HPI
t = HPI
t−1 + [ 0.1 x (K − HPI t−1 )] / 100,000 MACD The MACD (moving average convergence divergence) indicator is the difference between two moving averages, and it tells you when short−term overbought or oversold conditions exist in the market. The formula is as follows: Let OSC = EMA1 − EMA2, where EMA1 is for one smoothing constant and time period, for example 0.15 and 12 weeks EMA2 is for another smoothing constant and time period, for example 0.075 and 26 weeks then MACD
t = MACD
t−1 + K x ( OSC t − MACD
t−1 ) where K is a smoothing constant, for example, 0.2 C++ Neural Networks and Fuzzy Logic:Preface Percentage R 318
The final formula effectively does another exponential smoothing on the difference of the two moving averages, for example, over a 9−week period. “Stochastics” This indicator has absolutely nothing to do with stochastic processes. The reason for the name is a mystery, but the indicator is composed of two parts: %K and %D, which is a moving average of %K. The crossover of these lines indicates overbought and oversold areas. The formulas follow: Raw %K = 100 x (P − LowX )/(HighX − LowX) %K
t = [( %K
t−1 x 2 ) + Raw %K t ] /3
%D t = [( %D t−1 x 2 ) + %K t ] /3
Previous Table of Contents Next Copyright © IDG Books Worldwide, Inc. C++ Neural Networks and Fuzzy Logic:Preface “Stochastics” 319
C++ Neural Networks and Fuzzy Logic by Valluru B. Rao MTBooks, IDG Books Worldwide, Inc. ISBN: 1558515526 Pub Date: 06/01/95 Previous Table of Contents Next On−Balance Volume The on−balance volume (OBV) indicator was created to try to uncover accumulation and distribution patterns of large player in the stock market. This is a cumulative sum of volume data, specified as follows: If today’s close is greater than yesterday’s close OBV t
t−1 + 1
If today’s close is less than yesterday’s close OBV
t = OBV
t−1 − 1
The absolute value of the index is not important; attention is given only to the direction and trend. Accumulation−Distribution This indicator does for price what OBV does for volume. If today’s close is greater than yesterday’s close: AD t = AD t−1
+ (Close t − Low t ) If today’s close is less than yesterday’s close AD t = AD t−1 + (High
t − Close
t ) Now let’s examine how these indicators look. Figure 14.7 shows a bar chart, which is a chart of price data versus time, along with the following indicators: • Ten−unit moving average • Ten−unit exponential moving average • Momentum • MACD • Percent R Figure 14.7 Five minute bar chart of the S&P 500 Sept 95 Futures contract with several technical indicators displayed. C++ Neural Networks and Fuzzy Logic:Preface On−Balance Volume 320
The time period shown is 5 minute bars for the S&P 500 September 1995 Futures contract. The top of each bar indicates the highest value (“high”) for that time interval, the bottom indicates the lowest value(“low”), and the horizontal lines on the bar indicate the initial (“open”) and final (“close”) values for the time interval. Figure 14.8 shows another bar chart for Intel Corporation stock for the period from December 1994 to July 1995, with each bar representing a day of activity. The following indicators are displayed also.
Daily bar chart of Intel Corporation with several technical indicators displayed. You have seen a few of the hundreds of technical indicators that have been invented to date. New indicators are being created rapidly as the field of Technical Analysis gains popularity and following. There are also pattern recognition studies, such as formations that resemble flags or pennants as well as more exotic types of studies, like Elliot wave counts. You can refer to books on Technical Analysis (e.g., Murphy) for more information about these and other studies. Neural preprocessing with Technical Analysis tools as well as with traditional engineering analysis tools such as Fourier series, Wavelets, and Fractals can be very useful in finding predictive patterns for forecasting.
In this final section of the chapter, we outline some case studies documented in periodicals and books, to give you an idea of the successes or failures to date with neural networks in financial forecasting. Keep in mind that the very best (= most profitable) results are usually never reported (so as not to lose a competitive edge) ! Also, remember that the market inefficiencies exploited yesterday may no longer be the same to exploit today.
Well, Hillary Clinton can certainly trade commodities, but a three−year−old, too? In his paper, “Commodity Trading with a Three Year Old,” J. E. Collard describes a neural network with the supposed intelligence of a three−year−old. The application used a feedforward backpropagation network with a 37−30−1 architecture. The network was trained to buy (“go long”) or sell (“go short”) in the live cattle commodity futures market. The training set consisted of 789 facts for trading days in 1988, 1989, 1990, and 1991. Each input vector consisted of 18 fundamental indicators and six market technical variables (Open, High, Low, Close, Open Interest, Volume). The network could be trained for the correct output on all but 11 of the 789 facts. The fully trained network was used on 178 subsequent trading days in 1991. The cumulative profit increased from $0 to $1547.50 over this period by trading one live cattle contract. The largest loss in a trade was $601.74 and the largest gain in a trade was $648.30. C++ Neural Networks and Fuzzy Logic:Preface What Others Have Reported 321
Forecasting Treasury Bill and Treasury Note Yields Milam Aiken designed a feedforward backpropagation network that predicted Treasury Bill Rates and compared the forecast he obtained with forecasts made by top U.S. economists. The results showed the neural network, given the same data, made better predictions (.18 versus .71 absolute error). Aiken used 250 economic data series to see correlation to T−Bills and used only the series that showed leading correlation: Dept. of Commerce Index of Leading Economic Indicators, the Center for International Business Cycle Research (CIBCR) Short Leading Composite Index, and the CIBCR Long Leading Composite Index. Prior data for these three indicators for the past four years (total 12 inputs) was used to predict the average annual T−Bill rate (one output) for the current year. Guido Deboeck and Masud Cader designed profitable trading systems for two−year and 10−year treasury securities. They used feedforward neural networks with a learning algorithm called
100 facts were selected from 1120 trading days spanning from July 1 1989 to June 30, 1992. The test period consisted of more than 150 trading days from July 1, 1992 to December 30, 1992. Performance on the test set was monitored every N thousand training cycles, and the training procedure was stopped when performance degraded on the test set. (This is the same procedure we used when developing a model for the S&P 500.) A criterion used to judge model performance was the ratio of the average profit divided by the maximum drawdown, which is the largest unrealized loss seen during the trading period. A portfolio of separate designed trading systems for two−year and 10−year securities gave the following performance: Over a period of 4.5 years, the portfolio had 133 total trades with 65% profitable trades and the maximum drawdown of 64
maximum gain in one trade of 52 basis points and maximum loss in one trade of 47 basis points. Previous Table of Contents Next Copyright © IDG Books Worldwide, Inc. C++ Neural Networks and Fuzzy Logic:Preface Forecasting Treasury Bill and Treasury Note Yields 322
C++ Neural Networks and Fuzzy Logic by Valluru B. Rao MTBooks, IDG Books Worldwide, Inc. ISBN: 1558515526 Pub Date: 06/01/95 Previous Table of Contents Next The stability and robustness of this system was checked by using over 1000 moving time windows of 3−month, 6−month, and 12−month duration over the 4.5−year interval and noting the standard deviations in profits and maximum drawdown. The maximum drawdown varied from 30 to 48 basis points.
Ramesh Sharda and Rajendra Patil used a standard 12−12−1 feedforward backpropagation network and compared the results with Box−Jenkins methodology for time−series forecasting. Box−Jenkins forecasting is traditional time−series forecasting technique. The authors used 75 different time series for evaluation. The results showed that neural networks achieved better MAPE (mean absolute percentage error) with a mean over all 75 time series MAPEs of 14.67 versus 15.94 for the Box−Jenkins approach. Neural Nets versus Regression Analysis Leorey Marquez et al. compared neural network modeling with standard regression analysis. The authors used a feedforward backpropagation network with a structure of 1−6−1. They used three functional forms found in regression analysis: 1. Y = B0 + B1 X + e 2. Y = B0 + B1 log(X) + e 3. Y = B0 + B1/X + e For each of these forms, 100 pairs of (x,y) data were generated for this “true” model. Now the neural network was trained on these 100 pairs of data. An additional 100 data points were generated by the network to test the forecasting ability of the network. The results showed that the neural network achieved a MAPE within 0.6% of the true model, which is a very good result. The neural network model approximated the linear model best. An experiment was also done with intentional mis−specification of some data points. The neural network model did well in these cases also, but comparatively worse for the reciprocal model case. Hierarchical Neural Network Mendelsohn developed a multilevel neural network as shown in Figure 14.9. Here five neural networks are arranged such that four network outputs feed that final network. The four networks are trained to produce the High, Low, short−term trend, and medium−term trend for a particular financial instrument. The final network takes these four outputs as input and produces a turning point indicator.
Hierarchical neural network system to predict turning points. C++ Neural Networks and Fuzzy Logic:Preface Neural Nets versus Box−Jenkins Time−Series Forecasting 323
Each network was trained and tested with 1200 fact days spanning 1988 to 1992 (33% used for testing). Preprocessing was accomplished by using differences of the inputs and with some technical analysis studies: • Moving averages • Exponential moving averages • Stochastic indicators For the network that produces a predicted High value, the average error ranged between 7.04% and 7.65% for various financial markets over the test period, including Treasury Bonds, Eurodollar, Japanese Yen, and S&P 500 futures contracts. The Walk−Forward Methodology of Market Prediction A methodology that is sometimes used in neural network design is walk−forward training and testing. This means that you choose an interval of time (e.g., six months) over which you train a neural network and test the network over a subsequent interval. You then move the training window and testing window forward one month, for example, and repeat the exercise. You do this for the time period of interest to see your forecasting results. The advantage of this approach is that you maximize the network’s ability to model the recent past in making a prediction. The disadvantage is that the network forget characteristics of the market that happened prior to the training window. Takashi Kimoto et al. used the walk forward methodology in designing a trading system for Fujitsu and Nikko Securities. They also, like Mendelsohn, use a hierarchical neural network composed of individual feedforward neural networks. Prediction of the TOPIX, which is the Japanese equivalent of the Dow Jones Industrial Average, was performed for 33 months from January 1987 to September 1980. Four networks were used in the first level of the hierarchy trained on price data and economic data. The results were fed to a final network that generated buy and sell signals. The performance of the trading system achieved a result that is 20% better than a buy and hold strategy for the TOPIX.
Jeremy Konstenius, discusses a trading system for the S&P 400 index with a holographic neural network, which is unlike the feedforward backpropagation neural network. The holographic network uses complex numbers for data input and output from neurons, which are mathematically more complex than feedforward network neurons. The author uses two trained networks to forecast the next day’s direction based on data for the past 10 days. Each network uses input data that is detrended, by subtracting a moving average from the data. Network 1 uses detrended closing values. Network 2 uses detrended High values. If both networks agree, or confirm each other, then a trade is made. There is no trade otherwise. Network 1 showed an accuracy of 61.9% for the five−month test period (the training period spanned two years prior to the test period), while Network 2 also showed an accuracy of 61.9%. Using the two networks together, Konstenius achieved an accuracy of 65.82%.
This neural network approach is discussed by Michitaka Kosaka et al. (1991). They discuss applying the feedforward backpropagation network to develop buy/sell signals for securities. You would gather time−series data on stock prices, and want to find trends in the data so that changes in the direction of the trend provide you the turning points, which you interpret as signals to buy or sell. C++ Neural Networks and Fuzzy Logic:Preface The Walk−Forward Methodology of Market Prediction 324
You will need to list these factors that you think have any influence on the price of a security you are studying. You need to also determine how you measure these factors. You then formulate a nonlinear function combining the factors on your list and the past however many prices of your security (your time series data). The function has the form, as Michitaka Kosaka, et al. (1991) put it, p(t + h) = F(x(t), x(t −1), ... , f 1 , f 2 , ... )
where f
1 , f
2 , represent factors on your list, x(t) is the price of your stock at time t, p(t + h) is the turning point of security price at time t + h, and p(t + h) = −1 for a turn from downward to upward, p(t + h) = +1 for a turn from upward to downward, p(t + h) = 0 for no change and therefore no turn Here you vary h through the values 1, 2, etc. as you move into the future one day (time period) at a time. Note that the detailed form of the function F is not given. This is for you to set up as you see fit. Previous Table of Contents Next Copyright © IDG Books Worldwide, Inc. C++ Neural Networks and Fuzzy Logic:Preface The Walk−Forward Methodology of Market Prediction 325
|
ma'muriyatiga murojaat qiling