Excellent research..thanks for sharing!
I am a newbie when it comes to ML. I am currently re-writing my backtest engine and here is what I am going to be able to do. Feedback welcomed.
Let's say I am interested in a strategy that buys an oversold stock or ETF and expects a bounce. For this strategy I know that I expect the stock to be below its 200 day ma. Let's assume I am testing daily data. Here are the features I am interested in testing.
[1DailyClose, 2DailyClose, 3DailyClose]
[1WeeklyClose, 2WeeklyClose, 3WeeklyClose]
[1MonthlyClose]
[1MonthIs12MonthLow, 2MonthIs12MonthLow]
[1WeeklyCloseRelatedToLowerBollingerBand, 2WeeklyCloseRelatedToLowerBollingerBand, 3WeeklyCloseRelatedToLowerBollingerBand]
[1MonthlyCloseRelatedToLowerBollingerBand, 2MonthlyCloseRelatedToLowerBollingerBand, 3MonthlyCloseRelatedToLowerBollingerBand]
[1MonthlyCloseIs12MonthLow, 2MonthlyCloseIsTwelveMonthLow]
Note that weekly and monthly data points always start with the previous week or month relative to the daily data point.
The software I am writing would take in all the feature arrays above and run all of the combinations. For example, let's say I start testing SPY and go to the first testable data point with my first feature combination 1DailyClose and 1WeeklyClose. If the data point was below its 200 day ma, then it would determine Close change value for the current day and the previous week, and would then proceed to test all of the other data points for that pattern. Some exit criteria here would be used (maybe put a stop and a limit in) just to see if the pattern can get a positive expectancy.
Once the software goes through all of the results for the different combinations, it can pick the top performing patterns and then test those patterns against other stocks. Assuming some viable patterns are identified, further tweaking could be made.
I am writing the software in GoLang so it is going to be fast. I suppose this could be considered a "poor mans" machine learning approach
fan27
I am a newbie when it comes to ML. I am currently re-writing my backtest engine and here is what I am going to be able to do. Feedback welcomed.
Let's say I am interested in a strategy that buys an oversold stock or ETF and expects a bounce. For this strategy I know that I expect the stock to be below its 200 day ma. Let's assume I am testing daily data. Here are the features I am interested in testing.
[1DailyClose, 2DailyClose, 3DailyClose]
[1WeeklyClose, 2WeeklyClose, 3WeeklyClose]
[1MonthlyClose]
[1MonthIs12MonthLow, 2MonthIs12MonthLow]
[1WeeklyCloseRelatedToLowerBollingerBand, 2WeeklyCloseRelatedToLowerBollingerBand, 3WeeklyCloseRelatedToLowerBollingerBand]
[1MonthlyCloseRelatedToLowerBollingerBand, 2MonthlyCloseRelatedToLowerBollingerBand, 3MonthlyCloseRelatedToLowerBollingerBand]
[1MonthlyCloseIs12MonthLow, 2MonthlyCloseIsTwelveMonthLow]
Note that weekly and monthly data points always start with the previous week or month relative to the daily data point.
The software I am writing would take in all the feature arrays above and run all of the combinations. For example, let's say I start testing SPY and go to the first testable data point with my first feature combination 1DailyClose and 1WeeklyClose. If the data point was below its 200 day ma, then it would determine Close change value for the current day and the previous week, and would then proceed to test all of the other data points for that pattern. Some exit criteria here would be used (maybe put a stop and a limit in) just to see if the pattern can get a positive expectancy.
Once the software goes through all of the results for the different combinations, it can pick the top performing patterns and then test those patterns against other stocks. Assuming some viable patterns are identified, further tweaking could be made.
I am writing the software in GoLang so it is going to be fast. I suppose this could be considered a "poor mans" machine learning approach

fan27