Big 'O' is a measure of many things, with respect to backtesting it helps because results are always ambiguous.

Backtesting results are almost iffy for a variety of reasons, but a salient one is the 'day bump' problem.

Say, I have a strategy that trades at the 'beginning of every month' and the results look promising.

What happens to the results if we trade at the 'beginning of every month' minus a day, or two days or three.

All we are doing is bumping the 'decision days', but it turns out the results from these bumps vary a lot.

For example, the 'Skewerage' strategy weights its holding in the S&P 500 by the changes in the CBOE skew index.


weight.sp500 = -monthly_skew_change

(Code here)

So if the S&P 500's implied skew jumps, go short and vice versa.

The Sharpe Trajectories show two Skewerage strategies, which are identical except the 'Best' strategy makes decisions 4 days before the 'Worst'.

The 'Best' outcome has a Sharpe ratio of 0.71 whereas the 'Worst' is a mere 0.16.

In Sharpe Trajectory terms the 'Best' is clearly the more efficient path from beginning to end.

You can see that both follow the same idea, but 'Worst' messes things up right from the beginning, whereas 'Best' elegantly avoids many of the large pitfalls and rounds it off by capitalising on '08.

I have decided to only report the 'Worst' strategies every time you backtest in the Lazy Backtesting IDE, once I have ironed out performance issues with this new feature.

A super conservative approach, but if you do see a good result it will be much more reliable than using the traditional method.

Think of it as a 'Colbert Bump'.