qbuntuqbuntu
rejectedno_edge· equity· factor· reversal· skewness

歪度リバーサル(米国S&P500)のバックテスト

Skewness Reversal (US S&P 500)

slug: skewness-reversal-us-sp500

米国S&P500(約503銘柄)で歪度リバーサルをバックテストした。144通りの中央値 Sharpe は -1.03。p-value は 0.03。Max DD は -18.9%。期間は 2022-02-01〜2026-09-01。最良 Sharpe +0.39 は代表値ではない。

判定は rejected。中央値は promising(Sharpe > 0.5 かつ p-value < 0.05)にも marginal(Sharpe > 0.05 かつ最良 p-value < 0.10)にも届いていない。主因は no_edge。レジーム・取引回数・コストには分類されず、中央値が採用ラインに届いていない。

成績の中央値

Sharpe(中央値)
-1.03
Max DD
-18.9%
勝率
—
Alpha(年率)
—
p-value
0.03
期間: 2022-02-01 → 2026-09-01
144通りの Sharpe:中央値 -1.03最良 0.39 (代表値ではない)最悪 -3.17p25–p75 -1.52–-0.51

仮説

原文は英語。

Investors overpay for lottery-like positive skewness and shun negative skewness (Harvey & Siddique 2000 line): stocks with extreme recent return skewness should subsequently revert. Ranking on realized skewness tests the effect long/short.

採用しなかった理由

Across 144 grid combinations, median Sharpe=-1.03, best=0.39. Primary failure mode: no_edge.

検証ファクト (5)

Best grid Sharpe ratio is 0.39 (p=0.41).
period 2022-02-01–2026-09-01; cost=5bps
sharpe_ratio0.39
Median Sharpe across 144 grid runs is -1.03.
Full grid of 144 parameter combinations.
sharpe_ratio-1.03
Median Sharpe in DOWN regime is -0.24 across 144 runs.
Regime=DOWN, N225 SMA20/SMA60 classification.
sharpe_ratio-0.24
Median Sharpe in FLAT regime is -1.39 across 144 runs.
Regime=FLAT, N225 SMA20/SMA60 classification.
sharpe_ratio-1.39
Median Sharpe in UP regime is -1.15 across 144 runs.
Regime=UP, N225 SMA20/SMA60 classification.
sharpe_ratio-1.15

検証ラン (30)

runparamssharpeUPFLATDOWN
lookback_days=20, n_stocks=5, cost_bps=5, regime_gate=False, holding_days=1
r-skewness-reversal-us-sp500-0000
cost_bps: 5
n_stocks: 5
regime_gate: false
-1.74-2.64-1.40-0.83
lookback_days=20, n_stocks=5, cost_bps=5, regime_gate=False, holding_days=5
r-skewness-reversal-us-sp500-0001
cost_bps: 5
n_stocks: 5
regime_gate: false
-1.36-1.51-1.64+0.06
lookback_days=20, n_stocks=5, cost_bps=5, regime_gate=False, holding_days=20
r-skewness-reversal-us-sp500-0002
cost_bps: 5
n_stocks: 5
regime_gate: false
-0.34-1.23-0.19+1.63
lookback_days=20, n_stocks=5, cost_bps=5, regime_gate=True, holding_days=1
r-skewness-reversal-us-sp500-0003
cost_bps: 5
n_stocks: 5
regime_gate: true
-1.40-1.93-1.40-0.83
lookback_days=20, n_stocks=5, cost_bps=10, regime_gate=False, holding_days=1
r-skewness-reversal-us-sp500-0006
cost_bps: 10
n_stocks: 5
regime_gate: false
-2.12-3.12-1.74-1.15
lookback_days=20, n_stocks=5, cost_bps=10, regime_gate=True, holding_days=5
r-skewness-reversal-us-sp500-0010
cost_bps: 10
n_stocks: 5
regime_gate: true
-1.25-1.20-1.80-0.24
lookback_days=20, n_stocks=10, cost_bps=5, regime_gate=True, holding_days=5
r-skewness-reversal-us-sp500-0016
cost_bps: 5
n_stocks: 10
regime_gate: true
-0.70-0.61-1.18+0.33
lookback_days=20, n_stocks=10, cost_bps=10, regime_gate=True, holding_days=5
r-skewness-reversal-us-sp500-0022
cost_bps: 10
n_stocks: 10
regime_gate: true
-0.94-0.81-1.44-0.02
lookback_days=20, n_stocks=20, cost_bps=5, regime_gate=True, holding_days=5
r-skewness-reversal-us-sp500-0028
cost_bps: 5
n_stocks: 20
regime_gate: true
-0.35+0.36-1.39+0.64
lookback_days=20, n_stocks=20, cost_bps=10, regime_gate=True, holding_days=5
r-skewness-reversal-us-sp500-0034
cost_bps: 10
n_stocks: 20
regime_gate: true
-0.65+0.16-1.73-0.11
lookback_days=20, n_stocks=50, cost_bps=5, regime_gate=False, holding_days=1
r-skewness-reversal-us-sp500-0036
cost_bps: 5
n_stocks: 50
regime_gate: false
-1.39-1.80-1.25-0.31
lookback_days=20, n_stocks=50, cost_bps=5, regime_gate=True, holding_days=20
r-skewness-reversal-us-sp500-0041
cost_bps: 5
n_stocks: 50
regime_gate: true
+0.28+0.73-0.99+1.45
lookback_days=20, n_stocks=50, cost_bps=10, regime_gate=True, holding_days=20
r-skewness-reversal-us-sp500-0047
cost_bps: 10
n_stocks: 50
regime_gate: true
+0.11+0.63-1.26+1.11
lookback_days=40, n_stocks=5, cost_bps=5, regime_gate=True, holding_days=20
r-skewness-reversal-us-sp500-0053
cost_bps: 5
n_stocks: 5
regime_gate: true
-0.04+0.32-1.18+1.64
lookback_days=40, n_stocks=5, cost_bps=10, regime_gate=True, holding_days=20
r-skewness-reversal-us-sp500-0059
cost_bps: 10
n_stocks: 5
regime_gate: true
-0.13+0.25-1.28+1.52
lookback_days=40, n_stocks=10, cost_bps=5, regime_gate=True, holding_days=20
r-skewness-reversal-us-sp500-0065
cost_bps: 5
n_stocks: 10
regime_gate: true
-0.16-0.01-1.49+1.74
lookback_days=40, n_stocks=10, cost_bps=10, regime_gate=True, holding_days=20
r-skewness-reversal-us-sp500-0071
cost_bps: 10
n_stocks: 10
regime_gate: true
-0.28-0.09-1.66+1.58
lookback_days=40, n_stocks=20, cost_bps=5, regime_gate=True, holding_days=20
r-skewness-reversal-us-sp500-0077
cost_bps: 5
n_stocks: 20
regime_gate: true
-0.54-0.07-1.28+0.00
lookback_days=40, n_stocks=20, cost_bps=10, regime_gate=False, holding_days=1
r-skewness-reversal-us-sp500-0078
cost_bps: 10
n_stocks: 20
regime_gate: false
-3.17-4.12-2.09-3.46
lookback_days=40, n_stocks=50, cost_bps=5, regime_gate=False, holding_days=1
r-skewness-reversal-us-sp500-0084
cost_bps: 5
n_stocks: 50
regime_gate: false
-2.17-3.07-1.36-1.73
lookback_days=40, n_stocks=50, cost_bps=10, regime_gate=False, holding_days=1
r-skewness-reversal-us-sp500-0090
cost_bps: 10
n_stocks: 50
regime_gate: false
-3.00-3.96-2.14-2.54
lookback_days=60, n_stocks=5, cost_bps=5, regime_gate=False, holding_days=1
r-skewness-reversal-us-sp500-0096
cost_bps: 5
n_stocks: 5
regime_gate: false
-1.55-1.66-1.74-0.93
lookback_days=60, n_stocks=5, cost_bps=5, regime_gate=False, holding_days=5
r-skewness-reversal-us-sp500-0097
cost_bps: 5
n_stocks: 5
regime_gate: false
-1.08-0.68-1.28-1.47
lookback_days=60, n_stocks=5, cost_bps=5, regime_gate=True, holding_days=20
r-skewness-reversal-us-sp500-0101
cost_bps: 5
n_stocks: 5
regime_gate: true
+0.39+0.73-0.18+0.91
lookback_days=60, n_stocks=5, cost_bps=10, regime_gate=False, holding_days=20
r-skewness-reversal-us-sp500-0104
cost_bps: 10
n_stocks: 5
regime_gate: false
+0.22+0.44-0.29+0.81
lookback_days=60, n_stocks=10, cost_bps=5, regime_gate=False, holding_days=20
r-skewness-reversal-us-sp500-0110
cost_bps: 5
n_stocks: 10
regime_gate: false
-0.56-1.16-0.49+0.90
lookback_days=60, n_stocks=10, cost_bps=10, regime_gate=False, holding_days=20
r-skewness-reversal-us-sp500-0116
cost_bps: 10
n_stocks: 10
regime_gate: false
-0.71-1.31-0.62+0.76
lookback_days=60, n_stocks=20, cost_bps=5, regime_gate=False, holding_days=20
r-skewness-reversal-us-sp500-0122
cost_bps: 5
n_stocks: 20
regime_gate: false
-0.56-1.17-0.16+0.48
lookback_days=60, n_stocks=20, cost_bps=10, regime_gate=False, holding_days=20
r-skewness-reversal-us-sp500-0128
cost_bps: 10
n_stocks: 20
regime_gate: false
-0.74-1.35-0.33+0.27
lookback_days=60, n_stocks=50, cost_bps=5, regime_gate=False, holding_days=20
r-skewness-reversal-us-sp500-0134
cost_bps: 5
n_stocks: 50
regime_gate: false
-0.83-1.54-0.23+0.02

対象ユニバース

S&P 500 constituents, ~503 stocks

関連する戦略

source: qbuntu-analysis · kabu STATION REST API + J-Quants daily bars
computed asof: 2026-09-24T02:22:21

関連する戦略