qbuntuqbuntu
rejectedno_edge· equity· factor· reversal· skewness

Skewness Reversal (US S&P 500)

slug: skewness-reversal-us-sp500
performance summary
Sharpe (median)
-1.09
Max DD
-18.5%
Win rate
Alpha (ann.)
p-value
0.03
backtest period: 2022-02-012026-06-01
Sharpe across 144 grid runs:median -1.09best 0.46 (not representative)worst -3.30p25–p75 -1.56-0.55

Hypothesis

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.

Why it didn't work

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

Facts (5)

Best grid Sharpe ratio is 0.46 (p=0.34).
period 2022-02-01–2026-06-01; cost=5bps
sharpe_ratio0.46
Median Sharpe across 144 grid runs is -1.09.
Full grid of 144 parameter combinations.
sharpe_ratio-1.09
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.59 across 144 runs.
Regime=FLAT, N225 SMA20/SMA60 classification.
sharpe_ratio-1.59
Median Sharpe in UP regime is -1.16 across 144 runs.
Regime=UP, N225 SMA20/SMA60 classification.
sharpe_ratio-1.16

Runs (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.94-2.64-1.87-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.37-1.51-1.74+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.35-1.32-0.12+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.57-1.93-1.87-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.34-3.12-2.24-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.88-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.26+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.52-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.40+0.36-1.75+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.69+0.16-2.10-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.42-1.80-1.33-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.32+0.68-0.84+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.15+0.58-1.09+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.33-1.10+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.05+0.26-1.21+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.18-0.05-1.65+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.30-0.13-1.82+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.68-0.17-1.61+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.30-4.12-2.22-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.24-3.07-1.46-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.06-3.96-2.18-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.46-1.66-1.48-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.12-0.68-1.42-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.46+0.71-0.03+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.33+0.55-0.14+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.66-1.32-0.57+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.80-1.47-0.70+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.76-1.30-0.55+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.95-1.48-0.72+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
-1.02-1.59-0.63+0.02

Target universe

S&P 500 constituents, ~503 stocks

Related strategies

source: qbuntu-analysis · kabu STATION REST API + J-Quants daily bars
computed asof: 2026-08-02T16:26:49

Related strategies