qbuntuqbuntu

決算リバーサル(東証全銘柄)のバックテスト

Earnings Reversal (JP All Stocks)

slug: earnings-reversal-short-jp-all

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

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

成績の中央値

Sharpe(中央値)
-0.79
Max DD
-83.4%
勝率
—
Alpha(年率)
—
p-value
0.18
期間: 2023-12-12 → 2026-05-29
2880通りの Sharpe:中央値 -0.79最良 1.65 (代表値ではない)最悪 -5.87p25–p75 -2.72–0.62

仮説

原文は英語。

Post-earnings price reactions tend to overshoot. Testing on the full Japanese stock universe.

採用しなかった理由

Across 2880 grid combinations, median Sharpe=-0.79, best=1.65. Primary failure mode: no_edge.

検証ファクト (5)

Best grid Sharpe ratio is 1.65 (p=0.032).
period 2023-12-12–2026-05-29; cost=5bps; side=SHORT_ONLY
sharpe_ratio1.65
Median Sharpe across 2880 grid runs is -0.79.
Full grid of 2880 parameter combinations.
sharpe_ratio-0.79
Median Sharpe in DOWN regime is -2.86 across 2880 runs.
Regime=DOWN, N225 SMA20/SMA60 classification.
sharpe_ratio-2.86
Median Sharpe in FLAT regime is -1.11 across 2880 runs.
Regime=FLAT, N225 SMA20/SMA60 classification.
sharpe_ratio-1.11
Median Sharpe in UP regime is 0.02 across 2880 runs.
Regime=UP, N225 SMA20/SMA60 classification.
sharpe_ratio0.02

検証ラン (30)

runparamssharpeUPFLATDOWN
holding_period=1, reaction_threshold=0.03, n_positions=1, cost_bps=5, side=SHORT_ONLY
r-earnings-reversal-short-jp-all-0000
side: "SHORT_ONLY"
cost_bps: 5
n_positions: 1
+1.22+1.68+0.92+0.29
holding_period=1, reaction_threshold=0.03, n_positions=1, cost_bps=5, side=LONG_ONLY
r-earnings-reversal-short-jp-all-0001
side: "LONG_ONLY"
cost_bps: 5
n_positions: 1
-2.54-0.48-4.70-4.06
holding_period=1, reaction_threshold=0.03, n_positions=1, cost_bps=5, side=BOTH
r-earnings-reversal-short-jp-all-0002
side: "BOTH"
cost_bps: 5
n_positions: 1
+0.67+1.63+0.01-2.15
holding_period=1, reaction_threshold=0.03, n_positions=1, cost_bps=20, side=SHORT_ONLY
r-earnings-reversal-short-jp-all-0009
side: "SHORT_ONLY"
cost_bps: 20
n_positions: 1
+0.86+1.32+0.60-0.13
holding_period=1, reaction_threshold=0.03, n_positions=10, cost_bps=5, side=SHORT_ONLY
r-earnings-reversal-short-jp-all-0036
side: "SHORT_ONLY"
cost_bps: 5
n_positions: 10
+1.10+1.44+0.89+0.45
holding_period=1, reaction_threshold=0.03, n_positions=10, cost_bps=5, side=BOTH
r-earnings-reversal-short-jp-all-0134
side: "BOTH"
cost_bps: 5
n_positions: 10
-0.74+0.52-2.07-3.76
holding_period=1, reaction_threshold=0.05, n_positions=5, cost_bps=5, side=SHORT_ONLY
r-earnings-reversal-short-jp-all-0264
side: "SHORT_ONLY"
cost_bps: 5
n_positions: 5
+1.03+1.42+0.75+0.38
holding_period=1, reaction_threshold=0.07, n_positions=1, cost_bps=20, side=LONG_ONLY
r-earnings-reversal-short-jp-all-0394
side: "LONG_ONLY"
cost_bps: 20
n_positions: 1
-3.93-1.31-6.85-6.50
holding_period=1, reaction_threshold=0.1, n_positions=10, cost_bps=15, side=BOTH
r-earnings-reversal-short-jp-all-0524
side: "BOTH"
cost_bps: 15
n_positions: 10
-1.33+0.33-2.48-5.14
holding_period=1, reaction_threshold=0.15, n_positions=1, cost_bps=5, side=SHORT_ONLY
r-earnings-reversal-short-jp-all-0576
side: "SHORT_ONLY"
cost_bps: 5
n_positions: 1
+1.42+2.10+0.28+2.60
holding_period=1, reaction_threshold=0.15, n_positions=5, cost_bps=15, side=LONG_ONLY
r-earnings-reversal-short-jp-all-0655
side: "LONG_ONLY"
cost_bps: 15
n_positions: 5
-5.53-2.67-8.60-7.41
holding_period=2, reaction_threshold=0.03, n_positions=3, cost_bps=10, side=BOTH
r-earnings-reversal-short-jp-all-0785
side: "BOTH"
cost_bps: 10
n_positions: 3
-0.86-0.43-0.93-3.16
holding_period=2, reaction_threshold=0.05, n_positions=1, cost_bps=10, side=SHORT_ONLY
r-earnings-reversal-short-jp-all-0915
side: "SHORT_ONLY"
cost_bps: 10
n_positions: 1
+1.01+1.21+1.49-1.40
holding_period=2, reaction_threshold=0.07, n_positions=10, cost_bps=5, side=LONG_ONLY
r-earnings-reversal-short-jp-all-1045
side: "LONG_ONLY"
cost_bps: 5
n_positions: 10
-4.69-3.70-5.64-5.12
holding_period=2, reaction_threshold=0.1, n_positions=3, cost_bps=20, side=BOTH
r-earnings-reversal-short-jp-all-1175
side: "BOTH"
cost_bps: 20
n_positions: 3
-1.17-0.47-1.30-4.80
holding_period=2, reaction_threshold=0.15, n_positions=1, cost_bps=20, side=SHORT_ONLY
r-earnings-reversal-short-jp-all-1305
side: "SHORT_ONLY"
cost_bps: 20
n_positions: 1
+1.08+0.68+1.54+1.52
holding_period=2, reaction_threshold=0.15, n_positions=10, cost_bps=20, side=LONG_ONLY
r-earnings-reversal-short-jp-all-1342
side: "LONG_ONLY"
cost_bps: 20
n_positions: 10
-5.87-4.23-7.24-7.31
holding_period=2, reaction_threshold=0.15, n_positions=10, cost_bps=15, side=BOTH
r-earnings-reversal-short-jp-all-1436
side: "BOTH"
cost_bps: 15
n_positions: 10
-0.91-0.04-1.64-2.89
holding_period=3, reaction_threshold=0.03, n_positions=5, cost_bps=15, side=SHORT_ONLY
r-earnings-reversal-short-jp-all-1566
side: "SHORT_ONLY"
cost_bps: 15
n_positions: 5
+0.26+0.47+0.30-0.93
holding_period=3, reaction_threshold=0.05, n_positions=3, cost_bps=10, side=LONG_ONLY
r-earnings-reversal-short-jp-all-1696
side: "LONG_ONLY"
cost_bps: 10
n_positions: 3
-3.43-2.35-4.20-4.41
holding_period=3, reaction_threshold=0.07, n_positions=1, cost_bps=5, side=BOTH
r-earnings-reversal-short-jp-all-1826
side: "BOTH"
cost_bps: 5
n_positions: 1
+0.35+0.33+0.98-1.62
holding_period=3, reaction_threshold=0.1, n_positions=10, cost_bps=5, side=SHORT_ONLY
r-earnings-reversal-short-jp-all-1956
side: "SHORT_ONLY"
cost_bps: 5
n_positions: 10
+0.98+1.18+0.93+0.36
holding_period=3, reaction_threshold=0.15, n_positions=3, cost_bps=20, side=LONG_ONLY
r-earnings-reversal-short-jp-all-2086
side: "LONG_ONLY"
cost_bps: 20
n_positions: 3
-3.73-2.01-4.43-7.43
holding_period=5, reaction_threshold=0.03, n_positions=1, cost_bps=5, side=SHORT_ONLY
r-earnings-reversal-short-jp-all-2160
side: "SHORT_ONLY"
cost_bps: 5
n_positions: 1
+1.10+1.03+1.73-0.20
holding_period=5, reaction_threshold=0.03, n_positions=1, cost_bps=20, side=SHORT_ONLY
r-earnings-reversal-short-jp-all-2217
side: "SHORT_ONLY"
cost_bps: 20
n_positions: 1
+0.90+0.84+1.51-0.39
holding_period=5, reaction_threshold=0.05, n_positions=10, cost_bps=15, side=LONG_ONLY
r-earnings-reversal-short-jp-all-2347
side: "LONG_ONLY"
cost_bps: 15
n_positions: 10
-2.69-1.38-3.68-4.02
holding_period=5, reaction_threshold=0.07, n_positions=5, cost_bps=10, side=BOTH
r-earnings-reversal-short-jp-all-2477
side: "BOTH"
cost_bps: 10
n_positions: 5
-0.81-0.61-1.01-2.43
holding_period=5, reaction_threshold=0.1, n_positions=3, cost_bps=10, side=SHORT_ONLY
r-earnings-reversal-short-jp-all-2607
side: "SHORT_ONLY"
cost_bps: 10
n_positions: 3
+1.10+0.93+2.35-1.00
holding_period=5, reaction_threshold=0.15, n_positions=1, cost_bps=5, side=LONG_ONLY
r-earnings-reversal-short-jp-all-2737
side: "LONG_ONLY"
cost_bps: 5
n_positions: 1
-2.31-0.61-3.61-5.14
holding_period=5, reaction_threshold=0.15, n_positions=10, cost_bps=5, side=SHORT_ONLY
r-earnings-reversal-short-jp-all-2772
side: "SHORT_ONLY"
cost_bps: 5
n_positions: 10
+1.65+1.23+2.99+0.41

対象ユニバース

Tokyo Stock Exchange all listed (Prime/Standard/Growth), ~3747 stocks

関連する戦略

source: qbuntu-analysis · kabu STATION REST API + J-Quants daily bars
computed asof: 2026-09-26T05:50:51

関連する戦略