qbuntuqbuntu
rejectedregime_dependent· equity· earnings· event-driven· reversal

Earnings Reversal (JP Growth Stocks)

slug: earnings-reversal-short-jp-growth
performance summary
Sharpe (median)
-0.18
Max DD
-83.0%
Win rate
Alpha (ann.)
p-value
0.23
backtest period: 2023-12-122026-05-29
Sharpe across 2880 grid runs:median -0.18best 1.54 (not representative)worst -5.46p25–p75 -2.620.71

Hypothesis

Post-earnings price reactions in JP Growth stocks tend to overshoot. Shorting large positive reactions and buying large negative reactions captures mean-reversion after earnings announcements. Note: lookback_days is defined in grid but unused in evaluation (reaction is always 1-day close-to-close); grid inflates 3x as a result.

Why it didn't work

Across 2880 grid combinations, median Sharpe=-0.18, best=1.54. Primary failure mode: regime_dependent.

Facts (7)

Average monthly return correlation with other strategies in DOWN regime: -0.14
Pairwise Pearson correlation of monthly returns across 42 strategies, filtered to DOWN regime months (N=3, N225 < SMA20 < SMA60)
correlation-0.14
Average monthly return correlation with other strategies (full period): 0.05
Pairwise Pearson correlation of monthly returns across 42 strategies, full backtest period
correlation0.05
Best grid Sharpe ratio is 1.54 (p=0.088).
period 2023-12-12–2026-05-29; cost=5bps; side=SHORT_ONLY
sharpe_ratio1.54
cite ↗ /cite/earnings-reversal-short-jp-growth-fact-best-sharpevia r-earnings-reversal-short-jp-growth-0324
Median Sharpe across 2880 grid runs is -0.18.
Full grid of 2880 parameter combinations.
sharpe_ratio-0.18
Median Sharpe in DOWN regime is -2.93 across 2880 runs.
Regime=DOWN, N225 SMA20/SMA60 classification.
sharpe_ratio-2.93
Median Sharpe in FLAT regime is -1.31 across 2880 runs.
Regime=FLAT, N225 SMA20/SMA60 classification.
sharpe_ratio-1.31
Median Sharpe in UP regime is 0.53 across 2880 runs.
Regime=UP, N225 SMA20/SMA60 classification.
sharpe_ratio0.53

Runs (30)

runparamssharpeUPFLATDOWN
holding_period=1, reaction_threshold=0.03, n_positions=1, cost_bps=5, side=SHORT_ONLY
r-earnings-reversal-short-jp-growth-0000
side: "SHORT_ONLY"
cost_bps: 5
n_positions: 1
+1.31+2.12+0.40-0.31
holding_period=1, reaction_threshold=0.03, n_positions=1, cost_bps=5, side=LONG_ONLY
r-earnings-reversal-short-jp-growth-0001
side: "LONG_ONLY"
cost_bps: 5
n_positions: 1
-2.30-0.23-4.49-3.87
holding_period=1, reaction_threshold=0.03, n_positions=1, cost_bps=5, side=BOTH
r-earnings-reversal-short-jp-growth-0002
side: "BOTH"
cost_bps: 5
n_positions: 1
+0.98+2.11-0.56-1.84
holding_period=1, reaction_threshold=0.03, n_positions=1, cost_bps=20, side=SHORT_ONLY
r-earnings-reversal-short-jp-growth-0009
side: "SHORT_ONLY"
cost_bps: 20
n_positions: 1
+1.02+1.86+0.08-0.73
holding_period=1, reaction_threshold=0.03, n_positions=10, cost_bps=5, side=SHORT_ONLY
r-earnings-reversal-short-jp-growth-0036
side: "SHORT_ONLY"
cost_bps: 5
n_positions: 10
+1.30+1.94+0.59-0.29
holding_period=1, reaction_threshold=0.03, n_positions=10, cost_bps=5, side=BOTH
r-earnings-reversal-short-jp-growth-0134
side: "BOTH"
cost_bps: 5
n_positions: 10
+0.16+1.34-2.06-3.54
holding_period=1, reaction_threshold=0.05, n_positions=5, cost_bps=5, side=SHORT_ONLY
r-earnings-reversal-short-jp-growth-0264
side: "SHORT_ONLY"
cost_bps: 5
n_positions: 5
+1.23+1.94+0.36-0.37
holding_period=1, reaction_threshold=0.07, n_positions=10, cost_bps=5, side=SHORT_ONLY
r-earnings-reversal-short-jp-growth-0324
side: "SHORT_ONLY"
cost_bps: 5
n_positions: 10
+1.54+2.16+0.78+0.07
holding_period=1, reaction_threshold=0.07, n_positions=1, cost_bps=20, side=BOTH
r-earnings-reversal-short-jp-growth-0395
side: "BOTH"
cost_bps: 20
n_positions: 1
+0.32+1.58-1.75-2.48
holding_period=1, reaction_threshold=0.1, n_positions=10, cost_bps=20, side=SHORT_ONLY
r-earnings-reversal-short-jp-growth-0525
side: "SHORT_ONLY"
cost_bps: 20
n_positions: 10
+0.20+0.63+0.02-1.14
holding_period=1, reaction_threshold=0.15, n_positions=1, cost_bps=5, side=SHORT_ONLY
r-earnings-reversal-short-jp-growth-0576
side: "SHORT_ONLY"
cost_bps: 5
n_positions: 1
+1.09+2.05-0.30+1.86
holding_period=1, reaction_threshold=0.15, n_positions=3, cost_bps=20, side=LONG_ONLY
r-earnings-reversal-short-jp-growth-0598
side: "LONG_ONLY"
cost_bps: 20
n_positions: 3
-5.46-2.75-8.50-6.89
holding_period=1, reaction_threshold=0.15, n_positions=5, cost_bps=20, side=SHORT_ONLY
r-earnings-reversal-short-jp-growth-0657
side: "SHORT_ONLY"
cost_bps: 20
n_positions: 5
+0.72+1.28+0.21-0.49
holding_period=2, reaction_threshold=0.03, n_positions=3, cost_bps=15, side=LONG_ONLY
r-earnings-reversal-short-jp-growth-0787
side: "LONG_ONLY"
cost_bps: 15
n_positions: 3
-3.32-2.72-3.70-4.03
holding_period=2, reaction_threshold=0.05, n_positions=1, cost_bps=10, side=BOTH
r-earnings-reversal-short-jp-growth-0917
side: "BOTH"
cost_bps: 10
n_positions: 1
+0.56+1.39+0.12-3.83
holding_period=2, reaction_threshold=0.07, n_positions=10, cost_bps=10, side=SHORT_ONLY
r-earnings-reversal-short-jp-growth-1047
side: "SHORT_ONLY"
cost_bps: 10
n_positions: 10
+1.07+1.66+0.57-1.32
holding_period=2, reaction_threshold=0.1, n_positions=5, cost_bps=5, side=LONG_ONLY
r-earnings-reversal-short-jp-growth-1177
side: "LONG_ONLY"
cost_bps: 5
n_positions: 5
-4.14-3.65-4.53-4.60
holding_period=2, reaction_threshold=0.15, n_positions=1, cost_bps=20, side=BOTH
r-earnings-reversal-short-jp-growth-1307
side: "BOTH"
cost_bps: 20
n_positions: 1
-0.20+0.46-1.14-0.32
holding_period=2, reaction_threshold=0.15, n_positions=10, cost_bps=20, side=SHORT_ONLY
r-earnings-reversal-short-jp-growth-1437
side: "SHORT_ONLY"
cost_bps: 20
n_positions: 10
+0.23+0.38+0.21-0.53
holding_period=3, reaction_threshold=0.03, n_positions=5, cost_bps=15, side=LONG_ONLY
r-earnings-reversal-short-jp-growth-1567
side: "LONG_ONLY"
cost_bps: 15
n_positions: 5
-2.41-1.93-3.41-1.70
holding_period=3, reaction_threshold=0.05, n_positions=3, cost_bps=10, side=BOTH
r-earnings-reversal-short-jp-growth-1697
side: "BOTH"
cost_bps: 10
n_positions: 3
-0.03+0.77-1.46-3.48
holding_period=3, reaction_threshold=0.07, n_positions=1, cost_bps=10, side=SHORT_ONLY
r-earnings-reversal-short-jp-growth-1827
side: "SHORT_ONLY"
cost_bps: 10
n_positions: 1
+1.24+1.85+0.60-0.43
holding_period=3, reaction_threshold=0.1, n_positions=10, cost_bps=5, side=LONG_ONLY
r-earnings-reversal-short-jp-growth-1957
side: "LONG_ONLY"
cost_bps: 5
n_positions: 10
-3.68-3.07-3.94-4.75
holding_period=3, reaction_threshold=0.15, n_positions=3, cost_bps=20, side=BOTH
r-earnings-reversal-short-jp-growth-2087
side: "BOTH"
cost_bps: 20
n_positions: 3
-0.48+0.30-0.87-3.50
holding_period=5, reaction_threshold=0.03, n_positions=1, cost_bps=5, side=SHORT_ONLY
r-earnings-reversal-short-jp-growth-2160
side: "SHORT_ONLY"
cost_bps: 5
n_positions: 1
+1.07+1.32+1.19-0.40
holding_period=5, reaction_threshold=0.03, n_positions=1, cost_bps=20, side=LONG_ONLY
r-earnings-reversal-short-jp-growth-2218
side: "LONG_ONLY"
cost_bps: 20
n_positions: 1
-1.83-0.80-2.91-2.36
holding_period=5, reaction_threshold=0.05, n_positions=10, cost_bps=15, side=BOTH
r-earnings-reversal-short-jp-growth-2348
side: "BOTH"
cost_bps: 15
n_positions: 10
-0.69-0.18-1.08-3.60
holding_period=5, reaction_threshold=0.07, n_positions=5, cost_bps=15, side=SHORT_ONLY
r-earnings-reversal-short-jp-growth-2478
side: "SHORT_ONLY"
cost_bps: 15
n_positions: 5
+0.67+0.57+1.88-1.63
holding_period=5, reaction_threshold=0.1, n_positions=3, cost_bps=10, side=LONG_ONLY
r-earnings-reversal-short-jp-growth-2608
side: "LONG_ONLY"
cost_bps: 10
n_positions: 3
-2.57-1.27-3.68-4.23
holding_period=5, reaction_threshold=0.15, n_positions=1, cost_bps=5, side=BOTH
r-earnings-reversal-short-jp-growth-2738
side: "BOTH"
cost_bps: 5
n_positions: 1
+0.58+0.77+0.15+0.88

Target universe

Tokyo Stock Exchange Growth Market, ~495 stocks, tv >= 30M JPY

Related strategies

source: qbuntu-analysis · kabu STATION REST API + J-Quants daily bars
computed asof: 2026-07-27T03:36:43

Related strategies