【ウォークフォワードテスト】最適化した戦略が本物かを見抜く

最適化を終えた戦略のバックテスト結果は、たいてい美しく見えます。そのデータに合うよう、パラメータを調整したのだから当然です。

問題は、その美しさが「過去にたまたま合っていただけ」なのか、「未来でも通用する本物のエッジ」なのか、見分けがつかないことにあります。

この見極めに使うのが、ウォークフォワード最適化です。当サイトの堅牢性テストの中でも、複雑なテストのひとつです。

目次

ウォークフォワード最適化とは

考え方は単純です。データを区切り、「最適化する期間」と「検証する期間」を、少しずつ前にずらしながら繰り返します。

最適化に使う期間をイン・サンプル(IS)、検証に使う期間をアウト・オブ・サンプル(OOS)と呼びます。まず最初の期間でパラメータを最適化し、そのパラメータのまま、すぐ後ろの期間で検証する。それが終わったら期間をずらして、また最適化と検証を行う。これをデータの終わりまで繰り返します。

この方法の要点は、毎回「最適化に使っていない期間」で検証していることです。通常のアウトオブサンプルテストは期間を一度だけ前後に分けますが、ウォークフォワードはそれを何度も繰り返します。

2つの型:アンカーとローリング

ウォークフォワードには、大きく2つの型があります。

【図】アンカー型とローリング型の違い

アンカー型は、最適化期間の開始点を固定したまま、終点だけを伸ばしていきます。回を重ねるほど、最適化に使えるデータは増えていきます。

ローリング型は、最適化期間の長さを一定に保ったまま、開始点と終点をまとめてずらしていきます。最適化に使うデータの量は、常に同じです。

当サイトでは、ローリング型を使います。最適化に使うデータ量が毎回同じなので、各回の結果を対等に比較できるためです。アンカー型では、後の回ほどデータが多くなるため、条件が揃いません。

テストの本当の目的

多くの解説者は、ウォークフォワード最適化を「定期的にパラメータを再最適化しながら運用する手法」として説明します。検証ツールも、何日ごとに再最適化すべきかという運用の目安を示してきます。

しかし当サイトでは、この再最適化を前提とした運用は行いません。

パラメータを最適化し直した時点で、それは元の戦略ではなくなるからです。半年前に決めたパラメータを今日まったく別の値に変えたなら、それは同じ戦略の手入れではなく、別の戦略への差し替えにあたります。それまでの検証結果も、公開した実績も、意味を失います。

公開した戦略の成績を追跡実績ページで記録し続けているのも、同じ理由です。途中でパラメータを変えれば、何を追跡しているのか分からなくなります。

当サイトがウォークフォワードに求めるのは、オーバーフィッティングの検出です。

期間を区切り直し、そのたびにパラメータを最適化し直しても、選ばれるパラメータが大きく変わらず、どの期間でも利益が出る。そうであれば、その戦略の根底にあるロジックは、特定の期間に依存しない優位性を持っていると考えられます。逆に、期間を変えるたびにパラメータが激変し、成績も崩れるなら、過去のデータにたまたま合っていただけです。

単発では足りない:ウォークフォワード・マトリクス

ウォークフォワードを一度だけ実行しても、十分ではありません。その分け方だから上手くいっただけ、という可能性が残るためです。

条件として変えられるのは、主に2つです。ひとつは分割数、もうひとつはアウトオブサンプル(OOS)の割合です。

【図】5分割と30分割の違い

分割数を変えると、1区間の長さが変わります。5分割なら1区間が長く、取引数も多くなるため、統計的に安定しやすい。30分割では1区間が短くなり、取引数が少なくなるため、数字がブレやすくなります。

【図】OOSの割合の違い

OOSの割合は、1サイクルのうち検証にどれだけをあてるかを決めます。10%なら検証区間は短く、40%なら長くなります。検証区間が短ければ取引数も少なくなり、逆に長ければ最適化に使える期間が削られます。

どちらの条件も、設定によって結果は変わります。一方だけで判断すれば、その条件に固有の結果を見ていることになりかねません。

そこで使うのが、ウォークフォワード・マトリクスです。条件そのものを変えながらウォークフォワードを何十回も実行し、結果を一覧にします。

当サイトでは、OOSの割合を10%・20%・30%・40%の4通り、分割数を5・10・15・20・25・30の6通りとし、組み合わせた24通りを実行します。どの切り方をしても安定して機能するか。これが最も重視する視点です。特定の分け方でだけ優秀な戦略は、オーバーフィッティングと判断します。

【画像】Strategy Quant X_ウォークフォワード・マトリクスの設定画面

合格の判定に使う5つの条件

検証ツールの推奨条件をそのまま使うのではなく、複数の戦略で実際に試しながら取捨選択し、現在は次の5つを判定条件としています。

条件内容
アウトオブサンプルの純利益 > 0検証期間の利益を合計してプラスであること。最低限の足切り。
利益水準の維持率 > 60%1日あたりの利益が、最適化期間と比べて6割以上を保っていること。最適化した期間だけ良くて後で崩れる戦略を落とす。
利益を出した区間の割合 > 70%全区間のうち、7割以上でプラスになっていること。一部の区間だけで稼いでいないかを見る。
最大利益区間の占有率 < 50%最も稼いだ1区間が、全利益の半分未満であること。特定の1区間への依存を排除する。
各区間の最低取引数 > 10どの区間でも最低10取引はあること。サンプルが少なすぎる区間を弾く。
【画像】Strategy Quant X_ウォークフォワード・マトリクスの判定条件の設定画面

さらに、これらを個別に満たすだけでなく、マトリクス上で隣接する12のセルのうち10セル以上が基準を満たすことを、通過の条件としています。1点だけ良いのではなく、まとまった範囲で安定していることを求めるためです。

実例:RSI/ADX戦略をマトリクスにかける

当サイトで公開しているS&P500のRSI/ADX戦略を、実際にウォークフォワード・マトリクスにかけます。

検証条件は、当サイトの他の記事と同じです。

  • 銘柄:S&P500
  • 検証期間:2012年1月19日 〜 2026年7月31日
  • スプレッド:なし / スワップ:なし / 手数料:一律0.05%
  • 初期資金:10,000ドル / 取引サイズ:1(固定ロット)
【画像】ウォークフォワード・マトリクスの結果(24セルの一覧)

結果は、24セル中24セルすべてが合格でした。

検証期間を10%にしても40%にしても、5分割しても30分割しても、どの条件で切り直しても基準を満たしたことになります。特定の分け方に依存していません。

検証ツールが最も安定した条件として示したのは、10分割・検証期間20%の設定でした。

選ばれたパラメータは、一貫しているか

マトリクスの合格は、成績についての評価です。当サイトでは、もうひとつ確認することがあります。各期間で選ばれたパラメータが一貫しているかどうかです。

期間をずらすたびにまったく違うパラメータが最適になるなら、その戦略には安定した最適値が存在しないことになります。逆に、どの期間でも似た値が選ばれるなら、その水準に意味がある可能性が高い。

10分割・検証期間20%の設定で、実際に選ばれたパラメータは次のとおりです。

パラメータ選ばれた値の範囲最も多く選ばれた値
RSIの期間2のみ2(11回中11回)
ADXの期間4〜76(11回中7回)
RSIのレベル120.0〜59.9624.44(11回中6回)
ADXのレベル21.66〜41.6421.66(11回中5回)

RSIの期間は、すべての区間で2が選ばれました。ADXの期間も4〜7という狭い範囲に収まっています。各レベルの値には幅がありますが、同じ組み合わせが繰り返し選ばれている区間が複数あります。

検証ツールには、パラメータの安定度を示す指標もあります。これは、すべての区間でまったく同じパラメータが選ばれれば1.00となり、区間ごとにバラバラな値が選ばれるほど0に近づきます。今回の戦略では、5分割・検証20%で0.88、30分割・検証20%で0.84でした。1.00に近い水準であり、期間を変えても選ばれるパラメータがほぼ揃っていることを示しています。

注意点

このテストにも限界があります。

第一に、分割数を増やすほど1区間のデータが少なくなります。30分割すれば1区間は全体の30分の1です。当サイトは日足など長めの時間足を使う戦略が多く、取引数がもともと多くありません。そのため、分割数が多い条件では、1区間あたりの取引が数件ということも起こります。そうなると、その区間の成績は統計的な意味を持ちにくくなります。各区間の最低取引数を条件に入れているのは、このためです。

第二に、この制約は時間足を長くするほど避けられません。より短い時間足を使えば取引数は増えますが、それは戦略の設計思想そのものを変えることになります。長期足を選んだ以上、サンプル数が限られるという事実は常について回ります。

第三に、他のテストと同じく、過去のデータにもとづく検証です。どれだけ厳しく検証しても、将来を保証するものではありません。

まとめ

この記事で押さえておきたい点は、2つです。

ひとつは、ウォークフォワード最適化は、運用の方法ではなく、テストとして使うべきだということです。パラメータを定期的に入れ替えれば、それはもう同じ戦略ではありません。検証結果も公開した実績も意味を失います。当サイトが求めるのは、期間を切り直しても崩れないかという、戦略の本物度の確認です。

もうひとつは、1つの結果ではなく、面で見る必要があるということです。ある分け方で良い結果が出ても、それはその条件に固有のものかもしれません。分割数とOOSの割合を変えた24通りを実行し、まとまった範囲で安定していることを確認する。1点の結果ではなく、面としての安定を見る。これがマトリクスを使う理由です。

→ 堅牢性テストの全体像へ

→ アウトオブサンプルテストの解説へ

→ 配布戦略の追跡実績を見る

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
目次