FA-84776 / Betting odds conversion / Open access
Draw-no-bet price derived by renormalising home and away · case 01
Draw-no-bet prices ignore the draw refund value in the stated formula.
ROOT CAUSE
The home DNB price is computed from the home and away book only.
VERIFIED REPAIR
Use side * (1 - 1/draw).
Unsuccessful approach: Using side * draw / (draw - 1) lengthens the price instead of shortening it.
Case contract
Derive secondary markets from 1X2 decimal prices [home, draw, away], keeping the original margin. Draw no bet side price = side * (1 - 1/draw). Double chance for two outcomes p, q = p * q / (p + q): 1X from home and draw, 12 from home and away, X2 from draw and away. Return a dict with keys dnb_home, dnb_away, 1X, 12, X2, values rounded half up to two decimals.
Why this case matters
Sportsbooks price derived markets from the main 1X2 line.
1 / The failure
Exit 1"""Failure Map reference implementation. Python standard library only."""
import json
from fractions import Fraction
import math
N = 1
observations = []
def solve(prices):
h, x, a = (Fraction(p) for p in prices)
def dc(p, q):
return p * q / (p + q)
def fmt(v):
c = math.floor(v * 100 + Fraction(1, 2))
return '%d.%02d' % (c // 100, c % 100)
return {'dnb_home': fmt((1 / h + 1 / a) * h), 'dnb_away': fmt(a * (1 - 1 / x)),
'1X': fmt(dc(h, x)), '12': fmt(dc(h, a)), 'X2': fmt(dc(x, a))}
def check(label, actual, expected):
observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
def run(args):
try:
return solve(*args)
except Exception as exc:
return 'raised ' + type(exc).__name__
cases = [[('control balanced match',
(['2.50', '3.20', '3.00'],),
{'12': '1.36', '1X': '1.40', 'X2': '1.55', 'dnb_away': '2.06', 'dnb_home': '1.72'}),
('control strong favourite',
(['1.50', '4.00', '6.00'],),
{'12': '1.20', '1X': '1.09', 'X2': '2.40', 'dnb_away': '4.50', 'dnb_home': '1.13'}),
('boundary symmetric prices',
(['3.00', '3.00', '3.00'],),
{'12': '1.50', '1X': '1.50', 'X2': '1.50', 'dnb_away': '2.00', 'dnb_home': '2.00'}),
('control home favourite',
(['2.00', '3.50', '4.00'],),
{'12': '1.33', '1X': '1.27', 'X2': '1.87', 'dnb_away': '2.86', 'dnb_home': '1.43'}),
('regression: draw no bet formula',
(['3.08', '3.98', '1.91'],),
{'12': '1.18', '1X': '1.74', 'X2': '1.29', 'dnb_away': '1.43', 'dnb_home': '2.31'}),
('variant scenario 1',
(['2.70', '2.20', '3.94'],),
{'12': '1.60', '1X': '1.21', 'X2': '1.41', 'dnb_away': '2.15', 'dnb_home': '1.47'}),
('variant scenario 2',
(['3.11', '3.69', '2.21'],),
{'12': '1.29', '1X': '1.69', 'X2': '1.38', 'dnb_away': '1.61', 'dnb_home': '2.27'})],
[('control balanced match',
(['2.50', '3.20', '3.00'],),
{'12': '1.36', '1X': '1.40', 'X2': '1.55', 'dnb_away': '2.06', 'dnb_home': '1.72'}),
('control strong favourite',
(['1.50', '4.00', '6.00'],),
{'12': '1.20', '1X': '1.09', 'X2': '2.40', 'dnb_away': '4.50', 'dnb_home': '1.13'}),
('boundary symmetric prices',
(['3.00', '3.00', '3.00'],),
{'12': '1.50', '1X': '1.50', 'X2': '1.50', 'dnb_away': '2.00', 'dnb_home': '2.00'}),
('control home favourite',
(['2.00', '3.50', '4.00'],),
{'12': '1.33', '1X': '1.27', 'X2': '1.87', 'dnb_away': '2.86', 'dnb_home': '1.43'}),
('regression: draw no bet formula',
(['2.39', '4.53', '2.23'],),
{'12': '1.15', '1X': '1.56', 'X2': '1.49', 'dnb_away': '1.74', 'dnb_home': '1.86'}),
('variant scenario 1',
(['2.40', '2.78', '3.12'],),
{'12': '1.36', '1X': '1.29', 'X2': '1.47', 'dnb_away': '2.00', 'dnb_home': '1.54'}),
('variant scenario 2',
(['2.45', '3.59', '2.74'],),
{'12': '1.29', '1X': '1.46', 'X2': '1.55', 'dnb_away': '1.98', 'dnb_home': '1.77'})],
[('control balanced match',
(['2.50', '3.20', '3.00'],),
{'12': '1.36', '1X': '1.40', 'X2': '1.55', 'dnb_away': '2.06', 'dnb_home': '1.72'}),
('control strong favourite',
(['1.50', '4.00', '6.00'],),
{'12': '1.20', '1X': '1.09', 'X2': '2.40', 'dnb_away': '4.50', 'dnb_home': '1.13'}),
('boundary symmetric prices',
(['3.00', '3.00', '3.00'],),
{'12': '1.50', '1X': '1.50', 'X2': '1.50', 'dnb_away': '2.00', 'dnb_home': '2.00'}),
('control home favourite',
(['2.00', '3.50', '4.00'],),
{'12': '1.33', '1X': '1.27', 'X2': '1.87', 'dnb_away': '2.86', 'dnb_home': '1.43'}),
('regression: draw no bet formula',
(['2.12', '4.35', '2.69'],),
{'12': '1.19', '1X': '1.43', 'X2': '1.66', 'dnb_away': '2.07', 'dnb_home': '1.63'}),
('variant scenario 1',
(['2.72', '5.41', '2.07'],),
{'12': '1.18', '1X': '1.81', 'X2': '1.50', 'dnb_away': '1.69', 'dnb_home': '2.22'}),
('variant scenario 2',
(['3.50', '3.49', '2.07'],),
{'12': '1.30', '1X': '1.75', 'X2': '1.30', 'dnb_away': '1.48', 'dnb_home': '2.50'})],
[('control balanced match',
(['2.50', '3.20', '3.00'],),
{'12': '1.36', '1X': '1.40', 'X2': '1.55', 'dnb_away': '2.06', 'dnb_home': '1.72'}),
('control strong favourite',
(['1.50', '4.00', '6.00'],),
{'12': '1.20', '1X': '1.09', 'X2': '2.40', 'dnb_away': '4.50', 'dnb_home': '1.13'}),
('boundary symmetric prices',
(['3.00', '3.00', '3.00'],),
{'12': '1.50', '1X': '1.50', 'X2': '1.50', 'dnb_away': '2.00', 'dnb_home': '2.00'}),
('control home favourite',
(['2.00', '3.50', '4.00'],),
{'12': '1.33', '1X': '1.27', 'X2': '1.87', 'dnb_away': '2.86', 'dnb_home': '1.43'}),
('regression: draw no bet formula',
(['5.07', '3.53', '1.84'],),
{'12': '1.35', '1X': '2.08', 'X2': '1.21', 'dnb_away': '1.32', 'dnb_home': '3.63'}),
('variant scenario 1',
(['1.77', '3.37', '5.28'],),
{'12': '1.33', '1X': '1.16', 'X2': '2.06', 'dnb_away': '3.71', 'dnb_home': '1.24'}),
('variant scenario 2',
(['3.90', '3.46', '2.07'],),
{'12': '1.35', '1X': '1.83', 'X2': '1.30', 'dnb_away': '1.47', 'dnb_home': '2.77'})],
[('control balanced match',
(['2.50', '3.20', '3.00'],),
{'12': '1.36', '1X': '1.40', 'X2': '1.55', 'dnb_away': '2.06', 'dnb_home': '1.72'}),
('control strong favourite',
(['1.50', '4.00', '6.00'],),
{'12': '1.20', '1X': '1.09', 'X2': '2.40', 'dnb_away': '4.50', 'dnb_home': '1.13'}),
('boundary symmetric prices',
(['3.00', '3.00', '3.00'],),
{'12': '1.50', '1X': '1.50', 'X2': '1.50', 'dnb_away': '2.00', 'dnb_home': '2.00'}),
('control home favourite',
(['2.00', '3.50', '4.00'],),
{'12': '1.33', '1X': '1.27', 'X2': '1.87', 'dnb_away': '2.86', 'dnb_home': '1.43'}),
('regression: draw no bet formula',
(['2.04', '3.57', '3.79'],),
{'12': '1.33', '1X': '1.30', 'X2': '1.84', 'dnb_away': '2.73', 'dnb_home': '1.47'}),
('variant scenario 1',
(['3.66', '3.49', '2.06'],),
{'12': '1.32', '1X': '1.79', 'X2': '1.30', 'dnb_away': '1.47', 'dnb_home': '2.61'}),
('variant scenario 2',
(['3.91', '3.51', '2.01'],),
{'12': '1.33', '1X': '1.85', 'X2': '1.28', 'dnb_away': '1.44', 'dnb_home': '2.80'})]]
for label, args, expected in cases[N - 1]:
check(label, run(args), expected)
print(json.dumps({"observations": observations, "passed": all(x["passed"] for x in observations)}, ensure_ascii=False))
raise SystemExit(0 if all(x["passed"] for x in observations) else 1)
| Boundary fixture | Actual | Expected | Outcome |
|---|---|---|---|
| control balanced match | {'12': '1.36', '1X': '1.40', 'X2': '1.55', 'dnb_away': '2.06', 'dnb_home': '1.83'} | {'12': '1.36', '1X': '1.40', 'X2': '1.55', 'dnb_away': '2.06', 'dnb_home': '1.72'} | Failed |
| control strong favourite | {'12': '1.20', '1X': '1.09', 'X2': '2.40', 'dnb_away': '4.50', 'dnb_home': '1.25'} | {'12': '1.20', '1X': '1.09', 'X2': '2.40', 'dnb_away': '4.50', 'dnb_home': '1.13'} | Failed |
| boundary symmetric prices | {'12': '1.50', '1X': '1.50', 'X2': '1.50', 'dnb_away': '2.00', 'dnb_home': '2.00'} | {'12': '1.50', '1X': '1.50', 'X2': '1.50', 'dnb_away': '2.00', 'dnb_home': '2.00'} | Passed |
| control home favourite | {'12': '1.33', '1X': '1.27', 'X2': '1.87', 'dnb_away': '2.86', 'dnb_home': '1.50'} | {'12': '1.33', '1X': '1.27', 'X2': '1.87', 'dnb_away': '2.86', 'dnb_home': '1.43'} | Failed |
| regression: draw no bet formula | {'12': '1.18', '1X': '1.74', 'X2': '1.29', 'dnb_away': '1.43', 'dnb_home': '2.61'} | {'12': '1.18', '1X': '1.74', 'X2': '1.29', 'dnb_away': '1.43', 'dnb_home': '2.31'} | Failed |
| variant scenario 1 | {'12': '1.60', '1X': '1.21', 'X2': '1.41', 'dnb_away': '2.15', 'dnb_home': '1.69'} | {'12': '1.60', '1X': '1.21', 'X2': '1.41', 'dnb_away': '2.15', 'dnb_home': '1.47'} | Failed |
| variant scenario 2 | {'12': '1.29', '1X': '1.69', 'X2': '1.38', 'dnb_away': '1.61', 'dnb_home': '2.41'} | {'12': '1.29', '1X': '1.69', 'X2': '1.38', 'dnb_away': '1.61', 'dnb_home': '2.27'} | Failed |
SHA-256 / 0cd29329f9c44646f8dfeb0f5a83788506337f57470baa29b391716f9019a687
2 / The unsuccessful fix
Exit 1"""Failure Map reference implementation. Python standard library only."""
import json
from fractions import Fraction
import math
N = 1
observations = []
def solve(prices):
h, x, a = (Fraction(p) for p in prices)
def dc(p, q):
return p * q / (p + q)
def fmt(v):
c = math.floor(v * 100 + Fraction(1, 2))
return '%d.%02d' % (c // 100, c % 100)
return {'dnb_home': fmt(h * x / (x - 1)), 'dnb_away': fmt(a * (1 - 1 / x)),
'1X': fmt(dc(h, x)), '12': fmt(dc(h, a)), 'X2': fmt(dc(x, a))}
def check(label, actual, expected):
observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
def run(args):
try:
return solve(*args)
except Exception as exc:
return 'raised ' + type(exc).__name__
cases = [[('control balanced match',
(['2.50', '3.20', '3.00'],),
{'12': '1.36', '1X': '1.40', 'X2': '1.55', 'dnb_away': '2.06', 'dnb_home': '1.72'}),
('control strong favourite',
(['1.50', '4.00', '6.00'],),
{'12': '1.20', '1X': '1.09', 'X2': '2.40', 'dnb_away': '4.50', 'dnb_home': '1.13'}),
('boundary symmetric prices',
(['3.00', '3.00', '3.00'],),
{'12': '1.50', '1X': '1.50', 'X2': '1.50', 'dnb_away': '2.00', 'dnb_home': '2.00'}),
('control home favourite',
(['2.00', '3.50', '4.00'],),
{'12': '1.33', '1X': '1.27', 'X2': '1.87', 'dnb_away': '2.86', 'dnb_home': '1.43'}),
('regression: draw no bet formula',
(['3.08', '3.98', '1.91'],),
{'12': '1.18', '1X': '1.74', 'X2': '1.29', 'dnb_away': '1.43', 'dnb_home': '2.31'}),
('variant scenario 1',
(['2.70', '2.20', '3.94'],),
{'12': '1.60', '1X': '1.21', 'X2': '1.41', 'dnb_away': '2.15', 'dnb_home': '1.47'}),
('variant scenario 2',
(['3.11', '3.69', '2.21'],),
{'12': '1.29', '1X': '1.69', 'X2': '1.38', 'dnb_away': '1.61', 'dnb_home': '2.27'})],
[('control balanced match',
(['2.50', '3.20', '3.00'],),
{'12': '1.36', '1X': '1.40', 'X2': '1.55', 'dnb_away': '2.06', 'dnb_home': '1.72'}),
('control strong favourite',
(['1.50', '4.00', '6.00'],),
{'12': '1.20', '1X': '1.09', 'X2': '2.40', 'dnb_away': '4.50', 'dnb_home': '1.13'}),
('boundary symmetric prices',
(['3.00', '3.00', '3.00'],),
{'12': '1.50', '1X': '1.50', 'X2': '1.50', 'dnb_away': '2.00', 'dnb_home': '2.00'}),
('control home favourite',
(['2.00', '3.50', '4.00'],),
{'12': '1.33', '1X': '1.27', 'X2': '1.87', 'dnb_away': '2.86', 'dnb_home': '1.43'}),
('regression: draw no bet formula',
(['2.39', '4.53', '2.23'],),
{'12': '1.15', '1X': '1.56', 'X2': '1.49', 'dnb_away': '1.74', 'dnb_home': '1.86'}),
('variant scenario 1',
(['2.40', '2.78', '3.12'],),
{'12': '1.36', '1X': '1.29', 'X2': '1.47', 'dnb_away': '2.00', 'dnb_home': '1.54'}),
('variant scenario 2',
(['2.45', '3.59', '2.74'],),
{'12': '1.29', '1X': '1.46', 'X2': '1.55', 'dnb_away': '1.98', 'dnb_home': '1.77'})],
[('control balanced match',
(['2.50', '3.20', '3.00'],),
{'12': '1.36', '1X': '1.40', 'X2': '1.55', 'dnb_away': '2.06', 'dnb_home': '1.72'}),
('control strong favourite',
(['1.50', '4.00', '6.00'],),
{'12': '1.20', '1X': '1.09', 'X2': '2.40', 'dnb_away': '4.50', 'dnb_home': '1.13'}),
('boundary symmetric prices',
(['3.00', '3.00', '3.00'],),
{'12': '1.50', '1X': '1.50', 'X2': '1.50', 'dnb_away': '2.00', 'dnb_home': '2.00'}),
('control home favourite',
(['2.00', '3.50', '4.00'],),
{'12': '1.33', '1X': '1.27', 'X2': '1.87', 'dnb_away': '2.86', 'dnb_home': '1.43'}),
('regression: draw no bet formula',
(['2.12', '4.35', '2.69'],),
{'12': '1.19', '1X': '1.43', 'X2': '1.66', 'dnb_away': '2.07', 'dnb_home': '1.63'}),
('variant scenario 1',
(['2.72', '5.41', '2.07'],),
{'12': '1.18', '1X': '1.81', 'X2': '1.50', 'dnb_away': '1.69', 'dnb_home': '2.22'}),
('variant scenario 2',
(['3.50', '3.49', '2.07'],),
{'12': '1.30', '1X': '1.75', 'X2': '1.30', 'dnb_away': '1.48', 'dnb_home': '2.50'})],
[('control balanced match',
(['2.50', '3.20', '3.00'],),
{'12': '1.36', '1X': '1.40', 'X2': '1.55', 'dnb_away': '2.06', 'dnb_home': '1.72'}),
('control strong favourite',
(['1.50', '4.00', '6.00'],),
{'12': '1.20', '1X': '1.09', 'X2': '2.40', 'dnb_away': '4.50', 'dnb_home': '1.13'}),
('boundary symmetric prices',
(['3.00', '3.00', '3.00'],),
{'12': '1.50', '1X': '1.50', 'X2': '1.50', 'dnb_away': '2.00', 'dnb_home': '2.00'}),
('control home favourite',
(['2.00', '3.50', '4.00'],),
{'12': '1.33', '1X': '1.27', 'X2': '1.87', 'dnb_away': '2.86', 'dnb_home': '1.43'}),
('regression: draw no bet formula',
(['5.07', '3.53', '1.84'],),
{'12': '1.35', '1X': '2.08', 'X2': '1.21', 'dnb_away': '1.32', 'dnb_home': '3.63'}),
('variant scenario 1',
(['1.77', '3.37', '5.28'],),
{'12': '1.33', '1X': '1.16', 'X2': '2.06', 'dnb_away': '3.71', 'dnb_home': '1.24'}),
('variant scenario 2',
(['3.90', '3.46', '2.07'],),
{'12': '1.35', '1X': '1.83', 'X2': '1.30', 'dnb_away': '1.47', 'dnb_home': '2.77'})],
[('control balanced match',
(['2.50', '3.20', '3.00'],),
{'12': '1.36', '1X': '1.40', 'X2': '1.55', 'dnb_away': '2.06', 'dnb_home': '1.72'}),
('control strong favourite',
(['1.50', '4.00', '6.00'],),
{'12': '1.20', '1X': '1.09', 'X2': '2.40', 'dnb_away': '4.50', 'dnb_home': '1.13'}),
('boundary symmetric prices',
(['3.00', '3.00', '3.00'],),
{'12': '1.50', '1X': '1.50', 'X2': '1.50', 'dnb_away': '2.00', 'dnb_home': '2.00'}),
('control home favourite',
(['2.00', '3.50', '4.00'],),
{'12': '1.33', '1X': '1.27', 'X2': '1.87', 'dnb_away': '2.86', 'dnb_home': '1.43'}),
('regression: draw no bet formula',
(['2.04', '3.57', '3.79'],),
{'12': '1.33', '1X': '1.30', 'X2': '1.84', 'dnb_away': '2.73', 'dnb_home': '1.47'}),
('variant scenario 1',
(['3.66', '3.49', '2.06'],),
{'12': '1.32', '1X': '1.79', 'X2': '1.30', 'dnb_away': '1.47', 'dnb_home': '2.61'}),
('variant scenario 2',
(['3.91', '3.51', '2.01'],),
{'12': '1.33', '1X': '1.85', 'X2': '1.28', 'dnb_away': '1.44', 'dnb_home': '2.80'})]]
for label, args, expected in cases[N - 1]:
check(label, run(args), expected)
print(json.dumps({"observations": observations, "passed": all(x["passed"] for x in observations)}, ensure_ascii=False))
raise SystemExit(0 if all(x["passed"] for x in observations) else 1)
| Boundary fixture | Actual | Expected | Outcome |
|---|---|---|---|
| control balanced match | {'12': '1.36', '1X': '1.40', 'X2': '1.55', 'dnb_away': '2.06', 'dnb_home': '3.64'} | {'12': '1.36', '1X': '1.40', 'X2': '1.55', 'dnb_away': '2.06', 'dnb_home': '1.72'} | Failed |
| control strong favourite | {'12': '1.20', '1X': '1.09', 'X2': '2.40', 'dnb_away': '4.50', 'dnb_home': '2.00'} | {'12': '1.20', '1X': '1.09', 'X2': '2.40', 'dnb_away': '4.50', 'dnb_home': '1.13'} | Failed |
| boundary symmetric prices | {'12': '1.50', '1X': '1.50', 'X2': '1.50', 'dnb_away': '2.00', 'dnb_home': '4.50'} | {'12': '1.50', '1X': '1.50', 'X2': '1.50', 'dnb_away': '2.00', 'dnb_home': '2.00'} | Failed |
| control home favourite | {'12': '1.33', '1X': '1.27', 'X2': '1.87', 'dnb_away': '2.86', 'dnb_home': '2.80'} | {'12': '1.33', '1X': '1.27', 'X2': '1.87', 'dnb_away': '2.86', 'dnb_home': '1.43'} | Failed |
| regression: draw no bet formula | {'12': '1.18', '1X': '1.74', 'X2': '1.29', 'dnb_away': '1.43', 'dnb_home': '4.11'} | {'12': '1.18', '1X': '1.74', 'X2': '1.29', 'dnb_away': '1.43', 'dnb_home': '2.31'} | Failed |
| variant scenario 1 | {'12': '1.60', '1X': '1.21', 'X2': '1.41', 'dnb_away': '2.15', 'dnb_home': '4.95'} | {'12': '1.60', '1X': '1.21', 'X2': '1.41', 'dnb_away': '2.15', 'dnb_home': '1.47'} | Failed |
| variant scenario 2 | {'12': '1.29', '1X': '1.69', 'X2': '1.38', 'dnb_away': '1.61', 'dnb_home': '4.27'} | {'12': '1.29', '1X': '1.69', 'X2': '1.38', 'dnb_away': '1.61', 'dnb_home': '2.27'} | Failed |
SHA-256 / 44facfe1faaacbd75d37fb3d0d9438677375dee205b438b1f47b98e7e09701b6
3 / The verified repair
Exit 0"""Failure Map reference implementation. Python standard library only."""
import json
from fractions import Fraction
import math
N = 1
observations = []
def solve(prices):
h, x, a = (Fraction(p) for p in prices)
def dc(p, q):
return p * q / (p + q)
def fmt(v):
c = math.floor(v * 100 + Fraction(1, 2))
return '%d.%02d' % (c // 100, c % 100)
return {'dnb_home': fmt(h * (1 - 1 / x)), 'dnb_away': fmt(a * (1 - 1 / x)),
'1X': fmt(dc(h, x)), '12': fmt(dc(h, a)), 'X2': fmt(dc(x, a))}
def check(label, actual, expected):
observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
def run(args):
try:
return solve(*args)
except Exception as exc:
return 'raised ' + type(exc).__name__
cases = [[('control balanced match',
(['2.50', '3.20', '3.00'],),
{'12': '1.36', '1X': '1.40', 'X2': '1.55', 'dnb_away': '2.06', 'dnb_home': '1.72'}),
('control strong favourite',
(['1.50', '4.00', '6.00'],),
{'12': '1.20', '1X': '1.09', 'X2': '2.40', 'dnb_away': '4.50', 'dnb_home': '1.13'}),
('boundary symmetric prices',
(['3.00', '3.00', '3.00'],),
{'12': '1.50', '1X': '1.50', 'X2': '1.50', 'dnb_away': '2.00', 'dnb_home': '2.00'}),
('control home favourite',
(['2.00', '3.50', '4.00'],),
{'12': '1.33', '1X': '1.27', 'X2': '1.87', 'dnb_away': '2.86', 'dnb_home': '1.43'}),
('regression: draw no bet formula',
(['3.08', '3.98', '1.91'],),
{'12': '1.18', '1X': '1.74', 'X2': '1.29', 'dnb_away': '1.43', 'dnb_home': '2.31'}),
('variant scenario 1',
(['2.70', '2.20', '3.94'],),
{'12': '1.60', '1X': '1.21', 'X2': '1.41', 'dnb_away': '2.15', 'dnb_home': '1.47'}),
('variant scenario 2',
(['3.11', '3.69', '2.21'],),
{'12': '1.29', '1X': '1.69', 'X2': '1.38', 'dnb_away': '1.61', 'dnb_home': '2.27'})],
[('control balanced match',
(['2.50', '3.20', '3.00'],),
{'12': '1.36', '1X': '1.40', 'X2': '1.55', 'dnb_away': '2.06', 'dnb_home': '1.72'}),
('control strong favourite',
(['1.50', '4.00', '6.00'],),
{'12': '1.20', '1X': '1.09', 'X2': '2.40', 'dnb_away': '4.50', 'dnb_home': '1.13'}),
('boundary symmetric prices',
(['3.00', '3.00', '3.00'],),
{'12': '1.50', '1X': '1.50', 'X2': '1.50', 'dnb_away': '2.00', 'dnb_home': '2.00'}),
('control home favourite',
(['2.00', '3.50', '4.00'],),
{'12': '1.33', '1X': '1.27', 'X2': '1.87', 'dnb_away': '2.86', 'dnb_home': '1.43'}),
('regression: draw no bet formula',
(['2.39', '4.53', '2.23'],),
{'12': '1.15', '1X': '1.56', 'X2': '1.49', 'dnb_away': '1.74', 'dnb_home': '1.86'}),
('variant scenario 1',
(['2.40', '2.78', '3.12'],),
{'12': '1.36', '1X': '1.29', 'X2': '1.47', 'dnb_away': '2.00', 'dnb_home': '1.54'}),
('variant scenario 2',
(['2.45', '3.59', '2.74'],),
{'12': '1.29', '1X': '1.46', 'X2': '1.55', 'dnb_away': '1.98', 'dnb_home': '1.77'})],
[('control balanced match',
(['2.50', '3.20', '3.00'],),
{'12': '1.36', '1X': '1.40', 'X2': '1.55', 'dnb_away': '2.06', 'dnb_home': '1.72'}),
('control strong favourite',
(['1.50', '4.00', '6.00'],),
{'12': '1.20', '1X': '1.09', 'X2': '2.40', 'dnb_away': '4.50', 'dnb_home': '1.13'}),
('boundary symmetric prices',
(['3.00', '3.00', '3.00'],),
{'12': '1.50', '1X': '1.50', 'X2': '1.50', 'dnb_away': '2.00', 'dnb_home': '2.00'}),
('control home favourite',
(['2.00', '3.50', '4.00'],),
{'12': '1.33', '1X': '1.27', 'X2': '1.87', 'dnb_away': '2.86', 'dnb_home': '1.43'}),
('regression: draw no bet formula',
(['2.12', '4.35', '2.69'],),
{'12': '1.19', '1X': '1.43', 'X2': '1.66', 'dnb_away': '2.07', 'dnb_home': '1.63'}),
('variant scenario 1',
(['2.72', '5.41', '2.07'],),
{'12': '1.18', '1X': '1.81', 'X2': '1.50', 'dnb_away': '1.69', 'dnb_home': '2.22'}),
('variant scenario 2',
(['3.50', '3.49', '2.07'],),
{'12': '1.30', '1X': '1.75', 'X2': '1.30', 'dnb_away': '1.48', 'dnb_home': '2.50'})],
[('control balanced match',
(['2.50', '3.20', '3.00'],),
{'12': '1.36', '1X': '1.40', 'X2': '1.55', 'dnb_away': '2.06', 'dnb_home': '1.72'}),
('control strong favourite',
(['1.50', '4.00', '6.00'],),
{'12': '1.20', '1X': '1.09', 'X2': '2.40', 'dnb_away': '4.50', 'dnb_home': '1.13'}),
('boundary symmetric prices',
(['3.00', '3.00', '3.00'],),
{'12': '1.50', '1X': '1.50', 'X2': '1.50', 'dnb_away': '2.00', 'dnb_home': '2.00'}),
('control home favourite',
(['2.00', '3.50', '4.00'],),
{'12': '1.33', '1X': '1.27', 'X2': '1.87', 'dnb_away': '2.86', 'dnb_home': '1.43'}),
('regression: draw no bet formula',
(['5.07', '3.53', '1.84'],),
{'12': '1.35', '1X': '2.08', 'X2': '1.21', 'dnb_away': '1.32', 'dnb_home': '3.63'}),
('variant scenario 1',
(['1.77', '3.37', '5.28'],),
{'12': '1.33', '1X': '1.16', 'X2': '2.06', 'dnb_away': '3.71', 'dnb_home': '1.24'}),
('variant scenario 2',
(['3.90', '3.46', '2.07'],),
{'12': '1.35', '1X': '1.83', 'X2': '1.30', 'dnb_away': '1.47', 'dnb_home': '2.77'})],
[('control balanced match',
(['2.50', '3.20', '3.00'],),
{'12': '1.36', '1X': '1.40', 'X2': '1.55', 'dnb_away': '2.06', 'dnb_home': '1.72'}),
('control strong favourite',
(['1.50', '4.00', '6.00'],),
{'12': '1.20', '1X': '1.09', 'X2': '2.40', 'dnb_away': '4.50', 'dnb_home': '1.13'}),
('boundary symmetric prices',
(['3.00', '3.00', '3.00'],),
{'12': '1.50', '1X': '1.50', 'X2': '1.50', 'dnb_away': '2.00', 'dnb_home': '2.00'}),
('control home favourite',
(['2.00', '3.50', '4.00'],),
{'12': '1.33', '1X': '1.27', 'X2': '1.87', 'dnb_away': '2.86', 'dnb_home': '1.43'}),
('regression: draw no bet formula',
(['2.04', '3.57', '3.79'],),
{'12': '1.33', '1X': '1.30', 'X2': '1.84', 'dnb_away': '2.73', 'dnb_home': '1.47'}),
('variant scenario 1',
(['3.66', '3.49', '2.06'],),
{'12': '1.32', '1X': '1.79', 'X2': '1.30', 'dnb_away': '1.47', 'dnb_home': '2.61'}),
('variant scenario 2',
(['3.91', '3.51', '2.01'],),
{'12': '1.33', '1X': '1.85', 'X2': '1.28', 'dnb_away': '1.44', 'dnb_home': '2.80'})]]
for label, args, expected in cases[N - 1]:
check(label, run(args), expected)
print(json.dumps({"observations": observations, "passed": all(x["passed"] for x in observations)}, ensure_ascii=False))
raise SystemExit(0 if all(x["passed"] for x in observations) else 1)
| Boundary fixture | Actual | Expected | Outcome |
|---|---|---|---|
| control balanced match | {'12': '1.36', '1X': '1.40', 'X2': '1.55', 'dnb_away': '2.06', 'dnb_home': '1.72'} | {'12': '1.36', '1X': '1.40', 'X2': '1.55', 'dnb_away': '2.06', 'dnb_home': '1.72'} | Passed |
| control strong favourite | {'12': '1.20', '1X': '1.09', 'X2': '2.40', 'dnb_away': '4.50', 'dnb_home': '1.13'} | {'12': '1.20', '1X': '1.09', 'X2': '2.40', 'dnb_away': '4.50', 'dnb_home': '1.13'} | Passed |
| boundary symmetric prices | {'12': '1.50', '1X': '1.50', 'X2': '1.50', 'dnb_away': '2.00', 'dnb_home': '2.00'} | {'12': '1.50', '1X': '1.50', 'X2': '1.50', 'dnb_away': '2.00', 'dnb_home': '2.00'} | Passed |
| control home favourite | {'12': '1.33', '1X': '1.27', 'X2': '1.87', 'dnb_away': '2.86', 'dnb_home': '1.43'} | {'12': '1.33', '1X': '1.27', 'X2': '1.87', 'dnb_away': '2.86', 'dnb_home': '1.43'} | Passed |
| regression: draw no bet formula | {'12': '1.18', '1X': '1.74', 'X2': '1.29', 'dnb_away': '1.43', 'dnb_home': '2.31'} | {'12': '1.18', '1X': '1.74', 'X2': '1.29', 'dnb_away': '1.43', 'dnb_home': '2.31'} | Passed |
| variant scenario 1 | {'12': '1.60', '1X': '1.21', 'X2': '1.41', 'dnb_away': '2.15', 'dnb_home': '1.47'} | {'12': '1.60', '1X': '1.21', 'X2': '1.41', 'dnb_away': '2.15', 'dnb_home': '1.47'} | Passed |
| variant scenario 2 | {'12': '1.29', '1X': '1.69', 'X2': '1.38', 'dnb_away': '1.61', 'dnb_home': '2.27'} | {'12': '1.29', '1X': '1.69', 'X2': '1.38', 'dnb_away': '1.61', 'dnb_home': '2.27'} | Passed |
SHA-256 / 56003fa37b9ef37572cea2a79f45d1685c6d9b84b2e23c4bb25c1800d98b5eeb
Verification & scope
Stipulated, bounded toy contract stated in the contract field; not a claim of conformance with any operator, exchange or regulator rule set. This reproducer isolates one failure mechanism. Results cover the supplied fixtures. Variants within a family share a test contract and should remain grouped when constructing evaluation splits. Related mechanisms with a shared evaluation_group must also remain together; these controlled models are not independent production incidents.
Observations recorded using Python 3.12.14 at 2026-09-29T14:50:34.184464+00:00.
Case digest / b78239276085aa4da0b065599ecb2c2b37c9d3b951da058f63722585daa2301c