Backtrader のコードに 2 点の変更を加えた。
- backtrader_plotly の導入
- cerebro.optstrategy の採用
backtrader_plotly の導入
backtrader の plot 機能を使うことで、ストラテジーに従ってどこでアセットの購入を行い、どこで売却を行ったのかが記録された画像の出力が可能となる。
この画像は matplotlib で出力される静的な画像であることから、細かい部分が見づらいという課題が残る。
この課題に対して、backtrader_plotly の導入を行うことで、動的に拡大/縮小/範囲選択が出来るようにした。
以下は backtrader_plotly による出力サンプルだが、日足の情報や売買履歴の目視確認やコードのバグの修正が容易となった。
cerebro.optstrategy の採用
backtrader のストラテジーの実行を行う際に、optstrategy という関数がある。
これにパラメータの候補を渡すことで、各パラメータの組み合わせに応じたストラテジーが実行され、結果の比較を行うことが出来る。
短期の移動平均が、中期の移動平均を上回った時を買いとするストラテジーの採用を検討する際に、短期と中期として採用すべき期間にどの値を設定すればよいのか、といった疑問を持つだろう。
これに対する一つの回答が、短期には 3,4,5, … ,9,10 を、中期には 15,20, ... 45,50 をパラメータの候補として与え、短期と中期のパラメータの組み合わせ毎にストラテジーを実行し、この結果の比較を行うという方法となる。
scikit-learn のような機械学習のライブラリを使う方法もあるが、簡易的に試すだけであれば optstrategy で十分だと思う。
実行されたストラテジー毎に、以下の例のようなレポートも出力される為、自分の嗜好にあったストラテジーの模索が容易となった。
ストラテジーの立案、ストラテジーの実行、結果のレポートの確認、ストラテジーの改善の PDCA サイクルを回す為には、結果の可視化に力を入れるべきだと思う。