シリーズ「検証結果の読み方」全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 のほうで判断します。
まず何をするか
- 試行回数 N を、捨てたものも含めて正直に数える
- 上の逆算表で、その N に必要な年率SRを確認する
- 届いていなければ、パラメータを詰め直すのではなく期間を伸ばす
なお DSR を通っても、それは「まぐれではなさそう」までしか言っていません。コストを引いたら消える、執行が想定通りにいかない、相場が変わって効かなくなる、はいずれも別の話です。
次回は、通ったあとの話をします。DSR を抜けた戦略でも、パラメータを少しずらすと成績が崩れることがあります。1点の最高成績ではなく、なだらかな台地を選ぶという考え方です。


コメント