Post-Earnings Announcement Drift (JP All Stocks)
slug: pead-jp-all
performance summary
Sharpe (median)
+0.96
Max DD
-39.0%
Win rate
—
Alpha (ann.)
—
p-value
0.24
backtest period: 2023-12-13 → 2026-05-25
Sharpe across 2304 grid runs:median 0.96best 2.24 (not representative)worst -0.27p25–p75 0.58–1.42
Hypothesis
Ball & Brown (1968): stocks with positive earnings surprises drift upward. Testing PEAD on the full Japanese stock universe.
Why it didn't work
Across 2304 grid combinations, median Sharpe=0.96, best=2.24. Primary failure mode: no_edge.
Facts (5)
Best grid Sharpe ratio is 2.24 (p=0.065).
period 2023-12-13–2026-05-25; cost=5bps; side=BOTH
cite ↗ /cite/pead-jp-all-fact-best-sharpevia r-pead-jp-all-0384
Median Sharpe across 2304 grid runs is 0.96.
Full grid of 2304 parameter combinations.
Median Sharpe in DOWN regime is -0.07 across 2304 runs.
Regime=DOWN, N225 SMA20/SMA60 classification.
Median Sharpe in FLAT regime is 1.54 across 2304 runs.
Regime=FLAT, N225 SMA20/SMA60 classification.
Median Sharpe in UP regime is 0.55 across 2304 runs.
Regime=UP, N225 SMA20/SMA60 classification.
Runs (30)
| run | params | sharpe | UP | FLAT | DOWN |
|---|---|---|---|---|---|
holding_period=5, surprise_threshold=0.01, n_positions=3, cost_bps=5, side=BOTH r-pead-jp-all-0000 | side: "BOTH" cost_bps: 5 n_positions: 3 | +1.73 | +1.38 | +2.67 | -1.16 |
holding_period=5, surprise_threshold=0.01, n_positions=3, cost_bps=5, side=LONG_ONLY r-pead-jp-all-0001 | side: "LONG_ONLY" cost_bps: 5 n_positions: 3 | +1.74 | -0.53 | +3.66 | -1.10 |
holding_period=5, surprise_threshold=0.01, n_positions=3, cost_bps=10, side=BOTH r-pead-jp-all-0002 | side: "BOTH" cost_bps: 10 n_positions: 3 | +1.64 | +1.27 | +2.60 | -1.24 |
holding_period=5, surprise_threshold=0.01, n_positions=3, cost_bps=20, side=BOTH r-pead-jp-all-0006 | side: "BOTH" cost_bps: 20 n_positions: 3 | +1.48 | +1.04 | +2.46 | -1.40 |
holding_period=5, surprise_threshold=0.01, n_positions=20, cost_bps=5, side=BOTH r-pead-jp-all-0024 | side: "BOTH" cost_bps: 5 n_positions: 20 | +1.59 | +1.00 | +2.67 | -1.16 |
holding_period=5, surprise_threshold=0.02, n_positions=5, cost_bps=20, side=BOTH r-pead-jp-all-0110 | side: "BOTH" cost_bps: 20 n_positions: 5 | +1.33 | +0.53 | +2.81 | -1.89 |
holding_period=5, surprise_threshold=0.05, n_positions=5, cost_bps=10, side=BOTH r-pead-jp-all-0298 | side: "BOTH" cost_bps: 10 n_positions: 5 | +1.54 | +1.81 | +2.65 | -3.24 |
holding_period=5, surprise_threshold=0.07, n_positions=3, cost_bps=5, side=BOTH r-pead-jp-all-0384 | side: "BOTH" cost_bps: 5 n_positions: 3 | +2.24 | +2.57 | +3.55 | -6.05 |
holding_period=5, surprise_threshold=0.07, n_positions=5, cost_bps=20, side=BOTH r-pead-jp-all-0398 | side: "BOTH" cost_bps: 20 n_positions: 5 | +1.98 | +2.22 | +3.36 | -6.29 |
holding_period=10, surprise_threshold=0.01, n_positions=10, cost_bps=5, side=LONG_ONLY r-pead-jp-all-0497 | side: "LONG_ONLY" cost_bps: 5 n_positions: 10 | +1.54 | +1.30 | +2.88 | -1.87 |
holding_period=10, surprise_threshold=0.02, n_positions=10, cost_bps=15, side=BOTH r-pead-jp-all-0596 | side: "BOTH" cost_bps: 15 n_positions: 10 | +1.34 | +1.57 | +1.72 | -0.40 |
holding_period=10, surprise_threshold=0.03, n_positions=10, cost_bps=20, side=LONG_ONLY r-pead-jp-all-0695 | side: "LONG_ONLY" cost_bps: 20 n_positions: 10 | +1.64 | +1.55 | +3.10 | -2.48 |
holding_period=10, surprise_threshold=0.05, n_positions=20, cost_bps=10, side=BOTH r-pead-jp-all-0794 | side: "BOTH" cost_bps: 10 n_positions: 20 | +1.10 | +2.34 | +1.10 | -2.36 |
holding_period=10, surprise_threshold=0.07, n_positions=20, cost_bps=15, side=LONG_ONLY r-pead-jp-all-0893 | side: "LONG_ONLY" cost_bps: 15 n_positions: 20 | +1.35 | +1.93 | +2.59 | -3.36 |
holding_period=20, surprise_threshold=0.01, n_positions=3, cost_bps=5, side=BOTH r-pead-jp-all-0992 | side: "BOTH" cost_bps: 5 n_positions: 3 | +0.92 | +0.77 | +1.21 | +0.56 |
holding_period=20, surprise_threshold=0.02, n_positions=3, cost_bps=10, side=LONG_ONLY r-pead-jp-all-1091 | side: "LONG_ONLY" cost_bps: 10 n_positions: 3 | +1.28 | +0.21 | +2.25 | +0.92 |
holding_period=20, surprise_threshold=0.03, n_positions=3, cost_bps=20, side=BOTH r-pead-jp-all-1190 | side: "BOTH" cost_bps: 20 n_positions: 3 | +0.85 | +0.60 | +1.32 | +0.15 |
holding_period=20, surprise_threshold=0.05, n_positions=5, cost_bps=5, side=LONG_ONLY r-pead-jp-all-1289 | side: "LONG_ONLY" cost_bps: 5 n_positions: 5 | +0.83 | +0.24 | +1.93 | -0.12 |
holding_period=20, surprise_threshold=0.07, n_positions=5, cost_bps=15, side=BOTH r-pead-jp-all-1388 | side: "BOTH" cost_bps: 15 n_positions: 5 | +0.63 | +1.10 | +1.06 | -1.53 |
holding_period=40, surprise_threshold=0.01, n_positions=5, cost_bps=20, side=LONG_ONLY r-pead-jp-all-1487 | side: "LONG_ONLY" cost_bps: 20 n_positions: 5 | +1.04 | +0.53 | +1.71 | +0.72 |
holding_period=40, surprise_threshold=0.02, n_positions=10, cost_bps=10, side=BOTH r-pead-jp-all-1586 | side: "BOTH" cost_bps: 10 n_positions: 10 | +0.25 | -0.27 | +0.28 | +1.97 |
holding_period=40, surprise_threshold=0.03, n_positions=10, cost_bps=15, side=LONG_ONLY r-pead-jp-all-1685 | side: "LONG_ONLY" cost_bps: 15 n_positions: 10 | +1.08 | +0.70 | +1.62 | +0.54 |
holding_period=40, surprise_threshold=0.05, n_positions=5, cost_bps=20, side=BOTH r-pead-jp-all-1742 | side: "BOTH" cost_bps: 20 n_positions: 5 | -0.27 | -0.50 | -0.27 | +0.37 |
holding_period=40, surprise_threshold=0.05, n_positions=20, cost_bps=5, side=LONG_ONLY r-pead-jp-all-1785 | side: "LONG_ONLY" cost_bps: 5 n_positions: 20 | +0.71 | +0.79 | +0.96 | -0.12 |
holding_period=40, surprise_threshold=0.07, n_positions=20, cost_bps=15, side=BOTH r-pead-jp-all-1884 | side: "BOTH" cost_bps: 15 n_positions: 20 | -0.18 | -0.08 | -0.10 | -0.67 |
holding_period=60, surprise_threshold=0.01, n_positions=3, cost_bps=5, side=BOTH r-pead-jp-all-1920 | side: "BOTH" cost_bps: 5 n_positions: 3 | +0.33 | +0.08 | -0.00 | +2.12 |
holding_period=60, surprise_threshold=0.01, n_positions=3, cost_bps=5, side=BOTH r-pead-jp-all-1984 | side: "BOTH" cost_bps: 5 n_positions: 3 | +0.33 | +0.08 | -0.00 | +2.12 |
holding_period=60, surprise_threshold=0.02, n_positions=3, cost_bps=10, side=LONG_ONLY r-pead-jp-all-2083 | side: "LONG_ONLY" cost_bps: 10 n_positions: 3 | +0.74 | +0.28 | +1.16 | +1.32 |
holding_period=60, surprise_threshold=0.03, n_positions=3, cost_bps=20, side=BOTH r-pead-jp-all-2182 | side: "BOTH" cost_bps: 20 n_positions: 3 | +0.47 | +0.30 | +0.19 | +1.97 |
holding_period=60, surprise_threshold=0.05, n_positions=5, cost_bps=5, side=LONG_ONLY r-pead-jp-all-2281 | side: "LONG_ONLY" cost_bps: 5 n_positions: 5 | +0.83 | +0.83 | +1.00 | +0.40 |
Target universe
Tokyo Stock Exchange all listed (Prime/Standard/Growth), ~3747 stocks
Related strategies
source: qbuntu-analysis · kabu STATION REST API + J-Quants daily bars
computed asof: 2026-07-27T03:36:14