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

決算リバーサル(東証グロース)のバックテスト

Earnings Reversal (JP Growth Stocks)

slug: earnings-reversal-short-jp-growth

東証グロース(約495銘柄)で決算リバーサルをバックテストした。2,880通りの中央値 Sharpe は -0.18。p-value は 0.23。Max DD は -83.0%。期間は 2023-12-12〜2026-05-29。最良 Sharpe +1.54 は代表値ではない。

判定は rejected。中央値は promising(Sharpe > 0.5 かつ p-value < 0.05)にも marginal(Sharpe > 0.05 かつ最良 p-value < 0.10)にも届いていない。上昇・横ばい・下落で結果が割れ、中央値としては安定しない。

成績の中央値

Sharpe(中央値)
-0.18
Max DD
-83.0%
勝率
—
Alpha(年率)
—
p-value
0.23
期間: 2023-12-12 → 2026-05-29
2880通りの Sharpe:中央値 -0.18最良 1.54 (代表値ではない)最悪 -5.46p25–p75 -2.62–0.71

仮説

原文は英語。

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.

採用しなかった理由

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

検証ファクト (5)

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

検証ラン (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

対象ユニバース

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

関連する戦略

source: qbuntu-analysis · kabu STATION REST API + J-Quants daily bars
computed asof: 2026-09-24T21:54:26

関連する戦略