はじめに
バックテストを回して、こんな結果が出たとします。
年率シャープレシオ 1.4。
多くの人は、この瞬間に「良い戦略を見つけた」と思います。私もかつてはそうでした。しかし、より安全なのはこう捉えることです。
シャープレシオは、戦略の実力を直接示す確定値ではありません。
限られたデータから推定された、不確実性を伴う数字です。
この記事の目的は、シャープレシオの計算方法を説明することではありません(それは1行で終わります)。伝えたいのは、計算できることと、その値を信頼できることは別問題であるという一点です。
問題はシャープレシオそのものではなく、次のような使い方にあります。点推定だけを見て評価する、リターンを i.i.d. 正規分布と暗黙に仮定する、標本数の不足を無視する、自己相関・歪度・尖度を確認しない、多数のバックテストから最良結果だけを採用する、年率換算した数字だけで比較する、p値を「戦略が偽物である確率」と誤解する――。
本記事では、通常のシャープレシオに加えて、これらの落とし穴を補正する考え方を初心者向けに紹介します。主役は次の4つです。
| 略語 | 名前 | 初心者向けの問い |
|---|---|---|
| SR | Sharpe Ratio | どれだけのボラティリティで、どれだけ超過リターンを得たか |
| PSR | Probabilistic Sharpe Ratio | この成績は、基準を上回る方向に統計的な確度があるか |
| MinTRL | Minimum Track Record Length | 判断に必要なデータは足りているか |
| DSR | Deflated Sharpe Ratio | 試行錯誤を差し引いても、成績は良いと言えるか |
本記事は、Marcos López de Prado, Alexander Lipton, Vincent Zoonekynd による論文 "How to Use the Sharpe Ratio"(後述)が提示する問題意識を基礎にしています。
想定読者
クオンツ投資を学び始めた人/Python・pandas でバックテストを始めた人/「SRが1を超えれば良い」と考えている人/複数のパラメータや戦略を比較している人/バックテスト結果と実運用結果の差に悩んでいる人。高度な統計学は前提とせず、平均・標準偏差・確率の基本が分かれば読める水準を目指しました。
この記事の計算範囲(先に一度だけ明示します)
本記事で計算するPSR・MinTRLは、系列相関(自己相関)を無視した簡略版です。標本数・歪度・尖度は考慮しますが、自己相関は補正しません。規約は古典的な Bailey–López de Prado 近似に合わせ、標準誤差の分母に $n-1$ を用います(後述する論文の標準誤差例は $T$ ベースで、わずかに異なります)。自己相関まで補正した評価は「未計算」として明示します。
30秒で分かる結論(この記事で追いかける架空戦略)
記事全体を通して同じ1つの架空戦略を追いかけます。最初は優秀に見えるこの戦略が、問いを重ねるとどう評価されるか――結論だけ先に置きます。
| 見えているもの | 値・状態 |
|---|---|
| 単純年率SR | 1.4 |
| 非正規性を考慮した簡略PSR($SR_0=0$) | 約 0.90(片側95%に届かない) |
| 片側95%のMinTRL($SR_0=0$) | 約 40か月 |
| 手元の観測期間 | 24か月 |
| 自己相関の調整 | 未実施 |
| 多重検定の調整(DSR) | 未計算 |
| 現時点の結論 | 採用判断には情報不足 |
この戦略の設定は次のとおりです。月次データを出発点にしている点に注意してください。
| 項目 | 値 |
|---|---|
| 月次平均超過リターン | 0.404% |
| 月次標準偏差 | 1.000% |
| 月次シャープレシオ | 0.404 |
| 単純年率換算SR | 1.40(自己相関を無視した表示値) |
| 歪度(skewness) | -2.4 |
| 尖度(kurtosis、非超過。正規=3) | 10.2 |
| ラグ1自己相関 $\rho_1$ | 0.20(定常AR(1)過程を想定) |
| 試したパラメータ・戦略数 | 10 |
「年率SR 1.40」は、月次SR 0.404 を単純に $\sqrt{12}$ 倍した表示値です。もし $\rho_1=0.2$ の定常AR(1)を仮定して年率換算し直すと、換算係数は約2.879に下がり、年率SRは 約1.16 になります(第5章で計算。定常AR(1)を仮定した参考値)。同じ月次成績でも、自己相関を織り込むだけで年率SRの見え方は変わります。
第1章 シャープレシオ1.4を信じてよいのか
まず、次の2つの戦略を比べてください。
| 戦略 | 年率シャープレシオ | 検証期間 |
|---|---|---|
| 戦略A | 1.4 | 6か月 |
| 戦略B | 0.9 | 5年 |
どちらの戦略が優秀でしょうか。
直感的には戦略Aを選びたくなります。数字が大きいからです。しかし、これだけでは判断できません。戦略Aには、観測期間が短くたまたま相場が良かっただけ、自己相関で成績が滑らかに見えているだけ、まれに大損するタイプでその大損がまだ起きていないだけ、多数のバックテストから最良だけを選んだだけ、年率換算で数字が膨らんだだけ――といった可能性が残ります。
第1章の結論
シャープレシオの大きさだけでは、戦略の実力も、その数字の信頼性も分かりません。
第2章 シャープレシオは何を測っているのか
基本式(1つ目の数式)
$$
SR = \frac{\text{平均超過リターン}}{\text{超過リターンの標準偏差}}
$$
超過リターンとは、無リスク金利を差し引いたリターンです。シャープレシオが測っているのは、
1単位のボラティリティ(値動きの大きさ)当たり、どれだけの平均超過リターンを得られたか。
です。リターンが同じでも値動きが荒ければSRは下がり、リターンが小さくても安定していればSRは上がります。
よくある誤解を修正する
「シャープレシオは正規分布を前提に作られた指標だ」という説明を見かけますが、厳密には正しくありません。
- シャープレシオ自体は正規分布を前提としません。平均と分散が有限でありさえすれば定義できます。
- 正規分布や独立性は、シャープレシオの信頼性や統計的有意性を評価する段階で、計算を簡単にするために後から導入される便宜的な仮定です。
- 実際の金融リターンでは、その便宜的な仮定が成立しないことが多いのです。
後の章で扱う問題の多くは「SRが悪い」のではなく、「SRを評価するときに置いた仮定が現実と合っていない」ことから生じます。
第2章の結論
シャープレシオを計算できることと、その値を信頼できることは、別問題です。
第3章 シャープレシオは「真の値」ではなく推定値である
ここが、この記事で最も理解してほしい章です。
バックテストから得られるSRは、戦略の真のシャープレシオではなく、過去の有限なデータから計算された推定値にすぎません。
コイン投げの比喩
コインを10回投げて7回表が出ても、そのコインが本当に70%の確率で表を出すとは限りません。10回では、たまたま7回出ただけかもしれない。SRも同じで、データが変われば値も変わります。
補足図:同じ「真のSR」でも推定値はばらつく
上のスライドが示す「幅を持った分布」を、実際にモンテカルロで確認したものが下の図です。
シミュレーション条件:月次超過リターンが i.i.d. 正規分布に従い、母年率SRが1.0となるよう設定(母月次SR $=1/\sqrt{12}$、$\sigma=1$)。標本標準偏差は ddof=1、推定月次SRを $\sqrt{12}$ 倍して年率表示。各条件20万回、乱数シード42。赤点線は本文で問題にする「観測1.4」の位置。
真の値は3本とも同じ1.0です。それでも短期ほど分布は広く、6か月では推定年率SRが0未満になる確率が約24%、1.4を超える確率が約41%、2.5を超える確率が約20%。5〜95%の範囲は約 −1.5〜4.3(スライドの目盛と一致)と極端に広く、外側にもなお約8%の確率質量が残ります。さらに分布は右に歪み、平均は約1.19と真値1.0より上振れします。短期では単にばらつくだけでなく、上振れしやすいのです。
つまり、第1章の戦略A(SR 1.4・6か月)の1.4は、真のSRが1.0でも6か月なら普通に出うる数字です。観測期間が延びるほど、分布は 1.0 の周りに収束していきます。
第3章の結論
シャープレシオはスコアではなく、誤差を伴った推定値です。点推定には誤差の幅が隠れており、「SR 1.2 と 0.9 の差」が統計的に意味のある差とは限りません。
この先で扱う「5つの隠れた問題」
第4〜8章では、この「誤差の幅」を広げたり点推定を歪めたりする5つの問題を、上の図の順に見ていきます。
第4章 隠れた問題① 金融リターンはしばしば正規分布から外れる
実際の金融リターンは、正規分布から想定されるより高い頻度で大きな損失が起き、左右非対称で、まれに極端値が出ます。これを2つの言葉で捉えます。
歪度(skewness)── 分布の非対称性
歪度は分布が左右どちらに偏っているかを表します。負の歪度を持つ戦略の典型例は、普段は小さく勝つが、まれに大きな損失が出るタイプ(左側に長い裾)。正の歪度を持つ戦略の典型例は、小さな損失が続く一方、まれに大きな利益が出るタイプ(右側に長い裾)です。
尖度(kurtosis)── テールの厚さ
尖度は、平均から遠く離れた極端値への感度を表します。尖度が高いほど、正規分布より厚いテール(ファットテール)を示唆します。
補足図:同じSRでも、中身はまるで違う
スライドの2分布を、条件を厳密に揃えて再現したものが下の図です。
この図の作り方:同じ無リスク金利の下で、両戦略の平均月次超過リターン(≈0.8%)・月次標準偏差(≈4.0%)を一致させたので、月次SRも等しく約0.20(スライドの表記と一致)です。戦略Bは戦略Aを共通平均の周りに反転して作成したため、平均・標準偏差・尖度・歪度の絶対値も一致し、符号だけが逆になっています。破線は損益ゼロ、点線は平均。副題に1%分位とES(期待ショートフォール)を併記しました。
同じSRでも、戦略A(負の歪度)は左側にまれな大損の裾を持ち、その1%分位・ESは戦略Bよりはるかに悪くなります。左尾の大損を重視する投資家にとっては、戦略Aのほうが不利です。ただし、どちらが望ましいかは投資家の効用・損失許容度・分散効果によって変わります。重要なのは、通常のSRだけではこの違いを表現できないという点です。
論文の数値例:不確実性の過小評価
論文では、2年・月次24観測のある戦略について、次の例が示されています。
- $(\hat\mu,\ \hat\sigma,\ \hat\gamma_3,\ \hat\gamma_4,\ T) = (0.036%,\ 0.079%,\ -2.448,\ 10.164,\ 24)$
- 推定シャープレシオ $\widehat{SR} = 0.456$(観測頻度=月次)
歪度・尖度まで織り込んだ推定標準誤差は 0.329。同じデータに独立・正規分布を仮定すると 0.214 になり、約35%小さくなります(論文本文も「約35%小さくなる」と記述)。
$$
1 - \frac{0.214}{0.329} \approx 0.35
$$
一般に、正の推定SRを前提にすると、負の歪度・高い尖度はシャープレシオ推定量の標準誤差を拡大しやすい方向に働きます。それを無視して正規分布を仮定すると、誤差の幅を過小評価し、有意性を過大評価しやすくなります。
この標準誤差は論文の $T$ ベースの漸近式によるもので、本記事の付録が用いる古典的な $n-1$ 規約とはわずかに異なります($n-1$ なら約0.336)。どの数値がどちらの規約かを明記し、規約の混在を避けています。また、この例は歪度・尖度のみを織り込んだもので、自己相関は含みません(次章)。
第4章の結論
高いシャープレシオが危険なテールリスクを隠していることがあり、正規分布を素朴に仮定すると推定量の標準誤差そのものを大きく過小評価します。
第5章 隠れた問題② リターンは独立しているとは限らない
自己相関とは
自己相関とは、現在のリターンと次の期間のリターンに関係がある状態です。正の自己相関があると、プラスの後にプラス、マイナスの後にマイナスが続きやすくなります。
上のスライドを、3つの異なる問題に分けて理解してください。
スライドは「滑らかに見える」という現象をひとまとめに描いていますが、内訳は次の3つで、原因が異なります。
- 年率換算を歪める:各期間の標準偏差を単純に $\sqrt{\cdot}$ 換算すると、複数期間にわたる実際の変動を過小評価することがあります。
- 有効標本数を減らす:観測値が独立でないため、月次リターンが24個あっても「独立な情報が24個ある」とは限りません。
- 観測ボラティリティ自体を抑える(自己相関とは別の要因):非流動資産やモデル評価価格では、価格変動が評価値へ徐々に反映されることで、観測される1期間のボラティリティそのものが小さく見えることがあります(評価値の平滑化)。
②③の結果として、成績が実態より安定して見え、SRの信頼性を過大評価し、実際のドローダウンリスクを過小評価します。
数値でつなぐ:自己相関を織り込むと年率SRは下がる
追いかけている架空戦略は月次SR 0.404、$\rho_1=0.2$ でした。定常AR(1)で加法的な期間リターンを仮定すると、年率換算は次のように書けます。
$$
SR_{12} = SR_{1}\cdot\frac{12}{\sqrt{,12 + 2\sum_{k=1}^{11}(12-k)\rho^{k},}}
$$
$\rho^{k}=0.2^{k}$ とすると年率換算係数は約2.879(単純換算の $\sqrt{12}\approx3.464$ より小さい)。したがって、
$$
0.404 \times 2.879 \approx 1.16
$$
単純換算の1.40よりかなり低くなります(定常AR(1)を仮定した参考値)。第6章の年率換算の議論と、数値でつながります。
滑らかなリターンは、安全性の証拠とは限りません。
「滑らかすぎる」場合は、正の自己相関・非流動性・評価値の平滑化を疑うべきサインです。
論文のモンテカルロ結果
非正規性と自己相関が同時に存在すると、独立・正規分布を仮定した推定はSR推定量の分散を大幅に過小評価します。論文の現実的な条件では、実際の分散が素朴な推定値の4倍以上になる場合もあると報告されています。分散が4倍なら標準誤差は約2倍。「有意」と思っていた差の多くが誤差の範囲だった、という事態が起こりえます。
第5章の結論
正の自己相関や評価値の平滑化があると、成績は実態より良く・安定して見えます。滑らかさを実力と取り違えないこと。
第6章 隠れた問題③ データ不足と、年率換算の落とし穴
年率換算(2つ目の数式)
$$
SR_{annual} = SR_{daily}\sqrt{252}
$$
(月次なら $\sqrt{12}$、週次なら $\sqrt{52}$。)この $\sqrt{\cdot}$ 換算は、少なくとも期間をまたぐ共分散がゼロであることを前提にしています。前章のとおり、その前提はしばしば崩れます。自己相関があると単純換算は成立せず、頻度で結果が変わり、短期の成績も年率化すると立派に見えます。しかし年率化してもデータ量は増えませんし、観測期間の違う推定値どうしを年率SRだけで比較することもできません。
年率化は数字の表示方法を変えるだけです。6か月を年率化しても、それは「6か月ぶんの情報」のままです。
どれだけのデータがあれば良いのか:MinTRL
Minimum Track Record Length(MinTRL) は、ざっくり言えば、
選んだ基準SR・信頼水準・モデル仮定のもとで、PSR(第9章)が閾値に達するために必要な最小観測数。
論文の数値例では、ある戦略について $SR_0=0$ を判定するには約19.5か月、$SR_0=0.1$ を判定するには約39.4か月が必要と報告されています。基準が高くなるほど長い観測期間が必要という直感的な結果です。
追いかけている架空戦略(月次SR 0.404、歪度 -2.4、尖度 10.2)を、簡略式・片側95%・$SR_0=0$ で計算すると、MinTRLは約40か月。ところが手元は24か月しかありません(スライドの赤い斜線部が、この情報不足にあたります)。つまりこの戦略は、「ゼロを上回る」と結論するのに必要なデータすら足りていません。
MinTRLの読み方(重要)
MinTRLは、現在観測されているSR・歪度・尖度が今後も変わらないと仮定した条件付きの必要標本数です。データを追加すると推定値も変わるため、「40か月に達すれば必ず有意になる」という保証ではありません。また、毎月PSRを再計算し、初めて95%を超えた時点で採用する行為は**逐次的な覗き見(peeking)**にあたり、固定した終了時点を設けない限り通常の95%閾値をそのまま使えません。分析期間・基準SR・信頼水準・停止ルールは、結果を見る前に決めてください。
検定力(Power)── MinTRLとは別の設計問題
統計的検定には、偽陽性(Type I:エッジのない戦略を採用)と偽陰性(Type II:エッジのある戦略を棄却)の2種類の間違いがあります。検定力(Power) は、本当にエッジがある戦略を正しく発見できる確率です。
重要なのは、検定力は標本数だけでは決まらないことです。少なくとも、帰無仮説の基準 $SR_0$、本当に検出したい最小の対立仮説 $SR_1$、有意水準、リターン分布と系列相関が必要です。較正された検定を固定の終了時点で1回だけ行うなら偽陽性の水準は保たれますが、推定値が散らばり、そこから最良を選抜すると偽発見が増えやすく(第8章)、データが少ないと検定力が下がって見逃しも増えます。
| 意味 | |
|---|---|
| MinTRL | 観測された効果を基にした、事後的な必要標本数 |
| 検定力 | 事前に想定した効果 $SR_1$ を発見できるかという設計問題 |
第6章の結論
年率化された1つの数字は、「データが足りているか」「どの効果を検出したいのか」という問いを覆い隠します。
第7章 隠れた問題④ p値は「戦略が偽物である確率」ではない
p値が答えているのは、次の問いです。
帰無仮説「真のSRは基準値以下」が正しいと仮定したとき、今回観測した検定統計量以上に極端な値が得られる確率はどれくらいか。
一方、投資家が本当に知りたいのは、次の問いです。
今回の成績を見た後で、この戦略に本当はエッジがない確率はどれくらいか。
前者は「仮定のもとでのデータの確率」、後者は「データを見た後の、仮説が正しいことの確率」。方向が逆です。
論文の数値例:oFDR
論文は後者に答える指標として oFDR(観測後ベイズ偽発見率、Observed Bayesian False Discovery Rate) を導入しています。これは、
観測データを条件としたときに、帰無仮説が真である事後確率
です。論文の例では、同じ観測値について片側p値 3.4% に対し oFDR 36.1%。すなわち、論文で設定された事前確率と帰無・対立モデルの下では、この観測値を得た後に帰無仮説が真である事後確率が36.1%になる、ということです。
この 3.4% → 36.1% という変換は普遍的ではありません。戦略の事前的な希少性(スライド上部の「本当に有効な戦略(極少数)」の割合)や検定力に依存します。直感的な補助として言い換えれば、「同じ前提・同じ採用基準による発見を多数繰り返すと、約36%が偽発見になる」と推定される、ということです。
病気の検査の比喩
「病気の人が陽性になる確率」と「陽性だった人が実際に病気である確率」は別物です。病気自体が珍しければ、検査が優秀でも陽性者の中の偽陽性割合は高くなります。投資戦略も同じで、本当に有効な戦略が珍しいなら、良いバックテスト結果が偽物である可能性は無視できません。
第7章の結論
p値が小さいことは、戦略が本物である確率が高いことを、直接には意味しません。
第8章 隠れた問題⑤(最大の問題) 何回バックテストしたのか
私は、これが最大の隠れた問題だと考えています。
典型例
移動平均10種類・損切り10種類・利確10種類・銘柄20種類・時間軸5種類を総当たりすると、組み合わせは 10×10×10×20×5 = 100,000通り。試行数が増えるほど、真のエッジがなくても高いSRが得られる確率は上がります。
スライドの「必ず出る」は直感的な誇張です。
正確には「試行数が増えるほど、真のエッジがなくても高いSRが得られる確率は上がる」であり、確実性の主張ではありません。さらに、近いパラメータの戦略は互いに強く相関するため、10万通りが10万個の独立試行になるわけではありません。重要なのは、生の組み合わせ数ではなく**実質的に独立な試行数(有効試行数)**です。
コイン投げの比喩
1,000人がそれぞれコインを10回投げると、少なくとも1人が10回連続で表を出す確率は約62%です。その1人だけを見れば特別な能力に見えますが、本当に見るべきは「最良の結果」だけでなく「何人が試したか」の両方です。1人だけの10連続なら驚きますが、1,000人の中の1人ならほぼ偶然です。バックテストも同じで、採用したパラメータだけでなくそこに至るまでに試した全履歴(スライド左側の、記録されていない灰色の群衆)が評価の一部です。
Deflated Sharpe Ratio(DSR)
この選択バイアスを補正するのが Deflated Sharpe Ratio(DSR) です。DSRは、単純にPSRを試行数で割るものではありません。
多重試行の下で偶然得られる最大SRを極値分布から推定し、それを調整済みの基準SRとして、選択された戦略を再評価します。
必要な入力は、試行数(試行間に強い相関がある場合は実質的に独立な有効試行数)、各試行で得られたSRのばらつき、非正規性・標本数、そして選択バイアスです。
論文の数値例
論文の例では、単一試行として評価した PSR 0.966(97%近く有意に見える)が、10試行から最良を選んだ後の DSR 0.410 に下がります。補正後には、その成績は「スキルゼロの人が10回試して得られる最良値」を上回っていない、と判断されます(論文が設定した特定条件での数値であり、そのまま別戦略へ移せる値ではありません)。
第8章の結論
採用したパラメータだけでなく、そこに至るまでに試した全履歴が評価の一部です。「何回試したか」を記録していないバックテストは、評価のしようがありません。
第9章 点推定から不確実性を伴う評価へ:PSR・MinTRL・DSR
ここまでの5つの問題を踏まえ、実際に使う道具を整理します。中心は PSR です。
通常のシャープレシオが言えること
この戦略の推定シャープレシオは 0.8 である。
これは点。誤差の幅も有意性も含まれていません。
PSRが答える問い(3つ目の数式・概念)
Probabilistic Sharpe Ratio(PSR) は、推定SRとその推定標準誤差を使い、定常性などのモデル仮定の下で、母シャープレシオが基準値 $SR_0$ を上回る方向の片側信頼度を、0〜1の尺度で評価します。概念的には次のように書けます(系列相関を無視した簡略版)。
$$
PSR(SR_0) = \Phi!\left( \frac{(\hat{SR} - SR_0),\sqrt{n-1}}{\sqrt{,1 - \hat\gamma_3,\hat{SR} + \dfrac{\hat\gamma_4 - 1}{4},\hat{SR}^2,}} \right)
$$
$\Phi$ は標準正規分布の累積分布関数、$n$ は観測数、$\hat\gamma_3$ は歪度、$\hat\gamma_4$ は尖度(正規分布=3)。式の細部を覚える必要はありません。大事なのは、スライドの天秤が示すとおり、分母で歪度・尖度・標本数を効かせている点です。正の推定SRを前提にすると、標本が短い・負の歪度がある・尖度が高い戦略ほど標準誤差が拡大し、PSRは通常のSRより低い評価を与えます。
このPSR式(と後述のコード)は系列相関を無視した簡略版です。自己相関がある場合には、論文の一般化された標準誤差、または HAC・ブロックブートストラップが別途必要です。
また、PSRは近似的な標本分布に基づく片側信頼度であり、将来利益が出る確率でも、モデルが今後も有効である確率でもありません。
基準シャープレシオ $SR_0$ の考え方
$SR_0$ は原則として分析前に設定した固定ハードルです。$SR_0=0$(ゼロより上か)は統計的診断には有用ですが、実務上の採用基準としては低すぎることが多いと考えています。取引コスト後で0を上回るか、運用に必要な最低水準を上回るか、といった水準を設定します。
別戦略・既存ポートフォリオとの比較は $SR_0$ 代入だけでは不十分
別の戦略から推定されたSR(例:0.5)を $SR_0$ に代入するだけでは足りません。ベンチマーク側にも推定誤差があり、両戦略のリターンには相関もあるためです。シャープレシオ差の検定、またはペア型・ブロック型ブートストラップが必要です。「既存ポートフォリオへの追加価値」も、単独戦略のSRではなく、追加後ポートフォリオのSR・限界的なリスク寄与・既存との相関・コスト後の増分リターンで評価します。
追いかけてきた架空戦略の答え合わせ
架空戦略(月次SR 0.404、月次24観測、歪度 -2.4、尖度 10.2、$\rho_1=0.2$、試行10)を簡略式で評価します。何が計算できて、何がまだ分からないかの区別自体が、この記事のメッセージです。
| 評価軸 | 結果 | 意味 |
|---|---|---|
| 点推定・単純年率SR | 1.4 | 自己相関を無視した「表示値」 |
| 月次SR | 0.404 | 出発点(月次系列から直接計算) |
| PSR(i.i.d. 正規を仮定・簡略) | ≈ 0.97 | 正規性を仮定した楽観的な評価 |
| PSR(i.i.d. 非正規・歪度尖度を考慮) | ≈ 0.90 | 標本数・歪度・尖度を反映。片側95%に届かない。自己相関は未補正 |
| MinTRL(i.i.d. 非正規・片側95%・$SR_0=0$) | ≈ 40か月 | 39.85を切り上げ。手元は24か月 → データ不足 |
| 自己相関を調整したPSR・MinTRL | 未計算 | 一般化された標準誤差(またはHAC等)が必要 |
| DSR(試行10を補正) | 未計算 | 各試行のSR分布と有効試行数が必要 |
| (参考)論文のDSR例 | 0.966 → 0.410 | 論文で設定された別条件・別戦略の数値例 |
華やかな「SR 1.4」が問いを重ねるごとに評価を下げ、そしてまだ計算しきれていない項目が残ることが見えてきます。スライドが言うとおり、重要なのは高い数字を見つけることではなく、「計算しきれていないリスク」の存在に気づくことです。
PSR ≈ 0.90 の読み方に注意。
これは「このモデル仮定の下で、基準 $SR_0=0$ を上回る方向の片側信頼度が約90%」という意味であり、「真のSRがゼロ以下である確率が10%」という事後確率を直接意味しません。事前確率を用いた明示的な事後確率(第7章の oFDR)とは区別してください。
PSRの小数を精密値として読まない。
月次24観測・高尖度のような小標本では、SRだけでなく歪度・尖度の推定値そのものが大きくばらつきます。掲載式はそれらを既知のように代入する漸近近似なので、PSR 0.90 を「精密に90%」と読むべきではありません。極端な歪度・尖度がある場合は、ブロックブートストラップや複数の推定規約による感度分析を併用します。なお、このPSRのモーメント式は、第2章のSR定義(平均・分散が有限なら定義可)より強い条件(安定した高次モーメントと定常性)を暗黙に要求します。
第9章の結論
シャープレシオを「点」ではなく基準値を上回る方向の片側信頼度として評価し、さらに、多重試行下の調整済み基準SRに対して再評価する(DSR)。
第10章 実運用で使うためのチェックリスト
実務フロー(8ステップ)
スライドのフローに沿って整理します。
- 分析設計を、結果を見る前に固定する:分析期間・基準 $SR_0$・信頼水準・停止ルールを事前に決める(逐次的な覗き見を避ける)。
- 計算条件を固定する:原則として、取引コスト・手数料・資金調達費用控除後の算術超過リターンを使う。対数リターンや総収益を用いる場合は標準SRと区別して明記し、異なる定義の値を直接比較しない。
- 分布特性を確認し、点推定だけを報告しない:観測数・平均・標準偏差・歪度・尖度・自己相関・最大ドローダウン・最悪期間を併記する。
- PSRを計算する:基準 $SR_0$ を決め、非正規性(可能なら自己相関)を考慮し、点推定を片側信頼度として評価する。
- MinTRLと検定力を確認する:現在の標本数はMinTRL以上か。検出したい最小SR $SR_1$ に対する検定力は十分か。
- 試行回数を記録する:試したパラメータ数・銘柄数・時間軸・除外した戦略・途中で覗いた結果。実質的に独立なアイデアは何個か。
- 多重検定を補正する:最良1戦略ならDSR。一定基準以上の複数戦略を継続採用するなら SFDR(Sequential False Discovery Rate)。
- 未使用データとライブで確認する:以下の6段階を通す。
Discovery(発見)→ Deflation(多重検定の差し引き)→ Validation(研究中に見ていないデータで検証)→ Allocation(採用ルール管理)→ Live Testing(執行・データ問題の確認)→ Full Deployment(アルファ減衰の監視)
最低限、報告してほしいテンプレート
上の8ステップは分析の手順です。それとは別に、成果物として次を報告します。
基本情報
| 項目 | 値 |
|---|---|
| 対象市場 | |
| 検証期間 | |
| リターン頻度 | |
| 観測数(リターンの本数。取引回数とは別) | |
| 取引回数 | |
| グロス/ネット | |
| 単純/対数リターン | |
| 使用通貨 | |
| 無リスク金利(頻度・複利規約) | |
| 重複リターンの有無 | |
| 欠損値・ゼロリターンの処理 |
リターン特性
| 項目 | 値 |
|---|---|
| 平均超過リターン | |
| 標準偏差 | |
| シャープレシオ | |
| 歪度 | |
| 尖度(Pearson型/正規=3) | |
| ラグ1自己相関 $\rho_1$ | |
| HACラグまたはブロック長 | |
| 最大ドローダウン | |
| 最悪期間リターン |
推論と選択
| 項目 | 値 |
|---|---|
| 基準シャープレシオ $SR_0$ | |
| 検出したい最小SR $SR_1$ | |
| 有意水準 | |
| PSR | |
| MinTRL | |
| 想定した検定力 | |
| 観測数はMinTRL以上か | |
| 試した戦略・パラメータ数 | |
| 有効試行数 | |
| DSR | |
| OOS(未使用データ)結果 | |
| ライブ結果 |
空欄が多い戦略は、評価の確度が制限されている状態です。その場合は、欠けている情報がどれかを明示したうえで、限定的な評価にとどめるのが誠実だと考えています。
補足:シャープレシオが高く見えやすい「危険なパターン」
| # | パターン | 疑うべきこと |
|---|---|---|
| 1 | 検証期間が短い | 数か月の好成績を年率化していないか |
| 2 | 利益が不自然に滑らか | 自己相関・非流動性・評価方法 |
| 3 | 勝率が極端に高い | オプション売り・ナンピン・平均回帰で、まれな大損を隠していないか |
| 4 | パラメータが細かすぎる | 特定値だけ良く、周辺で急落していないか(過剰最適化) |
| 5 | 試行回数が不明 | 失敗したバックテストが記録されていない |
| 6 | 年率SRしか載っていない | 元の頻度・観測数・自己相関・分布特性が不明 |
| 7 | インサンプル結果しかない | OOS・ライブ実績が存在しない |
補足:PSR・DSRを使っても分からないこと
PSRやDSRはシャープレシオの推論を大きく改善しますが、すべての投資リスクを解決する魔法ではありません。最大ドローダウンと回復期間、損失の連続性、流動性リスク・強制ロスカット、売買コストの非線形性・レバレッジ制約・ファンディングリスク、レジーム変化・モデルの構造的崩壊などは、SR系の指標だけでは見えにくいものです。
さらに重要なのは、入力されたリターン系列そのものが汚染されている場合、PSRやDSRはそれを修復しないという点です。次のようなバックテスト固有のバイアスは、指標の外側で潰す必要があります。
- ルックアヘッド・バイアス(未来の情報の混入)
- サバイバーシップ・バイアス(生き残った銘柄だけを見る)
- データリーケージ
- 銘柄ユニバースの事後選択
- OOSを何度も見て、実質的にインサンプル化してしまう問題
- 不正確な約定価格・コストモデル
補助的には、Sortino Ratio / Calmar Ratio / Expected Shortfall / 最大ドローダウン / 回復期間 / 最悪月・最悪取引 / 連続損失回数 / ブロックブートストラップ / モンテカルロ・シミュレーションを併用します。
PSRやDSRは推論を改善しますが、最大ドローダウンや破産リスク、入力データの汚染までは解決しません。「生き残り」を最優先に置く設計は、指標の外側で担保する必要があります。
まとめ:シャープレシオを捨てるのではなく、正しく疑う
- シャープレシオは真の実力ではなく、過去データから得られた推定値である。
- 正規分布と独立性を、無条件に仮定しない。
- 点推定だけでなく、標本数・歪度・尖度・自己相関を確認する。
- 何回試した結果なのかを記録し、多重検定を補正する。
- PSR・MinTRL・DSRなどを使い、確率と不確実性を含めて判断する。
シャープレシオは、使えない指標ではありません。しかし、単独の数字として使うと、偶然を実力と誤認する危険があります。
クオンツ運用で本当に重要なのは、最も高いシャープレシオを見つけることではなく、そのシャープレシオが非正規性・自己相関・標本不足・試行錯誤を考慮した後にも残るかを確認することです。
付録:PSR・MinTRL の Python 実装(簡略版)
手元のバックテスト結果で試せる最小限の実装です。NumPyとSciPyだけで動きます。
以下は系列相関を無視した簡略版($n-1$ 規約、片側検定)です。標本数・歪度・尖度は考慮しますが、自己相関は考慮しません。自己相関がある場合は、論文の一般化された標準誤差や HAC・ブロックブートストラップが必要です。
import numpy as np
from scipy.stats import norm, skew, kurtosis
def _variance_term(sr, skew_g3, kurt_g4):
values = np.asarray([sr, skew_g3, kurt_g4], dtype=float)
if not np.all(np.isfinite(values)):
raise ValueError("SR・歪度・尖度は有限値で指定してください。")
value = 1.0 - skew_g3 * sr + (kurt_g4 - 1.0) / 4.0 * sr**2
if not np.isfinite(value) or value <= 0:
raise ValueError("SR・歪度・尖度から正の分散項を計算できません。")
return value
def probabilistic_sharpe_ratio(sr, n, skew_g3, kurt_g4, sr_benchmark=0.0):
"""PSR(簡略版・系列相関なし・n-1 規約)。
真のSRが sr_benchmark を上回る方向の片側信頼度を 0〜1 で返す。
- sr, sr_benchmark : 観測頻度ベース(=非年率)のシャープレシオ
- kurt_g4 : 非超過尖度(正規分布 = 3)
"""
if n < 2:
raise ValueError("n は2以上である必要があります。")
variance_term = _variance_term(sr, skew_g3, kurt_g4)
z = (sr - sr_benchmark) * np.sqrt(n - 1) / np.sqrt(variance_term)
return float(norm.cdf(z))
def min_track_record_length(sr, skew_g3, kurt_g4, sr_benchmark=0.0, conf=0.95):
"""MinTRL(簡略版・片側検定・系列相関なし・n-1 規約)。"""
if not 0.5 < conf < 1.0:
raise ValueError("conf は0.5より大きく1未満にしてください。")
# 基準以下の推定SRでは、片側50%超の閾値に達する有限解はない
if sr <= sr_benchmark:
return np.inf
variance_term = _variance_term(sr, skew_g3, kurt_g4)
z_alpha = norm.ppf(conf)
return float(1.0 + variance_term * (z_alpha / (sr - sr_benchmark))**2)
def moments_from_returns(excess_returns):
"""超過リターン系列から SR・歪度・Pearson尖度・観測数を取得。
★ 尖度の規約に注意(下のコメント参照)。NaN は除外する。"""
x = np.asarray(excess_returns, dtype=float).ravel()
x = x[np.isfinite(x)] # 先頭NaN等を除外
if x.size < 4:
raise ValueError("歪度・尖度の計算には少なくとも4観測が必要です。")
std = x.std(ddof=1)
if not np.isfinite(std) or std <= 0:
raise ValueError("標準偏差が正である必要があります。")
sr = x.mean() / std # 観測頻度ベースのSR
g3 = skew(x, bias=False)
g4 = kurtosis(x, fisher=False, bias=False) # fisher=False で「正規=3」
return float(sr), float(g3), float(g4), int(x.size)
尖度の規約に注意(pandas利用者は特に)
このコードは尖度を Pearson型(正規分布 = 3) で要求します。一方、pandas の Series.kurt() と SciPy の kurtosis(..., fisher=True)(既定)は、正規分布を 0 とする Fisher型(超過尖度) を返します。returns.kurt() をそのまま渡すと、値が 3 だけ小さく なります。
- SciPy を使うなら:
kurtosis(x, fisher=False, bias=False) - pandas を使うなら:
g4 = returns.kurt() + 3.0
再現性のため、ddof・bias・Pearson/Fisher の別を必ず記録してください。小標本では推定方法の違いが数値に効きます。
実行例(架空戦略を簡略版で評価):
# 「年率SR 1.4」は自己相関を無視した表示値。
# 本来は月次の超過リターン系列から直接計算するのが安全:
# sr, g3, g4, n = moments_from_returns(monthly_excess_returns)
monthly_sr = 1.4 / np.sqrt(12) # = 0.4041(単純換算の仮定つき)
n, g3, g4 = 24, -2.4, 10.2
psr_real = probabilistic_sharpe_ratio(monthly_sr, n, g3, g4, 0.0)
psr_naive = probabilistic_sharpe_ratio(monthly_sr, n, 0.0, 3.0, 0.0)
mtrl = min_track_record_length(monthly_sr, g3, g4, 0.0, 0.95)
print(f"月次SR : {monthly_sr:.4f}") # 0.4041
print(f"PSR(歪度・尖度を考慮) : {psr_real:.4f}") # ≈ 0.90
print(f"PSR(iid正規を素朴に仮定): {psr_naive:.4f}") # ≈ 0.97
print(f"MinTRL(片側95%, SR0=0) : {mtrl:.1f} 観測") # ≈ 40(手元は 24)
DSR(多重検定補正)は、各試行のSRのばらつき(試行間分散)と実質的に独立な有効試行数が別途必要になるため、本記事では概念と論文の数値例の紹介にとどめました。実装まで踏み込む発展編は別記事で扱う予定です。
参考論文
- Marcos López de Prado, Alexander Lipton, Vincent Zoonekynd, "How to Use the Sharpe Ratio", ADIA Lab Research Paper Series. SSRN: https://ssrn.com/abstract=5520741
- ジャーナル版:Marcos López de Prado, Alexander Lipton, Vincent Zoonekynd, "Sharpe Ratio Inference: A New Standard for Decision Making and Reporting", The Journal of Portfolio Management, Vol. 52, No. 6, pp. 6–50, 2026. DOI: 10.3905/jpm.2026.1.837
- Andrew W. Lo, "The Statistics of Sharpe Ratios," Financial Analysts Journal, Vol. 58, No. 4, pp. 36–52, 2002.(系列相関を伴う年率換算の原典)
- David H. Bailey and Marcos López de Prado, "The Sharpe Ratio Efficient Frontier," Journal of Risk, 2012.(PSR・MinTRL の原典)
- David H. Bailey and Marcos López de Prado, "The Deflated Sharpe Ratio: Correcting for Selection Bias, Backtest Overfitting, and Non-Normality," The Journal of Portfolio Management, Vol. 40, No. 5, pp. 94–107, 2014.(DSR の原典)
本記事は、上記論文が提示する問題意識(点推定の過信、i.i.d. Normal 仮定による推論の歪み、非正規性と自己相関、標本数と検定力、p値の誤解、多重検定と選択バイアス、PSR・MinTRL・DSR・FDR による改善)を基礎としています。
数値の出所
- 補足図はいずれも、記事の主張を検証するために筆者がモンテカルロで生成したものです(論文中の図ではありません)。シミュレーション条件は各図のキャプションに記載しています。
- 標準誤差 0.329 / 0.214(約35%の過小評価) は、論文本文の月次24観測の例 $(\hat\mu,\hat\sigma,\hat\gamma_3,\hat\gamma_4,T)=(0.036%,0.079%,-2.448,10.164,24)$、$\widehat{SR}=0.456$ に基づき、筆者も再計算で確認しました(論文は $T$ ベース、本記事付録は $n-1$ ベース)。
- MinTRL 約19.5 / 39.4か月、片側p値 3.4% と oFDR 36.1%、PSR 0.966 と選択後DSR 0.410 は、論文が示す worked example であり、いずれも論文の設定に依存します。
- 架空戦略に対する「月次SR 0.404」「PSR ≈ 0.97 / 0.90」「MinTRL ≈ 40か月」は、付録の簡略版コード(自己相関未補正、$n-1$ 規約)による筆者の計算です。















