Forecasting Foreign Exchange with Neural Network - Lag in Prediction



I have a question regarding the use of neural network. I am currently working with R (neuralnet package) and I am facing the following issue. My testing and validation set are always late with respect to the historical data. Is there a way of correcting the result? Maybe something is wrong in my analysis

  1. I use the daily log return r(t) = ln(s(t)/s(t-1))
  2. I normalise my data with the sigmoid function (sigma and mu computed on my whole set)
  3. I train my neural networks with 10 dates and the output is the normalised value that follows these 10 dates.

I tried to add the trend but there is no improvement, I observed 1-2 days late. My process seems ok, what do you think about it?


Posted 2014-08-29T06:00:53.420

Reputation: 71



A couple of ways to improve your design:

  1. Consider a different normalization: The sigmoid function will attenuate large moves. It is likely precisely these large non-linear moves that attracted you to using neural networks in the first place. Why remove them? A simple whitening of the data may be better
  2. As pointed out by Nima, your model can only predict what is knowable from the data you give it. If you are only fitting on data using historical prices, it will only give you what is predictable from them. Things such as news events / earnings surprises / holidays / option market flows will not be fed into your model. Consider adding these series as well.
  3. Lots more historical data. Neural networks often require very large sample sizes because they are trying to estimate a very large parameter space. Although, more data doesn't always imply more information, this will still likely help.
  4. Experiment with different network architectures. The number of layers / size of the layers / different gradient decent algorithms / different activation functions / dropout etc..


Posted 2014-08-29T06:00:53.420

Reputation: 131


It is likely to be very hard to draw any conclusion if you are training with only 10 input samples. With more data, your diagnosis that the model is predicting lagged values would have more plausibility. As it stands, it seems pretty likely that your model is just saying that the last observed value is pretty close to correct. This isn't the same as a real lag model, but it is a very reasonable thing to guess if you haven't seen enough data.

Ted Dunning

Posted 2014-08-29T06:00:53.420

Reputation: 101


i have seen many papers that are basically what you just described. there is nothing wrong with what you are doing, but there are severe limitations in how this can predict the market. let me give you an example: suppose that u have some data and you begin to predict. with each set of data, you predict the next datapoint. and then you feed this datapoint back to the system as input and do this on and on .... in most of the times the system would just continue the last trend and the timeseries won't break. this is not prediction, this is line continuation... only when the system sees the break in real data, will the prediction break, and this is the lag that you are talking about (if i understand your question right). The first thing that you can do to enhance this is to extract some market indicators from the price. this would really help

Nima Shayanfar

Posted 2014-08-29T06:00:53.420

Reputation: 63

I think this answer has a kernel of value but could probably benefit from a more specific example, and some editing. – Sean Owen – 2014-10-05T16:48:11.980