Bayesian Optimization Framework
-
Hello all,
First I would like to congratulate the authors, contributors, and all the community for the awesome library/content provided.
Nowadays I'm a Sr. Data Scientist and a beginner in the field of trading investment strategies. After reading the documentation and going over some examples and discussions on the community, I wanted to contribute somehow. I noticed that there are a lot of similarities between Data Science experiments and backtesting trading strategies. One, in particular, is the parameters optimization of the strategy/machine learning model. The most simple approach is a grid search over a list of values for each parameter and their combination. In Data science this approach can be done by using GridsearchCV and I believe
cerebro.optstrategy
has a similar method.Another approach in Data Science that outsmarts grid search is Bayesian Optimization. With that in mind, I created a framework that is available in this repo for optimizing the possible parameters of a given trading strategy using Bayesian optimization.
Besides backtrader, it was used mainly three libraries:
-
Hydra: The key feature used in this project is the ability to dynamically create a hierarchical configuration by composition and override it through config files and the command line.
-
Bayesian Optimization: This is a constrained global optimization package built upon bayesian inference and gaussian process, that attempts to find the maximum value of an unknown function in as few iterations as possible.
-
backtrader_plotting: Library to add extended plotting capabilities to backtrader. Currently the only available backend is Bokeh.
This framework produces a series of metadata during the optimization process, which is saved in the directories created automatically by Hydra. This metadata includes a
best_iteration.html
file showing the Bokeh plot of backtrader_plotting, amain.log
file describing step by step of the optimization process, and aSTRATEGY_NAME.json
file containing the best set of parameters found by Bayesian optimization. After an experiment is concluded the main results are compiled and added to aresults.csv
file to easily keep tracking of all possibilities that were tried.Take a look at the
README.md
and follow the steps to see these features running with a dummy example prepared.I hope this can help some of you!
Regards,
-
-
I think it's awesome you posted this and haven't forgotten, just haven't got to it yet.