Skip to main content

Odds Generation — soccer · goal · regular · DIBP

A comparison candidate to the default page, proposed (2026-07-16, pending team approval — ADR-029 addenda) to replace it: on two disjoint live-Saba samples (59 + 124 real prematch Correct Score boards) this engine is unbiased at 0-0 where the λ₃ shock over-prices it by ≈ e^λ₃, fits the 1X2 draw exactly, and has the best per-cell CS error of the draw-lifted engines; ω = 1 held on both samples. Steps 1–3 are identical — strip the margins, back-solve the goal rates (λₕ, λₐ) from the hard Handicap and Total anchors, plus, in live, the same current score input (default 0-0) — and step 4 extends the default page's common shock λ₃ into the diagonal-inflated bivariate Poisson (Karlis–Ntzoufras 2005):

J = (1 − θ) · BP(l₁, l₂, λ₃) + θ · D(ω)

The independent-Poisson grid gains a common-shock coupling λ₃ and a slug of diagonal probability θ·D(ω), where D(ω) is a geometric distribution over the draw cells starting at 1-1 (1-1, 2-2, 3-3, …) with a fixed decay ω you set — never fitted (ω < 1 decays from 1-1, ω = 1 is uniform, ω > 1 leans toward the high diagonal). 0-0 deliberately takes no injection: measured against Saba's own Correct Score boards (59 real prematch matches, 2026-07-16), books price 0-0 at the independent-Poisson level and keep their draw surplus in the mid/high diagonal — a 0-0 share only ever over-prices that cell (ADR-029 addendum). The two fitted knobs are (λ₃, θ), and after every trial the engine re-solves (λₕ, λₐ) so the Handicap and Total still hold exactly.

Live. The same remaining-goals frame as the default page: Handicap rest-of-match, the absolute Total line drops by the goals already scored, final-result markets settle on current + remaining. The difference is step 4's live reach — D(ω) follows the final-score diagonal: live it injects on the band h − a = d (each final draw k-k keeps its ω^(k−1) weight; final 0-0 stays exempt), so the θ pull keeps fitting while a side leads, where the default page's centred-diagonal λ₃ shock greys its 1X2 out. λ₃ itself still reaches the draw only through the Total trade, which concentrates the centred cells — off level it loses most of its grip and the fit usually defers to the θ-only solve. At 0-0 the pipeline is byte-identical to prematch.

The mechanism has sharp limits, and the walkthrough narrates them. Both knobs are draw-directional and one-sided: θ injects diagonal mass head-on, while λ₃ reaches the draw only sideways — the common shock cancels in the goal margin (X − Y = W₁ − W₂), so λ₃ moves the 1X2 only by trading against the Total (a higher λ₃ forces a lower-scoring, more draw-heavy match). Neither is a structural home:away lever the way the φ/σ candidate's σ is: at the common ±0.50-class Handicap the anchor already pins P(h > a) — the 1X2 home event — so the two knobs collapse onto one direction and the fit defers to a θ-only draw solve, a more fundamental rank collapse than the φ/σ candidate's. At a deeper line the home leg frees up and Gauss–Newton engages λ₃ as well. And because the whole diagonal is one 1X2 outcome, ω is unidentifiable from the 1X2: move it and the fitted 1X2 holds while Correct Score and Exact Total visibly reshape — the diagonal's shape is imposed by ω rather than inherited from the baseline grid.

See also the sibling φ/σ-tilt candidate; the default page keeps the common shock but drops the diagonal inflation.

Each period — full match, 1st half, 2nd half — is its own inversion. Timing and cross-half markets (HT/FT, First Goal, …) are out of scope; see the Markets reference.

Score (live) 0-0 = prematch
Primary Quotes
Handicap (Malay)
Total (Malay)
1X2 quote (Decimal) optional ·

/ steps a field, Shift steps bigger; on a Malay pair the partner moves the opposite way. Handicap/Total boards show 16 lines in quarter steps around your line; team-total, 3-way and which-team lines are illustrative — probabilities are exact given λ.

Valid inputs: Malay in [−1, +1] and never 0, 1X2 decimals above 1, and each book must carry margin (implied probabilities summing over 1). The score is whole goals (0-0 = prematch); in live enter the quotes as the book states them — Handicap rest-of-match, Total absolute (its line must sit above the current total), 1X2 on the final result. The (λ₃, θ) pull keeps fitting at any score — θ's injection follows the final-score diagonal — with no level-score gate (the default page's λ₃-only shock has one; step 4 compares).

l₁ 1.643231l₂ 0.933443λ₃ 0.000000θ 0.074934ω 1.00μtotal 2.576674anchors Δp 4.5e-11 / 5.6e-111X2 Δ -9.2e-3 / +9.3e-11 / +9.2e-3draw 0.2485990.302298grid N=5 · Poisson → DIBP
Score grid
Score grid — P(home = h, away = a) ×100
Poisson
l₁ 1.608939l₂ 1.065121draw 0.248599
A=0A=1A=2A=3A=4A=5+
H=06.907.353.911.390.370.10
H=111.1011.826.292.230.600.15
H=28.939.515.061.800.480.12
H=34.795.102.720.960.260.07
H=41.932.051.090.390.100.03
H=5+0.830.890.470.170.040.01
home Σ 0.500000 draw Σ 0.248599 away Σ 0.251401
DIBP
l₁ 1.643231l₂ 0.933443λ₃ 0.000000θ 0.074934draw 0.302298
A=0A=1A=2A=3A=4A=5+
H=07.036.563.060.950.220.05
H=111.5612.295.031.570.370.08
H=29.508.865.641.290.300.07
H=35.204.852.272.200.160.04
H=42.141.990.930.291.570.01
H=5+0.950.890.410.130.031.51
home Σ 0.500000 draw Σ 0.302298 away Σ 0.197702
shade ∝ probability · each stage re-solves (λₕ, λₐ) against the same fair targets · θ injects on the final-result draw band, so in live it shifts with the score
Markets
Handicap
HDP-2/2.5-2.0-1.5/2-1.5-1/1.5-1.0-0.5/1-0.5-0/0.50.0+0/0.5+0.5+0.5/1+1.0+1/1.5+1.5
H-0.20-0.22-0.32-0.42-0.49-0.59-0.81+0.96+0.66+0.37+0.28+0.22+0.14+0.07+0.06+0.06
A+0.12+0.14+0.24+0.34+0.41+0.51+0.73+0.96-0.74-0.45-0.36-0.30-0.22-0.15-0.14-0.14
Over/Under
Goal0.5/11.01/1.51.51.5/22.02/2.52.52.5/33.03/3.53.53.5/44.04/4.54.5
Over+0.07+0.08+0.19+0.31+0.37+0.47+0.72+0.96-0.84-0.64-0.55-0.48-0.38-0.28-0.26-0.24
Under-0.15-0.16-0.27-0.39-0.45-0.55-0.80+0.96+0.76+0.56+0.47+0.40+0.30+0.20+0.18+0.16
1X2
OutcomeOdds
Home1.960
Draw3.064
Away4.685
Home is the −0.5 Handicap price (+0.96 Malay — the favourite, same event, same odds); the Draw and Away share the rest of the book to 1 + margin.
Correct Score
1-08.415
2-01031
2-11119
3-01893
3-12059
3-24170
4-044316
4-147213
4-295250
4-3258395
0-0
14
1-1
7.9
2-2
17
3-3
42
4-4
59
AOS
23
17 more in scope
The four primary markets above always show; pick any other in-scope market here to price it off the same final grid.
1 · Strip the bookmaker margins — Power (two-way) · Shin (three-way)
Handicap -0.50 → P(home covers -0.50)
HomeAway
Malay quote+0.96+0.96
Decimal dd1.9600001.960000
Fair p=q1/xp = q^{1/x}0.5000000.500000
Fair decimal 1/p1/p2.0000002.000000
0.5102041/x+0.5102041/x=1    x=0.9708540.510204^{1/x} + 0.510204^{1/x} = 1 \;\Rightarrow\; x = 0.970854
Total 2.50 → P(over 2.50)
OverUnder
Malay quote+0.95+0.95
Decimal dd1.9500001.950000
Fair p=q1/xp = q^{1/x}0.5000000.500000
Fair decimal 1/p1/p2.0000002.000000
0.5128211/x+0.5128211/x=1    x=0.9634740.512821^{1/x} + 0.512821^{1/x} = 1 \;\Rightarrow\; x = 0.963474
1X2 (Decimal) → P(home win), P(draw), P(away win) — Shin
HomeDrawAway
Decimal quote dd1.8900003.1300004.900000
Fair pp (Shin)0.5092410.3022980.188461
Fair decimal 1/p1/p1.9637083.3079965.306125
extstyleipi(z)=1    z=0.026465 extstyle\sum_i p_i(z) = 1 \;\Rightarrow\; z = 0.026465

Try the strips standalone — Margin — two-way (Power) · Margin — multi-way (Shin): the same math on any quotes, with the bisection narrated.

2 · Size — recover λ_total from the Total

Step 1 left two hard fair targets — Handicap and Total — for the scoring rates λh,λa\lambda_h, \lambda_a. The optional 1X2 is a soft shape target for λ₃ and θ in step 4, not a third hard rate constraint. Model each side’s goals as Poisson — P(k;λ)=eλλk/k!P(k;\lambda) = e^{-\lambda}\lambda^{k}/k! — and independent. Independent Poissons add — X+YPoisson(λh+λa)X + Y \sim \mathrm{Poisson}(\lambda_h + \lambda_a) — so the match total depends only on λtotal=λh+λa\lambda_{\text{total}} = \lambda_h + \lambda_a: the Total quote pins the match size on its own, before caring who scores (step 3’s job). Settling any line sorts that one total’s mass — point masses P(total=t)=eλλt/t!P(\text{total} = t) = e^{-\lambda}\lambda^{t}/t! — into three buckets: win (over hits), mass WW; lose, mass LL; push (an exact tie, stake refunded), mass RR — so W+L+R=1W + L + R = 1. A refund is a no-action bet, so the fair price conditions on the decided outcomes alone: P(overdecided)=WW+L=W1RP(\text{over} \mid \text{decided}) = \frac{W}{W + L} = \frac{W}{1 - R}. That makes size a one-dimensional root-find, laid out below in the order a solver runs it — target, search, then the evaluation every iteration repeats:

target (step 1): pover  =  fair P(over 2.50)  =  0.50000000p^{\ast}_{\text{over}} \;=\; \text{fair } P(\text{over } 2.50) \;=\; 0.50000000
Eight decimals on purpose — step 1’s table shows this same number at 6 dp, a rounding. The λ-inverse is stiff (a wobble in the target’s 4th decimal moves the recovered λ by several units in its 4th decimal), so the cross-checks below and step 3’s target carry full precision.
search: bisect λtotal[0.02,8]   until   W/(1R)=pover    λtotal=2.674060\text{bisect } \lambda_{\text{total}} \in [0.02,\, 8] \;\text{ until }\; W/(1-R) = p^{\ast}_{\text{over}} \;\Rightarrow\; \lambda_{\text{total}} = 2.674060
Cross-check it — the fair over is the win mass over the non-push mass, W/(1R)W/(1-R), written as raw Poisson terms. Paste into the Bisection Calculator and solve for λ\lambda:
1 - exp(-x)*(1 + x + x^2/2) = 0.50000000
A .5 line cannot push (R=0R = 0), so this is the plain tail P(X3)P(X \ge 3) — the Poisson Calculator inverse-solves P(X3)=0.50000000P(X \ge 3) = 0.50000000 in one field.
Where the pasted expression comes from

Totals are whole numbers, so total ii carries mass P(total=i)=exxi/i!P(\text{total} = i) = e^{-x}x^{i}/i!. Each win tail runs on forever, so flip it to the complement — exe^{-x} times the start of ex=1+x+x22+e^{x} = 1 + x + \tfrac{x^2}{2} + \cdots cut at the line (keep every term and exex=1e^{-x}e^{x} = 1, the whole distribution). For the 2.50 line:

W  =  P(total>2.5)  =  1P(total2)  =  1ex(1+x+x22)W \;=\; P(\text{total} > 2.5) \;=\; 1 - P(\text{total} \le 2) \;=\; 1 - e^{-x}\left(1 + x + \tfrac{x^{2}}{2}\right)
R  =  0(no whole-goal total equals 2.5)R \;=\; 0 \quad \text{(no whole-goal total equals 2.5)}

Substitute WW (with R=0R = 0 the denominator is 1) into W/(1R)=poverW/(1-R) = p^{\ast}_{\text{over}} and write exe^{-x} as exp(-x) — that is the pasted line, term for term; the calculator solves it for x=λtotalx = \lambda_{\text{total}}.

The evaluation the search repeats every iteration is that settlement rule under Poisson(λ). At the converged λtotal=2.674060\lambda_{\text{total}} = 2.674060 it reproduces the win mass WW, push mass RR, and the fair check back to the target — the figures a re-implementation should match:

W  =  P(total>2.50)  =  1t=02eλλtt!  =  0.500000W \;=\; P(\text{total} > 2.50) \;=\; 1 - \textstyle\sum_{t=0}^{2} \tfrac{e^{-\lambda}\lambda^{t}}{t!} \;=\; 0.500000
R  =  P(total=2.50)  =  0    (no push: totals are integers)R \;=\; P(\text{total} = 2.50) \;=\; 0 \;\; \text{(no push: totals are integers)}
fair P(over 2.50)  =  W1R  =  0.50000010.000000  =  0.500000  =  pover    \text{fair } P(\text{over } 2.50) \;=\; \frac{W}{1-R} \;=\; \frac{0.500000}{1 - 0.000000} \;=\; 0.500000 \;=\; p^{\ast}_{\text{over}} \;\; \checkmark
recovered size:λtotal  =  2.674060\text{recovered size:}\quad \lambda_{\text{total}} \;=\; 2.674060

(Additivity is exact only for the plain independent-Poisson grid, so this λ is the Poisson stage’s; step 4’s λ₃/θ diagonal inflation perturbs it, so that stage re-solves size and split jointly against the same hard targets — both recovered (l₁, l₂) pairs land in the per-stage table, step 4.)

3 · Split — recover λₕ and λₐ from the Handicap

The Handicap decides who scores them — and settling it needs the full scoreline distribution, the score grid: independence makes each cell (h,a)(h, a) a plain product of the two Poisson masses,

J[h][a]  =  P(home=h;λh)P(away=a;λa)h,a=05J[h][a] \;=\; P(\text{home} = h;\, \lambda_h) \cdot P(\text{away} = a;\, \lambda_a) \qquad h, a = 0 \ldots 5

— exactly the grid the score-grid panel’s Poisson stage displays. Hold λtotal\lambda_{\text{total}} fixed and slide the home share λh\lambda_h (with λa=λtotalλh\lambda_a = \lambda_{\text{total}} - \lambda_h). Home covers ⟺ h+L>ah + L > a, an exact h+L=ah + L = a is a push — step 2’s one rule again, with the masses now read off the grid: W=h+L>aJ[h][a]W = \textstyle\sum_{h + L > a} J[h][a] and R=h+L=aJ[h][a]R = \textstyle\sum_{h + L = a} J[h][a] (½-weighted across a quarter line’s two components), fair cover probability W/(1R)W/(1-R) — which rises with λh\lambda_h, so the same solver shape applies:

target (step 1): pcover  =  fair P(home covers 0.50)  =  0.50000000p^{\ast}_{\text{cover}} \;=\; \text{fair } P(\text{home covers } -0.50) \;=\; 0.50000000
search: bisect λh(0,λtotal)   until   W/(1R)=pcover    λh=1.608939,    λa=λtotalλh=1.065121\text{bisect } \lambda_h \in (0,\, \lambda_{\text{total}}) \;\text{ until }\; W/(1-R) = p^{\ast}_{\text{cover}} \;\Rightarrow\; \lambda_h = 1.608939,\;\; \lambda_a = \lambda_{\text{total}} - \lambda_h = 1.065121
Cross-check it — the fair cover is the same win-over-non-push mass W/(1R)W/(1-R) as step 2, with the away score conditioned out so the whole cover is one function of x=λhx = \lambda_h (λa=λtotalx\lambda_a = \lambda_{\text{total}} - x, and λtotal=2.674060\lambda_{\text{total}} = 2.674060 held fixed from step 2). One line per away score aa up to N=5N = 5 — paste into the Bisection Calculator, interval [0,λtotal][0,\, \lambda_{\text{total}}], tolerance 1e-8, and solve for xx:
  P(0, 2.674060-x)*Ptail(1, x)
+ P(1, 2.674060-x)*Ptail(2, x)
+ P(2, 2.674060-x)*Ptail(3, x)
+ P(3, 2.674060-x)*Ptail(4, x)
+ P(4, 2.674060-x)*Ptail(5, x)
+ P(5, 2.674060-x)*Ptail(6, x)
= 0.50000000
A .5 line cannot push (R=0R = 0): each line is one away score — its Poisson mass times the home tail Ptail(a+1;x)\mathrm{Ptail}(a + 1;\, x) that covers it. Its search lands on λh=1.608889\lambda_h = 1.608889 — within Δ=5.0×105\Delta = 5.0 \times 10^{-5} of the grid solve above (why not exact: the away-corner fold, explained below).
Where the pasted expression comes from

Step 2's Total was a sum of the two goal counts (one rate, one Ptail); the Handicap turns on their difference — the goal margin XYX - Y (home goals minus away goals). A margin depends on both rates at once — its distribution is a Skellam, the difference of two Poissons — so no single Ptail in λtotal\lambda_{\text{total}} can express it. The trick is to condition on the away score aa: once aa is pinned, only the home goals still vary, and the cover collapses to one plain home tail (Ptail(k;λ)=P(Xk)\mathrm{Ptail}(k;\, \lambda) = P(X \ge k)). Home covers     ha+1\iff h \ge a + 1 (a half-line cannot push), so each away score contributes its Poisson mass times that tail:

W  =  P(home covers 0.50)  =  a0P(away=a;λa)Ptail(a+1;λh)W \;=\; P(\text{home covers } -0.50) \;=\; \sum_{a \ge 0} P(\text{away} = a;\, \lambda_a)\,\mathrm{Ptail}(a + 1;\, \lambda_h)
-5-4-3-2-10+1+2+3+4+5+6goal margin m = home − away
The goal margin m=ham = h - a — a Skellam, the difference of two Poissons. Shaded by how the 0.50-0.50 line settles: home covers (m+1m \ge +1), away.

This margin picture is λ₃-invariant within the BP part. Step 4’s common shock adds the same W3W_3 to both scores, so it cancels in the difference — XY=(W1+W3)(W2+W3)=W1W2X - Y = (W_1 + W_3) - (W_2 + W_3) = W_1 - W_2 — a Skellam in (l1,l2)(l_1, l_2) alone. The θ injection is the exception: its diagonal slug does sit in margin space (on the draw band), which is exactly why step 4 re-solves (l1,l2)(l_1, l_2) on the mixed grid — the anchors see the injection and trade against it, so they hold through the mixture.

Now substitute the search variable x=λhx = \lambda_h (with λa=λtotalx\lambda_a = \lambda_{\text{total}} - x) so the whole cover is one function of xx:

W  =  a0P(a;λtotalx)Ptail(a+1;x)W \;=\; \sum_{a \ge 0} P(a;\, \lambda_{\text{total}} - x)\,\mathrm{Ptail}(a + 1;\, x)
fair cover  =  W(no push, so R=0)\text{fair cover} \;=\; W \quad (\text{no push, so } R = 0)

Truncating the away sum at N = 5 — the grid’s size — gives the pasted equation. At the solved x=λh=1.608889x = \lambda_h = 1.608889 the 6 terms evaluate and add straight up to the target (λa=λtotalλh=1.065171\lambda_a = \lambda_{\text{total}} - \lambda_h = 1.065171):

0.275697+0.175465+0.042809+0.005557+0.000447+0.000024  =  0.500000  =  pcover    0.275697 + 0.175465 + 0.042809 + 0.005557 + 0.000447 + 0.000024 \;=\; 0.500000 \;=\; p^{\ast}_{\text{cover}} \;\; \checkmark

Why the pasted λh\lambda_h is only almost exactly the 1.6089391.608939 from the grid solve (Δ=5.0×105\Delta = 5.0 \times 10^{-5}): the grid is mass-complete, so almost all of the old truncation gap is gone — the home tail folds into the h=5h = 5 row, so for every away score the grid reproduces the closed-form home tail above exactly. The one remaining sliver is the away corner: the grid folds the a5a \ge 5 mass onto the a=5a = 5 column as a cumulative bucket, while this closed-form paste keeps aa there as an exact point mass — and the margin hah - a mis-scores that folded corner. That corner is Δ\Delta, and it shrinks with the away rate. The figure below shows the fold on the home side — its 5\ge 5 tail lands in the 5+ bucket, so no mass is lost; the away side folds the same way.

012345+6789goals, one side
One side's goal count (Poisson). The 5+ bucket folds in the faded tail past 5 (0.62% of the mass), so the grid keeps 100% — nothing is dropped. That mass-completeness is what lets the discrete grid land on the closed-form λ\lambda.

At the converged split the grid masses and the fair check are:

W=P(h0.50>a)=0.500000W = P(h - 0.50 > a) = 0.500000
R=P(h0.50=a)=0.000000R = P(h - 0.50 = a) = 0.000000
fair P(home covers 0.50)  =  W1R  =  0.50000010.000000  =  0.500000  =  pcover    \text{fair } P(\text{home covers } -0.50) \;=\; \frac{W}{1-R} \;=\; \frac{0.500000}{1 - 0.000000} \;=\; 0.500000 \;=\; p^{\ast}_{\text{cover}} \;\; \checkmark
    λh=1.608939λa=1.065121\Longrightarrow\;\; \lambda_h = 1.608939 \qquad \lambda_a = 1.065121

The recovered pair (λh,λa)(\lambda_h,\, \lambda_a) is the Poisson stage’s chips in the grid panel — and with it both quotes are reproduced exactly. That closes the fit, but not the model: the two quotes pinned just two numbers, size and split, while the market boards above price whole ladders off the grid’s shape — and that shape rests entirely on the independence assumption. The next step pulls that shape toward the 1X2 quote with the diagonal-inflated bivariate Poisson — θ (direct diagonal mass) and λ₃ (common shock, felt through the Total trade) — then re-solves so the quotes still hold (step 4).

4 · Pull the shape toward the 1X2 (λ₃ + θ diagonal inflation) — optional

The 1X2 is a three-way book, so Shin stripped it in step 1: with implied qi=1/diq_i = 1/d_i and overround Q=qiQ = \textstyle\sum q_i, Shin’s insider fraction zz deflates each side to

pi(z)  =  z2+4(1z)qi2/Qz2(1z)bisect z[0,1) until pi=1    z=0.026465p_i(z) \;=\; \frac{\sqrt{z^{2} + 4(1-z)\,q_i^{2}/Q\,} - z}{2(1-z)} \qquad \text{bisect } z \in [0,1) \text{ until } \textstyle\sum p_i = 1 \;\Rightarrow\; z = 0.026465
Cross-check it — this book’s implied numbers are q=(11.890000, 13.130000, 14.900000)=(0.529101, 0.319489, 0.204082)q = \left(\tfrac{1}{1.890000},\ \tfrac{1}{3.130000},\ \tfrac{1}{4.900000}\right) = (0.529101,\ 0.319489,\ 0.204082) with overround Q=1.052671Q = 1.052671. Substituting them into ipi(z)=1\textstyle\sum_i p_i(z) = 1 — one term per leg — writes the bisection out in full. Paste into the Bisection Calculator and solve for x=zx = z:
(sqrt(x^2 + 4*(1-x)*0.529101^2/1.052671) - x)/(2*(1-x))
+ (sqrt(x^2 + 4*(1-x)*0.319489^2/1.052671) - x)/(2*(1-x))
+ (sqrt(x^2 + 4*(1-x)*0.204082^2/1.052671) - x)/(2*(1-x))
= 1
The sum starts at Q=1.025998\sqrt{Q} = 1.025998 when z=0z = 0 and falls monotonically, so the sign flip is unique — scan [0,0.9][0,\, 0.9] and the bisection lands back on z=0.026465z = 0.026465. At the root each of the three terms is its fair leg — read (pH,pD,pA)(p_H^{\ast},\,p_D^{\ast},\,p_A^{\ast}) straight off them.

giving the fair vector (pH,pD,pA)=(0.509241,0.302298,0.188461)(p_H^{\ast},p_D^{\ast},p_A^{\ast}) = (0.509241,\,0.302298,\,0.188461). It does not become three more hard equations: at a −0.50 Handicap, home cover is already exactly P(h>a)P(h>a) — the same event the 1X2 home leg prices — and two books rarely quote it identically, so pinning both would make them fight over one number. Instead the whole 1X2 is a soft target, and this page pursues it with a diagonal-inflated bivariate Poisson (Karlis–Ntzoufras 2005): mix the independent-Poisson grid with a common-shock coupling λ3\lambda_3 and a diagonal-inflation weight θ\theta, then re-solve (λh,λa)(\lambda_h, \lambda_a) so the Handicap and Total still hold exactly on every trial.

J[h,a]  =  (1θ)BP(l1,l2,λ3)[h,a]  +  θD(ω)[h,a]J[h,a] \;=\; (1-\theta)\,\mathrm{BP}(l_1,l_2,\lambda_3)[h,a] \;+\; \theta\,D(\omega)[h,a]
D(ω)[h,a]={wh,h=a0,ha,w0=0,wk  =  ωk1j=1Nωj1,k=1ND(\omega)[h,a] = \begin{cases} w_h, & h=a \\ 0, & h\neq a \end{cases}, \qquad w_0 = 0, \quad w_k \;=\; \frac{\omega^{k-1}}{\sum_{j=1}^{N}\omega^{j-1}}, \quad k = 1\ldots N
(λ3,θ)  =  argminλ3[0,3],  θ[0,0.9]  (PHpH)2+(PDpD)2+1010λ32(\lambda_3,\theta) \;=\; \arg\min\limits_{\lambda_3\in[0,3],\;\theta\in[0,0.9]}\; \left(P_H-p_H^{\ast}\right)^2 + \left(P_D-p_D^{\ast}\right)^2 + 10^{-10}\lambda_3^2

BP\mathrm{BP} is the common-shock construction X=W1+W3,  Y=W2+W3X = W_1 + W_3,\; Y = W_2 + W_3 with independent W1Poisson(l1),  W2Poisson(l2),  W3Poisson(λ3)W_1 \sim \mathrm{Poisson}(l_1),\; W_2 \sim \mathrm{Poisson}(l_2),\; W_3 \sim \mathrm{Poisson}(\lambda_3); at λ3=0\lambda_3 = 0 it is exactly the independent-Poisson grid of steps 2–3. D(ω)D(\omega) is a geometric distribution laid along the final-score diagonal starting at 1-1 (the draw cells 1-1, 2-2, 3-3, … — final 0-0 deliberately takes none: measured against Saba’s own Correct Score boards, books price 0-0 at the independent-Poisson level and keep their draw surplus in the mid/high diagonal, so any 0-0 share only over-prices that cell); ω sets how the mass tilts (ω < 1 decays from 1-1, ω = 1 is uniform, ω > 1 leans toward the high diagonal), and kwk=1\textstyle\sum_k w_k = 1 so D(ω)D(\omega) is a proper distribution and the mixture stays mass-complete.

Where each knob’s authority comes from. θ injects draw mass directly — a slug of diagonal probability, straight onto the equal-score cells. λ₃ has no direct line to the 1X2: XY=W1W2X - Y = W_1 - W_2, so the shock W3W_3 cancels in the goal margin — inside the BP part every handicap event and the raw win/draw/loss split depend on (l1,l2)(l_1, l_2) alone. λ₃ reaches the draw only indirectly, through the Total anchor: the expected total is E[X+Y]=l1+l2+2λ3\mathbb{E}[X+Y] = l_1 + l_2 + 2\lambda_3, so raising λ₃ forces l1+l2l_1 + l_2 down to hold the Total — a lower-scoring match, which crowds probability toward the low, draw-heavy cells. So both knobs are draw-directional: θ pushes the draw up head-on, λ₃ pushes it up sideways.

This is the sharp contrast with the φ/σ\varphi/\sigma candidate’s pull (the φ/σ page). There σ is a genuine home:away lever — it tilts the win and loss halves against each other and owns the home direction structurally, dead only at the ±0.50 line, where the Handicap already pins P(h>a)P(h>a). Here neither knob is a home:away lever — both move the draw — so the home leg is reachable only when the anchored Handicap event differs from P(h>a)P(h>a). At a ±0.50-class line the two coincide, the home residual is frozen, and the two draw-directional knobs collapse onto one direction — the fit defers (θ only, λ₃ = 0). At a deeper line the home leg frees up and the two knobs regain independent traction (θ touches only the diagonal, λ₃ reshapes the low-score region through the Total trade), so Gauss–Newton fits both legs with λ₃ engaging — but as a byproduct of the differing anchor, not a dedicated tilt like σ. The displayed rankRatio quantifies which regime this quote is in. And where φ rescales the diagonal it inherits (multiplicative, ×(1+φ)\times(1+\varphi), keeping each draw cell’s share of the diagonal), θ overwrites the diagonal toward ω’s geometric profile (additive) — visible below in the Correct-Score draw cells and the even-total Exact-Total buckets.

What the pull did:

1X2 legtwo-input gridpulled1X2 targetΔ
Home0.5000000.5000000.509241-9.2e-3
Draw0.2485990.3022980.302298+9.3e-11
Away0.2514010.1977020.188461+9.2e-3

landed with λ3=0.000000,  θ=0.074934\lambda_3 = 0.000000,\;\theta = 0.074934 at fixed ω=1.000000\omega = 1.000000 — Δ home and Δ draw are the minimized residuals; Δ away follows from Σ=1\Sigma = 1 and stays a cross-check.

Cross-check θ — the mixture is additive, so the 1X2 legs come out in closed form with no bisection at all. Freeze the BP part at this stage’s re-solved (l1,l2,λ3)(l_1, l_2, \lambda_3): its three masses are H0=0.540502H_0 = 0.540502 (h > a), D0=0.245781D_0 = 0.245781 (diagonal), A0=0.213717A_0 = 0.213717 (h < a), Σ = 1. Because D(ω)D(\omega) sits entirely on the diagonal (its home/away mass is 0, its draw mass is 1), the achieved legs are a straight-line map in θ:
PH=(1θ)H0PD=(1θ)D0+θPA=(1θ)A0P_H = (1-\theta)H_0 \qquad P_D = (1-\theta)D_0 + \theta \qquad P_A = (1-\theta)A_0
so θ is recoverable from any leg — θ=1PH/H0=0.074934\theta = 1 - P_H/H_0 = 0.074934,   1PA/A0=0.074934\;1 - P_A/A_0 = 0.074934,   (PDD0)/(1D0)=0.074934\;(P_D - D_0)/(1 - D_0) = 0.074934 — all landing on the fit’s θ=0.074934\theta = 0.074934. ω never appears: the whole diagonal is one 1X2 outcome, so it is unidentifiable from the 1X2 (see below). What a one-variable calculator can’t reproduce is the (l1,l2)(l_1, l_2) re-solve and λ₃ — those enter H0/D0/A0H_0/D_0/A_0 as constants, the same division of labour as steps 2–3.
Where the additive leg-map comes from — and the ω unidentifiability

The mixture layers a diagonal-only distribution onto the BP grid, then renormalizes nothing (both components already sum to 1). Splitting J=(1θ)BP+θD(ω)J = (1-\theta)\mathrm{BP} + \theta D(\omega) into its three 1X2 blocks, the off-diagonal blocks get only the (1θ)(1-\theta) factor while the diagonal picks up the full θ\theta (since kwk=1\textstyle\sum_k w_k = 1):

PH=(1θ)H0PD=(1θ)D0+θ ⁣ ⁣kwk=(1θ)D0+θPA=(1θ)A0P_H = (1-\theta)H_0 \qquad P_D = (1-\theta)D_0 + \theta\!\!\sum_{k}w_k = (1-\theta)D_0 + \theta \qquad P_A = (1-\theta)A_0

Contrast the φ/σ candidate, whose φ/σ\varphi/\sigma weighting is multiplicative and needs a renormalizer ZZ PD=(1+φ)D0/ZP_D = (1+\varphi)D_0/Z, so φ rescales the diagonal cells it inherits, keeping their internal shape (2-2 : 3-3 fixed). The DIBP map instead replaces the diagonal’s shape: the surviving (1θ)D0(1-\theta)D_0 keeps the BP profile, but the injected θwk\theta w_k imposes ω’s geometric decay — so which draw cells grow is set by ω, not inherited.

ω is unidentifiable from the 1X2. The total injected diagonal mass is θkwk=θ\theta\sum_k w_k = \theta whatever ω is — so the achieved draw PD=(1θ)D0+θP_D = (1-\theta)D_0 + \theta (and hence home, away) is blind to ω. Move the ω field above and watch: the fitted 1X2 holds to solver tolerance while the Correct-Score draw cells and even-total Exact-Total buckets visibly reshape — a low ω piles the mass onto 1-1, ω = 1 spreads it evenly, ω > 1 leans it up the diagonal toward 3-3, 4-4, … (0-0 never takes injection). That is the deliberate pedagogy of this candidate: the 1X2 pins the diagonal’s level, ω is a free hand on its shape.

Unroll the (λ₃, θ) search — rank check, then the draw bisection

The fit first probes both residual directions at λ₃ = θ = 0 and measures the shape Jacobian’s normalized rank, det(J ⁣J)/tr(J ⁣J)2=1.9×1014\det(J^{\top}\!J)/\operatorname{tr}(J^{\top}\!J)^{2} = 1.9 \times 10^{-14} < 10⁻⁸ — the two knobs collapse onto one direction (both raise the draw, and this Handicap already fixes the home leg). λ₃ pins at 0 — the ridge prefers the pure diagonal-inflation explanation — and the one live knob, θ, is bisected onto the draw:

ilohiθl₁l₂Δ homeΔ draw
20.0000000.4500000.225000001.7259410.607856-9.2e-3+1.0e-1
30.0000000.2250000.112500001.6619240.860680-9.2e-3+2.6e-2
40.0000000.1125000.056250001.6343310.967856-9.2e-3-1.3e-2
50.0562500.1125000.084375001.6478250.915619-9.2e-3+6.6e-3
60.0562500.0843750.070312501.6410060.942060-9.2e-3-3.3e-3
70.0703130.0843750.077343751.6443970.928922-9.2e-3+1.7e-3
80.0703130.0773440.073828121.6426970.935511-9.2e-3-7.8e-4
90.0738280.0773440.075585941.6435460.932222-9.2e-3+4.6e-4
100.0738280.0755860.074707031.6431210.933868-9.2e-3-1.6e-4
110.0747070.0755860.075146481.6433330.933045-9.2e-3+1.5e-4
120.0747070.0751460.074926761.6432270.933456-9.2e-3-4.9e-6
130.0749270.0751460.075036621.6432800.933251-9.2e-3+7.2e-5
140.0749270.0750370.074981691.6432540.933353-9.2e-3+3.4e-5
150.0749270.0749820.074954221.6432410.933405-9.2e-3+1.4e-5
160.0749270.0749540.074940491.6432340.933431-9.2e-3+4.8e-6
170.0749270.0749400.074933621.6432310.933443-9.2e-3-7.2e-8
180.0749340.0749400.074937061.6432320.933437-9.2e-3+2.3e-6
190.0749340.0749370.074935341.6432310.933440-9.2e-3+1.1e-6
200.0749340.0749350.074934481.6432310.933442-9.2e-3+5.3e-7
210.0749340.0749340.074934051.6432310.933443-9.2e-3+2.3e-7
220.0749340.0749340.074933841.6432310.933443-9.2e-3+7.9e-8
230.0749340.0749340.074933731.6432310.933443-9.2e-3+3.7e-9
240.0749340.0749340.074933681.6432310.933443-9.2e-3-3.4e-8
250.0749340.0749340.074933701.6432310.933443-9.2e-3-1.5e-8
260.0749340.0749340.074933721.6432310.933443-9.2e-3-5.8e-9
270.0749340.0749340.074933721.6432310.933443-9.2e-3-1.0e-9
280.0749340.0749340.074933731.6432310.933443-9.2e-3+1.3e-9
290.0749340.0749340.074933731.6432310.933443-9.2e-3+9.3e-11

Bisection moves: Δ draw < 0 keeps the upper half (lo = mid), > 0 the lower; it stops at |Δ draw| < 1e-9. Δ home never moves down the rows — that is the deferral made visible: neither knob can change it once the Handicap pins P(h>a), and λ₃ was ruled out by the rank check.

The per-stage table — the baseline and the pulled solve side by side:

Stagel₁l₂λ₃θΔ coverΔ overΔ homeΔ drawΔ away
Poisson1.6089391.0651213.8e-97.1e-9
DIBP1.6432310.9334430.0000000.0749344.5e-115.6e-11-9.2e-3+9.3e-11+9.2e-3

Hard-anchor gaps: Handicap 4.5e-11, Total 5.6e-11 — the pull never trades them; ω=1.000000\omega = 1.000000 is held fixed throughout. This run deferred: with both knobs draw-directional and the anchored cover event already pinning P(h>a)P(h>a) (the ±0.50 line) — the same event the 1X2 home leg prices — the two collapse onto one direction, so λ₃ = 0 and Δ home above is simply the two books’ disagreement over that event, reported not fought. Quote a Handicap whose anchored event cuts across the 1X2 regions (e.g. −1.00 at −0.59 / +0.51, anchoring P(win by 2+)) and the home residual frees up: the rank climbs and the fit switches to Gauss–Newton.

Shape caveats: the 1X2 fixes the diagonal’s level (its total mass), but its shape — which draw cells carry it — is imposed by ω, not read from a quote. Pin the correct-score profile with correct-score quotes if you need it. Because D(ω)D(\omega) only touches the diagonal from 1-1 up (even totals ≥ 2 — never the 0-goal bucket), Odd/Even and Exact-Total at those even totals move with θ and ω while odd totals and 0-0 do not; and since λ₃ mostly reshapes the low cells through the Total trade, its footprint on the wider ladders is small.