Skip to main content

Odds Generation — soccer · goal · regular · φ/σ tilt

A comparison candidate to the default page. 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) — but step 4 swaps the default page's common-shock λ₃ for a soft multiplicative 1X2 tilt: draw cells scale by (1 + φ), home-win cells by e^σ, away-win cells by e^(−σ), then one renormalization. A damped Gauss–Newton fits (φ, σ), re-solving (λₕ, λₐ) after every trial so the Handicap and Total still hold exactly.

Live. The same remaining-goals frame as the default page: the rest-of-match Handicap reads the grid unchanged, the absolute Total line drops by the goals already scored, and final-result markets settle on current + remaining. The difference is step 4's live reach — the default page's λ₃ shock can only lift the centred draw, so its 1X2 fit greys out while a side leads; the φ/σ tilt weights the final-result regions themselves, which shift with the deficit, so the pull keeps fitting at any score. What stays reachable is still set by the anchors: when the anchored cover event is a union of tilt blocks (prematch, the ±0.5-class line; live, line and deficit aligned) the rank check defers to the φ-only draw solve, exactly as before. At 0-0 the pipeline is byte-identical to prematch.

Where the default page's single λ₃ compromises, the tilt has two independently-identified knobs — φ a direct draw lever, σ a genuine home:away lever — so it generically hits both 1X2 legs exactly, in either direction. The tilt is also the minimum-KL reshape of the score grid matching the quoted 1X2 masses: within each block (home / draw / away) the conditional score distribution is preserved, so Correct Score and Exact Total inherit their shape from the Poisson baseline rather than from an imposed profile. On ±0.5-class handicap lines the home leg is already pinned by the anchor; a rank check detects the collapse and defers to a φ-only draw solve at σ = 0.

Stage 1 — Poisson marginals form the joint score grid
Stage 1 — (λₕ, λₐ) outer-product into the joint score grid

Compare Poisson / soft 1X2 on the grid to see what φ and σ move.

See also the sibling diagonal-inflated BP — proposed (2026-07-16, pending team approval) to replace the default after the 0-0 measurements — which extends the common shock with a diagonal-inflation lever instead.

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 follows the final-result regions, so it keeps fitting at any score — no level-score gate (the default page's λ₃ shock has one; step 4 compares).

λₕ 1.757096λₐ 1.012926λtotal 2.770022φ 0.411700σ 0.000000anchors Δp 4.3e-11 / 3.6e-111X2 Δ -9.2e-3 / -3.8e-10 / +9.2e-3draw 0.2485990.302298grid N=5 · Poisson → 1X2 soft pull
Score grid
Score grid — P(home = h, away = a) ×100
Poisson
λₕ 1.608939λₐ 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
1X2 soft pull
λₕ 1.757096λₐ 1.012926φ 0.411700σ 0.000000draw 0.302298
A=0A=1A=2A=3A=4A=5+
H=08.075.792.930.990.250.06
H=110.0414.365.151.740.440.11
H=28.828.936.391.530.390.09
H=35.175.232.651.260.230.05
H=42.272.301.160.390.140.02
H=5+1.111.120.570.190.050.02
home Σ 0.500000 draw Σ 0.302298 away Σ 0.197702
shade ∝ probability · each stage re-solves (λₕ, λₐ) against the same fair targets · the φ/σ blocks ride the final-result regions, so in live they shift 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.21-0.23-0.33-0.44-0.51-0.61-0.82+0.96+0.66+0.37+0.28+0.22+0.14+0.07+0.06+0.06
A+0.13+0.15+0.25+0.36+0.43+0.53+0.74+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.08+0.09+0.19+0.29+0.35+0.45+0.70+0.96-0.84-0.64-0.54-0.47-0.36-0.25-0.23-0.22
Under-0.16-0.17-0.27-0.37-0.43-0.53-0.78+0.96+0.76+0.56+0.46+0.39+0.28+0.17+0.15+0.14
1X2
OutcomeOdds
Home1.95
Draw3.06
Away4.68
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-09.600-116
2-0100-232
2-1101-218
3-0180-389
3-1181-353
3-2352-359
4-0410-4288
4-1401-4182
4-2772-4203
4-32013-4311
0-0
11
1-1
6.70
2-2
15
3-3
71
4-4
441
AOS
27
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
ipi(z)=1    z=0.026465\textstyle\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 φ/σ pull perturbs it, so that stage re-solves size and split jointly against the same hard targets — both recovered λ 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.

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 softly pulls that shape toward the 1X2 quote with φ (draw) and σ (home/away), then re-solves so the quotes still hold (step 4).

4 · Pull the shape toward the 1X2 (φ draw + σ home/away) — 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 becomes a soft target: two shape knobs pull the grid toward it, and the nested λ re-solve restores the Handicap and Total exactly on every trial — the hard anchors are never sacrificed.

J~[h,a]=J0[h,a] ⁣× ⁣{1+φ,h=aeσ,h>aeσ,h<aJ[h,a]=J~[h,a]/ ⁣u,vJ~[u,v]\widetilde J[h,a] = J_0[h,a]\!\times\!\begin{cases}1+\varphi,&h=a\\ e^{\sigma},&h>a\\ e^{-\sigma},&h
(φ,σ)=argminφ>1,  σ4  (PHpH)2+(PDpD)2+1010σ2(\varphi,\sigma) = \arg\min\limits_{\varphi>-1,\;|\sigma|\le4}\; \left(P_H-p_H^{\ast}\right)^2 + \left(P_D-p_D^{\ast}\right)^2 + 10^{-10}\sigma^2

φ moves the diagonal level (the draw); σ tilts only the win/loss halves, leaving the diagonal — and every ratio within one side — untouched. Both weights apply before one renormalization. A damped Gauss–Newton search minimizes the residual, re-solving (λh,λa)(\lambda_h,\lambda_a) inside every evaluation; the tiny σ ridge picks σ = 0 whenever the Handicap leaves no independent home/away direction. What the pull did:

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

landed with φ=0.411700,  σ=0.000000\varphi = 0.411700,\;\sigma = 0.000000 — Δ home and Δ draw are the minimized residuals; Δ away follows from Σ=1\Sigma = 1 and stays a cross-check.

Cross-check both knobs — the weighting itself is exact closed-form algebra, just like the draw-only φ paste it generalizes. Freeze the base grid at this stage’s re-solved (λh,λa)(\lambda_h, \lambda_a): its three masses are D0=0.234841D_0 = 0.234841 (diagonal), H0=0.548342H_0 = 0.548342 (h > a), A0=0.216817A_0 = 0.216817 (h < a), Σ = 1. Ratios cancel the renormalizer, so each knob inverts alone in the Bisection Calculator — σ from the achieved home:away ratio, interval [4,4][-4,\, 4]:
exp(2*x)*0.54834209/0.21681680 = 2.52905713
then φ from the draw at that σ (off-diagonal constant K=eσH0+eσA0=0.765159K = e^{\sigma}H_0 + e^{-\sigma}A_0 = 0.765159), interval [0.999,2][-0.999,\, 2]:
(1 + x)*0.23484111 / ((1 + x)*0.23484111 + 0.76515889) = 0.30229786
They land on σ=0.000000\sigma = -0.000000 and φ=0.411700\varphi = 0.411700 — the fit’s 0.0000000.000000 and 0.4117000.411700 to calculator tolerance. Away from ±0.50 the achieved legs are the 1X2 targets, so the step-1 numbers work directly; at ±0.50 use the achieved legs above — home:away sits at the Handicap-implied split, and the σ paste returns 0.
Where the pasted expressions come from

The weighting multiplies three disjoint mass blocks by three constants, then renormalizes. On a base grid with D0+H0+A0=1D_0 + H_0 + A_0 = 1 the pulled legs are

PD=(1+φ)D0ZPH=eσH0ZPA=eσA0ZZ=(1+φ)D0+eσH0+eσA0P_D = \frac{(1+\varphi)D_0}{Z} \qquad P_H = \frac{e^{\sigma}H_0}{Z} \qquad P_A = \frac{e^{-\sigma}A_0}{Z} \qquad Z = (1+\varphi)D_0 + e^{\sigma}H_0 + e^{-\sigma}A_0

Divide any two legs and ZZ cancels: PH/PA=e2σH0/A0P_H/P_A = e^{2\sigma}H_0/A_0 pins σ on its own (the σ paste), and with σ known the draw share PD=(1+φ)D0/((1+φ)D0+K)P_D = (1+\varphi)D_0/\big((1+\varphi)D_0 + K\big) rises monotonically in φ from 0 toward 1 — one root, the φ paste. Both even invert in closed form, no bisection strictly needed:

σ=12ln ⁣PHA0PAH0=0.000000φ=PDPHeσH0D01=0.411700\sigma = \tfrac{1}{2}\ln\!\frac{P_H\,A_0}{P_A\,H_0} = -0.000000 \qquad\quad \varphi = \frac{P_D}{P_H}\,e^{\sigma}\,\frac{H_0}{D_0} - 1 = 0.411700

At σ = 0 the constant is K=H0+A0=1D0K = H_0 + A_0 = 1 - D_0 and the φ paste collapses to the old draw-only one-constant form (1+φ)D0/(1+φD0)(1+\varphi)D_0/(1+\varphi D_0) — the soft pull strictly generalizes the old draw calibration. As in steps 2–3, the λ re-solve is the piece a one-variable calculator can’t reproduce, so the frozen masses enter as constants.

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=3.1×1013\det(J^{\top}\!J)/\operatorname{tr}(J^{\top}\!J)^{2} = 3.1 \times 10^{-13} < 10⁻⁸ — the σ direction is dead: this Handicap line already fixes the home leg once the draw is set, so σ pins at 0 and the one live knob, φ, is bisected onto the draw — exactly the pre-σ engine:

ilohiφλₕλₐΔ homeΔ draw
10.0000001.0000000.500000001.7868251.001787-9.2e-3+9.4e-3
20.0000000.5000000.250000001.7008451.033459-9.2e-3-1.9e-2
30.2500000.5000000.375000001.7445371.017575-9.2e-3-4.1e-3
40.3750000.5000000.437500001.7658521.009664-9.2e-3+2.8e-3
50.3750000.4375000.406250001.7552381.013616-9.2e-3-6.0e-4
60.4062500.4375000.421875001.7605561.011639-9.2e-3+1.1e-3
70.4062500.4218750.414062501.7579001.012627-9.2e-3+2.6e-4
80.4062500.4140630.410156251.7565701.013121-9.2e-3-1.7e-4
90.4101560.4140630.412109381.7572351.012874-9.2e-3+4.5e-5
100.4101560.4121090.411132811.7569021.012998-9.2e-3-6.3e-5
110.4111330.4121090.411621091.7570691.012936-9.2e-3-8.7e-6
120.4116210.4121090.411865231.7571521.012905-9.2e-3+1.8e-5
130.4116210.4118650.411743161.7571101.012920-9.2e-3+4.7e-6
140.4116210.4117430.411682131.7570891.012928-9.2e-3-2.0e-6
150.4116820.4117430.411712651.7571001.012924-9.2e-3+1.4e-6
160.4116820.4117130.411697391.7570951.012926-9.2e-3-3.3e-7
170.4116970.4117130.411705021.7570971.012925-9.2e-3+5.1e-7
180.4116970.4117050.411701201.7570961.012926-9.2e-3+9.2e-8
190.4116970.4117010.411699301.7570951.012926-9.2e-3-1.2e-7
200.4116990.4117010.411700251.7570961.012926-9.2e-3-1.3e-8
210.4117000.4117010.411700731.7570961.012926-9.2e-3+3.9e-8
220.4117000.4117010.411700491.7570961.012926-9.2e-3+1.3e-8
230.4117000.4117000.411700371.7570961.012926-9.2e-3-3.8e-10

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: no φ can change it, and σ was ruled out by the rank check.

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

Stageλₕλₐλₕ+λₐφσΔ coverΔ overΔ homeΔ drawΔ away
Poisson1.6089391.0651212.6740603.8e-97.1e-9
1X2 soft pull1.7570961.0129262.7700220.4117000.0000004.3e-113.6e-11-9.2e-3-3.8e-10+9.2e-3

Hard-anchor gaps: Handicap 4.3e-11, Total 3.6e-11 — the pull never trades them. This run deferred: the rank check found no independent home/away direction — the ±0.50-class line already pins the home leg once the draw is set— and σ = 0, so Δ home above is simply the two books’ disagreement over the same event — reported, not fought. To watch σ engage, quote a line whose cover event cuts across the 1X2 regions: set the Handicap to −1.00 at −0.59 / +0.51 and Δ home collapses to solver tolerance with σ ≈ 0.18.

Shape caveats carry over from the draw-only fit: one draw number fixes the diagonal’s level, while the 2-2/3-3/4-4 shape rides on the flat wk=1w_k = 1 — pin it with correct-score quotes; the flat scaling acts only on even totals, nudging Odd/Even and Exact-Total. σ is likewise flat across each win/loss half, so ratios within a side (2-1 : 3-1) never change.