So I finally tried backtesting of the short term mean reversion strategy (strategy 27) in my system using my own 1-minute bid-ask data I collected in the last ~4-6 years.
But I used buffering of 4, 6 and 14 forecast-units (with the usual cap of 20, so only 1 step each way initially) to change positions (14 worked slightly better but not by much), i.e. I would only trade if the forecast changed by more than 14 units from the forecast that corresponds to the current position. And I used the same trading algo as for my trend system (no limit orders), but in backtests I simply assume I had to cross the spread on every trade. I tried 9 smallest instruments like US 2Y, MES MCG, etc. and I assumed I have full 300k capital for each of them, I also didn't reduce the base capital in drawdowns.
After fixing many bugs (and I'm sure there's plenty more remaining), the results came out positive, i.e. it's not loosing money, but it's not making a lot either, the average single-instrument sharpe was 0.1 and for the overall 9-instrument-system 0.27. The average number of trades per instrument is 216, and the total number is 1945.
Also the PnL curves look quite sporadic, I was expecting to see a classic negative skew pattern with small frequent gains and rare drops, and some instruments do show that, but not all.
Also, there's no guarantee that my data is clean, the one protection I used (with the benefit of having historical daily prices) is to discard all bid-ask ticks which are outside of the Low-High of the current day (because my prod system does catch weird unrealistic prices during illiquid hours, and including them in such a backtest would inflate results).
View attachment 343018
So I don't know, not a looser, but it requires capital, which would have to be subtracted from a system with the theoretical Sharpe of 1, so doesn't seem to make sense, unless I find some bugs in my backtest and it turns out to be better..
I tried another thing with this: I ran this rule on DAILY prices on a larger portfolio (40+ instruments) and a longer history (the oldest instrument starts from 1989, the same data I use to run my main system's backtest)., with the same conditions: each instrument gets 300k capital independently, position-change step=19(in forecast units), no capital correction in drawdowns, and the result came out positive, although with a very large drawdown between 2013 and 2023:
Sharpe=0.66 Skew=-1.29 trCnt: 1254
This I think is interesting for several reasons: I can trust the quality of my daily data much more than my 'tick' data (still, bugs in the code are quite possible), with such a small trading speed, this strategy becomes compatible with the rest of the forecasting rules of the main system and can probably just be added into the "divergent" bucket together with carry and traded on the same instruments with the same capital (just need to figure out what to do with the large position-change threshold, none of the other rules have quite the same feature..), with some small allocation e.g. 10%.
Really, this modified rule is no longer "fast mean reversion" but more of a "buy short-term trend pullbacks", which I think is expected to work theoretically as well. Also, it's not surprising that it works, because it still trades in the direction of the trend (perhaps it's highly correlated with the other trend rules..)
Would be interesting if anyone else could reproduce similar results to confirm that I'm not dealing with a bug or overfitting..
Last edited: