Skip to main content

Odds Generation — point · game + game · game (badminton)

Enter the match's Point Handicap and Points Total in Malay and its Moneyline in decimal — margins still embedded. Rally scoring makes the score a pure race — first to 21 by 2, capped at 30 (golden point at 29-29), best of three games — so one strength parameter would pin the totals the moment the handicap is known: the same one-parameter straitjacket that made Poisson wrong for basketball. The engine (ADR-030):

  1. strips each bookmaker margin (Power method — all three books two-way);
  2. bisects the rally-win share r against the Point Handicap on the exact race DP (win-by-2 barriers, golden-point cap);
  3. fits γ, a score coupling ("restoring force": the rally probability tilts by γ · deficit), to the Points Total — γ > 0 keeps games close and lengthens them, γ < 0 shortens; a two-sided knob a mixture cannot give;
  4. fits κ_M, a match-level form shock, to the Moneyline (toggle in the ML box) with a probed direction — counterintuitively κ_M raises the re-solved favorite's ML, and an ML outside the reachable band is a cross-anchor inconsistency surfaced as Δ ML, not a solver failure;
  5. prices both scopes off the one solved distribution — game · game (Moneyline, ±1.5 game handicap) and point · game (match point lines plus per-game sheets, game 3 conditional on being played).
Stage 1 — rally scoring is a pure race: first to 21 by 2, capped at 30 with the golden point at 29-29, best of three games, solved on the exact race DP
Stage 1 — rally scoring is a pure race: first to 21 by 2, capped at 30 (golden point at 29-29), best of three — solved on the exact race DP

Each stage re-solves the same fair targets — flip Race / γ / κ_M and watch the totals humps breathe while the handicap holds. Race lengths are per-tournament config: the BWF approved 3×15 (cap 21) at the 2026 AGM with rollout pending, so both formats ship here; switching loads that format's seed quotes.

Point Handicap (Malay)
Points Total (Malay)
Moneyline (Decimal) ·
Margins

/ steps a field, Shift steps bigger; Malay pairs step their partner the opposite way. Quotes are whole-match; per-game sheets derive from the same solve, game 3 conditional on being played.

Valid inputs: Malay in [−1, +1] non-zero with margin, decimals above 1. The κ_M fit re-solves (r, γ) at every trial — allow it a second.

r 0.5296γ 0.0076κ_M 0.0391G3 40.4%round-trip Δp 1.0e-5 / 9.8e-6Δ ML 0.00%
Match distribution
r 0.5296γ 0.0076κ_M 0.0391G3 40.4%E[pts] 90.6
Final games score — P(home g, away g) ×100
A=0A=1A=2
H=016.3
H=115.8
H=243.424.6
Points margin pmf — P(home pts − away pts) ×100
-21-20-19-18-17-16-15-14-13-12-11-10-9-8-7-6-5-4-3-2-10+1+2+3+4+5+6+7+8+9+10+11+12+13+14+15+16+17+18+19+20+21+22+23+24+25+26
0.10.10.10.20.30.40.60.81.01.31.61.92.22.52.72.92.93.31.82.01.81.82.02.42.34.74.75.15.45.45.35.04.64.13.63.02.52.01.61.20.90.60.50.30.20.10.10.0
Points total pmf ×100
585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136
0.00.10.10.20.30.50.70.91.21.62.02.52.93.43.94.24.54.64.54.23.83.22.41.61.70.81.10.40.70.20.40.10.20.10.10.00.10.00.10.10.10.10.20.20.40.50.60.81.11.31.61.92.22.42.62.72.82.72.52.32.01.71.41.21.00.80.70.50.50.30.30.20.20.10.10.10.10.00.0
two humps — a straight-games match vs a decider — the bimodality no unimodal count model can price
home awayone distribution, both scopes: the games table is game·game, the pmfs are point·game
6 in scope
a match always has a winner — no tie leg
OutcomeFairDecPricedMalay
Home68.0%1.4711.439+0.44
Away32.0%3.1222.926-0.52
How these numbers are computed
1 · Strip the bookmaker margins (Power method — every book two-way)
Point Handicap -5.50 → P(home covers)
HomeAway
Malay quote+0.88+0.99
Decimal dd1.88001.9900
Implied q=1/dq = 1/d0.53190.5025
Fair p=q1/xp = q^{1/x}0.51490.4851
Fair decimal 1/p1/p1.94202.0616
overround Q = 1.0344 → solve q11/x+q21/x=1q_1^{1/x} + q_2^{1/x} = 1 → x = 0.9511fair P(home covers) = 51.49%
Points Total 78.50 → P(over)
OverUnder
Malay quote+0.80-0.93
Decimal dd1.80002.0753
Implied q=1/dq = 1/d0.55560.4819
Fair p=q1/xp = q^{1/x}0.53750.4625
Fair decimal 1/p1/p1.86042.1622
overround Q = 1.0374 → solve q11/x+q21/x=1q_1^{1/x} + q_2^{1/x} = 1 → x = 0.9468fair P(over) = 53.75%
Moneyline → P(home wins) — the κ_M anchor (stage 3)
HomeAway
Decimal quote1.452.99
Decimal dd1.45002.9900
Implied q=1/dq = 1/d0.68970.3344
Fair p=q1/xp = q^{1/x}0.67970.3203
Fair decimal 1/p1/p1.47133.1216
overround Q = 1.0241 → solve q11/x+q21/x=1q_1^{1/x} + q_2^{1/x} = 1 → x = 0.9622fair P(home ML) = 67.97%

Standalone strips: Margin — two-way (Power).

2 · The race — rally scoring is a pure best-of race

Every rally scores a point, so a game is a race to 21 by 2, capped at 30 (golden point at 29-29), best of three. A single strength r would pin the totals once the handicap is known — the same one-parameter straitjacket that made Poisson wrong for basketball — so the rally probability carries a score coupling:

P(A wins the rally at x-y)=clip ⁣(r+γ(yx))P(\text{A wins the rally at } x\text{-}y) = \operatorname{clip}\!\left(r + \gamma\,(y - x)\right)

γ > 0 is a restoring force (the trailing player lifts — games stay close and run long, deuces multiply); γ < 0 lets games run away and shorten. The DP walks the exact (x, y) lattice, so the coupling costs nothing; the match folds games carrying the points margin and total pmfs, the games joint and each game's grid. Validated against a 200k-run Monte Carlo.

3 · Stages — γ from the total, κ_M from the Moneyline (direction probed)
Stagerγκ_MΔ coverΔ totalΔ ML
Race0.52240.00000.00004.1e-63.7e-20.83%
γ0.5167-0.00960.00009.4e-67.9e-65.42%
κ_M0.52960.00760.03911.0e-59.8e-60.00%

κ_M is a 3-node form mixture on r. Counterintuitively it RAISES the re-solved favorite’s ML — the mixture widens cumulative point margins faster than the game race, so the handicap re-solves to a stronger r — hence the direction is probed at the bracket ends, never assumed. An ML outside the reachable band keeps the nearer endpoint and leaves Δ ML large: a cross-anchor inconsistency (alertable), not a solver failure.

4 · Periods — game 3 is a random period · formats

Game 3 exists with probability 40.4% here; its markets are void if it is not played, so its sheet prices conditional on being played — and under the κ_M mixture the conditioning re-weights the form nodes (deciders come from the close-form nodes). The same fold yields the game·game scope for free (Moneyline, ±1.5 game handicap, correct score). Race lengths are per-tournament config: the BWF approved 3×15 (cap 21) at the AGM on 2026-04-25 with rollout pending, so 3×21 and 3×15 will coexist — the format toggle above re-prices the same latents under either race.

5 · Read “Moneyline” · margins · notes

Full match: P(home wins the game race) — no tie leg. Per game: the game winner, conditional on the game being played (void otherwise). Fair groups are re-margined exactly as in goal-regular (Power ladder two-way, Shin multi-way).

targets  tH = powerStrip(HDP pair)   tO = powerStrip(OU pair)   tW = powerStrip(ML pair)

stage iid   : γ = 0, κ_M = 0        bisect r until P(A covers | dist) = tH
stage γ     : bisect γ until P(over | dist) = tO      (r re-solved inside — restoring
              force lengthens games, runaway shortens; two-sided, unlike a mixture)
stage κ_M   : probe ml(0) vs ml(κ_max) at re-solved (r, γ) → bisect toward tW
              (κ_M RAISES the re-solved favorite's ML; unreachable target ⇒ Δ ML alert)

dist: game DP on the (x, y) lattice — race to 21 by 2, cap 30 (golden point) —
      folded best-of-3 with margin/total pmfs, games joint, per-game grids
scopes: ONE dist prices game·game (ML, ±1.5) and point·game (match + per-game, conditional)

Engine + invariants: docs/src/lib/odds/badminton.ts, __tests__/badminton.test.ts; decision record ADR-030 (extends ADR-029).