FA-63181 / Insurance premium rating / Open access
Calendar period earned and unearned premium: Earned premium is rounded per policy · case 01
Portfolio earned premium differs by cents from the exact total.
ROOT CAUSE
Each policy is rounded before aggregation.
VERIFIED REPAIR
Accumulate exact amounts and round the total once.
Unsuccessful approach: Floor division per policy truncates instead.
Case contract
Input period [start, end) in days and policies [[written day, term days (>0 else 'invalid term'), premium]]. Earned = premium*overlap/term where overlap = max(0, min(end, w+term) - max(start, w)). Unearned at end counts policies written before end and still in force after it. Sum exactly; round each total half-up once.
Why this case matters
Earned premium is the denominator of every loss ratio, so exposure-overlap slips distort rate indications.
1 / The failure
Exit 1"""Failure Map reference implementation. Python standard library only."""
import json
import math
from fractions import Fraction
N = 1
observations = []
def solve(x):
s,e=x['period']
earned=Fraction(0); unearned=Fraction(0)
for w,t,p in x['policies']:
if t<=0: return 'invalid term'
ov=max(0,min(e,w+t)-max(s,w))
earned+=math.floor(Fraction(p*ov,t)+Fraction(1,2))
if w<e<w+t: unearned+=Fraction(p*(w+t-e),t)
return [math.floor(earned+Fraction(1,2)),math.floor(unearned+Fraction(1,2))]
def check(label, actual, expected):
observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[['written before period', {'period': [365, 730], 'policies': [[324, 365, 93669]]}, [83147, 0]], ['written inside period', {'period': [365, 730], 'policies': [[533, 365, 117853]]}, [63608, 54245]], ['expired before period', {'period': [365, 730], 'policies': [[-35, 365, 148225], [370, 90, 92990]]}, [92990, 0]], ['written on period end', {'period': [365, 730], 'policies': [[730, 365, 32094], [729, 365, 92841]]}, [254, 92587]], ['portfolio', {'period': [365, 730], 'policies': [[413, 365, 183654], [12, 90, 36485], [122, 365, 151203], [231, 90, 180174], [71, 365, 34329], [54, 365, 151391]]}, [239117, 24152]], ['invalid term', {'period': [365, 730], 'policies': [[158, 365, 43634], [365, 0, 1000]]}, 'invalid term'], ['short-term in period', {'period': [365, 730], 'policies': [[385, 90, 140014], [565, 182, 108120]]}, [238035, 10099]], ['odd premiums', {'period': [365, 730], 'policies': [[265, 365, 100002], [382, 365, 77777]]}, [146759, 3622]], ['multi-year policy written before period', {'period': [365, 730], 'policies': [[330, 1095, 583340]]}, [194447, 370248]], ['straddling policies with fractional cents', {'period': [365, 730], 'policies': [[359, 10, 21], [359, 10, 31], [359, 10, 41]]}, [37, 0]], ['odd short-term book', {'period': [365, 730], 'policies': [[573, 91, 18271], [440, 91, 34247], [600, 91, 42635], [597, 91, 87475], [664, 91, 72167]]}, [234969, 19826]]], [['written before period', {'period': [730, 1095], 'policies': [[676, 365, 86766]]}, [73929, 0]], ['written inside period', {'period': [730, 1095], 'policies': [[863, 365, 122374]]}, [77783, 44591]], ['expired before period', {'period': [730, 1095], 'policies': [[330, 365, 100586], [735, 90, 179403]]}, [179403, 0]], ['written on period end', {'period': [730, 1095], 'policies': [[1095, 365, 194938], [1094, 365, 125247]]}, [343, 124904]], ['portfolio', {'period': [730, 1095], 'policies': [[452, 182, 38894], [786, 90, 192426], [651, 365, 89026], [991, 182, 131336], [1012, 90, 41350], [762, 365, 43130]]}, [414715, 63284]], ['invalid term', {'period': [730, 1095], 'policies': [[880, 182, 193108], [730, 0, 1000]]}, 'invalid term'], ['short-term in period', {'period': [730, 1095], 'policies': [[750, 90, 185755], [930, 182, 109810]]}, [285308, 10257]], ['odd premiums', {'period': [730, 1095], 'policies': [[630, 365, 100003], [747, 365, 77777]]}, [146759, 3622]], ['multi-year policy written before period', {'period': [730, 1095], 'policies': [[578, 1095, 627827]]}, [209276, 331401]], ['straddling policies with fractional cents', {'period': [730, 1095], 'policies': [[724, 10, 31], [724, 10, 41], [724, 10, 51]]}, [49, 0]], ['odd short-term book', {'period': [730, 1095], 'policies': [[872, 91, 46017], [905, 91, 10461], [881, 91, 85493], [802, 91, 79735], [1015, 91, 16273]]}, [236012, 1967]]], [['written before period', {'period': [1095, 1460], 'policies': [[930, 365, 46452]]}, [25453, 0]], ['written inside period', {'period': [1095, 1460], 'policies': [[1373, 365, 195163]]}, [46518, 148645]], ['expired before period', {'period': [1095, 1460], 'policies': [[695, 365, 64736], [1100, 90, 187581]]}, [187581, 0]], ['written on period end', {'period': [1095, 1460], 'policies': [[1460, 365, 116247], [1459, 365, 161845]]}, [443, 161402]], ['portfolio', {'period': [1095, 1460], 'policies': [[809, 90, 85334], [988, 365, 127330], [1062, 182, 81532], [885, 365, 82598], [816, 365, 94974], [1138, 365, 44694]]}, [253634, 5265]], ['invalid term', {'period': [1095, 1460], 'policies': [[801, 365, 157643], [1095, 0, 1000]]}, 'invalid term'], ['short-term in period', {'period': [1095, 1460], 'policies': [[1115, 90, 154958], [1295, 182, 93684]]}, [239891, 8751]], ['odd premiums', {'period': [1095, 1460], 'policies': [[995, 365, 100004], [1112, 365, 77777]]}, [146760, 3622]], ['multi-year policy written before period', {'period': [1095, 1460], 'policies': [[1073, 1095, 841400]]}, [280467, 544028]], ['straddling policies with fractional cents', {'period': [1095, 1460], 'policies': [[1089, 10, 41], [1089, 10, 51], [1089, 10, 61]]}, [61, 0]], ['odd short-term book', {'period': [1095, 1460], 'policies': [[1280, 91, 43335], [1376, 91, 37625], [1277, 91, 93139], [1230, 91, 26463], [1137, 91, 95619]]}, [293287, 2894]]], [['written before period', {'period': [1460, 1825], 'policies': [[1387, 365, 174151]]}, [139321, 0]], ['written inside period', {'period': [1460, 1825], 'policies': [[1481, 365, 120643]]}, [113702, 6941]], ['expired before period', {'period': [1460, 1825], 'policies': [[1060, 365, 112581], [1465, 90, 106905]]}, [106905, 0]], ['written on period end', {'period': [1460, 1825], 'policies': [[1825, 365, 120557], [1824, 365, 45919]]}, [126, 45793]], ['portfolio', {'period': [1460, 1825], 'policies': [[1641, 90, 183349], [1707, 90, 189032], [1128, 90, 83324], [1477, 365, 35180], [1239, 365, 138579], [1596, 90, 66151]]}, [526746, 1639]], ['invalid term', {'period': [1460, 1825], 'policies': [[1377, 90, 33336], [1460, 0, 1000]]}, 'invalid term'], ['short-term in period', {'period': [1460, 1825], 'policies': [[1480, 90, 35810], [1660, 182, 151524]]}, [173181, 14153]], ['odd premiums', {'period': [1460, 1825], 'policies': [[1360, 365, 100005], [1477, 365, 77777]]}, [146761, 3622]], ['multi-year policy written before period', {'period': [1460, 1825], 'policies': [[1407, 1095, 704120]]}, [234707, 435333]], ['straddling policies with fractional cents', {'period': [1460, 1825], 'policies': [[1454, 10, 51], [1454, 10, 61], [1454, 10, 71]]}, [73, 0]], ['odd short-term book', {'period': [1460, 1825], 'policies': [[1709, 91, 69811], [1602, 91, 79731], [1722, 91, 27803], [1668, 91, 42721], [1522, 91, 13361]]}, [233427, 0]]], [['written before period', {'period': [1825, 2190], 'policies': [[1679, 365, 162636]]}, [97582, 0]], ['written inside period', {'period': [1825, 2190], 'policies': [[1909, 365, 107429]]}, [82706, 24723]], ['expired before period', {'period': [1825, 2190], 'policies': [[1425, 365, 156847], [1830, 90, 145464]]}, [145464, 0]], ['written on period end', {'period': [1825, 2190], 'policies': [[2190, 365, 153785], [2189, 365, 118456]]}, [325, 118131]], ['portfolio', {'period': [1825, 2190], 'policies': [[1640, 365, 165893], [1636, 365, 55534], [1501, 182, 103008], [1691, 182, 186674], [1608, 90, 107738], [1731, 90, 165397]]}, [157821, 0]], ['invalid term', {'period': [1825, 2190], 'policies': [[1792, 365, 129364], [1825, 0, 1000]]}, 'invalid term'], ['short-term in period', {'period': [1825, 2190], 'policies': [[1845, 90, 40166], [2025, 182, 155271]]}, [180934, 14503]], ['odd premiums', {'period': [1825, 2190], 'policies': [[1725, 365, 100006], [1842, 365, 77777]]}, [146762, 3622]], ['multi-year policy written before period', {'period': [1825, 2190], 'policies': [[1691, 1095, 785867]]}, [261956, 427741]], ['straddling policies with fractional cents', {'period': [1825, 2190], 'policies': [[1819, 10, 61], [1819, 10, 71], [1819, 10, 81]]}, [85, 0]], ['odd short-term book', {'period': [1825, 2190], 'policies': [[1900, 91, 72581], [1919, 91, 12069], [1923, 91, 13583], [1939, 91, 33511], [1891, 91, 72849]]}, [204593, 0]]]]
for label, args, expected in fixtures[N-1]:
check(label, solve(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 |
|---|---|---|---|
| written before period | [83147, 0] | [83147, 0] | Passed |
| written inside period | [63608, 54245] | [63608, 54245] | Passed |
| expired before period | [92990, 0] | [92990, 0] | Passed |
| written on period end | [254, 92587] | [254, 92587] | Passed |
| portfolio | [239117, 24152] | [239117, 24152] | Passed |
| invalid term | invalid term | invalid term | Passed |
| short-term in period | [238035, 10099] | [238035, 10099] | Passed |
| odd premiums | [146759, 3622] | [146759, 3622] | Passed |
| multi-year policy written before period | [194447, 370248] | [194447, 370248] | Passed |
| straddling policies with fractional cents | [36, 0] | [37, 0] | Failed |
| odd short-term book | [234969, 19826] | [234969, 19826] | Passed |
SHA-256 / 6b7a2e69f2e0f60e36d16662b7b871c3529f40ad91d3fe06215b98518a674b6b
2 / The unsuccessful fix
Exit 1"""Failure Map reference implementation. Python standard library only."""
import json
import math
from fractions import Fraction
N = 1
observations = []
def solve(x):
s,e=x['period']
earned=Fraction(0); unearned=Fraction(0)
for w,t,p in x['policies']:
if t<=0: return 'invalid term'
ov=max(0,min(e,w+t)-max(s,w))
earned+=p*ov//t
if w<e<w+t: unearned+=Fraction(p*(w+t-e),t)
return [math.floor(earned+Fraction(1,2)),math.floor(unearned+Fraction(1,2))]
def check(label, actual, expected):
observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[['written before period', {'period': [365, 730], 'policies': [[324, 365, 93669]]}, [83147, 0]], ['written inside period', {'period': [365, 730], 'policies': [[533, 365, 117853]]}, [63608, 54245]], ['expired before period', {'period': [365, 730], 'policies': [[-35, 365, 148225], [370, 90, 92990]]}, [92990, 0]], ['written on period end', {'period': [365, 730], 'policies': [[730, 365, 32094], [729, 365, 92841]]}, [254, 92587]], ['portfolio', {'period': [365, 730], 'policies': [[413, 365, 183654], [12, 90, 36485], [122, 365, 151203], [231, 90, 180174], [71, 365, 34329], [54, 365, 151391]]}, [239117, 24152]], ['invalid term', {'period': [365, 730], 'policies': [[158, 365, 43634], [365, 0, 1000]]}, 'invalid term'], ['short-term in period', {'period': [365, 730], 'policies': [[385, 90, 140014], [565, 182, 108120]]}, [238035, 10099]], ['odd premiums', {'period': [365, 730], 'policies': [[265, 365, 100002], [382, 365, 77777]]}, [146759, 3622]], ['multi-year policy written before period', {'period': [365, 730], 'policies': [[330, 1095, 583340]]}, [194447, 370248]], ['straddling policies with fractional cents', {'period': [365, 730], 'policies': [[359, 10, 21], [359, 10, 31], [359, 10, 41]]}, [37, 0]], ['odd short-term book', {'period': [365, 730], 'policies': [[573, 91, 18271], [440, 91, 34247], [600, 91, 42635], [597, 91, 87475], [664, 91, 72167]]}, [234969, 19826]]], [['written before period', {'period': [730, 1095], 'policies': [[676, 365, 86766]]}, [73929, 0]], ['written inside period', {'period': [730, 1095], 'policies': [[863, 365, 122374]]}, [77783, 44591]], ['expired before period', {'period': [730, 1095], 'policies': [[330, 365, 100586], [735, 90, 179403]]}, [179403, 0]], ['written on period end', {'period': [730, 1095], 'policies': [[1095, 365, 194938], [1094, 365, 125247]]}, [343, 124904]], ['portfolio', {'period': [730, 1095], 'policies': [[452, 182, 38894], [786, 90, 192426], [651, 365, 89026], [991, 182, 131336], [1012, 90, 41350], [762, 365, 43130]]}, [414715, 63284]], ['invalid term', {'period': [730, 1095], 'policies': [[880, 182, 193108], [730, 0, 1000]]}, 'invalid term'], ['short-term in period', {'period': [730, 1095], 'policies': [[750, 90, 185755], [930, 182, 109810]]}, [285308, 10257]], ['odd premiums', {'period': [730, 1095], 'policies': [[630, 365, 100003], [747, 365, 77777]]}, [146759, 3622]], ['multi-year policy written before period', {'period': [730, 1095], 'policies': [[578, 1095, 627827]]}, [209276, 331401]], ['straddling policies with fractional cents', {'period': [730, 1095], 'policies': [[724, 10, 31], [724, 10, 41], [724, 10, 51]]}, [49, 0]], ['odd short-term book', {'period': [730, 1095], 'policies': [[872, 91, 46017], [905, 91, 10461], [881, 91, 85493], [802, 91, 79735], [1015, 91, 16273]]}, [236012, 1967]]], [['written before period', {'period': [1095, 1460], 'policies': [[930, 365, 46452]]}, [25453, 0]], ['written inside period', {'period': [1095, 1460], 'policies': [[1373, 365, 195163]]}, [46518, 148645]], ['expired before period', {'period': [1095, 1460], 'policies': [[695, 365, 64736], [1100, 90, 187581]]}, [187581, 0]], ['written on period end', {'period': [1095, 1460], 'policies': [[1460, 365, 116247], [1459, 365, 161845]]}, [443, 161402]], ['portfolio', {'period': [1095, 1460], 'policies': [[809, 90, 85334], [988, 365, 127330], [1062, 182, 81532], [885, 365, 82598], [816, 365, 94974], [1138, 365, 44694]]}, [253634, 5265]], ['invalid term', {'period': [1095, 1460], 'policies': [[801, 365, 157643], [1095, 0, 1000]]}, 'invalid term'], ['short-term in period', {'period': [1095, 1460], 'policies': [[1115, 90, 154958], [1295, 182, 93684]]}, [239891, 8751]], ['odd premiums', {'period': [1095, 1460], 'policies': [[995, 365, 100004], [1112, 365, 77777]]}, [146760, 3622]], ['multi-year policy written before period', {'period': [1095, 1460], 'policies': [[1073, 1095, 841400]]}, [280467, 544028]], ['straddling policies with fractional cents', {'period': [1095, 1460], 'policies': [[1089, 10, 41], [1089, 10, 51], [1089, 10, 61]]}, [61, 0]], ['odd short-term book', {'period': [1095, 1460], 'policies': [[1280, 91, 43335], [1376, 91, 37625], [1277, 91, 93139], [1230, 91, 26463], [1137, 91, 95619]]}, [293287, 2894]]], [['written before period', {'period': [1460, 1825], 'policies': [[1387, 365, 174151]]}, [139321, 0]], ['written inside period', {'period': [1460, 1825], 'policies': [[1481, 365, 120643]]}, [113702, 6941]], ['expired before period', {'period': [1460, 1825], 'policies': [[1060, 365, 112581], [1465, 90, 106905]]}, [106905, 0]], ['written on period end', {'period': [1460, 1825], 'policies': [[1825, 365, 120557], [1824, 365, 45919]]}, [126, 45793]], ['portfolio', {'period': [1460, 1825], 'policies': [[1641, 90, 183349], [1707, 90, 189032], [1128, 90, 83324], [1477, 365, 35180], [1239, 365, 138579], [1596, 90, 66151]]}, [526746, 1639]], ['invalid term', {'period': [1460, 1825], 'policies': [[1377, 90, 33336], [1460, 0, 1000]]}, 'invalid term'], ['short-term in period', {'period': [1460, 1825], 'policies': [[1480, 90, 35810], [1660, 182, 151524]]}, [173181, 14153]], ['odd premiums', {'period': [1460, 1825], 'policies': [[1360, 365, 100005], [1477, 365, 77777]]}, [146761, 3622]], ['multi-year policy written before period', {'period': [1460, 1825], 'policies': [[1407, 1095, 704120]]}, [234707, 435333]], ['straddling policies with fractional cents', {'period': [1460, 1825], 'policies': [[1454, 10, 51], [1454, 10, 61], [1454, 10, 71]]}, [73, 0]], ['odd short-term book', {'period': [1460, 1825], 'policies': [[1709, 91, 69811], [1602, 91, 79731], [1722, 91, 27803], [1668, 91, 42721], [1522, 91, 13361]]}, [233427, 0]]], [['written before period', {'period': [1825, 2190], 'policies': [[1679, 365, 162636]]}, [97582, 0]], ['written inside period', {'period': [1825, 2190], 'policies': [[1909, 365, 107429]]}, [82706, 24723]], ['expired before period', {'period': [1825, 2190], 'policies': [[1425, 365, 156847], [1830, 90, 145464]]}, [145464, 0]], ['written on period end', {'period': [1825, 2190], 'policies': [[2190, 365, 153785], [2189, 365, 118456]]}, [325, 118131]], ['portfolio', {'period': [1825, 2190], 'policies': [[1640, 365, 165893], [1636, 365, 55534], [1501, 182, 103008], [1691, 182, 186674], [1608, 90, 107738], [1731, 90, 165397]]}, [157821, 0]], ['invalid term', {'period': [1825, 2190], 'policies': [[1792, 365, 129364], [1825, 0, 1000]]}, 'invalid term'], ['short-term in period', {'period': [1825, 2190], 'policies': [[1845, 90, 40166], [2025, 182, 155271]]}, [180934, 14503]], ['odd premiums', {'period': [1825, 2190], 'policies': [[1725, 365, 100006], [1842, 365, 77777]]}, [146762, 3622]], ['multi-year policy written before period', {'period': [1825, 2190], 'policies': [[1691, 1095, 785867]]}, [261956, 427741]], ['straddling policies with fractional cents', {'period': [1825, 2190], 'policies': [[1819, 10, 61], [1819, 10, 71], [1819, 10, 81]]}, [85, 0]], ['odd short-term book', {'period': [1825, 2190], 'policies': [[1900, 91, 72581], [1919, 91, 12069], [1923, 91, 13583], [1939, 91, 33511], [1891, 91, 72849]]}, [204593, 0]]]]
for label, args, expected in fixtures[N-1]:
check(label, solve(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 |
|---|---|---|---|
| written before period | [83147, 0] | [83147, 0] | Passed |
| written inside period | [63608, 54245] | [63608, 54245] | Passed |
| expired before period | [92990, 0] | [92990, 0] | Passed |
| written on period end | [254, 92587] | [254, 92587] | Passed |
| portfolio | [239115, 24152] | [239117, 24152] | Failed |
| invalid term | invalid term | invalid term | Passed |
| short-term in period | [238034, 10099] | [238035, 10099] | Failed |
| odd premiums | [146758, 3622] | [146759, 3622] | Failed |
| multi-year policy written before period | [194446, 370248] | [194447, 370248] | Failed |
| straddling policies with fractional cents | [36, 0] | [37, 0] | Failed |
| odd short-term book | [234968, 19826] | [234969, 19826] | Failed |
SHA-256 / 042edb1050576830af089eb3c60cd90edfe3d330d5ad1a6ba1a7465a005092e5
3 / The verified repair
Exit 0"""Failure Map reference implementation. Python standard library only."""
import json
import math
from fractions import Fraction
N = 1
observations = []
def solve(x):
s,e=x['period']
earned=Fraction(0); unearned=Fraction(0)
for w,t,p in x['policies']:
if t<=0: return 'invalid term'
ov=max(0,min(e,w+t)-max(s,w))
earned+=Fraction(p*ov,t)
if w<e<w+t: unearned+=Fraction(p*(w+t-e),t)
return [math.floor(earned+Fraction(1,2)),math.floor(unearned+Fraction(1,2))]
def check(label, actual, expected):
observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[['written before period', {'period': [365, 730], 'policies': [[324, 365, 93669]]}, [83147, 0]], ['written inside period', {'period': [365, 730], 'policies': [[533, 365, 117853]]}, [63608, 54245]], ['expired before period', {'period': [365, 730], 'policies': [[-35, 365, 148225], [370, 90, 92990]]}, [92990, 0]], ['written on period end', {'period': [365, 730], 'policies': [[730, 365, 32094], [729, 365, 92841]]}, [254, 92587]], ['portfolio', {'period': [365, 730], 'policies': [[413, 365, 183654], [12, 90, 36485], [122, 365, 151203], [231, 90, 180174], [71, 365, 34329], [54, 365, 151391]]}, [239117, 24152]], ['invalid term', {'period': [365, 730], 'policies': [[158, 365, 43634], [365, 0, 1000]]}, 'invalid term'], ['short-term in period', {'period': [365, 730], 'policies': [[385, 90, 140014], [565, 182, 108120]]}, [238035, 10099]], ['odd premiums', {'period': [365, 730], 'policies': [[265, 365, 100002], [382, 365, 77777]]}, [146759, 3622]], ['multi-year policy written before period', {'period': [365, 730], 'policies': [[330, 1095, 583340]]}, [194447, 370248]], ['straddling policies with fractional cents', {'period': [365, 730], 'policies': [[359, 10, 21], [359, 10, 31], [359, 10, 41]]}, [37, 0]], ['odd short-term book', {'period': [365, 730], 'policies': [[573, 91, 18271], [440, 91, 34247], [600, 91, 42635], [597, 91, 87475], [664, 91, 72167]]}, [234969, 19826]]], [['written before period', {'period': [730, 1095], 'policies': [[676, 365, 86766]]}, [73929, 0]], ['written inside period', {'period': [730, 1095], 'policies': [[863, 365, 122374]]}, [77783, 44591]], ['expired before period', {'period': [730, 1095], 'policies': [[330, 365, 100586], [735, 90, 179403]]}, [179403, 0]], ['written on period end', {'period': [730, 1095], 'policies': [[1095, 365, 194938], [1094, 365, 125247]]}, [343, 124904]], ['portfolio', {'period': [730, 1095], 'policies': [[452, 182, 38894], [786, 90, 192426], [651, 365, 89026], [991, 182, 131336], [1012, 90, 41350], [762, 365, 43130]]}, [414715, 63284]], ['invalid term', {'period': [730, 1095], 'policies': [[880, 182, 193108], [730, 0, 1000]]}, 'invalid term'], ['short-term in period', {'period': [730, 1095], 'policies': [[750, 90, 185755], [930, 182, 109810]]}, [285308, 10257]], ['odd premiums', {'period': [730, 1095], 'policies': [[630, 365, 100003], [747, 365, 77777]]}, [146759, 3622]], ['multi-year policy written before period', {'period': [730, 1095], 'policies': [[578, 1095, 627827]]}, [209276, 331401]], ['straddling policies with fractional cents', {'period': [730, 1095], 'policies': [[724, 10, 31], [724, 10, 41], [724, 10, 51]]}, [49, 0]], ['odd short-term book', {'period': [730, 1095], 'policies': [[872, 91, 46017], [905, 91, 10461], [881, 91, 85493], [802, 91, 79735], [1015, 91, 16273]]}, [236012, 1967]]], [['written before period', {'period': [1095, 1460], 'policies': [[930, 365, 46452]]}, [25453, 0]], ['written inside period', {'period': [1095, 1460], 'policies': [[1373, 365, 195163]]}, [46518, 148645]], ['expired before period', {'period': [1095, 1460], 'policies': [[695, 365, 64736], [1100, 90, 187581]]}, [187581, 0]], ['written on period end', {'period': [1095, 1460], 'policies': [[1460, 365, 116247], [1459, 365, 161845]]}, [443, 161402]], ['portfolio', {'period': [1095, 1460], 'policies': [[809, 90, 85334], [988, 365, 127330], [1062, 182, 81532], [885, 365, 82598], [816, 365, 94974], [1138, 365, 44694]]}, [253634, 5265]], ['invalid term', {'period': [1095, 1460], 'policies': [[801, 365, 157643], [1095, 0, 1000]]}, 'invalid term'], ['short-term in period', {'period': [1095, 1460], 'policies': [[1115, 90, 154958], [1295, 182, 93684]]}, [239891, 8751]], ['odd premiums', {'period': [1095, 1460], 'policies': [[995, 365, 100004], [1112, 365, 77777]]}, [146760, 3622]], ['multi-year policy written before period', {'period': [1095, 1460], 'policies': [[1073, 1095, 841400]]}, [280467, 544028]], ['straddling policies with fractional cents', {'period': [1095, 1460], 'policies': [[1089, 10, 41], [1089, 10, 51], [1089, 10, 61]]}, [61, 0]], ['odd short-term book', {'period': [1095, 1460], 'policies': [[1280, 91, 43335], [1376, 91, 37625], [1277, 91, 93139], [1230, 91, 26463], [1137, 91, 95619]]}, [293287, 2894]]], [['written before period', {'period': [1460, 1825], 'policies': [[1387, 365, 174151]]}, [139321, 0]], ['written inside period', {'period': [1460, 1825], 'policies': [[1481, 365, 120643]]}, [113702, 6941]], ['expired before period', {'period': [1460, 1825], 'policies': [[1060, 365, 112581], [1465, 90, 106905]]}, [106905, 0]], ['written on period end', {'period': [1460, 1825], 'policies': [[1825, 365, 120557], [1824, 365, 45919]]}, [126, 45793]], ['portfolio', {'period': [1460, 1825], 'policies': [[1641, 90, 183349], [1707, 90, 189032], [1128, 90, 83324], [1477, 365, 35180], [1239, 365, 138579], [1596, 90, 66151]]}, [526746, 1639]], ['invalid term', {'period': [1460, 1825], 'policies': [[1377, 90, 33336], [1460, 0, 1000]]}, 'invalid term'], ['short-term in period', {'period': [1460, 1825], 'policies': [[1480, 90, 35810], [1660, 182, 151524]]}, [173181, 14153]], ['odd premiums', {'period': [1460, 1825], 'policies': [[1360, 365, 100005], [1477, 365, 77777]]}, [146761, 3622]], ['multi-year policy written before period', {'period': [1460, 1825], 'policies': [[1407, 1095, 704120]]}, [234707, 435333]], ['straddling policies with fractional cents', {'period': [1460, 1825], 'policies': [[1454, 10, 51], [1454, 10, 61], [1454, 10, 71]]}, [73, 0]], ['odd short-term book', {'period': [1460, 1825], 'policies': [[1709, 91, 69811], [1602, 91, 79731], [1722, 91, 27803], [1668, 91, 42721], [1522, 91, 13361]]}, [233427, 0]]], [['written before period', {'period': [1825, 2190], 'policies': [[1679, 365, 162636]]}, [97582, 0]], ['written inside period', {'period': [1825, 2190], 'policies': [[1909, 365, 107429]]}, [82706, 24723]], ['expired before period', {'period': [1825, 2190], 'policies': [[1425, 365, 156847], [1830, 90, 145464]]}, [145464, 0]], ['written on period end', {'period': [1825, 2190], 'policies': [[2190, 365, 153785], [2189, 365, 118456]]}, [325, 118131]], ['portfolio', {'period': [1825, 2190], 'policies': [[1640, 365, 165893], [1636, 365, 55534], [1501, 182, 103008], [1691, 182, 186674], [1608, 90, 107738], [1731, 90, 165397]]}, [157821, 0]], ['invalid term', {'period': [1825, 2190], 'policies': [[1792, 365, 129364], [1825, 0, 1000]]}, 'invalid term'], ['short-term in period', {'period': [1825, 2190], 'policies': [[1845, 90, 40166], [2025, 182, 155271]]}, [180934, 14503]], ['odd premiums', {'period': [1825, 2190], 'policies': [[1725, 365, 100006], [1842, 365, 77777]]}, [146762, 3622]], ['multi-year policy written before period', {'period': [1825, 2190], 'policies': [[1691, 1095, 785867]]}, [261956, 427741]], ['straddling policies with fractional cents', {'period': [1825, 2190], 'policies': [[1819, 10, 61], [1819, 10, 71], [1819, 10, 81]]}, [85, 0]], ['odd short-term book', {'period': [1825, 2190], 'policies': [[1900, 91, 72581], [1919, 91, 12069], [1923, 91, 13583], [1939, 91, 33511], [1891, 91, 72849]]}, [204593, 0]]]]
for label, args, expected in fixtures[N-1]:
check(label, solve(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 |
|---|---|---|---|
| written before period | [83147, 0] | [83147, 0] | Passed |
| written inside period | [63608, 54245] | [63608, 54245] | Passed |
| expired before period | [92990, 0] | [92990, 0] | Passed |
| written on period end | [254, 92587] | [254, 92587] | Passed |
| portfolio | [239117, 24152] | [239117, 24152] | Passed |
| invalid term | invalid term | invalid term | Passed |
| short-term in period | [238035, 10099] | [238035, 10099] | Passed |
| odd premiums | [146759, 3622] | [146759, 3622] | Passed |
| multi-year policy written before period | [194447, 370248] | [194447, 370248] | Passed |
| straddling policies with fractional cents | [37, 0] | [37, 0] | Passed |
| odd short-term book | [234969, 19826] | [234969, 19826] | Passed |
SHA-256 / 3adca050d1d829be9c46e2b2e3fc8e29c509bd01814e008d3c327f596701ae48
Verification & scope
A deterministic bounded teaching model of a stipulated toy rating contract. Amounts are integer cents and factors exact rationals; it makes no claim of conformance with any filed rating plan, bureau manual or jurisdiction. 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:47:11.839042+00:00.
Case digest / 6b200024448b78f1a899961b0e7687a70f0690da664f93cac20b6dc93987514c