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

決算後ドリフト(PEAD)(東証グロース)のバックテスト

Post-Earnings Announcement Drift (JP Growth Stocks)

slug: pead-jp-growth

東証グロース(約495銘柄)で決算後ドリフト(PEAD)をバックテストした。2,400通りの中央値 Sharpe は -0.09。p-value は 0.62。Max DD は -41.1%。期間は 2023-12-08〜2026-06-09。最良 Sharpe +1.07 は代表値ではない。

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

何を検証したか

決算後ドリフト(PEAD)は、決算発表のあとも株価が同じ方向へずれ続ける、という主張をグリッドで検証したものです。発表日のリターンそのものではなく、その後の保有期間で残るかを見ています。中央値の Sharpe が高くても、中央値の p-value が 0.05 を下回らなければ promising にはしません。最良の組み合わせは、期間や保有日数を後から選んだ結果です。

成績の中央値

Sharpe(中央値)
-0.09
Max DD
-41.1%
勝率
—
Alpha(年率)
—
p-value
0.62
期間: 2023-12-08 → 2026-06-09
2400通りの Sharpe:中央値 -0.09最良 1.07 (代表値ではない)最悪 -1.46p25–p75 -0.44–0.18

仮説

原文は英語。

Ball & Brown (1968): stocks with positive earnings surprises drift upward over subsequent weeks/months, negative surprises drift downward. Tests PEAD with varying holding periods (5-60 days) in TSE Growth Market. Note: lookback_days is defined in grid but unused in evaluation (surprise is always 1-day abnormal return); grid inflates 3x as a result.

採用しなかった理由

Across 2400 grid combinations, median Sharpe=-0.09, best=1.07. Primary failure mode: regime_dependent.

検証ファクト (5)

Best grid Sharpe ratio is 1.07 (p=0.092).
period 2023-12-08–2026-06-09; cost=5bps; side=BOTH
sharpe_ratio1.07
Median Sharpe across 2400 grid runs is -0.09.
Full grid of 2400 parameter combinations.
sharpe_ratio-0.09
Median Sharpe in DOWN regime is 1.14 across 2400 runs.
Regime=DOWN, N225 SMA20/SMA60 classification.
sharpe_ratio1.14
Median Sharpe in FLAT regime is -0.83 across 2400 runs.
Regime=FLAT, N225 SMA20/SMA60 classification.
sharpe_ratio-0.83
Median Sharpe in UP regime is -0.28 across 2400 runs.
Regime=UP, N225 SMA20/SMA60 classification.
sharpe_ratio-0.28

検証ラン (30)

runparamssharpeUPFLATDOWN
holding_period=5, surprise_threshold=0.01, n_positions=3, cost_bps=5, side=BOTH
r-pead-jp-growth-0000
side: "BOTH"
cost_bps: 5
n_positions: 3
+0.06-0.29+0.55+0.93
holding_period=5, surprise_threshold=0.01, n_positions=3, cost_bps=5, side=LONG_ONLY
r-pead-jp-growth-0001
side: "LONG_ONLY"
cost_bps: 5
n_positions: 3
-1.03-1.10-2.19+1.54
holding_period=5, surprise_threshold=0.01, n_positions=3, cost_bps=10, side=BOTH
r-pead-jp-growth-0002
side: "BOTH"
cost_bps: 10
n_positions: 3
-0.06-0.39+0.41+0.75
holding_period=5, surprise_threshold=0.01, n_positions=3, cost_bps=20, side=BOTH
r-pead-jp-growth-0006
side: "BOTH"
cost_bps: 20
n_positions: 3
-0.29-0.59+0.12+0.39
holding_period=5, surprise_threshold=0.01, n_positions=20, cost_bps=5, side=BOTH
r-pead-jp-growth-0024
side: "BOTH"
cost_bps: 5
n_positions: 20
+0.19+0.08+0.17+1.26
holding_period=5, surprise_threshold=0.02, n_positions=10, cost_bps=5, side=BOTH
r-pead-jp-growth-0112
side: "BOTH"
cost_bps: 5
n_positions: 10
+0.25+0.11+0.06+2.40
holding_period=5, surprise_threshold=0.03, n_positions=20, cost_bps=15, side=BOTH
r-pead-jp-growth-0220
side: "BOTH"
cost_bps: 15
n_positions: 20
+0.02-0.20+0.03+1.90
holding_period=5, surprise_threshold=0.05, n_positions=20, cost_bps=20, side=LONG_ONLY
r-pead-jp-growth-0319
side: "LONG_ONLY"
cost_bps: 20
n_positions: 20
-1.46-1.54-2.48+1.12
holding_period=5, surprise_threshold=0.05, n_positions=5, cost_bps=5, side=LONG_ONLY
r-pead-jp-growth-0329
side: "LONG_ONLY"
cost_bps: 5
n_positions: 5
-1.07-1.31-1.72+1.53
holding_period=5, surprise_threshold=0.07, n_positions=3, cost_bps=5, side=BOTH
r-pead-jp-growth-0384
side: "BOTH"
cost_bps: 5
n_positions: 3
+0.17-0.12+0.41+2.04
holding_period=5, surprise_threshold=0.07, n_positions=10, cost_bps=20, side=BOTH
r-pead-jp-growth-0438
side: "BOTH"
cost_bps: 20
n_positions: 10
-0.07-0.18-0.41+2.13
holding_period=10, surprise_threshold=0.01, n_positions=3, cost_bps=10, side=BOTH
r-pead-jp-growth-0546
side: "BOTH"
cost_bps: 10
n_positions: 3
-0.49-0.57-0.64+0.32
holding_period=10, surprise_threshold=0.02, n_positions=5, cost_bps=20, side=BOTH
r-pead-jp-growth-0654
side: "BOTH"
cost_bps: 20
n_positions: 5
-0.68-0.94-0.64+0.72
holding_period=10, surprise_threshold=0.03, n_positions=20, cost_bps=10, side=BOTH
r-pead-jp-growth-0762
side: "BOTH"
cost_bps: 10
n_positions: 20
-0.23-0.50-0.19+1.40
holding_period=10, surprise_threshold=0.07, n_positions=3, cost_bps=20, side=BOTH
r-pead-jp-growth-0870
side: "BOTH"
cost_bps: 20
n_positions: 3
-0.32-0.58+0.04+0.45
holding_period=20, surprise_threshold=0.01, n_positions=10, cost_bps=10, side=BOTH
r-pead-jp-growth-0978
side: "BOTH"
cost_bps: 10
n_positions: 10
+0.18-0.29+0.47+2.15
holding_period=20, surprise_threshold=0.02, n_positions=20, cost_bps=20, side=BOTH
r-pead-jp-growth-1086
side: "BOTH"
cost_bps: 20
n_positions: 20
+0.27-0.13+0.55+2.74
holding_period=20, surprise_threshold=0.03, n_positions=5, cost_bps=10, side=BOTH
r-pead-jp-growth-1194
side: "BOTH"
cost_bps: 10
n_positions: 5
+0.21-0.18+0.04+2.67
holding_period=20, surprise_threshold=0.05, n_positions=20, cost_bps=5, side=BOTH
r-pead-jp-growth-1272
side: "BOTH"
cost_bps: 5
n_positions: 20
+1.07+0.40+1.65+3.70
holding_period=20, surprise_threshold=0.05, n_positions=10, cost_bps=20, side=LONG_ONLY
r-pead-jp-growth-1303
side: "LONG_ONLY"
cost_bps: 20
n_positions: 10
-0.24+0.08-1.25+0.84
holding_period=20, surprise_threshold=0.07, n_positions=3, cost_bps=10, side=LONG_ONLY
r-pead-jp-growth-1411
side: "LONG_ONLY"
cost_bps: 10
n_positions: 3
-0.41-0.14-1.48+1.15
holding_period=40, surprise_threshold=0.01, n_positions=5, cost_bps=20, side=LONG_ONLY
r-pead-jp-growth-1519
side: "LONG_ONLY"
cost_bps: 20
n_positions: 5
+0.13+0.04-0.89+1.08
holding_period=40, surprise_threshold=0.02, n_positions=20, cost_bps=10, side=LONG_ONLY
r-pead-jp-growth-1627
side: "LONG_ONLY"
cost_bps: 10
n_positions: 20
-0.01+0.70-1.34+0.62
holding_period=40, surprise_threshold=0.05, n_positions=3, cost_bps=20, side=LONG_ONLY
r-pead-jp-growth-1735
side: "LONG_ONLY"
cost_bps: 20
n_positions: 3
+0.13+0.38-1.20+1.00
holding_period=40, surprise_threshold=0.07, n_positions=10, cost_bps=10, side=LONG_ONLY
r-pead-jp-growth-1843
side: "LONG_ONLY"
cost_bps: 10
n_positions: 10
-0.01+0.39-1.28+0.79
holding_period=60, surprise_threshold=0.01, n_positions=3, cost_bps=5, side=BOTH
r-pead-jp-growth-1920
side: "BOTH"
cost_bps: 5
n_positions: 3
+0.13+0.16-0.47+2.00
holding_period=60, surprise_threshold=0.01, n_positions=3, cost_bps=5, side=BOTH
r-pead-jp-growth-1952
side: "BOTH"
cost_bps: 5
n_positions: 3
+0.13+0.16-0.47+2.00
holding_period=60, surprise_threshold=0.02, n_positions=5, cost_bps=15, side=BOTH
r-pead-jp-growth-2060
side: "BOTH"
cost_bps: 15
n_positions: 5
+0.37-0.30+0.15+2.21
holding_period=60, surprise_threshold=0.03, n_positions=20, cost_bps=5, side=BOTH
r-pead-jp-growth-2168
side: "BOTH"
cost_bps: 5
n_positions: 20
-0.14-0.86+1.14+0.90
holding_period=60, surprise_threshold=0.05, n_positions=3, cost_bps=15, side=BOTH
r-pead-jp-growth-2276
side: "BOTH"
cost_bps: 15
n_positions: 3
+0.26+0.21-0.07+1.90

対象ユニバース

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

関連する戦略