Why factal interpolation can give erroneously optimistic results when backtesting scalpers

 
Most of us have viewed excessively optimistic backtest results with a lot of suspicion. Many have gone further and compared forward test results with backtest results and have noted that the forward test results rarely match.

The most common reason that backtests are flawed is where the selection of parameters "curve fits" the data. In statistical terms, the number of degrees of freedom is too large for the sample size, causing the backtest to represent a low likelihood solution. This happens most with 1H or 1D charts because the number of historical data points is small.

I have located another cause of backtest error, which is because the "fractal interpolation of pips" approach used by the MT4 strategy tester generates too many multiple-pip jumps. This impacts backtesting most when a small takeprofit value is used, often in scalping EAs.

About 90% of tick movements on a 1 week record of live USDJPY data from CoesFX were 1 pip. This means that the takeprofit level in an EA would have been the exact value used in the order exit 90% of the time.

In contrast, the fractal interpolation of ticks from 1M data over the same timeframe delivered only 68% of ticks with a 1 pip movement. This means that the price could have exceeded the takeprofit value 32% of the time, delivering a higher profit. In a scalper that may take hundreds or thousands of profits of only a few pips, this grossly inflates the estimates of total profit.

In a comparison of the two graphs (http://users.tpg.com.au/phamsmit/MT4_tick_analysis/tick_analysis.zip), it can be seen that the spread of large tick movements is far wider with the strategy tester.

What can you do? I suggest pasting the backtest results into excel, and using a formula to truncate all the excess T/P's back to the T/P level in your EA. If you still have a winner after all that, then you might be onto something.

Possibly the MT4 strategy tester can be finetuned to simulate ticks from 1M data more accurately, but the reality is that only a backtest on real tick data from your own broker will give anything close to accurate results.
 
You can get tickchart and convert it for MT4, that is the only solution, and it works! And the results are realistic. I writ it down again: MT4 is a superior, highly programmable platform, but you need good data if you want to use it's best features.

Simulations just won't work, because an M1 bar (smallest timeframe) is just compressed Tickchart (the difference between timeframes is the amount of compression), with two concrete points: open and close, and two relative: high and low.

I made a quick scheme:
http://img206.imageshack.us/img206/5029/barsjt3.jpg

The first drawing is an M1 bar, that can be built infinite ways. You can guess, the results won't be the same, for the three ways that I drew. In my opinion the first one is the most realistic, but I saw bars built by tester like the last drawing.
So you only know two sure points per minute, and two relative from a M1 bar, not more. (You can generate with sophisticated algorithms, but the two sure points remain only two sure points) Well, if you ever saw a US market open, with announcements on EURUSD, you probably know that a lot more happening than what can be desribed with random data generated on the basis of two real points. (you can try Google and Ebay).
 
Good points, Zap. I really wish MT4 could backtest against tick data. It wouldn't be difficult to do. It's such an essential capability for testing short term systems that I'm developing a limited emulator for MT4 in C++ so I can do just that.

Paul
 
Good points, Zap. I really wish MT4 could backtest against tick data. It wouldn't be difficult to do. It's such an essential capability for testing short term systems that I'm developing a limited emulator for MT4 in C++ so I can do just that.

Paul


Drop me a mail to forexzapATgmailDOTcom.
Reason: