自動売買システムの売買ロジックを構築していく上で最も恐いのが、過剰最適化。
バックテストでの成績が良くても、運用を開始したとたんに期待した成績が出なくなる。
では、過剰最適化をどうやて防ぐか?
分からない。
これが分かれば、聖杯を手に入れたも同然では。
そう簡単な話じゃない。
ただ、こういうポイントは気を付けておかなければならない、と思っていることがある。
それを紹介する。
ロジックをできるだけシンプルに
このことは、『売買ロジックの組み立て方』で紹介した。
トレードサンプル数をできるだけ多く
このことは、『バックテストでの確認項目は何か?そして、重視している項目は何か?』で紹介した。
近傍のパフォーマンスもチェック
このことは、『最もパフォーマンスの良かったパラメータを採用するべきか?』で紹介した。
今回、少し補足する。
下図が近傍のパフォーマンスチェックの実施例。
これは、MACDを使用した売買ロジックで、バックテスト結果をExcelで集約したもの。
(ロジックの詳細は、ナイショ)
MACDの各パラメータを縦軸(A、B、D列)とし、
ティック足のティック数を横軸(F~P列、ラージ400~500ティック、10ティック刻み)とし、
データ部(色のついたセル)には「合格率」を表示している。
合格率は、『バックテストでの確認項目は何か?そして、重視している項目は何か?』で紹介した。
ただし、このときとは少し項目が違う。
合格率は0~100までの値をとり(もちろん、高いほどパフォーマンスが良い)、
標高が色分けされた地図(山が茶色で平野が緑)をイメージし色付けをしている。
このように色付けをしておけば、Excelシートをスクロールしていったときに、
どこに山(パフォーマンスの良い地点)があるか、並びに、山の形状が俯瞰できる。
更に、Excelのフィルター機能やソート機能を使って、色々な視点から俯瞰することができる。
そして、山が多く連なっているところを探す。
例えて言うなら、富士山ではなく、北アルプス槍ヶ岳を探す。
最も高い山であることよりも、高い山が連なっている地点であることの方が、
過剰最適化を防ぐ観点では重要だと考えている。
バックテストを複数期間で実施する
バックテストの対象期間が、
日足チャートでどういう局面であったのかを押さえておくことは大事なことだと思う。
特に、
- 局面に偏りがないか?
- その売買ロジックが得意とする局面だけでテストを実施していないか?
これらのチェックは、過剰最適化を防ぐ観点では重要だと考えている。
そして、バックテストを複数期間で実施するのも、良いのではないかと思っている。
例えば、過去4年間と直近3ヶ月の両方をテストする、といった具合。
他には、トレンドフォロー型の売買ロジックの場合だと、
過去4年間とレンジ局面の3ヶ月、といった具合。
敢えて、そのロジックの弱い局面をテストし、
パフォーマンスをチェックするのも良いと思う。
長期間を対象とすることにより、
局面の偏りを無くすと同時にトレードサンプル数を増やし、
直近の局面にフィットするもの、
あるいは、
苦手な局面でもある程度の対応力のあるもの、
を探し出すことにより、堅牢性がアップするのではないだろうか。
『バックテスト機能』で、
バックテスト対象期間を複数設定することができるようにしていることを紹介した。
また、『売買ロジックの最適なパラメータをどうやって見つけるか?』で、
パラメータフリー遺伝的アルゴリズム(PfGA)により
売買ロジックの最適なパラメータを見つけていることを紹介した。
実は、このPfGAを複数期間設定に対応させており、
PfGAの目的関数を複数期間で重みづけ評価できるようにしている。
こうして、複数期間で総合判断し、最適なパラメータを見つけている。
上記以外にも、ウォークフォワード分析を実施し、堅牢性をチェックすることも良いと思う。
これについては、別途記事にする。