TL;DR
- Sharpe 5+ という backtest 結果のほとんどは年率化バグ
sqrt(252)で年率化が正しいのは「毎日 trade している」時のみ- 月 5 回しか trade しない戦略を
sqrt(252)で年率化すると Sharpe が大幅 inflated - 正解:
sqrt(trades_per_year)(取引頻度ベース) または年次リターン分散から直接計算
Hook
「Sharpe 5 を見たら、まず year-frequency 換算を疑え」
retail backtest プラットフォームが「Sharpe 5.7」と表示する。市場プロでもまず到達しない数字。煽るには十分。だがその数字の半分以上は、年率化の数学が間違っている だけだ。
Background
Sharpe Ratio は Sharpe (1966、1994 改訂) で提案された、リスク調整後リターンの尺度。
Sharpe = (E[R] - Rf) / σ[R]
期待超過リターンを標準偏差で割る。シンプル、強力、業界標準。
年率化の必要性
日次リターンの Sharpe を年率化したい時、統計的には:
Sharpe_annual = Sharpe_daily × √T
T は 1 年あたりの観測単位数。日次なら T = 252 (営業日)、週次なら T = 52、月次なら T = 12。これが iid 正規分布を仮定したときの理論変換。
ここで暗黙の仮定が入る: 全 T 観測点で「リターンが発生している」。これが retail backtest で破綻する。
Theory — なぜ間違うか
毎日 trade なら正しい
戦略が毎日 entry/exit を繰り返している (例: daily mean reversion) なら、252 日すべてで日次 P&L が記録される。Sharpe を √252 倍するのは正しい。
月 5 回 trade だと間違う
戦略が月平均 5 回しか entry しない (= 年 60 回程度)。残りの日は「ポジションなし」で日次 P&L = 0。これを「毎日 0 円のリターンが発生」と扱って √252 倍すると、実際の volatility より小さい standard deviation で割ることになる (ゼロ日が分散を希薄化する)。
結果: Sharpe が systematically inflated。実態の 2-3 倍に見える。
数学的に正しい年率化
trade ベースで Sharpe を計算するなら:
Sharpe_annual = (E[R_trade] / σ[R_trade]) × √(N_trades/year)
trade あたりの mean / std を取り、年間 trade 数の平方根で年率化する。これなら 0 日の希薄化が起きない。
もしくは年次リターンから直接
backtest 期間が複数年あるなら、各年の total return / std を直接取って Sharpe 計算するのが最もクリーン。ただし N が小さくなる (10 年で N=10) 問題が出る。
Concrete example
教科書的な数値。月 5 回 (年 60 回) trade、各 trade で平均リターン 0.5%、std 1.0%。
| 計算法 | Sharpe |
|---|---|
| 日次データ + sqrt(252) 倍 (誤) | ~5 程度 |
| trade ベース + sqrt(60) 倍 (正) | ~3.9 |
| 年次リターン直接 (10 年データから) | ~2.5 (variance 推定の誤差含む) |
3 つの数字に 2 倍の差 がある。retail プラットフォームの多くは日次 + sqrt(252) を default にするので、低頻度戦略で過大表示されやすい。
Limitation / Counter-argument
1. Sortino は downside-only 偏差
Sharpe の代替として Sortino (Sortino & Price 1994) は分母にダウンサイド偏差のみ使う。upside volatility をペナルティ視しない。年率化の問題は同様だが、ダウンサイドのみ抽出するので「ゼロ日問題」が緩和される側面もある。
2. Calmar は MaxDD を分母
Calmar Ratio は分母に MaxDD を使う。年率化のバグはないが、MaxDD は単発実現値で再現性がない (記事 9 で扱う)。Sharpe と組み合わせて使う。
3. Skew / Kurtosis を無視している
Sharpe は分布の正規性を暗黙仮定する。fat-tail / skewed return では misleading になりうる。Lo (2002) “The Statistics of Sharpe Ratios” がこれを詳細に論じる。
4. 連続的にポジションを持つ場合の中間
「ある signal が立つと数日 hold」のような中頻度戦略では、計算法の選択がさらに難しい。trade-based か exposure-based かで異なる Sharpe が出る。
Practical takeaway
retail で Sharpe を計算する時の規律:
- 年率化の前に「実際に trade した日」をカウントする: 252 日すべてに 0 リターンを padding しない
sqrt(trades_per_year)で年率化: trade ベースの mean / std から年率に変換- 複数年データなら年次リターンの分散も見る: 二者を比較して乖離が大きければ計算法を疑う
- Sharpe 5+ は警告フラグ: 統計的にほぼあり得ない数字。年率化バグか、サンプル数不足の偶然
- 公開ファンドの Sharpe を benchmark: SPY 0.6-0.9、AQR Long-Short 0.5-1.5、retail で 2 越えるならまず疑う
ただし正しい年率化で出た Sharpe も、限定期間の OOS 検証である以上、future performance を保証しない。
まとめ
retail backtest の Sharpe inflation は、ほぼ全てが「年率化の数学を当然と思った」結果。sqrt(252) は毎日 trade 前提でしか正しくない。低頻度戦略で機械的に適用すると、見せかけの Sharpe が膨らむ。
「Sharpe 5 を見たら年率化を疑え」「Sharpe 2 を超えたら計算法をチェック」という規律を持てば、retail の自家製 backtest はかなり健全化する。
参考文献
- Sharpe, W.F. (1994). The Sharpe Ratio. Journal of Portfolio Management, 21(1), 49-58.
- Lo, A.W. (2002). The Statistics of Sharpe Ratios. Financial Analysts Journal, 58(4), 36-52.
- Sortino, F.A., Price, L.N. (1994). Performance Measurement in a Downside Risk Framework. Journal of Investing, 3(3), 59-64.
- Bailey, D.H., Lopez de Prado, M. (2014). The Deflated Sharpe Ratio. Journal of Portfolio Management, 40(5), 94-107.
- Magdon-Ismail, M., Atiya, A. (2004). Maximum Drawdown. Risk Magazine, October 2004.