To: xu, b. who wrote (724 ) 3/29/2000 8:07:00 PM From: Optim Respond to of 871
If a scatter plot shows correlation between two sets of data (small cap vs. large cap for example), it may worthwhile to test it with NN. I do. I won't use the input unless there *is* a definite link between the two variables. What I want to see though is a relationship (possibly even nonlinear) between the two that is profitable across many different parameters. If a 10 period moving average of company A leads company B but a 9 day average is barely profitable, it won't hold up. This shows up in the scatter plot as a point by itself, without many surrounding values. In a surface plot, it would be a high peak with very few surrounding patterns. What you want is a plateau of similar values so that if the parameter changes, you (hopefully!) will still make money. Eventually the dynamics of the market change so you need to find patterns that are profitable even if their parameters change. You can also train on shorter timeframes, but personally I still want to test for longer term significance. It just makes me feel more comfortable in trading the model. It's funny that the highest contribution is from an input like C/MA20 which should be choppy compare to some smoothed indicators such as weekly MACD. One of the tricks to using neural networks is to detrend and normalize your data series before feeding it to the network. This is also one of the reasons that many of the people that have tried them and failed give them a bad rap. If a series has a long term trend to it, the neural network doesn't have to work very hard to model that trend. If I use a 10 day MA of JDS Uniphase (JDSU) for example, most likely my network will notice that it has gone straight up and therefore the network would assume it is likely to go up tomorrow. It hasn't really learned how to predict the series. By subtracting the moving average from the close you turn a trending input into a much more useful, and stationary input. Try subtracting a 50 day MA from most stocks in a charting package to detrend them and look at the results. Many of the up/down cycles that you wouldn't see in the trending series will be much more evident in the detrended series. This is usually refered to in many statitistical textbooks as making a non-stationary series stationary. You can also use a Logarithm or % Change of the series or a Z Score. None of these are perfect, but they help. Neural networks are simply pattern recognition engines. They train on data, learn the nuances of that data, and then apply themselves to data they've never seen before. If you train the network on values that range from 1 to 10, and then test it on a new value of 11, most networks will fail the test. Some of the newer networks will interpolate/extrapolate, but you will still fare much better if you use stationary inputs. By converting your data to a stationary time series you help the network to learn the true relationships in the data, and not the simple trend. You also help it to generalize by making the network level independant. What this means is that a 1 percent change 2 year ago has the same significance as a 1 percent change today. With most stocks a 1 dollar change 2 years ago is worth much less than a 1 dollar change today. The simple C/MA20 is a good example of a decent input. It can be refined to be even better, but that's another story... :) One more point. If you timeframe is too short, you will probably have a tough time because there is much more noise in shorterm data/indicators. The network may not be able to discern the longer term patterns that are in the data because all it sees are a number of short term noisy inputs. The best approach, at least in my experience, is to mix multiple timeframes. You can use a noisy indicator like say a 3 day RSI with a 3 day MA applied, but balance it with a longer term indicator that will give the network an idea of the longer term trend. Maybe a 39 period Lastochastic %K. :) Again, for eample my best models use weekly trade indicators as an input. You could do the same by mixing weekly and daily inputs. The network then knows that we are in the middle of a long term uptrend (weekly) but a short term dip (daily). In time, after a few hours (or in my case years!), you learn how each input affects your model. I can look at a neural output now and get a good idea of what input or variable is dominant when a signal is issued. You can then adjust them to be more effective. If my output looks to long term I may throw in a shorter term variable which will cause the neural output to become choppier, and hopefully more profitable. With practise you'll get the hang of it. Optim