初めての戦略を作り終えた人から、形を変えて最もよく聞かれる質問があります。結果が本物だと言えるまで、取引は何回必要ですか?たいてい、そこには数字が付いてきます。「1,200回取引しました。これなら十分ですよね?」率直に答えると、誰もが不満に思います。必要なのは取引回数ではないからです。
要点はこの1行です。この投稿の残りでは、なぜそれがつらいのかを説明します。
シャープレシオの標準誤差とは?
n個の周期リターンからSharpeを計算するとします。各リターンが独立で、おおむね正規分布に従う場合、標本誤差は次のとおりです。
SE(s) ≈ √((1 + s²/2) / n)
sは同じ頻度で測定したSharpeです。両辺を年率換算すると、すっきりした式が得られます。1年あたりk個の観測値があり、T年分あるとき、年率換算SharpeSの標準誤差は次のようになります。
SE(S) ≈ √((1 + S²/(2k)) / T)
分母の2kに注目してください。日次リターンならk = 252なので、Sharpeが2でも分子への寄与は4/504 ≈ 0.008です。式全体は1に収束します。年率換算Sharpeの標準誤差は、おおよそ1/√Tです。Tはデータの暦年数です。Sharpe自体への依存はほとんどなく、サンプリング頻度にも左右されません。取引回数にはまったく依存しません。
つまり、こうなります。
| データ年数 | SE(Sharpe) | 測定値が1.5の場合の95% CI |
|---|---|---|
| 1 | 1.00 | −0.46~3.46 |
| 2 | 0.71 | 0.11~2.89 |
| 3 | 0.58 | 0.37~2.63 |
| 5 | 0.45 | 0.62~2.38 |
| 10 | 0.32 | 0.88~2.12 |
2年分の履歴でSharpe 1.5を示すバックテストでも、95%水準ではコイントスと統計的に区別できません。暗号資産のリサーチの大半は、これが出発点です。多くの人が使える、サバイバーシップバイアスを補正し手数料を正確に反映したデータは、だいたい2022年頃からしかなく、興味深い銘柄の半分は2023年より前には存在していなかったからです。
でも、取引が40,000回あります。それで解決しませんか?
いいえ。これは私が何より正したい誤解です。
取引回数とサンプル期間は別の量で、式に入るのはそのうち片方だけです。戦略が6か月で40,000回取引するなら、T = 0.5でSE ≈ 1.41です。測定されたSharpeが2.0なら、95%信頼区間は−0.8から4.8です。取引が40,000回あっても、率直な結論は「良いかもしれないし、マイナスかもしれない」です。
40,000回の取引は、異なる市場状態で行った40,000回の独立した賭けではありません。約180日間の市場の動きから得た40,000個のサンプルであり、日ごとの動きは互いに相関し、各レジーム内でも相関しています。4か月間毎日利益を上げる高頻度の平均回帰ブックが実際に賭けているのは、「この流動性レジームでは短期の平均回帰が機能する」という1つの仮説です。その仮説が独立に検証された回数は、せいぜい数回かもしれません。
私が使う考え方はこれです。約定回数ではなく、レジームを数える。この戦略は、本当に異なる市場環境をいくつ乗り越えましたか?長く続いたベーシス・プラスの局面を1度経験しただけの資金調達率キャリー戦略は、毎時リバランスを何度記録していようと、見てきたのはn = 1です。
簡単な診断方法:日次損益をブロック長20日のブロックブートストラップにかけ、再サンプリングしたSharpeの分布を見てください。5パーセンタイルが0を下回るなら、取引回数は関係ありません。numpyで約9行あれば実行でき、ほかのどんな単独チェックよりも多くの戦略を断念させてくれました。
この式は実際の戦略にも当てはまりますか?
厳密には当てはまりません。そして、好ましくない方向に誤差が出ます。1/√Tの結果は、リターンがIIDの正規分布に従うと仮定しています。実際の戦略リターンには自己相関と歪度があり、キャリー、ショートボラティリティ、平均回帰のような戦略では、たいてい歪度は負です。Mertensの補正では、こうしたモーメントを加味します。
SE(s) ≈ √((1 + s²/2 − γ₃·s + (γ₄−3)·s²/4) / n)
γ₃は歪度、γ₄は尖度です。歪度が負だと−γ₃·sの項が正になり、信頼区間が広がります。過剰尖度があると、さらに広がります。歪度が約−1.2、尖度が約9の一般的な暗号資産キャリー損益では、補正後の標準誤差が単純な推定値より30–40%大きくなるのを見たことがあります。Loの2002年の論文は自己相関を扱っており、その影響の方向も同じです。リターンの正の系列相関は、単純なSharpeを過大評価し、見かけの誤差を小さくします。厄介な組み合わせです。
ですから、1/√Tは不確実性の下限として扱ってください。これが最良のケースです。
500種類のバリエーションを試した場合、Sharpeはどれほど高ければよいですか?
ここからは、自動化されたリサーチパイプラインを運用する人にとって重要な話です。Stratmillで私たちが日々直面している状況ですが、生成エージェントが生み出す候補は1つではなく、何百個にもなります。
標準正規分布からM個の値を取り出したとき、その最大値の期待値はおおよそ√(2 ln M)です。これに標準誤差を掛けると、実際にはまったく価値のないM個の戦略のうち、最も運のよいものが示すSharpeが得られます。
| 検証した戦略数 | √(2 ln M) | ノイズ中の最高Sharpe、5年(SE 0.45) | ノイズ中の最高Sharpe、2年(SE 0.71) |
|---|---|---|---|
| 10 | 2.15 | 0.96 | 1.52 |
| 100 | 3.03 | 1.36 | 2.16 |
| 500 | 3.53 | 1.58 | 2.50 |
| 5,000 | 4.13 | 1.85 | 2.93 |
下から2行目を見てください。2年分のデータで500個の候補を生成し、勝者のSharpeが2.4だったとしても、何も見つけていません。ノイズの水準を下回っています。BaileyとLópez de Pradoのdeflated Sharpeは、単純な√(2 ln M)の代わりに試行したSharpeの分散を使ってこれを定式化しています。きちんと実装する価値はありますが、単純な式でも今日から行動を変えるには十分です。
表が示す以上に状況を悪くする要因が2つあります。1つ目は、Mが保存した戦略の数ではなく、評価した数だということです。あらゆるパラメータ調整、「ルックバックを30期間にして試してみよう」という試み、バグ修正後の再実行がすべて含まれます。正確に数えている人はいません。2つ目は、候補が独立した抽出値ではないため、√(2 ln M)は実効的な候補の幅を過大評価することです。一方で、試行同士に相関があるということは、運のよい単一のレジームが候補の一群全体をまとめて押し上げることも意味します。
クオンツリサーチで最も危険な数字は、誰も記録していない数字です。何回、結果を見たか。
では、私は実際に何をすればよいのでしょう?
私なら、次の5つをこの順番で行います。
- 評価をすべて記録する。バックテストを実行するたびに増えるカウンターを設け、値を保存してリセットしない。Mが分からなければ、基準値も分かりません。このリストの中で、エンジニアリングにかける1時間として最も価値があります。
- Sharpeは常に信頼区間と併記する。数字だけを出してはいけません。私たちのバックテストレポートでは
1.72 ± 0.51 (2.9y, skew-adjusted)を出力し、±は必須にしています。チーム全体の結果の話し方が変わります。 - MとTから基準値を決めてから、結果を見る。上の表から数字を選び、書き留めておきます。事後に基準値を決めると、誰もがカーブフィットを正当化してしまいます。
- サンプルが少ないときは、頻度より対象の幅を広げる。暦時間を増やすことはできませんが、同じシグナルを相関のない40銘柄に適用できます。取引頻度を上げるのとは違い、これは実効的なnを本当に増やします。ただし相関には注意してください。リスクオフの時間帯にある40銘柄の暗号資産perpは、実質的に1つの金融商品です。
- その後、ペーパートレードを行う。アウトオブサンプルの期間は1日に1日ずつ積み上がり、近道はありません。だからこそ、過剰適合できない唯一のサンプルなのです。
これで短いサンプルが使えるようになるわけではありません。短いサンプルから何が言えるのかを正直に示せるようになります。それは、多くのバックテストレポートが示唆する主張より、ずっと控えめです。2年間でSharpe 1.5なら、ペーパートレードで検証する価値のある仮説です。発見ではありません。
← 記事一覧
