opponent_adjusted_epa OUTLINE · week2 values READY
First Quant Lab research pack: opponent-adjusted team EPA for Power blind seals. Method outline plus feature contract. Week 2 values are READY (2025 opponent-adjusted prior, precision-blended with 2026 week-1 — heavy shrink). Backtest metrics still WAIT. No market prices in inputs. Not an Official.
as_of: 2026-09-17T15:46:00-05:00
feature_id: opponent_adjusted_epa
family: power
owner: War Room Quant Lab
consumer: War Room Power (blind seal inputs)
status: OUTLINE method · Week 2 values READY · backtest WAIT
label_when_shipped: model
One sentence
Replace raw team EPA averages with opponent-adjusted offense/defense EPA so Power’s fair margin is not fooled by soft/hard schedules in thin samples.
Why this first
- Listed #1 under Power Methods calculus roadmap.
- Dictionary family B already names it.
- Architect facts exist:
team_efficiency_2026_w1.fact.csv,team_stats_weekly_2025.csv, schedules. - Priced-gate curves need Soft chip history + live line path — deferred as pack #2 outline later.
Inputs (read-only)
| Path | Label | Use |
|---|---|---|
data/team_stats_weekly_2025.csv | fact | Prior-season weekly offense/defense EPA proxies |
data/team_efficiency_2026_w1.fact.csv | fact | Current thin sample (n=1 week) |
data/schedules_2026.nonmarket.csv | fact | Season opponent graph |
data/schedule_week2_2026.games.json | fact | Week-2 slate join |
| Scorekeeper grades (when present) | fact | Later: calibration_shrink feedback |
Method (v0 outline)
- Prior: From 2025 weekly stats, estimate team off/def strength with a simple opponent adjustment (e.g. iterative or ridge-shrunk residual EPA vs mean opponent).
- Update: Bayesian / precision-weighted blend of prior + 2026 week-1 observed efficiency (heavy shrink — n=1).
- Output per team:
off_epa_adj,def_epa_adj,net_epa_adj,shrink_weight,as_of_week,method_version. - Game join (Power-side): home net − away net → margin contribution; do not bake our shop.
Explicit non-goals for v0: player-level EPA, OL stack (separate feature), joint margin/total correlation (separate feature).
Outputs (when READY)
data/features/power/packs/opponent_adjusted_epa_week2_2026.jsondata/features/power/schema.jsonfields for this feature- Pointer in
data/features/week2_2026_index.json - Method version pin in pack meta
Acceptance
- Reproducible script under
scripts/quant_lab/ - Every row cites source paths + retrieved_at
- Shrink weight disclosed; no claim of full calibration on n=1
- Power can consume without peeking Market
Kill / WAIT
- Missing 2025 weekly columns needed for residualization → WAIT + blocker note
- Would require rewriting Architect fact CSVs in place → refuse
- Output presented as Official or bet advice → refuse
Effort sketch
| Step | Est. | Owner |
|---|---|---|
| Confirm 2025 column map + opponent schedule join | S | Quant Lab |
| Implement v0 adjuster + tests on 2025 holdout weeks | M | Quant Lab |
| Blend 2026 w1 + ship week2 pack | S | Quant Lab |
| Power Methods consume path (no seal rewrite of past weeks) | S | Power |
Next after this pack
joint_spread_totalschema + sim correlation notepriced_gate_scoreoutline (Tape)- CLV/steam microstructure once open→current odds tape is Architect-READY
Contract JSON: lab_power_opponent_adjusted_epa_v1.json · Week 2 values READY · backtest WAIT.
Filed outline only — no invented results.