# Post-Earnings Announcement Drift (JP All Stocks)

- **Slug**: `pead-jp-all`
- **Verdict**: marginal (no_edge)
- **Asset class**: equity
- **Categories**: earnings, event-driven, momentum
- **Source**: qbuntu-analysis (computed asof 2026-07-27T03:36:14)
- **Reproducibility**: analysis-engine@bfafe7d, backtest-lib@711b855, grid tier=shallow (python 3.10.11, numpy 2.2.6, pandas 2.3.3)
- **HTML**: https://qbuntu.ai/strategies/pead-jp-all
- **JSON**: https://qbuntu.ai/v1/strategies/pead-jp-all
- **License**: CC-BY-4.0

## 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.

## Performance summary

Headline figures are the **median across the parameter grid**, not the best run.

| Metric | Value |
|---|---|
| Sharpe (median) | 0.9632 |
| Max drawdown | -39% |
| p-value | 0.24 |
| Backtest period | 2023-12-13 to 2026-05-25 |

Sharpe distribution across 2304 grid runs: median 0.96, best 2.24 (best-case — not representative), worst -0.27, p25 0.58, p75 1.42.

## Methodology

- Notes: {"data_start": "2023-12-06 (earnings data availability)", "walk_forward_definition": {"type": "single_pass", "description": "Full period backtest without walk-forward split", "verdict_basis": "full_period"}}
- Slippage model: open-on-open + variable bps fixed
- Position sizing: equal_weight
- Regime definition: N225 SMA20/SMA60 three-class
- Transaction cost bps: 5

## Target universe

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

## Runs (30)

| run_id | params | sharpe | UP | FLAT | DOWN |
|---|---|---:|---:|---:|---:|
| `r-pead-jp-all-0000` | side="BOTH", cost_bps=5, n_positions=3, holding_period=5 | 1.73 | 1.38 | 2.67 | -1.16 |
| `r-pead-jp-all-0001` | side="LONG_ONLY", cost_bps=5, n_positions=3, holding_period=5 | 1.74 | -0.53 | 3.66 | -1.1 |
| `r-pead-jp-all-0002` | side="BOTH", cost_bps=10, n_positions=3, holding_period=5 | 1.64 | 1.27 | 2.6 | -1.24 |
| `r-pead-jp-all-0006` | side="BOTH", cost_bps=20, n_positions=3, holding_period=5 | 1.48 | 1.04 | 2.46 | -1.4 |
| `r-pead-jp-all-0024` | side="BOTH", cost_bps=5, n_positions=20, holding_period=5 | 1.59 | 1 | 2.67 | -1.16 |
| `r-pead-jp-all-0110` | side="BOTH", cost_bps=20, n_positions=5, holding_period=5 | 1.33 | 0.53 | 2.81 | -1.89 |
| `r-pead-jp-all-0298` | side="BOTH", cost_bps=10, n_positions=5, holding_period=5 | 1.54 | 1.81 | 2.65 | -3.24 |
| `r-pead-jp-all-0384` | side="BOTH", cost_bps=5, n_positions=3, holding_period=5 | 2.24 | 2.57 | 3.55 | -6.05 |
| `r-pead-jp-all-0398` | side="BOTH", cost_bps=20, n_positions=5, holding_period=5 | 1.98 | 2.22 | 3.36 | -6.29 |
| `r-pead-jp-all-0497` | side="LONG_ONLY", cost_bps=5, n_positions=10, holding_period=10 | 1.54 | 1.3 | 2.88 | -1.87 |
| `r-pead-jp-all-0596` | side="BOTH", cost_bps=15, n_positions=10, holding_period=10 | 1.34 | 1.57 | 1.72 | -0.4 |
| `r-pead-jp-all-0695` | side="LONG_ONLY", cost_bps=20, n_positions=10, holding_period=10 | 1.64 | 1.55 | 3.1 | -2.48 |
| `r-pead-jp-all-0794` | side="BOTH", cost_bps=10, n_positions=20, holding_period=10 | 1.1 | 2.34 | 1.1 | -2.36 |
| `r-pead-jp-all-0893` | side="LONG_ONLY", cost_bps=15, n_positions=20, holding_period=10 | 1.35 | 1.93 | 2.59 | -3.36 |
| `r-pead-jp-all-0992` | side="BOTH", cost_bps=5, n_positions=3, holding_period=20 | 0.92 | 0.77 | 1.21 | 0.56 |
| `r-pead-jp-all-1091` | side="LONG_ONLY", cost_bps=10, n_positions=3, holding_period=20 | 1.28 | 0.21 | 2.25 | 0.92 |
| `r-pead-jp-all-1190` | side="BOTH", cost_bps=20, n_positions=3, holding_period=20 | 0.85 | 0.6 | 1.32 | 0.15 |
| `r-pead-jp-all-1289` | side="LONG_ONLY", cost_bps=5, n_positions=5, holding_period=20 | 0.83 | 0.24 | 1.93 | -0.12 |
| `r-pead-jp-all-1388` | side="BOTH", cost_bps=15, n_positions=5, holding_period=20 | 0.63 | 1.1 | 1.06 | -1.53 |
| `r-pead-jp-all-1487` | side="LONG_ONLY", cost_bps=20, n_positions=5, holding_period=40 | 1.04 | 0.53 | 1.71 | 0.72 |
| `r-pead-jp-all-1586` | side="BOTH", cost_bps=10, n_positions=10, holding_period=40 | 0.25 | -0.27 | 0.28 | 1.97 |
| `r-pead-jp-all-1685` | side="LONG_ONLY", cost_bps=15, n_positions=10, holding_period=40 | 1.08 | 0.7 | 1.62 | 0.54 |
| `r-pead-jp-all-1742` | side="BOTH", cost_bps=20, n_positions=5, holding_period=40 | -0.27 | -0.5 | -0.27 | 0.37 |
| `r-pead-jp-all-1785` | side="LONG_ONLY", cost_bps=5, n_positions=20, holding_period=40 | 0.71 | 0.79 | 0.96 | -0.12 |
| `r-pead-jp-all-1884` | side="BOTH", cost_bps=15, n_positions=20, holding_period=40 | -0.18 | -0.08 | -0.1 | -0.67 |
| `r-pead-jp-all-1920` | side="BOTH", cost_bps=5, n_positions=3, holding_period=60 | 0.33 | 0.08 | -0 | 2.12 |
| `r-pead-jp-all-1984` | side="BOTH", cost_bps=5, n_positions=3, holding_period=60 | 0.33 | 0.08 | -0 | 2.12 |
| `r-pead-jp-all-2083` | side="LONG_ONLY", cost_bps=10, n_positions=3, holding_period=60 | 0.74 | 0.28 | 1.16 | 1.32 |
| `r-pead-jp-all-2182` | side="BOTH", cost_bps=20, n_positions=3, holding_period=60 | 0.47 | 0.3 | 0.19 | 1.97 |
| `r-pead-jp-all-2281` | side="LONG_ONLY", cost_bps=5, n_positions=5, holding_period=60 | 0.83 | 0.83 | 1 | 0.4 |

## Facts (5)

Each fact has a permanent citation URL. AI agents quoting qbuntu should use these.

- **Best grid Sharpe ratio is 2.24 (p=0.065).**
  - Value: 2.24 sharpe_ratio
  - Context: period 2023-12-13–2026-05-25; cost=5bps; side=BOTH
  - Supports verdict: `marginal`
  - Cite: https://qbuntu.ai/cite/pead-jp-all-fact-best-sharpe

- **Median Sharpe across 2304 grid runs is 0.96.**
  - Value: 0.96 sharpe_ratio
  - Context: Full grid of 2304 parameter combinations.
  - Supports verdict: `marginal`
  - Cite: https://qbuntu.ai/cite/pead-jp-all-fact-median-sharpe

- **Median Sharpe in DOWN regime is -0.07 across 2304 runs.**
  - Value: -0.07 sharpe_ratio
  - Context: Regime=DOWN, N225 SMA20/SMA60 classification.
  - Supports verdict: `marginal`
  - Cite: https://qbuntu.ai/cite/pead-jp-all-fact-regime-down

- **Median Sharpe in FLAT regime is 1.54 across 2304 runs.**
  - Value: 1.54 sharpe_ratio
  - Context: Regime=FLAT, N225 SMA20/SMA60 classification.
  - Supports verdict: `marginal`
  - Cite: https://qbuntu.ai/cite/pead-jp-all-fact-regime-flat

- **Median Sharpe in UP regime is 0.55 across 2304 runs.**
  - Value: 0.55 sharpe_ratio
  - Context: Regime=UP, N225 SMA20/SMA60 classification.
  - Supports verdict: `marginal`
  - Cite: https://qbuntu.ai/cite/pead-jp-all-fact-regime-up

## Related strategies

- same_data_source: [earnings-reversal-short-jp-all](https://qbuntu.ai/strategies/earnings-reversal-short-jp-all)
- same_strategy: [pead-jp-growth](https://qbuntu.ai/strategies/pead-jp-growth)

---

Cite as: qbuntu (2026). Post-Earnings Announcement Drift (JP All Stocks). https://qbuntu.ai/strategies/pead-jp-all

Visit qbuntu.ai — the honest scorecard for quant strategies (live, promising, marginal, rejected).
