Nに数えるもの
Nは「コードを何回起動したか」ではなく、同じデータから何個の候補を比較・選択したかです。
- 移動平均20/50、20/60、30/50の3組を比較:Nに3加算。
- 損切り3種類×利確4種類のグリッド:Nに12加算。
- 結果を見て曜日フィルタを追加して再評価:新しい試行として加算。
- 選択を伴わないデータ欠損確認や単純集計:原則としてN外。
判断基準は「この数字を見て、候補を選ぶか」です。選ぶならNへ入れます。記事に載せなかった失敗案や頭の中で却下した調整も、データを見て選んだなら試行です。
実行前のスコープ宣言
試行は実行した瞬間に増え、後から取り消せません。バックテスト前に次を記録します。
対象: USDJPY 2015-01-01〜2025-12-31 12バリエーション
ユーザー指示/研究目的との一致: 東京時間ブレイクの損切り3×利確4のみ
この実行で N は 38 → 50 になる指示や研究計画にないシンボルを「参考までに」追加しません。別市場への展開は第10回の手順を先に通します。
DSRが補正するもの
DSR(Deflated Sharpe Ratio)は、選択バイアスとサンプルの短さを考慮し、観測シャープレシオが多くの試行から偶然選ばれた好成績ではないかを評価します。元論文のDSRは試行間シャープレシオの分散と、選択された収益の非正規性も扱います。分布仮定と式の導出は上級コースのPSRとDSR:Sharpeを確率で読むで扱います。
このサイトの検証規律では、採用候補をDSR 0.95以上とします。0.95未満は「過学習の疑い」と表示し、良い結果として推奨しません。DSRはコスト、先読み、データ品質、経済合理性を直す道具ではないため、他のゲートも必要です。
最小実装
バックテストコードには、次の試行会計とDSR出力を必ず含めます。N_TRIALSは実行前に更新します。
N_TRIALS = 1 # 累計試行パターン数(実行前に更新)
print(f"試行回数 N = {N_TRIALS}")
from scipy.stats import norm
import numpy as np
def deflated_sharpe_ratio(sr, N, T, sr_std=None):
"""sr: 観測SR, N: 累計試行, T: サンプル数。"""
if sr_std is None:
sr_std = np.sqrt(1.0 / (T - 1))
eg = 0.5772156649
sr0 = 0.0 if N <= 1 else sr_std * (
(1 - eg) * norm.ppf(1 - 1/N)
+ eg * norm.ppf(1 - 1/(N * np.e))
)
return norm.cdf((sr - sr0) / np.sqrt(1 / (T - 1)))
dsr = deflated_sharpe_ratio(sharpe, N_TRIALS, len(returns))
print(
f"SR = {sharpe:.3f} | DSR = {dsr:.3f} "
f"{'✓ 採用候補' if dsr >= 0.95 else '✗ 過学習の疑い'}"
)観測SRと単位が合わず、N≥2でDSRが不自然にゼロ付近へ潰れる実装は使いません。省略時は上記の帰無分布スケールを使い、試行間標準偏差を渡す場合は観測SRと同じ単位にします。
DSRの前に必要な確認
- 収益は価格差ではなくlog returnを基本とする。
- 歪度・超過尖度・Jarque–Bera検定を出す。
- n<30はサンプル不足。n≥30は平均収益95%CIを出す。
- コスト、先読み、欠損、タイムゾーンを確認する。
- VaRは正規近似だけでなくCornish–Fisher補正を使う。
DSRが高くても、前処理が誤っていれば採用できません。DSRは最後の飾りではなく、検証工程の一つです。
よくある間違い
グリッド探索1回をN=1にする
比較した組み合わせ数が試行数です。3×4なら12です。
採用した案だけ数える
不採用案も選択バイアスを生みます。累計で記録します。
DSRだけで採用する
コスト後期待値、95%CI、頑健性、データ品質、フォワード結果も通す必要があります。
実戦課題
過去の研究ログから、シンボル、期間、条件、パラメータ、結果を見て変更した回数を洗い出し、累計Nを作ります。正確に復元できなければ過小評価せず「少なくともN」として保守的に扱います。
チェックリスト
- Nをコード実行回数と混同していない
- グリッドの全組み合わせを数えた
- 実行前にNを更新した
- SRとDSRを並べて報告した
- DSR<0.95を採用候補にしていない
ミニテスト
4問で確認します。
Q1. 損切り3種類×利確4種類を比較したときNへの加算は?
選択した組み合わせ数をすべて数えます。
Q2. Nを更新する時点は?
試行会計を先に固定します。
Q3. このサイトのDSR採用基準は?
0.95未満は過学習の疑いとします。
Q4. DSRが高ければ何を省略できる?
DSRは他の品質確認を代替しません。
参考資料
DSRの原典は Bailey and López de Prado, The Deflated Sharpe Ratio です。