通算Sharpeの盲点:「一発屋戦略」の正体

バックテストの期間全体(例えば2019年〜2024年の5年間)で計算した「通算シャープレシオ」は、時系列の順序をシャッフルしても同じ値になります。つまり、「利益がいつ、どのように発生したか」という時間的構造を完全に無視しています。

経過年数(2020年 〜 2025年) → 1年ローリングSR SR = 0 戦略A:常にSR 1.0〜1.5を維持(高SSR) コロナショック特需 (SR=4.5) 戦略B:残り期間はずっと赤字(低SSR) 通算SRはどちらも全く同じ「1.3」! しかし実運用で耐えられるのは戦略Aだけである。
図1:通算SRが同一でも全く異なる「時間的一貫性」を持つ2つの戦略の比較

戦略Bのような「一発屋(危機特需型)」は、実運用に入ると特大ショックが起きない限り延々とマイナスを垂れ流し、投資家はドローダウンに耐えきれず損切り撤退します。私たちが求めるべきは、「時間を通じて一貫して基準シャープレシオを上回り続ける戦略A」です。

ローリングSharpe系列と機械的自己相関の発生

戦略資産の全日次超過収益を \(r_1, r_2, \dots, r_T\) とし、固定のローリング窓幅を \(w\)(例: 252営業日=1年)とします。各時点 \(k\) において、区間 \([k, k+w-1]\) の収益データから計算される標本シャープレシオを \(\hat{z}_k\) と置きます。

\hat{z}_k = \widehat{ ext{SR}}(r_k, r_{k+1}, \dots, r_{k+w-1}), \quad k = 1, \dots, n \quad (n = T - w + 1)

このローリングSR系列 \(\{\hat{z}_k\}\) の標本平均を \(ar{z}\) とします。

ar{z} = rac{1}{n} \sum_{k=1}^n \hat{z}_k
重複窓が生み出す強烈な自己相関の罠

隣接するローリング窓 \(\hat{z}_k\) と \(\hat{z}_{k+1}\) は、全体の \(w-1\) 個(252日のうち251日分)の収益データを共有しています。そのため、元の日次リターン系列が完全な独立同分布(I.I.D.)であったとしても、生成された \(\{\hat{z}_k\}\) 系列には機械的・人工的に極めて強力な正の自己相関(\( ho_1 pprox 0.99\))が必然的に発生します。通常の標本標準偏差で割って標準化すると、不確実性を10倍以上過小評価してしまいます。

Newey-West HAC長期分散による自己相関補正

この強烈な自己相関を持つローリングSR系列の「真のばらつき」を正しく評価するために、計量経済学でノーベル賞級の業績となったNewey-West HAC(Heteroskedasticity and Autocorrelation Consistent:不均一分散・自己相関頑健推定量)を用います。

\(\hat{z}_k\) 系列のラグ \(h\) における標本自己共分散を \(\hat{\gamma}_h\) とします。

\hat{\gamma}_h = rac{1}{n} \sum_{t=h+1}^n (\hat{z}_t - ar{z})(\hat{z}_{t-h} - ar{z})

バートレット・カーネル(Bartlett Kernel)の三角重みを用いたNewey-West長期分散 \(\widehat{\Omega}\) は以下のように計算されます。

\widehat{\Omega} = \hat{\gamma}_0 + 2 \sum_{h=1}^L \left(1 - rac{h}{L + 1} ight) \hat{\gamma}_h

※\(L\) は自己共分散を考慮する最大切断ラグ幅(通常は窓幅 \(w\) に応じて設定)。

\(\widehat{\Omega}\) は単なる「1時点の分散」ではなく、「自己相関の持続性までを合算した真の長期分散」です。ローリングSRの標本平均 \(ar{z}\) の漸近標準誤差は \( ext{SE}(ar{z}) pprox \sqrt{ rac{\widehat{\Omega}}{n}}\) となります。

SSR(原定義)と normalized SSR(検定統計量)

Bajo Traver & Rodríguez Domínguez (2026) の原論文では、投資家が要求する基準シャープレシオ(例えば \( ext{SR}_0 = 0\) または \(1.0\))に対し、以下の2つの指標を定義しています。

1. Sharpe Stability Ratio(原定義のSSR)

平均ローリングSRと基準値の差を、長期標準偏差 \(\sqrt{\widehat{\Omega}}\) で割った指標です。

\widehat{ ext{SSR}}( ext{SR}_0) = rac{ar{z} - ext{SR}_0}{\sqrt{\widehat{\Omega}}}

2. normalized SSR(正規化SSR / t値型統計量)

推論や統計的仮説検定に用いるため、平均の標準誤差 \(\sqrt{\widehat{\Omega}/n}\) で割った量です。

\widehat{ ext{nSSR}}( ext{SR}_0) = \sqrt{n} imes \widehat{ ext{SSR}}( ext{SR}_0) = rac{ar{z} - ext{SR}_0}{\sqrt{\widehat{\Omega} / n}}
指標 数式 物理的な意味・役割 実務での目安
SSR (原定義) \( rac{ar{z} - ext{SR}_0}{\sqrt{\widehat{\Omega}}}\) ローリングSRが基準をどれだけ「安定して上回っているか」の比率尺度。 \( ext{SSR} \ge 0.5 \sim 1.0\)(1.0超で極めて優秀)
nSSR (正規化) \( rac{ar{z} - ext{SR}_0}{\sqrt{\widehat{\Omega}/n}}\) 「平均ローリングSRが基準より統計的に高い」というt統計量。 \( ext{nSSR} \ge 1.96\)(有意水準5%で有意に基準超え)

ブロック・ブートストラップによる頑健な推論

漸近理論では、サンプル数 \(n\) が十分に大きければ \( ext{nSSR}\) は標準正規分布 \(N(0, 1)\) に収束します。しかし、重複窓の自己相関はあまりにも強いため、正規近似だけを鵜呑みにするのは危険です。

実務では、元の日次収益系列の時系列依存構造を壊さないように、ムービング・ブロック・ブートストラップ(Moving-block Bootstrap)を用いて信頼区間を経験的に算出します。

Python:ブロック・ブートストラップによるnSSRの95%信頼区間算出
import numpy as np

# returns: 日次超過収益系列 (長さ T)
# B: ブートストラップ反復回数 (例: 1000)
# block_len: ブロック長 (例: 60日)
def moving_block_bootstrap_ssr(returns, window=252, lag=252, sr0=0.0, B=1000, block_len=60):
    T = len(returns)
    n_blocks = int(np.ceil(T / block_len))
    boot_nssr = []
    
    for _ in range(B):
        # ランダムな連続ブロックをサンプリングして連結
        starts = np.random.randint(0, T - block_len + 1, size=n_blocks)
        boot_sample = np.concatenate([returns[s:s+block_len] for s in starts])[:T]
        
        # ローリングSRの計算
        rolling_sr = compute_rolling_sharpe(boot_sample, window=window)
        
        # Newey-West HAC長期分散の計算
        omega = newey_west_hac(rolling_sr, lag=lag)
        
        # nSSRの算出
        n = len(rolling_sr)
        nssr = (rolling_sr.mean() - sr0) / np.sqrt(omega / n)
        boot_nssr.append(nssr)
        
    ci_lower, ci_upper = np.percentile(boot_nssr, [2.5, 97.5])
    return ci_lower, ci_upper

# 判定:ブートストラップ95%信頼区間の下限 ci_lower > 1.96 であれば、極めて頑健な一貫性を持つと証明される。

窓幅 \(w\)・ラグ \(L\)・基準値の設計プロトコル

SSRを実務に導入する際は、以下のハイパーパラメータを「結果を見た後で動かさない」ように事前規約として固定します。

設計パラメータ 推奨値・標準仕様 短すぎる/小さすぎる場合のリスク 長すぎる/大きすぎる場合のリスク
ローリング窓幅 \(w\) 日次データで \(w = 252\)(1年間) 窓内の標本数が少なすぎてSR分母が暴れ、外れ値が頻発する。 相場レジームの転換が平滑化され、一貫性の悪化を見逃す。
HAC切断ラグ \(L\) \(L = w\)(252日)または Newey-West自動帯域幅 窓の重複による自己相関を拾いきれず、長期分散を過小評価する。 推定値が不安定になり、長期分散が過大評価される。
基準値 \( ext{SR}_0\) \( ext{SR}_0 = 0.0\)(最低基準)または \(0.5\)(資本コスト) 甘すぎる基準になり、インデックス未満の戦略を合格させてしまう。 ハードルが高すぎて、優れた戦略を不当に棄却してしまう。
次回への接続:相場の「季節(レジーム)」を見極める

SSRによって「リスク調整後リターンの時間的一貫性」を評価できるようになりました。しかし、相場には「平穏なブル相場」「ボラティリティ爆発相場」「じり安相場」といった異なる季節が存在します。次回は、統計量が突如として激変する「非定常性とレジーム転換(マルコフスイッチング)」の数理に踏み込みます。

ミニテスト

4問の理解度テストです。

Q1. ローリング窓を用いて算出したシャープレシオ系列 \(\{\hat{z}_k\}\) に、極めて強い正の自己相関が生じる物理的理由はどれ?

正解はAです。例えば252日窓を1日ずらすと、251日分のデータがそのまま共有されるため、元データが独立であっても系列には機械的に強い自己相関が発生します。

Q2. Newey-West HAC(不均一分散・自己相関頑健)推定量が扱うべき本質的な要素はどれ?

正解はCです。自己相関を無視した通常の分散公式を使うと不確実性を過小評価するため、HAC長期分散を用いて正しく補正します。

Q3. 原論文における normalized SSR(\( ext{nSSR}\))と SSR の数学的関係はどれ?

正解はBです。原定義のSSRが長期標準偏差で割った比率であるのに対し、nSSRは有効窓数 \(n\) の平方根を掛けたt値型統計量です。

Q4. SSR(Sharpe Stability Ratio)が直接補正できない(別の指標を必要とする)要素はどれ?

正解はCです。SSRは「選ばれた1本の戦略の時間的一貫性」を測る指標であり、探索量のペナルティはDSRやPBOで別途測定する必要があります。

学術文献・参考資料