Skip to main content

Score Box — the Saba payout ladders

Score Box Handicap and Score Box Over/Under (catalog markets 590/591, Saba bet types 468/469): one stake buys a whole row of 3–5 buckets — win-score margins or total goals — and the landed bucket settles at its signed multiplier: positive wins that many stakes, negative loses that many, 0.00 pushes. Results beyond the row settle at the edge columns, and the account risk is |most negative rung| × stake — a loss can exceed the stake.

Nova88's example (rules §2.2.23, Liverpool v Chelsea):

Win Score21Draw−1−2
Home4.131.400.00−2.01−5.92
Away−5.11−1.730.001.624.80

$100 on Home: 1-0 pays $140; 2-0 — and any heavier win — pays $413 (the cap); a draw pushes; 0-1 costs $201; 0-2 or worse, $592.

On the wire

fieldmeaning
hdp1top column — highest win-score (468) / highest total (469)
hdp2rung count, 3–5
cs1x / cs0x (468)Home / Away ladders over descending win-score columns (0 = Draw)
cs0x / cs1x (469)Equal/Over / Equal/Under ladders, low totals first
oddsspreadabox spread s — constant 1.12 (468) / 1.20 (469)

Live handicap columns count from the current score (like the live AH); totals columns are absolute. Rungs are stake multiples, not convertible odds — the catalog stores them as custom prices[]/labels[].

The smell

Five fingerprints, reverse-engineered from Nova88 captures:

  1. The pivot is the main line, verbatim. The anchor's own column settles like the anchored bet: quarter line — loser exactly −0.50, winner half its quoted Malay price; integer line — 0.00 push.
  2. De-shaded, the ladder is geometric. Column midpoints F = (win + |loss|)/2 step by one shared ratio per box: R ≈ 1.70 + 3.60/E[goals] (handicap), 1.52 + 3.40/E[goals] (totals).
  3. Each side's expected win-leg is one stake. Σ π·F = 1 over the winning columns — the scale law that pins the bases and makes the fair ladder zero-EV.
  4. Affine shading. win = F·(1−δm) − δa, loss = −(F·(1+δm) + δa), with δm = 0.9·(s−1) and δa = (s−1)/2 — so either side's EV ≈ −(s−1)/2 of its max risk (−6% handicap, −10% totals).
  5. The window follows the anchor. Five columns centred on the anchor's integer (a −0.5 line boards [3, 2, 1, Draw, −1]; a 4.5 total boards [2…6]), shrinking to 4 then 3 while an edge bucket sits under ~8%.

Caveat: live boxes go stale. Mid-match captures sat up to a goal off their own main line, EVs drifting ±30% — a fresh box shows fingerprint 4's EV symmetry, a stale one doesn't. Fit only against boxes whose pivot mirrors the live main line.

The lab

No back-solve here — a box is a pure function of a score grid and an anchor. Enter the bivariate-Poisson rates λ₁ / λ₂ / λ₃ (the triple the goal-regular step 4 fits; its result box pastes straight in). Per box: Line (blank = the grid's balanced quarter line), Spread (shading deltas + the EV target), R law a/b or the R override; plus the global edge π floor, board ticks, and the fair ladder / buckets π rows. With no quoted pair, the pivot price derives from the grid — the EV-fair favourite price less half the pair spread. The Saba capture presets pin the captured lines and print Saba's rungs under the generated ones.

Model — bivariate-Poisson rates
Window & board
Score Box
μ_h 1.75 · μ_a 1.24 · E[goals] 2.99
Score Box Handicap
Win Score321Draw-1
Home4.751.590.51-1.18-3.30
Win Score321Draw-1
Away-6.00-2.12-0.770.842.55
anchored on the -0.5 Handicap line · R = 2.90 · δm = 0.108 · δa = 0.060 · bases 0.64 / 1.01 · bettor EV -5.8% / -4.6% of max risk (target ≈ -6.0%)
Score Box Over/Under
Total Goals12345
Equal/Over-4.00-1.580.451.002.82
Total Goals12345
Equal/Under2.620.93-0.50-1.68-4.30
anchored on the 2.5/3 Goal line · R = 2.66 · δm = 0.180 · δa = 0.100 · bases 1.34 / 1.25 · bettor EV -10.6% / -9.9% of max risk (target ≈ -10.0%)

Configuring it as a product

knobSaba runscontrols
spread s per box1.12 (HDP) / 1.20 (O/U)whole-box margin — the −(s−1)/2 EV
R law (a, b) per box≈ (1.70, 3.60) / (1.52, 3.40)payout escalation vs goal expectation
edge π floor≈ 0.085 → 4 → 3 column shrink
pair spread0.08 / 0.10pivot price when no pair is quoted
board ticksondisplay rounding

Everything else follows from the grid and the main line; src/lib/odds/__tests__/score-box.test.ts pins the recipe to the captures rung by rung.