硬骨の研究者という雰囲気を醸し出す藍崎さんに、自由自在に語っていただく企画です。
今回は、優位性のあるトレード戦略を確立するのに役立つ「バックテスト」の実行方法について、さまざまなデータを用いて分析・解説していただきました。
![藍崎@システムトレーダー氏プロフィール](https://forex-online.jp/wp-content/uploads/2024/02/aisaki-system-trader-profile.png)
藍崎@システムトレーダー氏プロフィール
クオンツから定量分析を学んで生き残りたい個人トレーダー。システムトレードをする傍ら、MT5でEA開発も行う。よく使うのはMQL5、Python、R、Excel VBA。
問題提起
2020年に過去5年分のデータを使ってバックテストを行ったと仮定してみます。画像①のグラフ右側は2014年始~2019年末までのドル円から、値動きが偏っている日時を調査してトレード戦略として落とし込んだことを想定した損益グラフです。よりパフォーマンスが向上するようRSIを使ってタイミングを取らせています。
![2014年始~2019年末までのドル円バックテスト](https://forex-online.jp/wp-content/uploads/2024/05/vol9-aisaki-system-trader-2.png)
このバックテストで調査したトレード戦略で3年間運用したシミュレーションが、赤色の期間になります。このシミュレーションでは、バックテスト上(インサンプル)で良い結果を示していた戦略が運用を想定した期間(アウトオブサンプル)にパフォーマンスが悪化したことになります。
過去データを調査した結果から取引日時やテクニカル指標のパラメータなどを調整してバックテストすることに、どのような問題があったのでしょうか。
バックテストの危険性
マルコス・ロペス・デ・プラド著『ファイナンス機械学習』の「第11章 バックテストの危険性」からいくつか引用します。
バックテストはリサーチツールではない。
バックテストの目的は悪いモデルを切り捨てることであり、それを改善することではない。
同じデータに対して複数回テストをした際に必ず発生する統計上のまぐれ当たりという偽の発見である可能性を計算に入れなければならない。
バックテストの結果を基に取引する日時やテクニカル指標のパラメータなどを調整する行動は、戦略に優位性があるかどうかをテストしているわけではなく、既に確定した過去の値動きから当てはまりの良い条件をリサーチ(調査・研究)していることになります。
後付けでリサーチした条件がなぜテストにならないのかを考察するため、バックテストで良い結果が出る理由を2つに分けて考えます。
①将来にもくり返し再現される値動きの特徴をつかめている
②再現されることのないノイズに都合よく当てはめて戦略を調整している
優位性のある戦略とは①が成立しているものを言い、②に該当する戦略はバックテストでのみ良い結果で、フォワードで再現されない戦略となってしまう危険性が高まります。やり直しが通用しないリアルトレードはインサンプルの状況とは全く異なるので、アウトオブサンプルで戦略を評価し、②に該当している可能性が高いものを排除したいところです。そのためインサンプルはリサーチ、アウトオブサンプルはテスト、とはっきり区別することが非常に重要です。
ウォークフォワード(WF)法
代表的なバックテスト方法にウォークフォワード(WF)法(画像②)があります。
![ウォークフォワード(WF)法](https://forex-online.jp/wp-content/uploads/2024/05/vol9-aisaki-system-trader-3.png)
パラメータの最適化などを含めて戦略のリサーチを行う期間をインサンプルとして、戦略の評価には利用しません。セットで行うアウトオブサンプルテストでの結果のみが戦略を評価するデータになります。WF法ではインサンプル・アウトオブサンプルの期間をシフトさせながら、過去に起こり得たシミュレーション結果を取得します。このときのアウトオブサンプルで得た結果のみが戦略の評価に用いられます。
画像③のグラフはWF法を実施した例で、左側(青)がインサンプル、右側(赤)がアウトオブサンプルです。この場合は右側のアウトオブサンプルのみが評価の対象になります。
![ウォークフォワード(WF)法](https://forex-online.jp/wp-content/uploads/2024/05/vol9-aisaki-system-trader-4.png)
筆者はWF法について最低限のテストだと考えていますが、欠点もあります。得られるデータは過去の取引シミュレーションによるもので、未来の結果が評価できるものではありません。良いテスト結果が本当に優位性があるのか、運が良かっただけなのかを区別するための精度はCPCV(組み合わせパージング交差検証法)など他の検証方法と比較して低くなってしまいます。現実問題として数百、数千経路の検証を行うCPCVのような方法の実装はMT4、MT5のストラテジーテスターなどのツールでは不可能に近いですが、WF法であれば可能です。
バックテストとリアルトレード
バックテストで評価できることとできないことの区別も大切です。バックテストではFXレートの過去データのようなデータセットに潜む、くり返し再現されるエッジを戦略が捉えられているかを確認したいわけで、そのためにアウトオブサンプルの結果を評価しています。
スリッページやスワップポイントなどは、バックテストでは評価が難しく、せいぜい取引コストはどの程度までなら許容できるかということしか確認できません。実運用してみると思わぬところでうまくいかないことも多くあるでしょうから、バックテスト上で判断できないところはリアルトレードの中で注視する必要があります。一方で、バックテスト上で判断できる項目は、常にサンプルサイズが小さくなり運に左右されやすいリアルトレード結果よりも重視されるべきです。
バックテストはシャープレシオや最大ドローダウンなどを確認する以前に、どのような方法で行われたのかがとても重要です。
[参考文献]
『ファイナンス機械学習―金融市場分析を変える機械学習アルゴリズムの理論と実践』(マルコス・ロペス・デ・プラド著、金融財政事情研究会)