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

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

StrategyQuantXでの設定

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

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

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

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

どう揺さぶるか

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

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

では、当サイトのStep.1〜6シリーズで構築した「S&P500のRSI+ADX戦略」で、実際にSPPを実行した結果を見てみましょう。

【画】SPP結果画面。左に中央値の表、右に各指標(Net profit / Drawdown / Max DD% / Ret/DD Ratio / Sharpe / CAGR)の分布ヒストグラム
【画】Optimization Profile画面。左下合否条件のチェック結果(一様分布がFAILED)と、パフォーマンス分布・3D最適化チャート

左の表が、全パラメータ組み合わせから計算された「中央値」と、元のバックテスト値の比較です。主要な数字を抜き出します。

指標中央値元の値中央値 ÷ 元
Net profit$1,600,300$2,056,800約78%
Drawdown$431,450$492,400約114%
(=中央値の方が小さい)
Ret/DD Ratio3.724.18約89%
Sharpe Ratio0.550.64約86%
CAGR47.83%50.7%約94%

右のヒストグラムを見ると、各指標とも、元の値(緑の線)が分布の中で極端に飛び出しておらず、中央値(赤の線)からそれほど遠くない位置にあります。数字の表だけを見れば、中央値は元の8〜9割を保っており、一見「悪くない戦略」に見えます。

【図】中央値(赤)とオリジナル(緑)の比較

ところが、この戦略はSPPテストを通過できませんでした

理由は、次の合格基準のセクションで詳しく見ていきます。ここで先に大切な点をお伝えすると、中央値と元の結果が比較がそこそこでも、テスト全体の中身を見ると落第することがある、ということです。表の数字だけを眺めて安心してはいけないのです。

私が調整している合格基準

StrategyQuantXのSPPには、Optimization Profileという合否条件があります。私は基本的にデフォルト設定を使っていますが、次の4つの条件で戦略を評価します(1つでも満たさなければ不合格)。

【画】SPPクロスチェックのFiltering画面(4つの合否条件)
  1. 利益が出た最適化の割合が30%を超えること
  2. 全最適化の平均利益がプラスであること
  3. プラスからマイナスへの変化が5回未満であること(=パラメータを少し動かすたびに損益が反転するような、不安定な戦略でないこと)
  4. 最良の最適化利益が、平均利益の標準偏差2.5個分の範囲に収まること(=一点だけが突出した外れ値でないこと)

このうち3番目は、パラメータを少しずつ動かしたときの成績が、プラス・マイナスを何度も行き来していないかを見る条件です。ちょっと設定を変えるたびに損益が反転するような戦略は、不安定でカーブフィッティングの疑いが強い。それを弾くための条件です。

そして、私が唯一デフォルトから変更しているのが、4番目の条件です。

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

正直に言えば、この「2.5」や「3」という数字に、確たる理論的根拠があるわけではありません。数百の戦略を実際に回す中で、「1では厳しすぎて何も残らない、しかし際限なく緩めては意味がない」というバランスを、経験的に見つけた値です。この基準も、あなたの戦略の性質や検証する銘柄によって、調整されるべきものだと考えています。

なお、私はSPPのすべての理論を完璧に理解していると主張するつもりはありません。ただ、それぞれの条件が「何を弾こうとしているのか」を理解し、自分の運用で問題ないと納得できるプロセスを踏んだ上で、この設定を使っています。

サンプル戦略は、どの条件で落ちたのか

では、先ほどのS&P500のRSI+ADX戦略が、実際にどう判定されたかを見てみましょう。

  • ✅ 利益が出た最適化:98.41%(945回中930回が利益。30%超の条件をクリア)→ PASSED
  • ✅ 平均利益:$1,543,679(プラスの条件をクリア)→ PASSED
  • 一様分布:変化24回(5回未満が条件)→ FAILED
  • ✅ 最良利益が外れ値でないこと → PASSED

4つの条件のうち3つは通っています。しかし、③の一様分布の条件で失格しました。プラスからマイナスへの変化が、条件の「5回未満」に対して、実際には24回もあったのです。1つでも条件を満たさなければ不合格ですから、この戦略はSPPを通過できませんでした。

【画】Optimization Profile画面の合否チェック部分の拡大。「Uniform distribution (24) < 5 changes」がFAILEDと表示

ここが、この記事で最もお伝えしたいポイントです。先ほどの中央値の表だけを見れば、この戦略は元の成績の8〜9割を保っており、「良い戦略」に見えました。しかし、分布の「中身」を見ると、パラメータを少し動かすたびに損益がプラス・マイナスを24回も行き来している。つまり、全体としては利益が出るものの、設定を少しズラすと損益が反転する箇所が多い、不安定さをはらんだ戦略だったのです。

中央値という「要約された一つの数字」だけを見ていたら、この不安定さは決して見えませんでした。分布の質まで踏み込んで初めて、戦略の本当の姿が分かる。これこそがSPPの価値です。

悪い例と比べてみる:元の戦略が中央値から「良い方向に」乖離しているとき

SPPには、もう一つ重要な読み方があります。それは、元のバックテスト値が、中央値からどれくらい離れているかを見ることです。ここを見ると、その戦略の成績が「出来すぎ」ていないかが分かります。

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

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

この戦略の数字を、先ほどのS&P500戦略と並べてみます。

指標S&P500戦略(元 ÷ 中央値)USDJPY戦略(元 ÷ 中央値)
Ret/DD Ratio元4.18 / 中央値3.72(約112%)元5.04 / 中央値3.12(約162%)
Net profit元 / 中央値 約128%元 / 中央値 約135%
Sharpe Ratio元0.64 / 中央値0.55(約116%)元0.81 / 中央値0.55(約147%)

注目してほしいのは、USDJPY戦略のほうが、元の値と中央値の乖離が明らかに大きいという点です。特にRet/DD Ratioは、元が5.04と立派な数字なのに、中央値は3.12。元の値は中央値の実に162%で、分布の中でかなり右側(=良い方向)に飛び出しています。ヒストグラムを見ても、緑の線(元の値)が分布の山から離れた右側に位置しているのが分かります。

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

一方、S&P500戦略は、元と中央値の乖離が比較的小さく、この「出来すぎ」の観点では、USDJPY戦略よりも健全でした(ただし、前述のとおり別の条件で落ちましたが)。

元の戦略が中央値から良い方向に大きく乖離していたら、それは喜ぶべきことではなく、警戒すべきサインです。「素晴らしいバックテスト結果」ほど、SPPで中央値と比べて、その数字が本物か疑ってみる。これがSPPのもう一つの使い方です。

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

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

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

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

  • モンテカルロが暴いたのは、「取引の巡り合わせ(順序・欠落)の運に対して、最悪ケースで大きく沈むリスク」。
  • SPPが暴いたのは、「パラメータを少し動かすと損益が反転する箇所が多い、設定の不安定さ」。

同じ戦略の、違う弱点です。もし片方のテストしか実施していなければ、もう片方の弱点は見逃していたでしょう。これこそが、堅牢性テストを1つだけで判断してはいけない理由です。複数の角度からテストを行って初めて、その戦略の本当の姿が見えてきます。

そして、ここであえて強調しておきたいことがあります。この戦略は、当サイトのStep.1〜6シリーズで、私が手順を追って構築してきた、いわばこのサイトの「顔」ともいえる戦略です。その戦略が、最も厳しい2つのテストを、どちらも通過できませんでした。

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

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

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

まとめ

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

今回、当サイトのサンプル戦略は、中央値だけ見れば悪くないように見えながら、分布の一様性の条件で不合格となりました。そして、別記事のモンテカルロテストでも不合格。最も厳しい2つのテストを、どちらも通過できませんでした。しかも2つのテストは、それぞれ別の弱点を指摘していました。これは、堅牢性テストを単独で見るのではなく、複数の角度から総合的に判断することの重要性を、はっきりと教えてくれます。

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

次のステップ

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

(※ウォークフォワード最適化の記事は現在準備中です。公開までは、下記のハブから他のテストをご覧ください。)

堅牢性テスト全体の地図と、各テストの使い分けはこちらにまとめています。

堅牢性テストの全体像へ


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