Week 9: Overview
Xander S -
I will use this week’s blog as an opportunity to provide a higher-level overview of my project. The goal of my research was to (1) asses the validity of two overarching theories within the world of technical trading (mean reversion and momentum), and (2) use my findings to fine-tune a trading algorithm that I could deploy in real time. To complete part 1 of the project, I coded out a backtester that could run different trading strategies across varying market conditions, market capitalizations, public equity type, and time frames, and output a variety of performance metrics. I developed strategies in three separate phases:
- Skeleton strategies: Use technical indicators in the most bare-bones way possible – very simple.
- Hybrid strategies: Use 2-3 technical indicators at once to confirm buy/sell decisions – more complex.
- Advanced strategies: Builds upon the first two phases by implementing dynamic execution rules and additional indicators (up to 5) – advanced.
To cleanly assess the performance of the strategies, I developed the X-Value scoring system, which aggregates a multitude of useful performance metrics. The idea was to use X-Value as a way to predict how “well” a strategy would perform in out-of-sample data. I was able to validate the correlation between X-Value and relative return and probability of beating a buy and hold strategy (passive equity ownership) by splitting up my data into training and testing windows, and running backtests on individual equities. This made the X-Value a cornerstone of both part 1 and part 2 of this project. From there, I calculated median X-Values across all possible context combinations, using varying criteria to separate the data. I used specialized significance tests to ensure I wasn’t making any conclusions that were statistically insignificant. This satisfied part 1 of my project. With post-significance test results, I could safely generalize and identify some key takeaways from the data.
All of my results from part 1 are currently being used to construct my final algorithm. It will use the X-Value to make predictions on the future performance of a strategy in a specific context, asses the current context, and deploy the most optimal strategy for a chosen amount of time. It will essentially be a self-sustaining and self-updating algorithm that is constantly optimizing execution rules, deployment parameters, and more, based on historical data and how it performs in live testing. Next week, I will provide the highlights of my results from part 1, and more details regarding my final algorithm (part 2). See you then!
