【SPPテスト】システムパラメータ・パーミュテーション:まぐれの最適化を見抜く

戦略のバックテストで、「一番成績の良かったパラメータ」を選んでいないでしょうか。

RSIの期間を2から20まで試して、最も利益が出た期間14を採用する。移動平均を50から200まで試して、一番きれいな曲線を描いた期間100を選ぶ。よく行われる手順ですが、ここにシステムトレード最大の落とし穴があります。

無数のパラメータを試して「一番良かったもの」を選ぶと、その成績には必ず実力とたまたまの幸運が混ざり込みます。そして、選ばれた一点は、幸運を最大限に拾い上げた組み合わせである可能性が高い。これがカーブフィッティング(過学習)です。

この記事で解説するシステムパラメータ・パーミュテーション(SPP)は、この「まぐれの最適化」を見抜くためのテストです。

目次

SPPが答えようとしている問い

SPPは、Dave Walton氏が2014年に発表した論文(NAAIM Wagner Award受賞)で提唱された手法です。その狙いは、次の2つの問いに答えることにあります。

  • この戦略の「本当の実力(長期的なエッジ)」は、現実的にどのくらいなのか。
  • その実力を得るために、短期的には最悪どこまでの落ち込みに耐える必要があるのか。

普通のバックテストは、選び抜かれた「最高の一点」の成績を見せます。しかしそれは、幸運を最大限に含んだ、最も楽観的な数字です。SPPは、その楽観を取り除き、現実的な期待値を教えてくれます。

SPPの考え方:ベストではなく「中央値」を見る

通常の最適化では、たくさんのパラメータ組み合わせを試し、その中から「ベストの1つ」を選び、残りは捨てます。

SPPの発想は正反対です。捨てずに、すべての組み合わせの成績を使う。 パラメータを少しずつ上下に揺さぶって、あり得る組み合わせを網羅的にテストし、その全成績の「分布」を作ります。そして、その分布の中央値を、この戦略の現実的な期待値とみなします。

具体的に考えてみましょう。RSIの期間やADXの設定を、少しずつ上下にずらして何百通りもテストする。もし、どの設定でもそこそこ利益が出るなら、その戦略の優位性は「本物」です。逆に、たった一つの設定でだけ大きく光り、少しずらすと途端に崩れるなら、それは「まぐれ」の疑いが濃厚です。

なぜ中央値なのか

平均ではなく中央値を使うのには、理由があります。

中央値は、全組み合わせを成績順に並べたときのちょうど真ん中の値です。第一に、選抜が入らないのでカーブフィッティングの影響を受けません。最適化のように「良いものを選ぶ」という操作が入らないからです。第二に、極端な外れ値に引きずられません。たまたま大当たりした一点があっても、たまたま大外れした一点があっても、真ん中の値は動きません。

平均値だと、こうはいきません。極端に良い結果が一つ混じるだけで、平均は引き上げられてしまいます。分布の実態を知りたいのに、外れ値に歪められては意味がない。だから中央値を使います。

要するに中央値は、この戦略を実際に運用したら、だいたいこのくらいに落ち着くだろうという、最も現実的な見積もりです。

中央値は「設定する値」ではない

ここで、誤解しやすい点があります。

中央値は将来の期待値であって、中央値を出したパラメータを戦略に設定するわけではありません。中央値はあくまでこの戦略の実力の目安を示す数字であり、戦略のパラメータ自体は、構築のプロセスで決定した値のまま使います。

SPPは、パラメータを決めるための手順ではなく、決めたパラメータが妥当かを確かめるためのテストです。この区別は重要です。

モンテカルロテストとの違い

当サイトでは、別記事でモンテカルロテストも解説しています。混同されやすいので、違いを整理しておきます。

モンテカルロテストは、主に取引の順序を入れ替えたり、一部をスキップしたりして、「取引の巡り合わせ(運)」に対する耐性を見ます。最悪ケースでどこまで沈むかを探るのが主眼です。

一方SPPは、パラメータの値そのものを上下に揺さぶって全組み合わせを網羅的にテストし、その成績の分布を作ることが主眼です。つまり「パラメータ選択の運」を検証し、まぐれの一点でないかを見ます。

同じ「戦略の運を排除する」テストでも、主に光を当てる角度が違うのです。この違いは、後ほど実例で見るように、決定的な意味を持ちます。

StrategyQuantXでの設定

私が使っているStrategyQuantXでは、SPPは「Opt. Profile / Sys. Param. Permutation」というクロスチェック機能として実装されています。

どのパラメータを揺さぶるか

「Recommended parameters(推奨パラメータ)」を選びます。これは、期間・エントリー/決済設定・乗数といった「意味のあるパラメータ」だけを対象にする設定です。何でもかんでも最適化するのは良くない、という思想で、これは当サイトがStep.4で解説した「パラメータを増やしすぎると安定領域が見えなくなる」という考え方と一致します。

【図】SPPクロスチェックの設定画面(Maximum tests、Value distribution)

どう揺さぶるか

元の値から上下100%の範囲で、最大25ステップに刻んで揺さぶります。テスト回数の上限は、パラメータが少なすぎても多すぎても機能しないため、現実的な範囲(数千〜2万通り程度)に収まるよう設定します。パラメータが1個では組み合わせが作れず、逆に15個もあると組み合わせが数百万通りに膨れ上がり、上限内では全体のごく一部しか検証できなくなるからです。ここでも「戦略はシンプルに保て」という原則が効いてきます。

合格基準:2つの条件

StrategyQuantXのSPPでは、合否条件を自分で設定できます。検証を重ねた結果、現在は次の2つを基準にしています。

条件①:元の成績が、中央値から大きく上振れしていないこと

これが最優先の基準です。

元のバックテスト結果が、パラメータを揺さぶった中央値から良い方向に大きく離れているほど、その数字は出来すぎている可能性が高くなります。たまたま最も都合の良い設定を引き当てていた、ということです。

そこで、この乖離に上限を設けます。具体的には、プロフィットファクターとリターン/ドローダウンレシオについて、次の条件を設定しています。

【画像】SPPテストの条件フィルター

元の成績が、中央値の1.25倍を超えていたら不合格とする、という意味です。例えば中央値のプロフィットファクターが1.0なら、元の値が1.25を超えていたら落とします。

この2つの指標を選んだ理由は、どちらも比率であり、パラメータの変化に素直に反応するためです。純利益のような絶対額は、取引回数の変動にも影響されるため、乖離の解釈が複雑になります。純利益やシャープレシオも結果画面には表示されますが、判定には使わず参考として見ています。

なお、この125%という数字に絶対的な根拠があるわけではありません。複数の戦略を実際に通しながら、落としすぎず緩すぎない水準を探った結果です。戦略の性質によって、調整されるべき値だと考えています。

条件②:最良の結果が、突出した外れ値になっていないこと

もうひとつは、分布の中身を見る条件です。

【画像】標準偏差の条件設定

全組み合わせの中で最も成績の良かった結果が、平均から標準偏差2.5個分の範囲に収まっていることを求めます。つまり、一点だけが異様に飛び抜けていないかを確認します。

デフォルトでは標準偏差1個分に設定されていますが、これはあまりに厳しく、実際に試すとほとんどの戦略がここで落ちてしまいました。そこで2.5に緩めています。それでも数百の戦略をテストして1つも通らないような場合には、3まで緩めることもあります。

正直に言えば、この2.5や3という数字に、確たる理論的根拠はありません。数百の戦略を実際に回す中で、1では厳しすぎて何も残らない、しかし際限なく緩めては意味がない、というバランスを経験的に見つけた値です。

実際のテスト結果:S&P500のRSI+ADX戦略

当サイトの戦略構築ガイドシリーズで構築した、S&P500のRSI+ADX戦略で、実際にSPPを実行した結果を見ていきます。

検証条件は次のとおりです。

  • 銘柄:S&P500 / タイムフレーム:日足
  • 検証期間:2012年1月19日 〜 2025年12月31日
  • 全最適化回数:945通り(すべて利益がプラス)

中央値と元の値の比較は、次のようになりました。

【画像】SPP結果画面(中央値の表と各指標の分布ヒストグラム)
指標中央値元の値元 ÷ 中央値
プロフィットファクター1.801.7798.33%
リターン/DDレシオ4.335.17119.40%

条件①の判定:通過

判定に使う2指標を見ます。

プロフィットファクターは、元の値1.77に対して中央値1.80。元の方がわずかに低く、乖離は98.33%です。基準の125%を大きく下回っています。これは、パラメータを揺さぶると、むしろ元の設定より良くなるケースが多いことを意味します。上方乖離がまったくない、健全な状態です。

リターン/ドローダウンレシオは119.40%。こちらも125%未満で通過しました。

つまり、中央値との比較という観点では、この戦略に大きな問題は見えませんでした。

条件②の判定:不合格

ところが、分布の中身を見る条件で落ちました。

【画像】Optimization Profile画面の合否チェック

数字はこうです。

  • 全945通りの平均利益:$184,515.06
  • 標準偏差:$51,410.65
  • 合格のしきい値(平均 + 2.5標準偏差):$313,041.68
  • 実際の最良利益:$324,178.38

最良の組み合わせが出した利益は、平均から標準偏差2.72個分の位置にありました。基準の2.5をわずかに超えています。

これが意味するのは、945通りの中に、ひとつだけ他より抜きん出て良い結果が存在する、ということです。そして、その突出した一点は、幸運を拾い集めた結果である可能性があります。もしその設定を採用していたら、将来その数字を再現できる見込みは薄い。

なお、しきい値を3まで緩めれば$338,747となり、この戦略は通過します。基準をどこに置くかで判定が変わる、境界線上のケースです。

中央値だけを見ていたら、分からなかった

ここが、この記事で最も伝えたい点です。

中央値の表だけを見れば、この戦略は健全でした。プロフィットファクターの乖離は98.33%で、上振れすらしていない。リターン/DDレシオも119.40%で基準内。数字の表を眺めている限り、問題は見えません。

しかし、分布の中身まで踏み込むと、最良値がひとつだけ突出しているという事実が現れました。要約された一つの数字では、この偏りは見えなかったのです。

中央値は確かに有用な指標です。しかし、それだけでは足りない。分布の形まで見て初めて、戦略の本当の姿が分かります。これがSPPの価値です。

悪い例と比べてみる:元の戦略が中央値から大きく乖離しているとき

今回のS&P500戦略は、中央値との乖離という点では健全でした。では、乖離が大きい戦略はどう見えるのか。比較のための例を示します。

適当に作成したUSDJPYの1時間足の戦略(2016年から2025年の10年間、481取引、PF1.48、リターン/ドローダウンレシオ5.04)でSPPを実行しました。

【図】USDJPY戦略のSPP結果。元の値(緑)が分布の右側に大きく飛び出している

2つの戦略を並べると、違いが明確になります。

指標S&P500戦略(元 ÷ 中央値)USDJPY戦略(元 ÷ 中央値)
リターン/DDレシオ119.40%約162%
純利益138.93%約135%

注目すべきは、USDJPY戦略のリターン/ドローダウンレシオです。元の値は5.04という立派な数字ですが、中央値は3.12しかありません。元の値は中央値の約162%で、分布の中でかなり右側、つまり良い方向に飛び出しています。ヒストグラムを見ても、元の値を示す線が、分布の山から離れた右側に位置しているのが分かります。

当サイトの基準である125%を、大きく超えています。

これが意味するのは、元のバックテスト結果が、たまたま良い方向に出すぎている可能性が高いということです。パラメータをほんの少しずらした大多数のケースでは、この戦略はもっと平凡な成績、つまり中央値のあたりに落ち着きます。元の5.04という数字は、幸運を拾い集めた出来すぎの一点であり、将来この数字を再現できる見込みは薄い。典型的なカーブフィッティングの兆候です。

素晴らしいバックテスト結果ほど、SPPで中央値と比べてみる。その数字が本物か疑ってみる。これがSPPのもう一つの使い方です。

モンテカルロもSPPも通過しなかった、という事実

正直にお伝えしておきたいことがあります。

このS&P500のRSI+ADX戦略は、別記事のモンテカルロテストでも不合格でした。信頼度95%のリターン/ドローダウンレシオが、元の約21%まで落ち込んだためです。そして今回のSPPでも、最良値の突出という条件で不合格。この戦略は、最も厳しい2つの堅牢性テストを、どちらも通過できませんでした。

興味深いのは、2つのテストが別々の弱点を指摘している点です。

モンテカルロが暴いたのは、取引の巡り合わせという運に対して、最悪ケースで大きく沈むリスクでした。SPPが暴いたのは、パラメータの組み合わせの中に、突出して良い一点が存在するという偏りです。

同じ戦略の、違う弱点です。もし片方のテストしか実施していなければ、もう片方の弱点は見逃していたでしょう。堅牢性テストを1つだけで判断してはいけない理由が、ここにあります。

そして、強調しておきたいことがあります。この戦略は、当サイトの戦略構築ガイドで、手順を追って構築してきた、いわばこのサイトの顔ともいえる戦略です。その戦略が、最も厳しい2つのテストを、どちらも通過できませんでした。

これはダメな戦略だったという意味ではありません。この戦略は、アウトオブサンプルテストもWhat ifテストも通過しています。もともとこのサンプル戦略は、システムトレードを学ぶ方が「これなら自分にも勝てるかもしれない」と手応えを感じ、それをベースにフィルターを足したり、パラメータを変えたりしながら学ぶための教材として提供したものです。その役割は十分に果たせます。

しかし、自分の資金を投じて運用する戦略の基準には、届かなかった。モンテカルロとSPPという最終関門は、それだけ厳しいということです。だからこそ、当サイトが実際に運用する戦略は、これらの関門まで通り抜けたものだけに絞っています。

運用する戦略を最終決定する際も、いずれか一つのテスト結果だけで決めることはありません。モンテカルロの資産曲線の広がり、SPPの分布、そしてウォークフォワードの結果などを、総合的に見比べて判断しています。

まとめ

システムパラメータ・パーミュテーション(SPP)は、一番成績の良いパラメータを選ぶことに潜む、カーブフィッティングの罠を見抜くためのテストです。ベストの一点ではなく、全組み合わせの中央値を現実的な期待値とみなし、さらに分布の中身まで踏み込んで、まぐれと実力を切り分けます。

当サイトの合格基準は2つです。元の成績が中央値の125%を超えて上振れしていないこと。そして、最良の結果が平均から標準偏差2.5個分の範囲に収まっていること。

今回のサンプル戦略は、中央値との比較では健全でありながら、最良値の突出という条件で不合格となりました。中央値という要約された数字だけを見ていては、この偏りは見えません。

見栄えの良いバックテストの数字や、要約された一つの指標に惚れ込むのではなく、あらゆる角度からストレスをかけ、それでも生き残る戦略を選ぶ。それが、市場で長く生き残るための道です。

SPPでパラメータ選択の頑健さを確認できたら、上級テストの締めくくりです。最適化と検証を期間をずらしながら繰り返し、より実運用に近い形で戦略を検証する、ウォークフォワード最適化を解説します。

→ ウォークフォワードテストの検証方法

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

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