試行回数で成績を割り引く:Deflated Sharpe Ratio の使いどころ

試行回数別のDSR。年率SR1.0でも1通りで0.977、30通りで0.467、100通りで0.295 検証・統計

シリーズ「検証結果の読み方」全3回第2回です。

前回、検証結果を確かめる3つの数字を挙げました。トレード数、試行回数、期間を分けた結果の3つです。そのうち試行回数については「10通りを超えているなら数字を割り引く」という言い方で止めていました。

この割り引きには、ちゃんとした指標があります。Deflated Sharpe Ratio(DSR)です。今回はそれが何をしている指標なのかと、実務でどう使うかまでを扱います。導出は追いません。

 

 

 

TL;DR

  • DSR は「何通り試したか」を成績に織り込んだ Sharpe Ratio です
  • 年率SR 1.0 の戦略でも、30通り試した末に見つけたなら DSR は0.467まで落ちます。成績は同じなのに
  • 採用ラインは DSR 0.95。日次4年のデータなら、N=1で年率SR 0.83、N=30で1.87、N=100で2.10が必要です
  • 届かないときにパラメータを詰め直すのは逆効果です。期間を伸ばすほうが効きます

 

 

 

同じ成績が、試行回数で評価が変わる

日次リターン1000本(およそ4年)で、年率Sharpe Ratio 1.0 の戦略ができたとします。悪くない数字です。

この成績を、何通り試した末に見つけたかで割り引くとこうなります。

試した通り数 DSR 判定(0.95で採用)
1通り 0.977 採用可
5通り 0.788 不採用
10通り 0.661 不採用
30通り 0.467 不採用
100通り 0.295 不採用

成績はどれも同じ年率SR 1.0 です。違うのは、そこに辿り着くまでに何回試したかだけ。それだけで採用可から不採用に変わります。

前回、実力が五分五分の手法でも30通り試せば見かけの勝率60%が出る、という数字を出しました。DSR はそれを Sharpe Ratio の側で処理する道具です。

 

 

 

考え方だけ

N通り試して一番良いものを採ったなら、比較すべき相手はゼロではありません。「エッジが無い手法をN通り試したとき、まぐれで出る最高成績」が相手です。その期待値を求めて、観測したSRから引く。残りが本物の取り分という扱いになります。

式はこうなります。

\[ SR_0 = \sigma_{SR} \left[ (1-\gamma)\, \Phi^{-1}\!\left(1 – \frac{1}{N}\right) + \gamma\, \Phi^{-1}\!\left(1 – \frac{1}{N e}\right) \right] \]

\[ \mathrm{DSR} = \Phi\!\left( \frac{\widehat{SR} – SR_0}{\sqrt{1/(T-1)}} \right) \]

\( \gamma \) はオイラーの定数(約0.5772)、\( \Phi \) は標準正規分布の累積分布関数、\( T \) はサンプル数です。

N が増えると SR0 が上がり、そのぶん DSR が下がる。この記事で必要なのはそこまでです。

SR0 がなぜこの形になるのかは、独立な試行の最大値がどう分布するかから導かれます。σ_SR に何を入れるべきか、自己相関のある系列で既定値を使うと何がずれるか、といったあたりも含めて、導出は 検証コースの「PSRとDSR」で扱っています。ここでは使い方に絞ります。

 

 

 

逆算すると、必要な成績が見える

実務では、DSR を計算するより先に「自分の試行回数だと、どれくらいの成績が要るのか」を知っておくほうが役に立ちます。日次1000本で DSR 0.95 を通すのに必要な年率SRです。

試した通り数 必要な年率SR
1通り 0.83
5通り 1.43
10通り 1.62
30通り 1.87
100通り 2.10

パラメータを30通り試すのは、グリッド探索なら一瞬です。移動平均の期間を5通り、損切り幅を3通り、時間足を2通り試しただけで30通りになります。その時点で、年率SR 1.87 を超えないと採用ラインに届きません。

年率SR 1.87 は、個人がデータを触って出す水準としてはかなり高い部類です。気軽なグリッド探索は、それだけで採用のハードルを手の届かない高さまで押し上げています。

 

 

 

届かないなら、期間を伸ばす

ここが実務で一番効く部分です。

30通り試したという前提を固定して、期間だけ変えるとこうなります。

検証期間 必要な年率SR
1年 3.73
2年 2.63
4年 1.86
10年 1.18

1年のデータで30通り試した場合、年率SR 3.73 が必要です。ほぼ到達不能な水準なので、その検証からは何も言えないということになります。同じ試行回数でも10年あれば1.18まで下がります。

採用ラインに届かなかったとき、多くの人はパラメータを触り直します。ですがそれをすると N が増えて、ハードルがさらに上がります。手を止めてデータを増やすほうが早い。短い期間で細かく詰めるより、長い期間で粗く見るほうが結論が出ます。

 

 

 

Nを正直に数える

DSR の弱点は、N を自己申告するしかないことです。ここを甘くすると指標が意味を失います。

数えるのはパラメータの組み合わせだけではありません。通貨ペアを変えた回数、時間足を変えた回数、途中で条件を足したり外したりした回数も入ります。捨てた試行が本体です。良い結果が出てから数え始めると、必ず少なく出ます。

感覚として、思っているより1桁多いことが多いです。迷ったら多めに数えるほうが安全側に倒れます。

実際に何をどう数えるか、グリッド探索を1回と数えてしまう間違いや、検証を始める前にスコープを宣言しておく手順は、検証コースの「試行回数NとDSR」に手順としてまとめてあります。

 

 

 

人の戦略を試すときは N=100 から

論文や記事で見つけた手法を再現するときは、自分の試行回数が1でも N=1 では見ません。その手法が世に出るまでに、著者側で既に多数の試行が行われているからです。発表されているのは、その中で一番見栄えの良かったものです。

目安として N=100 を併記します。あくまで参考値で、採用可否は自分の試行回数で計算した DSR のほうで判断します。

 

 

 

まず何をするか

  1. 試行回数 N を、捨てたものも含めて正直に数える
  2. 上の逆算表で、その N に必要な年率SRを確認する
  3. 届いていなければ、パラメータを詰め直すのではなく期間を伸ばす

なお DSR を通っても、それは「まぐれではなさそう」までしか言っていません。コストを引いたら消える、執行が想定通りにいかない、相場が変わって効かなくなる、はいずれも別の話です。

次回は、通ったあとの話をします。DSR を抜けた戦略でも、パラメータを少しずらすと成績が崩れることがあります。1点の最高成績ではなく、なだらかな台地を選ぶという考え方です。

コメント

タイトルとURLをコピーしました