Edge framework
Strategy
Active candidates
| Candidate | Market | Status |
|---|---|---|
open_fav_v1 | H2H opening favourite | candidate / not promoted |
rapm_timing_v1 | H2H / line team-list timing | candidate / missing CLV |
line_move_v1 | Line movement direction | live PAPER / awaiting 20 settled CLV reads |
Frozen areas: generic H2H feature churn, divergence signal, broad Elo remixes. Nothing here is a proven edge or a real-money instruction.
Canonical promotion status
DO NOT PROMOTE — paper evidence only; no real-money activation is implied.
Market-only baseline evidence: insufficient_evidence.
| Gate | Status |
|---|---|
| sufficient_bets | BLOCKED |
| roi_gt_5pct | BLOCKED |
| positive_mean_and_median_clv | BLOCKED |
| market_baseline_improvement | BLOCKED |
| home_away_robust | BLOCKED |
| concentration_limit | PASS |
| leakage_checks | PASS |
| sufficient_seasons | BLOCKED |
| evaluated_policy_matches_live | PASS |
Current edge thesis
The exploitable inefficiency is the OPENING price. Three independent instruments agree: line_ridge_core's +4.4% ROI exists only at opening lines; open-priced models' disagreements with the open are confirmed by the close ~54–55% of the time (z ≥ 2.7); and closing-featured diagnostics settle negative. The close is efficient — the open is not. Every strategy below is a way of getting to the soft price before the market hardens.
Language rule: everything below is a candidate / hypothesis / paper trade — nothing is a proven edge until it clears the promotion gates out of sample.
Staking policies
| Policy | Rule | Status |
|---|---|---|
Flat Every Gameflat_every_game |
$1 on the max-EV side of every fixture. Benchmark, not a strategy. | benchmark |
Edge Cappededge_capped |
$1–2 when raw model EV ≥ 5%. Retained for comparison; raw EV in a 2%-vig market is mostly model error. | legacy comparison |
Shrunk ¼-Kellyshrunk_kelly |
Quarter-Kelly on the market-blended probability (λ fit walk-forward), EV clamped to [2%, 10%]. The reference policy: bets rarely, sizes honestly. | reference |
Promotion gates (paper → real consideration)
| Gate | Bar |
|---|---|
| Sample | ≥ 100 settled paper bets |
| ROI | > +5% |
| CLV | Positive average AND median CLV |
| Concentration | No round > 30% of profit |
| Seasons | ≥ 2 full seasons for watch status |
Canonical values: data/promotion_gates.py. Negative-CLV models
get zero vote weight regardless of ROI.
Strategies under paper observation
| Strategy | Market | Trigger | Action |
|---|---|---|---|
movement_total_2pt_v1 |
Totals | |latest − open| ≥ 2.0 pts, ≥2 bookmakers | Paper-trade the steam side |
movement_spread_2pt_v1 |
Spreads | |latest − open| ≥ 2.0 pts, ≥2 bookmakers | Paper-trade the steam side |
movement_h2h_3pct_v1 |
H2H | No-vig probability shift ≥ 3% | Paper-trade the rising side |
rapm_timing_v1 |
H2H / Line | RAPM lineup delta at Tuesday team-list drop vs opening price | Paper-trade with CLV collection — the leakage-free test of the team-news-timing hypothesis |
line_move_v1 |
Line | Tuesday directional confidence ≥ 0.60 at the real opening handicap | PAPER GO at the open; WATCH below threshold; settle line CLV at close |
Latest model-build gates (line-move-v1b)
| Gate | Description | Status | Detail |
|---|---|---|---|
| LM1 | directional accuracy >= 53% | pass | accuracy=0.667789 |
| LM2 | directional accuracy >= majority-class base rate + 2% | pass | accuracy=0.667789; base_rate=0.516274; required=0.536274 |
| LM3 | z >= 2 against majority-class base rate | pass | z_vs_base=9.0501 |
| LM4 | n >= 500 non-zero line moves | pass | n=891 |
| LM5 | 2023+ era slice is broken out | report_only | n_2023_plus=216 |