December 2021

Welcome to this blog! In this first post, I introduce myself and my framework. Hopefully, many more posts will follow in the future.

I have been enthousiastic about trading for several years. First, as a consumer, watching prices rise and fall, reading articles and books and blogs, listening to webinars.

With the goal of becoming more professional, mature and independent in my trading, I started analysing indices, systematically testing recommendations and indicators, and worked on my own option backtesting framework for several years. This framework is now in a stable state.

In the following, when I talk about backtests I mean automated backtests. In my opinion, manual backtests are far better than no backtests, but far from ideal, mainly due to their limited scalability and reproducibility.

I use backtests too proof and to disproof trading strategies. I only want to be trading what I have been planning based on the best possible evidence - my own backtests. In my view, the advantages of backtesting are:

  • Save time and money: With backtesting, you can simulate more trades than you are able to perform in an entire trading career, you can easily become "backtesting-millionaire" and most importantly save a lot of "tuition fee" - a surprisingly high number of strategies do not work perform as well as one would hope, especially the last couple of years.
  • Quality check: Are the rules that you use to trade clear enough to be programmed?
  • Fun. I have learned a lot and met some interesting people thanks to backtesting.
  • It is crucial to trade a strategy which fits to your very own requirements and needs. With automated backtests, you can easily check the implications of minor tweaks that suit your style, preferences and personal circumstances better (e.g. different entry- or exit strategies).
  • And course, you can start out by systematically searching for the best performing strategy.

My framework is written in Python. I try to keep it as general and non-redundant as possible, and to divide the core functionality from housekeeping tasks.

My approach to backtesting is as close to real trading as possible. Therefore, the program checks for entry criteria (e.g. min and max VIX or down day), and then loops through the subsequent trading days, checking for adjustments (Rolling, Reverse Harvey) and exits (including delta/theta, take profit, stop loss, days to expiration, days in trade, delta change in percentage, expected value).

One lesson learned is that the simpler a strategy, the better. It is then easier to program, and most importantly easier to trade. Another lesson is that prices and strike-distances should be defined relatively instead of absolutely, considering inflation and price development.

Checking the validity of backtests is hard. A little mistake can impact all results, and there is no gold standard. I have been manually comparing results to live-trades, and the results were correct. Also, I have had several clients who successfully compared my results to their own manual backtest to my results. Having all backtests run through the same framework makes their results comparable, and prevents mistakes from manual execution.

Backtesting can become computationally intensive, especially when there are many variables with many possible values. Backtesting can also be time-consuming. It requires serious programming efforts and patience. Finally, interpreting results is work, too. Charts can be misleading. Often, the number of trades is low, so that we are lacking statistical power. To study outliers can be very interesting.

I have many ideas for the future, including to work with signals, to improve the data, to use a more analytical and statistical approach to find out from scratch which strategies perform best nowadays and why, and ultimately to develop the perfect trade.