FA-61006 / Bond day-count conventions / Open access
Compounded overnight rate in arrears with lookback: every business day rate is weighted by one day · case 01
Rates published before weekends and holidays are under-weighted and the coupon is too low.
ROOT CAUSE
The weight is fixed at one day instead of the calendar days until the next business day.
VERIFIED REPAIR
Weight each rate by the calendar days until the next business day.
Unsuccessful approach: Weighting Fridays by three days still ignores mid-week holidays.
Case contract
Inputs start, end (business days), a map from ISO date to overnight rate in percent, a lookback in business days, a spread in percent and holidays. Business days are weekdays not in holidays. For each business day d in [start, end), weight n = calendar days to the next business day (or to end for the last one) and rate = the rate published L business days before d. Compound prod(1 + r/100*n/360); the period rate is (prod-1)*360/calendar days*100 plus the spread, rounded to 6 decimals.
Why this case matters
Bond accrual and pricing systems depend on exact day-count arithmetic; a single-day error changes settlement cash.
1 / The failure
Exit 1"""Failure Map reference implementation. Python standard library only."""
import json
import datetime
N = 1
observations = []
def solve(start, end, rates, lookback, spread, holidays):
S = datetime.date(*start)
E = datetime.date(*end)
H = {datetime.date(*h) for h in holidays}
def biz(x):
return x.weekday() < 5 and x not in H
def back(x, k):
while k > 0:
x -= datetime.timedelta(days=1)
if biz(x):
k -= 1
return x
days = []
x = S
while x < E:
if biz(x):
days.append(x)
x += datetime.timedelta(days=1)
prod = 1.0
for i, d in enumerate(days):
nxt = days[i + 1] if i + 1 < len(days) else E
n = 1
obs = back(d, lookback)
prod *= 1 + rates[obs.isoformat()] / 100 * n / 360
total = (E - S).days
return round((prod - 1) * 360 / total * 100 + spread, 6)
def check(label, actual, expected):
observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[['regression rate day weight 1', [[2027, 3, 1], [2027, 3, 15], {'2027-02-09': 1.62, '2027-02-10': 1.5, '2027-02-11': 1.49, '2027-02-12': 1.55, '2027-02-13': 1.61, '2027-02-14': 1.57, '2027-02-15': 1.48, '2027-02-16': 1.51, '2027-02-17': 1.62, '2027-02-18': 1.56, '2027-02-19': 1.6, '2027-02-20': 1.49, '2027-02-21': 1.53, '2027-02-22': 1.57, '2027-02-23': 1.56, '2027-02-24': 1.63, '2027-02-25': 1.58, '2027-02-26': 1.63, '2027-02-27': 1.61, '2027-02-28': 1.49, '2027-03-01': 1.54, '2027-03-02': 1.48, '2027-03-03': 1.49, '2027-03-04': 1.6, '2027-03-05': 1.48, '2027-03-06': 1.54, '2027-03-07': 1.54, '2027-03-08': 1.51, '2027-03-09': 1.58, '2027-03-10': 1.52, '2027-03-11': 1.48, '2027-03-12': 1.47, '2027-03-13': 1.55, '2027-03-14': 1.51, '2027-03-15': 1.57}, 0, 0.0, []], 1.503954], ['regression rate day weight 2', [[2027, 9, 27], [2027, 10, 25], {'2027-09-07': 5.31, '2027-09-08': 5.34, '2027-09-09': 5.37, '2027-09-10': 5.3, '2027-09-11': 5.23, '2027-09-12': 5.34, '2027-09-13': 5.39, '2027-09-14': 5.24, '2027-09-15': 5.36, '2027-09-16': 5.25, '2027-09-17': 5.32, '2027-09-18': 5.38, '2027-09-19': 5.24, '2027-09-20': 5.38, '2027-09-21': 5.31, '2027-09-22': 5.36, '2027-09-23': 5.39, '2027-09-24': 5.25, '2027-09-25': 5.31, '2027-09-26': 5.39, '2027-09-27': 5.26, '2027-09-28': 5.35, '2027-09-29': 5.35, '2027-09-30': 5.39, '2027-10-01': 5.39, '2027-10-02': 5.23, '2027-10-03': 5.37, '2027-10-04': 5.35, '2027-10-05': 5.23, '2027-10-06': 5.37, '2027-10-07': 5.26, '2027-10-08': 5.31, '2027-10-09': 5.35, '2027-10-10': 5.34, '2027-10-11': 5.35, '2027-10-12': 5.39, '2027-10-13': 5.26, '2027-10-14': 5.24, '2027-10-15': 5.25, '2027-10-16': 5.33, '2027-10-17': 5.25, '2027-10-18': 5.32, '2027-10-19': 5.28, '2027-10-20': 5.29, '2027-10-21': 5.32, '2027-10-22': 5.39, '2027-10-23': 5.3, '2027-10-24': 5.3, '2027-10-25': 5.35}, 2, 0.1, [[2027, 9, 28]]], 5.426674], ['partial repair probe 1', [[2026, 1, 9], [2026, 1, 29], {'2025-12-20': 1.51, '2025-12-21': 1.56, '2025-12-22': 1.56, '2025-12-23': 1.48, '2025-12-24': 1.58, '2025-12-25': 1.53, '2025-12-26': 1.53, '2025-12-27': 1.63, '2025-12-28': 1.59, '2025-12-29': 1.47, '2025-12-30': 1.55, '2025-12-31': 1.55, '2026-01-01': 1.63, '2026-01-02': 1.52, '2026-01-03': 1.53, '2026-01-04': 1.54, '2026-01-05': 1.53, '2026-01-06': 1.49, '2026-01-07': 1.48, '2026-01-08': 1.54, '2026-01-09': 1.51, '2026-01-10': 1.56, '2026-01-11': 1.6, '2026-01-12': 1.56, '2026-01-13': 1.62, '2026-01-14': 1.53, '2026-01-15': 1.48, '2026-01-16': 1.52, '2026-01-17': 1.59, '2026-01-18': 1.51, '2026-01-19': 1.55, '2026-01-20': 1.54, '2026-01-21': 1.48, '2026-01-22': 1.62, '2026-01-23': 1.53, '2026-01-24': 1.55, '2026-01-25': 1.56, '2026-01-26': 1.58, '2026-01-27': 1.5, '2026-01-28': 1.62, '2026-01-29': 1.53}, 2, 0.1, [[2026, 1, 26], [2026, 1, 19]]], 1.620563], ['partial repair probe 2', [[2023, 3, 28], [2023, 4, 4], {'2023-03-08': 4.33, '2023-03-09': 4.32, '2023-03-10': 4.24, '2023-03-11': 4.38, '2023-03-12': 4.25, '2023-03-13': 4.31, '2023-03-14': 4.23, '2023-03-15': 4.34, '2023-03-16': 4.28, '2023-03-17': 4.38, '2023-03-18': 4.36, '2023-03-19': 4.35, '2023-03-20': 4.33, '2023-03-21': 4.22, '2023-03-22': 4.35, '2023-03-23': 4.23, '2023-03-24': 4.24, '2023-03-25': 4.31, '2023-03-26': 4.32, '2023-03-27': 4.24, '2023-03-28': 4.25, '2023-03-29': 4.38, '2023-03-30': 4.28, '2023-03-31': 4.22, '2023-04-01': 4.36, '2023-04-02': 4.29, '2023-04-03': 4.28, '2023-04-04': 4.38}, 0, 0.25, [[2023, 3, 29]]], 4.496933], ['normal control 1', [[2024, 12, 23], [2024, 12, 24], {'2024-12-03': 0.1, '2024-12-04': 0.09, '2024-12-05': 0.07, '2024-12-06': -0.01, '2024-12-07': 0.03, '2024-12-08': 0.13, '2024-12-09': 0.09, '2024-12-10': 0.02, '2024-12-11': -0.03, '2024-12-12': 0.05, '2024-12-13': 0.02, '2024-12-14': 0.1, '2024-12-15': -0.03, '2024-12-16': 0.1, '2024-12-17': 0.01, '2024-12-18': 0.04, '2024-12-19': 0.13, '2024-12-20': -0.03, '2024-12-21': 0.07, '2024-12-22': 0.11, '2024-12-23': 0.11, '2024-12-24': 0.03}, 2, 0.25, []], 0.38], ['normal control 2', [[2026, 7, 13], [2026, 7, 16], {'2026-06-23': 0.0, '2026-06-24': 0.03, '2026-06-25': 0.07, '2026-06-26': 0.12, '2026-06-27': 0.09, '2026-06-28': 0.09, '2026-06-29': 0.01, '2026-06-30': 0.02, '2026-07-01': 0.07, '2026-07-02': 0.05, '2026-07-03': 0.04, '2026-07-04': 0.04, '2026-07-05': 0.08, '2026-07-06': 0.09, '2026-07-07': 0.13, '2026-07-08': 0.11, '2026-07-09': -0.03, '2026-07-10': 0.06, '2026-07-11': 0.05, '2026-07-12': 0.02, '2026-07-13': 0.12, '2026-07-14': 0.06, '2026-07-15': 0.04, '2026-07-16': 0.04}, 2, 0.0, []], 0.05], ['normal control 3', [[2025, 10, 28], [2025, 10, 29], {'2025-10-08': 5.23, '2025-10-09': 5.3, '2025-10-10': 5.35, '2025-10-11': 5.36, '2025-10-12': 5.29, '2025-10-13': 5.29, '2025-10-14': 5.39, '2025-10-15': 5.32, '2025-10-16': 5.3, '2025-10-17': 5.33, '2025-10-18': 5.3, '2025-10-19': 5.38, '2025-10-20': 5.28, '2025-10-21': 5.29, '2025-10-22': 5.24, '2025-10-23': 5.36, '2025-10-24': 5.33, '2025-10-25': 5.28, '2025-10-26': 5.31, '2025-10-27': 5.24, '2025-10-28': 5.28, '2025-10-29': 5.34}, 5, 0.25, []], 5.54], ['normal control 4', [[2023, 10, 30], [2023, 11, 2], {'2023-10-10': 1.49, '2023-10-11': 1.58, '2023-10-12': 1.53, '2023-10-13': 1.5, '2023-10-14': 1.49, '2023-10-15': 1.54, '2023-10-16': 1.56, '2023-10-17': 1.61, '2023-10-18': 1.51, '2023-10-19': 1.6, '2023-10-20': 1.55, '2023-10-21': 1.5, '2023-10-22': 1.52, '2023-10-23': 1.5, '2023-10-24': 1.56, '2023-10-25': 1.51, '2023-10-26': 1.52, '2023-10-27': 1.52, '2023-10-28': 1.62, '2023-10-29': 1.53, '2023-10-30': 1.48, '2023-10-31': 1.54, '2023-11-01': 1.53, '2023-11-02': 1.57}, 5, 0.25, []], 1.773398]], [['regression rate day weight 1', [[2027, 11, 11], [2027, 12, 8], {'2027-10-22': 1.63, '2027-10-23': 1.54, '2027-10-24': 1.63, '2027-10-25': 1.6, '2027-10-26': 1.63, '2027-10-27': 1.62, '2027-10-28': 1.55, '2027-10-29': 1.61, '2027-10-30': 1.56, '2027-10-31': 1.55, '2027-11-01': 1.63, '2027-11-02': 1.51, '2027-11-03': 1.51, '2027-11-04': 1.48, '2027-11-05': 1.55, '2027-11-06': 1.6, '2027-11-07': 1.5, '2027-11-08': 1.63, '2027-11-09': 1.58, '2027-11-10': 1.47, '2027-11-11': 1.5, '2027-11-12': 1.47, '2027-11-13': 1.6, '2027-11-14': 1.54, '2027-11-15': 1.49, '2027-11-16': 1.49, '2027-11-17': 1.6, '2027-11-18': 1.54, '2027-11-19': 1.63, '2027-11-20': 1.59, '2027-11-21': 1.48, '2027-11-22': 1.56, '2027-11-23': 1.63, '2027-11-24': 1.59, '2027-11-25': 1.47, '2027-11-26': 1.53, '2027-11-27': 1.61, '2027-11-28': 1.49, '2027-11-29': 1.55, '2027-11-30': 1.63, '2027-12-01': 1.55, '2027-12-02': 1.52, '2027-12-03': 1.55, '2027-12-04': 1.53, '2027-12-05': 1.6, '2027-12-06': 1.47, '2027-12-07': 1.52, '2027-12-08': 1.6}, 2, 0.0, []], 1.547872], ['regression rate day weight 2', [[2025, 3, 31], [2025, 4, 25], {'2025-03-11': 4.28, '2025-03-12': 4.35, '2025-03-13': 4.27, '2025-03-14': 4.27, '2025-03-15': 4.23, '2025-03-16': 4.37, '2025-03-17': 4.36, '2025-03-18': 4.24, '2025-03-19': 4.26, '2025-03-20': 4.37, '2025-03-21': 4.26, '2025-03-22': 4.3, '2025-03-23': 4.32, '2025-03-24': 4.26, '2025-03-25': 4.3, '2025-03-26': 4.29, '2025-03-27': 4.24, '2025-03-28': 4.28, '2025-03-29': 4.34, '2025-03-30': 4.36, '2025-03-31': 4.38, '2025-04-01': 4.29, '2025-04-02': 4.22, '2025-04-03': 4.32, '2025-04-04': 4.32, '2025-04-05': 4.25, '2025-04-06': 4.29, '2025-04-07': 4.37, '2025-04-08': 4.38, '2025-04-09': 4.37, '2025-04-10': 4.32, '2025-04-11': 4.31, '2025-04-12': 4.26, '2025-04-13': 4.33, '2025-04-14': 4.23, '2025-04-15': 4.33, '2025-04-16': 4.35, '2025-04-17': 4.24, '2025-04-18': 4.33, '2025-04-19': 4.23, '2025-04-20': 4.29, '2025-04-21': 4.23, '2025-04-22': 4.25, '2025-04-23': 4.33, '2025-04-24': 4.29, '2025-04-25': 4.22}, 2, 0.25, [[2025, 4, 11]]], 4.565144], ['partial repair probe 1', [[2023, 4, 24], [2023, 5, 2], {'2023-04-04': 0.06, '2023-04-05': 0.0, '2023-04-06': 0.12, '2023-04-07': 0.09, '2023-04-08': 0.09, '2023-04-09': 0.05, '2023-04-10': 0.1, '2023-04-11': 0.11, '2023-04-12': -0.02, '2023-04-13': 0.05, '2023-04-14': 0.0, '2023-04-15': 0.1, '2023-04-16': 0.05, '2023-04-17': -0.02, '2023-04-18': 0.11, '2023-04-19': -0.03, '2023-04-20': -0.03, '2023-04-21': 0.08, '2023-04-22': 0.12, '2023-04-23': -0.01, '2023-04-24': 0.08, '2023-04-25': 0.02, '2023-04-26': 0.01, '2023-04-27': 0.08, '2023-04-28': 0.04, '2023-04-29': 0.09, '2023-04-30': 0.06, '2023-05-01': 0.13, '2023-05-02': 0.05}, 2, 0.1, [[2023, 4, 25], [2023, 5, 1]]], 0.1175], ['normal control 1', [[2023, 5, 29], [2023, 6, 1], {'2023-05-09': 1.58, '2023-05-10': 1.58, '2023-05-11': 1.55, '2023-05-12': 1.62, '2023-05-13': 1.59, '2023-05-14': 1.51, '2023-05-15': 1.58, '2023-05-16': 1.54, '2023-05-17': 1.61, '2023-05-18': 1.58, '2023-05-19': 1.63, '2023-05-20': 1.63, '2023-05-21': 1.62, '2023-05-22': 1.6, '2023-05-23': 1.53, '2023-05-24': 1.6, '2023-05-25': 1.61, '2023-05-26': 1.56, '2023-05-27': 1.52, '2023-05-28': 1.58, '2023-05-29': 1.47, '2023-05-30': 1.59, '2023-05-31': 1.51, '2023-06-01': 1.48}, 5, 0.1, []], 1.676736], ['normal control 2', [[2025, 12, 30], [2025, 12, 31], {'2025-12-10': 0.1, '2025-12-11': 0.12, '2025-12-12': 0.0, '2025-12-13': 0.02, '2025-12-14': 0.07, '2025-12-15': 0.11, '2025-12-16': 0.02, '2025-12-17': 0.03, '2025-12-18': 0.07, '2025-12-19': 0.04, '2025-12-20': -0.02, '2025-12-21': 0.08, '2025-12-22': 0.07, '2025-12-23': 0.05, '2025-12-24': 0.0, '2025-12-25': 0.09, '2025-12-26': 0.1, '2025-12-27': 0.11, '2025-12-28': 0.01, '2025-12-29': 0.12, '2025-12-30': 0.04, '2025-12-31': 0.01}, 0, 0.1, []], 0.14], ['normal control 3', [[2024, 5, 13], [2024, 5, 16], {'2024-04-23': 4.34, '2024-04-24': 4.35, '2024-04-25': 4.28, '2024-04-26': 4.23, '2024-04-27': 4.32, '2024-04-28': 4.35, '2024-04-29': 4.28, '2024-04-30': 4.34, '2024-05-01': 4.25, '2024-05-02': 4.29, '2024-05-03': 4.31, '2024-05-04': 4.23, '2024-05-05': 4.38, '2024-05-06': 4.34, '2024-05-07': 4.33, '2024-05-08': 4.25, '2024-05-09': 4.22, '2024-05-10': 4.33, '2024-05-11': 4.25, '2024-05-12': 4.3, '2024-05-13': 4.31, '2024-05-14': 4.33, '2024-05-15': 4.3, '2024-05-16': 4.26}, 0, 0.1, []], 4.41385], ['normal control 4', [[2028, 10, 30], [2028, 11, 2], {'2028-10-10': 0.06, '2028-10-11': 0.13, '2028-10-12': 0.0, '2028-10-13': -0.03, '2028-10-14': 0.13, '2028-10-15': 0.08, '2028-10-16': 0.09, '2028-10-17': 0.0, '2028-10-18': 0.05, '2028-10-19': 0.12, '2028-10-20': 0.04, '2028-10-21': 0.02, '2028-10-22': 0.03, '2028-10-23': 0.06, '2028-10-24': 0.08, '2028-10-25': 0.01, '2028-10-26': 0.02, '2028-10-27': -0.01, '2028-10-28': 0.0, '2028-10-29': 0.03, '2028-10-30': -0.03, '2028-10-31': 0.04, '2028-11-01': 0.12, '2028-11-02': -0.02}, 2, 0.25, []], 0.243333], ['normal control 5', [[2024, 8, 8], [2024, 8, 9], {'2024-07-19': 5.24, '2024-07-20': 5.32, '2024-07-21': 5.31, '2024-07-22': 5.27, '2024-07-23': 5.35, '2024-07-24': 5.29, '2024-07-25': 5.32, '2024-07-26': 5.26, '2024-07-27': 5.38, '2024-07-28': 5.24, '2024-07-29': 5.31, '2024-07-30': 5.35, '2024-07-31': 5.25, '2024-08-01': 5.29, '2024-08-02': 5.24, '2024-08-03': 5.24, '2024-08-04': 5.37, '2024-08-05': 5.33, '2024-08-06': 5.29, '2024-08-07': 5.33, '2024-08-08': 5.27, '2024-08-09': 5.37}, 5, 0.25, []], 5.54]], [['regression rate day weight 1', [[2021, 10, 14], [2021, 10, 18], {'2021-09-24': 4.38, '2021-09-25': 4.29, '2021-09-26': 4.25, '2021-09-27': 4.32, '2021-09-28': 4.33, '2021-09-29': 4.28, '2021-09-30': 4.3, '2021-10-01': 4.29, '2021-10-02': 4.25, '2021-10-03': 4.36, '2021-10-04': 4.37, '2021-10-05': 4.29, '2021-10-06': 4.32, '2021-10-07': 4.29, '2021-10-08': 4.38, '2021-10-09': 4.35, '2021-10-10': 4.36, '2021-10-11': 4.37, '2021-10-12': 4.35, '2021-10-13': 4.22, '2021-10-14': 4.34, '2021-10-15': 4.29, '2021-10-16': 4.3, '2021-10-17': 4.36, '2021-10-18': 4.27}, 0, 0.0, []], 4.302888], ['regression rate day weight 2', [[2028, 6, 30], [2028, 7, 3], {'2028-06-10': 5.39, '2028-06-11': 5.39, '2028-06-12': 5.24, '2028-06-13': 5.3, '2028-06-14': 5.35, '2028-06-15': 5.39, '2028-06-16': 5.24, '2028-06-17': 5.37, '2028-06-18': 5.37, '2028-06-19': 5.24, '2028-06-20': 5.34, '2028-06-21': 5.32, '2028-06-22': 5.39, '2028-06-23': 5.24, '2028-06-24': 5.25, '2028-06-25': 5.33, '2028-06-26': 5.23, '2028-06-27': 5.39, '2028-06-28': 5.33, '2028-06-29': 5.29, '2028-06-30': 5.28, '2028-07-01': 5.35, '2028-07-02': 5.32, '2028-07-03': 5.35}, 5, 0.25, []], 5.49], ['partial repair probe 1', [[2025, 11, 17], [2025, 12, 15], {'2025-10-28': 5.38, '2025-10-29': 5.34, '2025-10-30': 5.23, '2025-10-31': 5.34, '2025-11-01': 5.28, '2025-11-02': 5.39, '2025-11-03': 5.33, '2025-11-04': 5.25, '2025-11-05': 5.24, '2025-11-06': 5.35, '2025-11-07': 5.36, '2025-11-08': 5.33, '2025-11-09': 5.23, '2025-11-10': 5.29, '2025-11-11': 5.24, '2025-11-12': 5.26, '2025-11-13': 5.35, '2025-11-14': 5.23, '2025-11-15': 5.26, '2025-11-16': 5.29, '2025-11-17': 5.35, '2025-11-18': 5.36, '2025-11-19': 5.39, '2025-11-20': 5.27, '2025-11-21': 5.35, '2025-11-22': 5.39, '2025-11-23': 5.32, '2025-11-24': 5.38, '2025-11-25': 5.36, '2025-11-26': 5.32, '2025-11-27': 5.25, '2025-11-28': 5.38, '2025-11-29': 5.38, '2025-11-30': 5.29, '2025-12-01': 5.36, '2025-12-02': 5.25, '2025-12-03': 5.34, '2025-12-04': 5.25, '2025-12-05': 5.34, '2025-12-06': 5.3, '2025-12-07': 5.23, '2025-12-08': 5.31, '2025-12-09': 5.3, '2025-12-10': 5.37, '2025-12-11': 5.24, '2025-12-12': 5.25, '2025-12-13': 5.35, '2025-12-14': 5.24, '2025-12-15': 5.38}, 2, 0.0, [[2025, 12, 8]]], 5.345259], ['partial repair probe 2', [[2026, 2, 20], [2026, 3, 9], {'2026-01-31': 1.53, '2026-02-01': 1.54, '2026-02-02': 1.55, '2026-02-03': 1.61, '2026-02-04': 1.53, '2026-02-05': 1.5, '2026-02-06': 1.6, '2026-02-07': 1.61, '2026-02-08': 1.54, '2026-02-09': 1.53, '2026-02-10': 1.58, '2026-02-11': 1.6, '2026-02-12': 1.49, '2026-02-13': 1.58, '2026-02-14': 1.52, '2026-02-15': 1.58, '2026-02-16': 1.54, '2026-02-17': 1.59, '2026-02-18': 1.57, '2026-02-19': 1.54, '2026-02-20': 1.62, '2026-02-21': 1.62, '2026-02-22': 1.59, '2026-02-23': 1.54, '2026-02-24': 1.55, '2026-02-25': 1.48, '2026-02-26': 1.5, '2026-02-27': 1.57, '2026-02-28': 1.51, '2026-03-01': 1.54, '2026-03-02': 1.5, '2026-03-03': 1.5, '2026-03-04': 1.59, '2026-03-05': 1.6, '2026-03-06': 1.57, '2026-03-07': 1.59, '2026-03-08': 1.57, '2026-03-09': 1.53}, 0, 0.25, [[2026, 3, 6]]], 1.816966], ['normal control 1', [[2022, 12, 20], [2022, 12, 23], {'2022-11-30': 1.51, '2022-12-01': 1.53, '2022-12-02': 1.53, '2022-12-03': 1.6, '2022-12-04': 1.63, '2022-12-05': 1.47, '2022-12-06': 1.56, '2022-12-07': 1.61, '2022-12-08': 1.5, '2022-12-09': 1.58, '2022-12-10': 1.58, '2022-12-11': 1.61, '2022-12-12': 1.61, '2022-12-13': 1.51, '2022-12-14': 1.57, '2022-12-15': 1.49, '2022-12-16': 1.5, '2022-12-17': 1.53, '2022-12-18': 1.51, '2022-12-19': 1.62, '2022-12-20': 1.49, '2022-12-21': 1.58, '2022-12-22': 1.54, '2022-12-23': 1.55}, 5, 0.25, []], 1.773398], ['normal control 2', [[2027, 7, 12], [2027, 7, 15], {'2027-06-22': 1.56, '2027-06-23': 1.49, '2027-06-24': 1.48, '2027-06-25': 1.51, '2027-06-26': 1.6, '2027-06-27': 1.55, '2027-06-28': 1.48, '2027-06-29': 1.62, '2027-06-30': 1.55, '2027-07-01': 1.63, '2027-07-02': 1.59, '2027-07-03': 1.57, '2027-07-04': 1.63, '2027-07-05': 1.47, '2027-07-06': 1.62, '2027-07-07': 1.55, '2027-07-08': 1.56, '2027-07-09': 1.55, '2027-07-10': 1.63, '2027-07-11': 1.57, '2027-07-12': 1.53, '2027-07-13': 1.63, '2027-07-14': 1.51, '2027-07-15': 1.57}, 0, 0.25, []], 1.806734], ['normal control 3', [[2022, 8, 1], [2022, 8, 4], {'2022-07-12': 1.49, '2022-07-13': 1.63, '2022-07-14': 1.48, '2022-07-15': 1.54, '2022-07-16': 1.56, '2022-07-17': 1.63, '2022-07-18': 1.6, '2022-07-19': 1.62, '2022-07-20': 1.51, '2022-07-21': 1.48, '2022-07-22': 1.58, '2022-07-23': 1.49, '2022-07-24': 1.6, '2022-07-25': 1.62, '2022-07-26': 1.57, '2022-07-27': 1.47, '2022-07-28': 1.6, '2022-07-29': 1.54, '2022-07-30': 1.5, '2022-07-31': 1.61, '2022-08-01': 1.56, '2022-08-02': 1.6, '2022-08-03': 1.56, '2022-08-04': 1.49}, 0, 0.1, []], 1.673402], ['normal control 4', [[2024, 12, 12], [2024, 12, 13], {'2024-11-22': 0.11, '2024-11-23': 0.11, '2024-11-24': 0.13, '2024-11-25': 0.1, '2024-11-26': 0.13, '2024-11-27': 0.01, '2024-11-28': 0.12, '2024-11-29': 0.03, '2024-11-30': 0.09, '2024-12-01': 0.07, '2024-12-02': 0.04, '2024-12-03': -0.01, '2024-12-04': 0.11, '2024-12-05': 0.02, '2024-12-06': 0.05, '2024-12-07': 0.01, '2024-12-08': 0.0, '2024-12-09': -0.02, '2024-12-10': 0.09, '2024-12-11': 0.04, '2024-12-12': 0.09, '2024-12-13': 0.05}, 2, 0.0, []], 0.09]], [['regression rate day weight 1', [[2025, 4, 14], [2025, 4, 17], {'2025-03-25': 5.35, '2025-03-26': 5.29, '2025-03-27': 5.26, '2025-03-28': 5.26, '2025-03-29': 5.27, '2025-03-30': 5.34, '2025-03-31': 5.33, '2025-04-01': 5.23, '2025-04-02': 5.24, '2025-04-03': 5.31, '2025-04-04': 5.35, '2025-04-05': 5.35, '2025-04-06': 5.34, '2025-04-07': 5.31, '2025-04-08': 5.32, '2025-04-09': 5.31, '2025-04-10': 5.3, '2025-04-11': 5.23, '2025-04-12': 5.39, '2025-04-13': 5.34, '2025-04-14': 5.32, '2025-04-15': 5.37, '2025-04-16': 5.36, '2025-04-17': 5.36}, 2, 0.0, [[2025, 4, 16]]], 5.253847], ['regression rate day weight 2', [[2024, 2, 29], [2024, 3, 4], {'2024-02-09': 4.3, '2024-02-10': 4.24, '2024-02-11': 4.22, '2024-02-12': 4.28, '2024-02-13': 4.36, '2024-02-14': 4.35, '2024-02-15': 4.26, '2024-02-16': 4.26, '2024-02-17': 4.28, '2024-02-18': 4.24, '2024-02-19': 4.36, '2024-02-20': 4.26, '2024-02-21': 4.29, '2024-02-22': 4.28, '2024-02-23': 4.27, '2024-02-24': 4.27, '2024-02-25': 4.28, '2024-02-26': 4.34, '2024-02-27': 4.33, '2024-02-28': 4.34, '2024-02-29': 4.37, '2024-03-01': 4.37, '2024-03-02': 4.23, '2024-03-03': 4.28, '2024-03-04': 4.25}, 2, 0.1, []], 4.437892], ['partial repair probe 1', [[2022, 9, 1], [2022, 9, 26], {'2022-08-12': 1.61, '2022-08-13': 1.6, '2022-08-14': 1.58, '2022-08-15': 1.54, '2022-08-16': 1.52, '2022-08-17': 1.47, '2022-08-18': 1.54, '2022-08-19': 1.56, '2022-08-20': 1.61, '2022-08-21': 1.62, '2022-08-22': 1.63, '2022-08-23': 1.52, '2022-08-24': 1.47, '2022-08-25': 1.63, '2022-08-26': 1.57, '2022-08-27': 1.63, '2022-08-28': 1.6, '2022-08-29': 1.52, '2022-08-30': 1.52, '2022-08-31': 1.6, '2022-09-01': 1.57, '2022-09-02': 1.51, '2022-09-03': 1.58, '2022-09-04': 1.58, '2022-09-05': 1.56, '2022-09-06': 1.49, '2022-09-07': 1.5, '2022-09-08': 1.58, '2022-09-09': 1.63, '2022-09-10': 1.59, '2022-09-11': 1.56, '2022-09-12': 1.55, '2022-09-13': 1.5, '2022-09-14': 1.5, '2022-09-15': 1.58, '2022-09-16': 1.63, '2022-09-17': 1.49, '2022-09-18': 1.54, '2022-09-19': 1.6, '2022-09-20': 1.57, '2022-09-21': 1.62, '2022-09-22': 1.51, '2022-09-23': 1.48, '2022-09-24': 1.47, '2022-09-25': 1.55, '2022-09-26': 1.59}, 5, 0.0, [[2022, 9, 9], [2022, 9, 23]]], 1.557959], ['partial repair probe 2', [[2026, 4, 6], [2026, 4, 23], {'2026-03-17': 1.51, '2026-03-18': 1.54, '2026-03-19': 1.57, '2026-03-20': 1.58, '2026-03-21': 1.58, '2026-03-22': 1.52, '2026-03-23': 1.56, '2026-03-24': 1.61, '2026-03-25': 1.51, '2026-03-26': 1.54, '2026-03-27': 1.6, '2026-03-28': 1.47, '2026-03-29': 1.57, '2026-03-30': 1.53, '2026-03-31': 1.47, '2026-04-01': 1.51, '2026-04-02': 1.62, '2026-04-03': 1.52, '2026-04-04': 1.59, '2026-04-05': 1.62, '2026-04-06': 1.48, '2026-04-07': 1.51, '2026-04-08': 1.48, '2026-04-09': 1.52, '2026-04-10': 1.63, '2026-04-11': 1.6, '2026-04-12': 1.6, '2026-04-13': 1.47, '2026-04-14': 1.47, '2026-04-15': 1.52, '2026-04-16': 1.51, '2026-04-17': 1.59, '2026-04-18': 1.52, '2026-04-19': 1.58, '2026-04-20': 1.57, '2026-04-21': 1.53, '2026-04-22': 1.55, '2026-04-23': 1.5}, 0, 0.25, [[2026, 4, 14], [2026, 4, 16]]], 1.796381], ['normal control 1', [[2023, 3, 16], [2023, 3, 17], {'2023-02-24': 0.04, '2023-02-25': 0.03, '2023-02-26': 0.0, '2023-02-27': 0.04, '2023-02-28': 0.05, '2023-03-01': -0.02, '2023-03-02': 0.13, '2023-03-03': 0.13, '2023-03-04': 0.0, '2023-03-05': 0.05, '2023-03-06': 0.1, '2023-03-07': 0.12, '2023-03-08': 0.01, '2023-03-09': -0.03, '2023-03-10': 0.12, '2023-03-11': 0.0, '2023-03-12': -0.03, '2023-03-13': 0.0, '2023-03-14': -0.03, '2023-03-15': -0.01, '2023-03-16': 0.05, '2023-03-17': 0.04}, 2, 0.0, []], -0.03], ['normal control 2', [[2022, 1, 26], [2022, 1, 27], {'2022-01-06': 5.3, '2022-01-07': 5.24, '2022-01-08': 5.31, '2022-01-09': 5.35, '2022-01-10': 5.24, '2022-01-11': 5.3, '2022-01-12': 5.3, '2022-01-13': 5.26, '2022-01-14': 5.25, '2022-01-15': 5.27, '2022-01-16': 5.26, '2022-01-17': 5.26, '2022-01-18': 5.31, '2022-01-19': 5.27, '2022-01-20': 5.31, '2022-01-21': 5.23, '2022-01-22': 5.23, '2022-01-23': 5.23, '2022-01-24': 5.24, '2022-01-25': 5.25, '2022-01-26': 5.36, '2022-01-27': 5.38}, 2, 0.1, []], 5.34], ['normal control 3', [[2023, 7, 31], [2023, 8, 1], {'2023-07-11': 5.38, '2023-07-12': 5.29, '2023-07-13': 5.26, '2023-07-14': 5.31, '2023-07-15': 5.31, '2023-07-16': 5.32, '2023-07-17': 5.25, '2023-07-18': 5.31, '2023-07-19': 5.28, '2023-07-20': 5.23, '2023-07-21': 5.37, '2023-07-22': 5.36, '2023-07-23': 5.23, '2023-07-24': 5.23, '2023-07-25': 5.27, '2023-07-26': 5.31, '2023-07-27': 5.29, '2023-07-28': 5.31, '2023-07-29': 5.27, '2023-07-30': 5.36, '2023-07-31': 5.26, '2023-08-01': 5.26}, 2, 0.0, []], 5.29], ['normal control 4', [[2028, 6, 15], [2028, 6, 16], {'2028-05-26': 4.27, '2028-05-27': 4.33, '2028-05-28': 4.29, '2028-05-29': 4.35, '2028-05-30': 4.34, '2028-05-31': 4.28, '2028-06-01': 4.27, '2028-06-02': 4.37, '2028-06-03': 4.36, '2028-06-04': 4.3, '2028-06-05': 4.22, '2028-06-06': 4.25, '2028-06-07': 4.32, '2028-06-08': 4.23, '2028-06-09': 4.33, '2028-06-10': 4.23, '2028-06-11': 4.26, '2028-06-12': 4.35, '2028-06-13': 4.34, '2028-06-14': 4.37, '2028-06-15': 4.28, '2028-06-16': 4.25}, 0, 0.0, []], 4.28]], [['regression rate day weight 1', [[2028, 8, 16], [2028, 9, 25], {'2028-07-27': 0.09, '2028-07-28': -0.03, '2028-07-29': 0.08, '2028-07-30': 0.07, '2028-07-31': 0.11, '2028-08-01': 0.03, '2028-08-02': 0.01, '2028-08-03': 0.13, '2028-08-04': 0.0, '2028-08-05': -0.01, '2028-08-06': 0.04, '2028-08-07': 0.05, '2028-08-08': 0.09, '2028-08-09': 0.02, '2028-08-10': 0.0, '2028-08-11': 0.04, '2028-08-12': 0.08, '2028-08-13': 0.09, '2028-08-14': 0.05, '2028-08-15': 0.12, '2028-08-16': 0.06, '2028-08-17': 0.09, '2028-08-18': -0.03, '2028-08-19': 0.08, '2028-08-20': 0.04, '2028-08-21': 0.08, '2028-08-22': 0.06, '2028-08-23': 0.13, '2028-08-24': 0.05, '2028-08-25': 0.13, '2028-08-26': -0.03, '2028-08-27': 0.0, '2028-08-28': 0.12, '2028-08-29': 0.1, '2028-08-30': 0.09, '2028-08-31': 0.02, '2028-09-01': 0.09, '2028-09-02': 0.1, '2028-09-03': -0.03, '2028-09-04': 0.05, '2028-09-05': -0.03, '2028-09-06': 0.11, '2028-09-07': -0.03, '2028-09-08': -0.02, '2028-09-09': 0.03, '2028-09-10': -0.02, '2028-09-11': 0.12, '2028-09-12': 0.0, '2028-09-13': 0.13, '2028-09-14': 0.1, '2028-09-15': 0.02, '2028-09-16': -0.02, '2028-09-17': 0.03, '2028-09-18': 0.13, '2028-09-19': 0.08, '2028-09-20': 0.04, '2028-09-21': 0.02, '2028-09-22': 0.0, '2028-09-23': 0.0, '2028-09-24': 0.08, '2028-09-25': 0.06}, 0, 0.0, [[2028, 9, 11]]], 0.048751], ['regression rate day weight 2', [[2026, 2, 12], [2026, 3, 11], {'2026-01-23': 5.39, '2026-01-24': 5.39, '2026-01-25': 5.34, '2026-01-26': 5.33, '2026-01-27': 5.26, '2026-01-28': 5.36, '2026-01-29': 5.29, '2026-01-30': 5.32, '2026-01-31': 5.36, '2026-02-01': 5.36, '2026-02-02': 5.29, '2026-02-03': 5.36, '2026-02-04': 5.39, '2026-02-05': 5.35, '2026-02-06': 5.3, '2026-02-07': 5.32, '2026-02-08': 5.27, '2026-02-09': 5.3, '2026-02-10': 5.33, '2026-02-11': 5.29, '2026-02-12': 5.31, '2026-02-13': 5.23, '2026-02-14': 5.33, '2026-02-15': 5.23, '2026-02-16': 5.37, '2026-02-17': 5.35, '2026-02-18': 5.37, '2026-02-19': 5.38, '2026-02-20': 5.33, '2026-02-21': 5.36, '2026-02-22': 5.24, '2026-02-23': 5.29, '2026-02-24': 5.39, '2026-02-25': 5.38, '2026-02-26': 5.23, '2026-02-27': 5.27, '2026-02-28': 5.36, '2026-03-01': 5.26, '2026-03-02': 5.27, '2026-03-03': 5.37, '2026-03-04': 5.23, '2026-03-05': 5.28, '2026-03-06': 5.27, '2026-03-07': 5.33, '2026-03-08': 5.34, '2026-03-09': 5.28, '2026-03-10': 5.31, '2026-03-11': 5.28}, 2, 0.1, [[2026, 2, 23], [2026, 3, 4]]], 5.438683], ['partial repair probe 1', [[2028, 1, 31], [2028, 2, 15], {'2028-01-11': -0.03, '2028-01-12': 0.03, '2028-01-13': -0.01, '2028-01-14': 0.03, '2028-01-15': 0.07, '2028-01-16': 0.04, '2028-01-17': 0.08, '2028-01-18': 0.06, '2028-01-19': 0.12, '2028-01-20': 0.1, '2028-01-21': 0.03, '2028-01-22': 0.02, '2028-01-23': 0.03, '2028-01-24': 0.1, '2028-01-25': 0.0, '2028-01-26': 0.0, '2028-01-27': -0.01, '2028-01-28': 0.04, '2028-01-29': 0.01, '2028-01-30': 0.13, '2028-01-31': 0.07, '2028-02-01': 0.11, '2028-02-02': 0.1, '2028-02-03': 0.02, '2028-02-04': 0.06, '2028-02-05': 0.08, '2028-02-06': 0.11, '2028-02-07': -0.01, '2028-02-08': 0.05, '2028-02-09': -0.02, '2028-02-10': -0.03, '2028-02-11': 0.05, '2028-02-12': 0.05, '2028-02-13': -0.03, '2028-02-14': 0.13, '2028-02-15': 0.07}, 5, 0.1, [[2028, 2, 3], [2028, 2, 8], [2028, 2, 14]]], 0.148667], ['partial repair probe 2', [[2023, 9, 1], [2023, 9, 13], {'2023-08-12': -0.01, '2023-08-13': -0.01, '2023-08-14': 0.02, '2023-08-15': 0.0, '2023-08-16': 0.12, '2023-08-17': -0.03, '2023-08-18': 0.09, '2023-08-19': 0.07, '2023-08-20': 0.04, '2023-08-21': 0.01, '2023-08-22': 0.01, '2023-08-23': 0.13, '2023-08-24': 0.07, '2023-08-25': 0.0, '2023-08-26': 0.12, '2023-08-27': 0.01, '2023-08-28': 0.09, '2023-08-29': 0.02, '2023-08-30': 0.07, '2023-08-31': 0.12, '2023-09-01': 0.05, '2023-09-02': 0.02, '2023-09-03': 0.1, '2023-09-04': 0.04, '2023-09-05': 0.11, '2023-09-06': 0.08, '2023-09-07': 0.0, '2023-09-08': 0.01, '2023-09-09': 0.13, '2023-09-10': 0.09, '2023-09-11': 0.02, '2023-09-12': -0.03, '2023-09-13': 0.02}, 2, 0.1, [[2023, 9, 12], [2023, 9, 11], [2023, 9, 4]]], 0.180001], ['normal control 1', [[2023, 1, 11], [2023, 1, 12], {'2022-12-22': -0.02, '2022-12-23': 0.03, '2022-12-24': 0.06, '2022-12-25': 0.05, '2022-12-26': 0.09, '2022-12-27': 0.04, '2022-12-28': 0.03, '2022-12-29': 0.04, '2022-12-30': -0.03, '2022-12-31': 0.05, '2023-01-01': 0.11, '2023-01-02': -0.03, '2023-01-03': 0.05, '2023-01-04': 0.07, '2023-01-05': 0.09, '2023-01-06': 0.1, '2023-01-07': 0.03, '2023-01-08': 0.1, '2023-01-09': 0.06, '2023-01-10': 0.02, '2023-01-11': -0.01, '2023-01-12': 0.05}, 2, 0.0, []], 0.06], ['normal control 2', [[2025, 9, 18], [2025, 9, 19], {'2025-08-29': 5.28, '2025-08-30': 5.25, '2025-08-31': 5.23, '2025-09-01': 5.32, '2025-09-02': 5.33, '2025-09-03': 5.3, '2025-09-04': 5.27, '2025-09-05': 5.32, '2025-09-06': 5.35, '2025-09-07': 5.26, '2025-09-08': 5.33, '2025-09-09': 5.3, '2025-09-10': 5.37, '2025-09-11': 5.28, '2025-09-12': 5.27, '2025-09-13': 5.29, '2025-09-14': 5.23, '2025-09-15': 5.39, '2025-09-16': 5.33, '2025-09-17': 5.29, '2025-09-18': 5.32, '2025-09-19': 5.34}, 5, 0.0, []], 5.28], ['normal control 3', [[2026, 11, 2], [2026, 11, 3], {'2026-10-13': 1.52, '2026-10-14': 1.63, '2026-10-15': 1.5, '2026-10-16': 1.58, '2026-10-17': 1.51, '2026-10-18': 1.55, '2026-10-19': 1.49, '2026-10-20': 1.61, '2026-10-21': 1.47, '2026-10-22': 1.5, '2026-10-23': 1.61, '2026-10-24': 1.48, '2026-10-25': 1.49, '2026-10-26': 1.5, '2026-10-27': 1.49, '2026-10-28': 1.47, '2026-10-29': 1.6, '2026-10-30': 1.5, '2026-10-31': 1.62, '2026-11-01': 1.51, '2026-11-02': 1.56, '2026-11-03': 1.57}, 2, 0.1, []], 1.7], ['normal control 4', [[2026, 3, 2], [2026, 3, 4], {'2026-02-10': 4.22, '2026-02-11': 4.3, '2026-02-12': 4.26, '2026-02-13': 4.36, '2026-02-14': 4.29, '2026-02-15': 4.33, '2026-02-16': 4.23, '2026-02-17': 4.34, '2026-02-18': 4.26, '2026-02-19': 4.28, '2026-02-20': 4.37, '2026-02-21': 4.26, '2026-02-22': 4.37, '2026-02-23': 4.32, '2026-02-24': 4.25, '2026-02-25': 4.24, '2026-02-26': 4.26, '2026-02-27': 4.37, '2026-02-28': 4.22, '2026-03-01': 4.26, '2026-03-02': 4.27, '2026-03-03': 4.29, '2026-03-04': 4.32}, 0, 0.25, []], 4.530254]]]
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 |
|---|---|---|---|
| regression rate day weight 1 | 1.082348 | 1.503954 | Failed |
| regression rate day weight 2 | 3.709434 | 5.426674 | Failed |
| partial repair probe 1 | 1.020716 | 1.620563 | Failed |
| partial repair probe 2 | 2.683289 | 4.496933 | Failed |
| normal control 1 | 0.38 | 0.38 | Passed |
| normal control 2 | 0.05 | 0.05 | Passed |
| normal control 3 | 5.54 | 5.54 | Passed |
| normal control 4 | 1.773398 | 1.773398 | Passed |
SHA-256 / baa365e906684b664d177e2c96c619045a75c98fbd2c2787924a705f6ae8eaf1
2 / The unsuccessful fix
Exit 1"""Failure Map reference implementation. Python standard library only."""
import json
import datetime
N = 1
observations = []
def solve(start, end, rates, lookback, spread, holidays):
S = datetime.date(*start)
E = datetime.date(*end)
H = {datetime.date(*h) for h in holidays}
def biz(x):
return x.weekday() < 5 and x not in H
def back(x, k):
while k > 0:
x -= datetime.timedelta(days=1)
if biz(x):
k -= 1
return x
days = []
x = S
while x < E:
if biz(x):
days.append(x)
x += datetime.timedelta(days=1)
prod = 1.0
for i, d in enumerate(days):
nxt = days[i + 1] if i + 1 < len(days) else E
n = 3 if d.weekday() == 4 else 1
obs = back(d, lookback)
prod *= 1 + rates[obs.isoformat()] / 100 * n / 360
total = (E - S).days
return round((prod - 1) * 360 / total * 100 + spread, 6)
def check(label, actual, expected):
observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[['regression rate day weight 1', [[2027, 3, 1], [2027, 3, 15], {'2027-02-09': 1.62, '2027-02-10': 1.5, '2027-02-11': 1.49, '2027-02-12': 1.55, '2027-02-13': 1.61, '2027-02-14': 1.57, '2027-02-15': 1.48, '2027-02-16': 1.51, '2027-02-17': 1.62, '2027-02-18': 1.56, '2027-02-19': 1.6, '2027-02-20': 1.49, '2027-02-21': 1.53, '2027-02-22': 1.57, '2027-02-23': 1.56, '2027-02-24': 1.63, '2027-02-25': 1.58, '2027-02-26': 1.63, '2027-02-27': 1.61, '2027-02-28': 1.49, '2027-03-01': 1.54, '2027-03-02': 1.48, '2027-03-03': 1.49, '2027-03-04': 1.6, '2027-03-05': 1.48, '2027-03-06': 1.54, '2027-03-07': 1.54, '2027-03-08': 1.51, '2027-03-09': 1.58, '2027-03-10': 1.52, '2027-03-11': 1.48, '2027-03-12': 1.47, '2027-03-13': 1.55, '2027-03-14': 1.51, '2027-03-15': 1.57}, 0, 0.0, []], 1.503954], ['regression rate day weight 2', [[2027, 9, 27], [2027, 10, 25], {'2027-09-07': 5.31, '2027-09-08': 5.34, '2027-09-09': 5.37, '2027-09-10': 5.3, '2027-09-11': 5.23, '2027-09-12': 5.34, '2027-09-13': 5.39, '2027-09-14': 5.24, '2027-09-15': 5.36, '2027-09-16': 5.25, '2027-09-17': 5.32, '2027-09-18': 5.38, '2027-09-19': 5.24, '2027-09-20': 5.38, '2027-09-21': 5.31, '2027-09-22': 5.36, '2027-09-23': 5.39, '2027-09-24': 5.25, '2027-09-25': 5.31, '2027-09-26': 5.39, '2027-09-27': 5.26, '2027-09-28': 5.35, '2027-09-29': 5.35, '2027-09-30': 5.39, '2027-10-01': 5.39, '2027-10-02': 5.23, '2027-10-03': 5.37, '2027-10-04': 5.35, '2027-10-05': 5.23, '2027-10-06': 5.37, '2027-10-07': 5.26, '2027-10-08': 5.31, '2027-10-09': 5.35, '2027-10-10': 5.34, '2027-10-11': 5.35, '2027-10-12': 5.39, '2027-10-13': 5.26, '2027-10-14': 5.24, '2027-10-15': 5.25, '2027-10-16': 5.33, '2027-10-17': 5.25, '2027-10-18': 5.32, '2027-10-19': 5.28, '2027-10-20': 5.29, '2027-10-21': 5.32, '2027-10-22': 5.39, '2027-10-23': 5.3, '2027-10-24': 5.3, '2027-10-25': 5.35}, 2, 0.1, [[2027, 9, 28]]], 5.426674], ['partial repair probe 1', [[2026, 1, 9], [2026, 1, 29], {'2025-12-20': 1.51, '2025-12-21': 1.56, '2025-12-22': 1.56, '2025-12-23': 1.48, '2025-12-24': 1.58, '2025-12-25': 1.53, '2025-12-26': 1.53, '2025-12-27': 1.63, '2025-12-28': 1.59, '2025-12-29': 1.47, '2025-12-30': 1.55, '2025-12-31': 1.55, '2026-01-01': 1.63, '2026-01-02': 1.52, '2026-01-03': 1.53, '2026-01-04': 1.54, '2026-01-05': 1.53, '2026-01-06': 1.49, '2026-01-07': 1.48, '2026-01-08': 1.54, '2026-01-09': 1.51, '2026-01-10': 1.56, '2026-01-11': 1.6, '2026-01-12': 1.56, '2026-01-13': 1.62, '2026-01-14': 1.53, '2026-01-15': 1.48, '2026-01-16': 1.52, '2026-01-17': 1.59, '2026-01-18': 1.51, '2026-01-19': 1.55, '2026-01-20': 1.54, '2026-01-21': 1.48, '2026-01-22': 1.62, '2026-01-23': 1.53, '2026-01-24': 1.55, '2026-01-25': 1.56, '2026-01-26': 1.58, '2026-01-27': 1.5, '2026-01-28': 1.62, '2026-01-29': 1.53}, 2, 0.1, [[2026, 1, 26], [2026, 1, 19]]], 1.620563], ['partial repair probe 2', [[2023, 3, 28], [2023, 4, 4], {'2023-03-08': 4.33, '2023-03-09': 4.32, '2023-03-10': 4.24, '2023-03-11': 4.38, '2023-03-12': 4.25, '2023-03-13': 4.31, '2023-03-14': 4.23, '2023-03-15': 4.34, '2023-03-16': 4.28, '2023-03-17': 4.38, '2023-03-18': 4.36, '2023-03-19': 4.35, '2023-03-20': 4.33, '2023-03-21': 4.22, '2023-03-22': 4.35, '2023-03-23': 4.23, '2023-03-24': 4.24, '2023-03-25': 4.31, '2023-03-26': 4.32, '2023-03-27': 4.24, '2023-03-28': 4.25, '2023-03-29': 4.38, '2023-03-30': 4.28, '2023-03-31': 4.22, '2023-04-01': 4.36, '2023-04-02': 4.29, '2023-04-03': 4.28, '2023-04-04': 4.38}, 0, 0.25, [[2023, 3, 29]]], 4.496933], ['normal control 1', [[2024, 12, 23], [2024, 12, 24], {'2024-12-03': 0.1, '2024-12-04': 0.09, '2024-12-05': 0.07, '2024-12-06': -0.01, '2024-12-07': 0.03, '2024-12-08': 0.13, '2024-12-09': 0.09, '2024-12-10': 0.02, '2024-12-11': -0.03, '2024-12-12': 0.05, '2024-12-13': 0.02, '2024-12-14': 0.1, '2024-12-15': -0.03, '2024-12-16': 0.1, '2024-12-17': 0.01, '2024-12-18': 0.04, '2024-12-19': 0.13, '2024-12-20': -0.03, '2024-12-21': 0.07, '2024-12-22': 0.11, '2024-12-23': 0.11, '2024-12-24': 0.03}, 2, 0.25, []], 0.38], ['normal control 2', [[2026, 7, 13], [2026, 7, 16], {'2026-06-23': 0.0, '2026-06-24': 0.03, '2026-06-25': 0.07, '2026-06-26': 0.12, '2026-06-27': 0.09, '2026-06-28': 0.09, '2026-06-29': 0.01, '2026-06-30': 0.02, '2026-07-01': 0.07, '2026-07-02': 0.05, '2026-07-03': 0.04, '2026-07-04': 0.04, '2026-07-05': 0.08, '2026-07-06': 0.09, '2026-07-07': 0.13, '2026-07-08': 0.11, '2026-07-09': -0.03, '2026-07-10': 0.06, '2026-07-11': 0.05, '2026-07-12': 0.02, '2026-07-13': 0.12, '2026-07-14': 0.06, '2026-07-15': 0.04, '2026-07-16': 0.04}, 2, 0.0, []], 0.05], ['normal control 3', [[2025, 10, 28], [2025, 10, 29], {'2025-10-08': 5.23, '2025-10-09': 5.3, '2025-10-10': 5.35, '2025-10-11': 5.36, '2025-10-12': 5.29, '2025-10-13': 5.29, '2025-10-14': 5.39, '2025-10-15': 5.32, '2025-10-16': 5.3, '2025-10-17': 5.33, '2025-10-18': 5.3, '2025-10-19': 5.38, '2025-10-20': 5.28, '2025-10-21': 5.29, '2025-10-22': 5.24, '2025-10-23': 5.36, '2025-10-24': 5.33, '2025-10-25': 5.28, '2025-10-26': 5.31, '2025-10-27': 5.24, '2025-10-28': 5.28, '2025-10-29': 5.34}, 5, 0.25, []], 5.54], ['normal control 4', [[2023, 10, 30], [2023, 11, 2], {'2023-10-10': 1.49, '2023-10-11': 1.58, '2023-10-12': 1.53, '2023-10-13': 1.5, '2023-10-14': 1.49, '2023-10-15': 1.54, '2023-10-16': 1.56, '2023-10-17': 1.61, '2023-10-18': 1.51, '2023-10-19': 1.6, '2023-10-20': 1.55, '2023-10-21': 1.5, '2023-10-22': 1.52, '2023-10-23': 1.5, '2023-10-24': 1.56, '2023-10-25': 1.51, '2023-10-26': 1.52, '2023-10-27': 1.52, '2023-10-28': 1.62, '2023-10-29': 1.53, '2023-10-30': 1.48, '2023-10-31': 1.54, '2023-11-01': 1.53, '2023-11-02': 1.57}, 5, 0.25, []], 1.773398]], [['regression rate day weight 1', [[2027, 11, 11], [2027, 12, 8], {'2027-10-22': 1.63, '2027-10-23': 1.54, '2027-10-24': 1.63, '2027-10-25': 1.6, '2027-10-26': 1.63, '2027-10-27': 1.62, '2027-10-28': 1.55, '2027-10-29': 1.61, '2027-10-30': 1.56, '2027-10-31': 1.55, '2027-11-01': 1.63, '2027-11-02': 1.51, '2027-11-03': 1.51, '2027-11-04': 1.48, '2027-11-05': 1.55, '2027-11-06': 1.6, '2027-11-07': 1.5, '2027-11-08': 1.63, '2027-11-09': 1.58, '2027-11-10': 1.47, '2027-11-11': 1.5, '2027-11-12': 1.47, '2027-11-13': 1.6, '2027-11-14': 1.54, '2027-11-15': 1.49, '2027-11-16': 1.49, '2027-11-17': 1.6, '2027-11-18': 1.54, '2027-11-19': 1.63, '2027-11-20': 1.59, '2027-11-21': 1.48, '2027-11-22': 1.56, '2027-11-23': 1.63, '2027-11-24': 1.59, '2027-11-25': 1.47, '2027-11-26': 1.53, '2027-11-27': 1.61, '2027-11-28': 1.49, '2027-11-29': 1.55, '2027-11-30': 1.63, '2027-12-01': 1.55, '2027-12-02': 1.52, '2027-12-03': 1.55, '2027-12-04': 1.53, '2027-12-05': 1.6, '2027-12-06': 1.47, '2027-12-07': 1.52, '2027-12-08': 1.6}, 2, 0.0, []], 1.547872], ['regression rate day weight 2', [[2025, 3, 31], [2025, 4, 25], {'2025-03-11': 4.28, '2025-03-12': 4.35, '2025-03-13': 4.27, '2025-03-14': 4.27, '2025-03-15': 4.23, '2025-03-16': 4.37, '2025-03-17': 4.36, '2025-03-18': 4.24, '2025-03-19': 4.26, '2025-03-20': 4.37, '2025-03-21': 4.26, '2025-03-22': 4.3, '2025-03-23': 4.32, '2025-03-24': 4.26, '2025-03-25': 4.3, '2025-03-26': 4.29, '2025-03-27': 4.24, '2025-03-28': 4.28, '2025-03-29': 4.34, '2025-03-30': 4.36, '2025-03-31': 4.38, '2025-04-01': 4.29, '2025-04-02': 4.22, '2025-04-03': 4.32, '2025-04-04': 4.32, '2025-04-05': 4.25, '2025-04-06': 4.29, '2025-04-07': 4.37, '2025-04-08': 4.38, '2025-04-09': 4.37, '2025-04-10': 4.32, '2025-04-11': 4.31, '2025-04-12': 4.26, '2025-04-13': 4.33, '2025-04-14': 4.23, '2025-04-15': 4.33, '2025-04-16': 4.35, '2025-04-17': 4.24, '2025-04-18': 4.33, '2025-04-19': 4.23, '2025-04-20': 4.29, '2025-04-21': 4.23, '2025-04-22': 4.25, '2025-04-23': 4.33, '2025-04-24': 4.29, '2025-04-25': 4.22}, 2, 0.25, [[2025, 4, 11]]], 4.565144], ['partial repair probe 1', [[2023, 4, 24], [2023, 5, 2], {'2023-04-04': 0.06, '2023-04-05': 0.0, '2023-04-06': 0.12, '2023-04-07': 0.09, '2023-04-08': 0.09, '2023-04-09': 0.05, '2023-04-10': 0.1, '2023-04-11': 0.11, '2023-04-12': -0.02, '2023-04-13': 0.05, '2023-04-14': 0.0, '2023-04-15': 0.1, '2023-04-16': 0.05, '2023-04-17': -0.02, '2023-04-18': 0.11, '2023-04-19': -0.03, '2023-04-20': -0.03, '2023-04-21': 0.08, '2023-04-22': 0.12, '2023-04-23': -0.01, '2023-04-24': 0.08, '2023-04-25': 0.02, '2023-04-26': 0.01, '2023-04-27': 0.08, '2023-04-28': 0.04, '2023-04-29': 0.09, '2023-04-30': 0.06, '2023-05-01': 0.13, '2023-05-02': 0.05}, 2, 0.1, [[2023, 4, 25], [2023, 5, 1]]], 0.1175], ['normal control 1', [[2023, 5, 29], [2023, 6, 1], {'2023-05-09': 1.58, '2023-05-10': 1.58, '2023-05-11': 1.55, '2023-05-12': 1.62, '2023-05-13': 1.59, '2023-05-14': 1.51, '2023-05-15': 1.58, '2023-05-16': 1.54, '2023-05-17': 1.61, '2023-05-18': 1.58, '2023-05-19': 1.63, '2023-05-20': 1.63, '2023-05-21': 1.62, '2023-05-22': 1.6, '2023-05-23': 1.53, '2023-05-24': 1.6, '2023-05-25': 1.61, '2023-05-26': 1.56, '2023-05-27': 1.52, '2023-05-28': 1.58, '2023-05-29': 1.47, '2023-05-30': 1.59, '2023-05-31': 1.51, '2023-06-01': 1.48}, 5, 0.1, []], 1.676736], ['normal control 2', [[2025, 12, 30], [2025, 12, 31], {'2025-12-10': 0.1, '2025-12-11': 0.12, '2025-12-12': 0.0, '2025-12-13': 0.02, '2025-12-14': 0.07, '2025-12-15': 0.11, '2025-12-16': 0.02, '2025-12-17': 0.03, '2025-12-18': 0.07, '2025-12-19': 0.04, '2025-12-20': -0.02, '2025-12-21': 0.08, '2025-12-22': 0.07, '2025-12-23': 0.05, '2025-12-24': 0.0, '2025-12-25': 0.09, '2025-12-26': 0.1, '2025-12-27': 0.11, '2025-12-28': 0.01, '2025-12-29': 0.12, '2025-12-30': 0.04, '2025-12-31': 0.01}, 0, 0.1, []], 0.14], ['normal control 3', [[2024, 5, 13], [2024, 5, 16], {'2024-04-23': 4.34, '2024-04-24': 4.35, '2024-04-25': 4.28, '2024-04-26': 4.23, '2024-04-27': 4.32, '2024-04-28': 4.35, '2024-04-29': 4.28, '2024-04-30': 4.34, '2024-05-01': 4.25, '2024-05-02': 4.29, '2024-05-03': 4.31, '2024-05-04': 4.23, '2024-05-05': 4.38, '2024-05-06': 4.34, '2024-05-07': 4.33, '2024-05-08': 4.25, '2024-05-09': 4.22, '2024-05-10': 4.33, '2024-05-11': 4.25, '2024-05-12': 4.3, '2024-05-13': 4.31, '2024-05-14': 4.33, '2024-05-15': 4.3, '2024-05-16': 4.26}, 0, 0.1, []], 4.41385], ['normal control 4', [[2028, 10, 30], [2028, 11, 2], {'2028-10-10': 0.06, '2028-10-11': 0.13, '2028-10-12': 0.0, '2028-10-13': -0.03, '2028-10-14': 0.13, '2028-10-15': 0.08, '2028-10-16': 0.09, '2028-10-17': 0.0, '2028-10-18': 0.05, '2028-10-19': 0.12, '2028-10-20': 0.04, '2028-10-21': 0.02, '2028-10-22': 0.03, '2028-10-23': 0.06, '2028-10-24': 0.08, '2028-10-25': 0.01, '2028-10-26': 0.02, '2028-10-27': -0.01, '2028-10-28': 0.0, '2028-10-29': 0.03, '2028-10-30': -0.03, '2028-10-31': 0.04, '2028-11-01': 0.12, '2028-11-02': -0.02}, 2, 0.25, []], 0.243333], ['normal control 5', [[2024, 8, 8], [2024, 8, 9], {'2024-07-19': 5.24, '2024-07-20': 5.32, '2024-07-21': 5.31, '2024-07-22': 5.27, '2024-07-23': 5.35, '2024-07-24': 5.29, '2024-07-25': 5.32, '2024-07-26': 5.26, '2024-07-27': 5.38, '2024-07-28': 5.24, '2024-07-29': 5.31, '2024-07-30': 5.35, '2024-07-31': 5.25, '2024-08-01': 5.29, '2024-08-02': 5.24, '2024-08-03': 5.24, '2024-08-04': 5.37, '2024-08-05': 5.33, '2024-08-06': 5.29, '2024-08-07': 5.33, '2024-08-08': 5.27, '2024-08-09': 5.37}, 5, 0.25, []], 5.54]], [['regression rate day weight 1', [[2021, 10, 14], [2021, 10, 18], {'2021-09-24': 4.38, '2021-09-25': 4.29, '2021-09-26': 4.25, '2021-09-27': 4.32, '2021-09-28': 4.33, '2021-09-29': 4.28, '2021-09-30': 4.3, '2021-10-01': 4.29, '2021-10-02': 4.25, '2021-10-03': 4.36, '2021-10-04': 4.37, '2021-10-05': 4.29, '2021-10-06': 4.32, '2021-10-07': 4.29, '2021-10-08': 4.38, '2021-10-09': 4.35, '2021-10-10': 4.36, '2021-10-11': 4.37, '2021-10-12': 4.35, '2021-10-13': 4.22, '2021-10-14': 4.34, '2021-10-15': 4.29, '2021-10-16': 4.3, '2021-10-17': 4.36, '2021-10-18': 4.27}, 0, 0.0, []], 4.302888], ['regression rate day weight 2', [[2028, 6, 30], [2028, 7, 3], {'2028-06-10': 5.39, '2028-06-11': 5.39, '2028-06-12': 5.24, '2028-06-13': 5.3, '2028-06-14': 5.35, '2028-06-15': 5.39, '2028-06-16': 5.24, '2028-06-17': 5.37, '2028-06-18': 5.37, '2028-06-19': 5.24, '2028-06-20': 5.34, '2028-06-21': 5.32, '2028-06-22': 5.39, '2028-06-23': 5.24, '2028-06-24': 5.25, '2028-06-25': 5.33, '2028-06-26': 5.23, '2028-06-27': 5.39, '2028-06-28': 5.33, '2028-06-29': 5.29, '2028-06-30': 5.28, '2028-07-01': 5.35, '2028-07-02': 5.32, '2028-07-03': 5.35}, 5, 0.25, []], 5.49], ['partial repair probe 1', [[2025, 11, 17], [2025, 12, 15], {'2025-10-28': 5.38, '2025-10-29': 5.34, '2025-10-30': 5.23, '2025-10-31': 5.34, '2025-11-01': 5.28, '2025-11-02': 5.39, '2025-11-03': 5.33, '2025-11-04': 5.25, '2025-11-05': 5.24, '2025-11-06': 5.35, '2025-11-07': 5.36, '2025-11-08': 5.33, '2025-11-09': 5.23, '2025-11-10': 5.29, '2025-11-11': 5.24, '2025-11-12': 5.26, '2025-11-13': 5.35, '2025-11-14': 5.23, '2025-11-15': 5.26, '2025-11-16': 5.29, '2025-11-17': 5.35, '2025-11-18': 5.36, '2025-11-19': 5.39, '2025-11-20': 5.27, '2025-11-21': 5.35, '2025-11-22': 5.39, '2025-11-23': 5.32, '2025-11-24': 5.38, '2025-11-25': 5.36, '2025-11-26': 5.32, '2025-11-27': 5.25, '2025-11-28': 5.38, '2025-11-29': 5.38, '2025-11-30': 5.29, '2025-12-01': 5.36, '2025-12-02': 5.25, '2025-12-03': 5.34, '2025-12-04': 5.25, '2025-12-05': 5.34, '2025-12-06': 5.3, '2025-12-07': 5.23, '2025-12-08': 5.31, '2025-12-09': 5.3, '2025-12-10': 5.37, '2025-12-11': 5.24, '2025-12-12': 5.25, '2025-12-13': 5.35, '2025-12-14': 5.24, '2025-12-15': 5.38}, 2, 0.0, [[2025, 12, 8]]], 5.345259], ['partial repair probe 2', [[2026, 2, 20], [2026, 3, 9], {'2026-01-31': 1.53, '2026-02-01': 1.54, '2026-02-02': 1.55, '2026-02-03': 1.61, '2026-02-04': 1.53, '2026-02-05': 1.5, '2026-02-06': 1.6, '2026-02-07': 1.61, '2026-02-08': 1.54, '2026-02-09': 1.53, '2026-02-10': 1.58, '2026-02-11': 1.6, '2026-02-12': 1.49, '2026-02-13': 1.58, '2026-02-14': 1.52, '2026-02-15': 1.58, '2026-02-16': 1.54, '2026-02-17': 1.59, '2026-02-18': 1.57, '2026-02-19': 1.54, '2026-02-20': 1.62, '2026-02-21': 1.62, '2026-02-22': 1.59, '2026-02-23': 1.54, '2026-02-24': 1.55, '2026-02-25': 1.48, '2026-02-26': 1.5, '2026-02-27': 1.57, '2026-02-28': 1.51, '2026-03-01': 1.54, '2026-03-02': 1.5, '2026-03-03': 1.5, '2026-03-04': 1.59, '2026-03-05': 1.6, '2026-03-06': 1.57, '2026-03-07': 1.59, '2026-03-08': 1.57, '2026-03-09': 1.53}, 0, 0.25, [[2026, 3, 6]]], 1.816966], ['normal control 1', [[2022, 12, 20], [2022, 12, 23], {'2022-11-30': 1.51, '2022-12-01': 1.53, '2022-12-02': 1.53, '2022-12-03': 1.6, '2022-12-04': 1.63, '2022-12-05': 1.47, '2022-12-06': 1.56, '2022-12-07': 1.61, '2022-12-08': 1.5, '2022-12-09': 1.58, '2022-12-10': 1.58, '2022-12-11': 1.61, '2022-12-12': 1.61, '2022-12-13': 1.51, '2022-12-14': 1.57, '2022-12-15': 1.49, '2022-12-16': 1.5, '2022-12-17': 1.53, '2022-12-18': 1.51, '2022-12-19': 1.62, '2022-12-20': 1.49, '2022-12-21': 1.58, '2022-12-22': 1.54, '2022-12-23': 1.55}, 5, 0.25, []], 1.773398], ['normal control 2', [[2027, 7, 12], [2027, 7, 15], {'2027-06-22': 1.56, '2027-06-23': 1.49, '2027-06-24': 1.48, '2027-06-25': 1.51, '2027-06-26': 1.6, '2027-06-27': 1.55, '2027-06-28': 1.48, '2027-06-29': 1.62, '2027-06-30': 1.55, '2027-07-01': 1.63, '2027-07-02': 1.59, '2027-07-03': 1.57, '2027-07-04': 1.63, '2027-07-05': 1.47, '2027-07-06': 1.62, '2027-07-07': 1.55, '2027-07-08': 1.56, '2027-07-09': 1.55, '2027-07-10': 1.63, '2027-07-11': 1.57, '2027-07-12': 1.53, '2027-07-13': 1.63, '2027-07-14': 1.51, '2027-07-15': 1.57}, 0, 0.25, []], 1.806734], ['normal control 3', [[2022, 8, 1], [2022, 8, 4], {'2022-07-12': 1.49, '2022-07-13': 1.63, '2022-07-14': 1.48, '2022-07-15': 1.54, '2022-07-16': 1.56, '2022-07-17': 1.63, '2022-07-18': 1.6, '2022-07-19': 1.62, '2022-07-20': 1.51, '2022-07-21': 1.48, '2022-07-22': 1.58, '2022-07-23': 1.49, '2022-07-24': 1.6, '2022-07-25': 1.62, '2022-07-26': 1.57, '2022-07-27': 1.47, '2022-07-28': 1.6, '2022-07-29': 1.54, '2022-07-30': 1.5, '2022-07-31': 1.61, '2022-08-01': 1.56, '2022-08-02': 1.6, '2022-08-03': 1.56, '2022-08-04': 1.49}, 0, 0.1, []], 1.673402], ['normal control 4', [[2024, 12, 12], [2024, 12, 13], {'2024-11-22': 0.11, '2024-11-23': 0.11, '2024-11-24': 0.13, '2024-11-25': 0.1, '2024-11-26': 0.13, '2024-11-27': 0.01, '2024-11-28': 0.12, '2024-11-29': 0.03, '2024-11-30': 0.09, '2024-12-01': 0.07, '2024-12-02': 0.04, '2024-12-03': -0.01, '2024-12-04': 0.11, '2024-12-05': 0.02, '2024-12-06': 0.05, '2024-12-07': 0.01, '2024-12-08': 0.0, '2024-12-09': -0.02, '2024-12-10': 0.09, '2024-12-11': 0.04, '2024-12-12': 0.09, '2024-12-13': 0.05}, 2, 0.0, []], 0.09]], [['regression rate day weight 1', [[2025, 4, 14], [2025, 4, 17], {'2025-03-25': 5.35, '2025-03-26': 5.29, '2025-03-27': 5.26, '2025-03-28': 5.26, '2025-03-29': 5.27, '2025-03-30': 5.34, '2025-03-31': 5.33, '2025-04-01': 5.23, '2025-04-02': 5.24, '2025-04-03': 5.31, '2025-04-04': 5.35, '2025-04-05': 5.35, '2025-04-06': 5.34, '2025-04-07': 5.31, '2025-04-08': 5.32, '2025-04-09': 5.31, '2025-04-10': 5.3, '2025-04-11': 5.23, '2025-04-12': 5.39, '2025-04-13': 5.34, '2025-04-14': 5.32, '2025-04-15': 5.37, '2025-04-16': 5.36, '2025-04-17': 5.36}, 2, 0.0, [[2025, 4, 16]]], 5.253847], ['regression rate day weight 2', [[2024, 2, 29], [2024, 3, 4], {'2024-02-09': 4.3, '2024-02-10': 4.24, '2024-02-11': 4.22, '2024-02-12': 4.28, '2024-02-13': 4.36, '2024-02-14': 4.35, '2024-02-15': 4.26, '2024-02-16': 4.26, '2024-02-17': 4.28, '2024-02-18': 4.24, '2024-02-19': 4.36, '2024-02-20': 4.26, '2024-02-21': 4.29, '2024-02-22': 4.28, '2024-02-23': 4.27, '2024-02-24': 4.27, '2024-02-25': 4.28, '2024-02-26': 4.34, '2024-02-27': 4.33, '2024-02-28': 4.34, '2024-02-29': 4.37, '2024-03-01': 4.37, '2024-03-02': 4.23, '2024-03-03': 4.28, '2024-03-04': 4.25}, 2, 0.1, []], 4.437892], ['partial repair probe 1', [[2022, 9, 1], [2022, 9, 26], {'2022-08-12': 1.61, '2022-08-13': 1.6, '2022-08-14': 1.58, '2022-08-15': 1.54, '2022-08-16': 1.52, '2022-08-17': 1.47, '2022-08-18': 1.54, '2022-08-19': 1.56, '2022-08-20': 1.61, '2022-08-21': 1.62, '2022-08-22': 1.63, '2022-08-23': 1.52, '2022-08-24': 1.47, '2022-08-25': 1.63, '2022-08-26': 1.57, '2022-08-27': 1.63, '2022-08-28': 1.6, '2022-08-29': 1.52, '2022-08-30': 1.52, '2022-08-31': 1.6, '2022-09-01': 1.57, '2022-09-02': 1.51, '2022-09-03': 1.58, '2022-09-04': 1.58, '2022-09-05': 1.56, '2022-09-06': 1.49, '2022-09-07': 1.5, '2022-09-08': 1.58, '2022-09-09': 1.63, '2022-09-10': 1.59, '2022-09-11': 1.56, '2022-09-12': 1.55, '2022-09-13': 1.5, '2022-09-14': 1.5, '2022-09-15': 1.58, '2022-09-16': 1.63, '2022-09-17': 1.49, '2022-09-18': 1.54, '2022-09-19': 1.6, '2022-09-20': 1.57, '2022-09-21': 1.62, '2022-09-22': 1.51, '2022-09-23': 1.48, '2022-09-24': 1.47, '2022-09-25': 1.55, '2022-09-26': 1.59}, 5, 0.0, [[2022, 9, 9], [2022, 9, 23]]], 1.557959], ['partial repair probe 2', [[2026, 4, 6], [2026, 4, 23], {'2026-03-17': 1.51, '2026-03-18': 1.54, '2026-03-19': 1.57, '2026-03-20': 1.58, '2026-03-21': 1.58, '2026-03-22': 1.52, '2026-03-23': 1.56, '2026-03-24': 1.61, '2026-03-25': 1.51, '2026-03-26': 1.54, '2026-03-27': 1.6, '2026-03-28': 1.47, '2026-03-29': 1.57, '2026-03-30': 1.53, '2026-03-31': 1.47, '2026-04-01': 1.51, '2026-04-02': 1.62, '2026-04-03': 1.52, '2026-04-04': 1.59, '2026-04-05': 1.62, '2026-04-06': 1.48, '2026-04-07': 1.51, '2026-04-08': 1.48, '2026-04-09': 1.52, '2026-04-10': 1.63, '2026-04-11': 1.6, '2026-04-12': 1.6, '2026-04-13': 1.47, '2026-04-14': 1.47, '2026-04-15': 1.52, '2026-04-16': 1.51, '2026-04-17': 1.59, '2026-04-18': 1.52, '2026-04-19': 1.58, '2026-04-20': 1.57, '2026-04-21': 1.53, '2026-04-22': 1.55, '2026-04-23': 1.5}, 0, 0.25, [[2026, 4, 14], [2026, 4, 16]]], 1.796381], ['normal control 1', [[2023, 3, 16], [2023, 3, 17], {'2023-02-24': 0.04, '2023-02-25': 0.03, '2023-02-26': 0.0, '2023-02-27': 0.04, '2023-02-28': 0.05, '2023-03-01': -0.02, '2023-03-02': 0.13, '2023-03-03': 0.13, '2023-03-04': 0.0, '2023-03-05': 0.05, '2023-03-06': 0.1, '2023-03-07': 0.12, '2023-03-08': 0.01, '2023-03-09': -0.03, '2023-03-10': 0.12, '2023-03-11': 0.0, '2023-03-12': -0.03, '2023-03-13': 0.0, '2023-03-14': -0.03, '2023-03-15': -0.01, '2023-03-16': 0.05, '2023-03-17': 0.04}, 2, 0.0, []], -0.03], ['normal control 2', [[2022, 1, 26], [2022, 1, 27], {'2022-01-06': 5.3, '2022-01-07': 5.24, '2022-01-08': 5.31, '2022-01-09': 5.35, '2022-01-10': 5.24, '2022-01-11': 5.3, '2022-01-12': 5.3, '2022-01-13': 5.26, '2022-01-14': 5.25, '2022-01-15': 5.27, '2022-01-16': 5.26, '2022-01-17': 5.26, '2022-01-18': 5.31, '2022-01-19': 5.27, '2022-01-20': 5.31, '2022-01-21': 5.23, '2022-01-22': 5.23, '2022-01-23': 5.23, '2022-01-24': 5.24, '2022-01-25': 5.25, '2022-01-26': 5.36, '2022-01-27': 5.38}, 2, 0.1, []], 5.34], ['normal control 3', [[2023, 7, 31], [2023, 8, 1], {'2023-07-11': 5.38, '2023-07-12': 5.29, '2023-07-13': 5.26, '2023-07-14': 5.31, '2023-07-15': 5.31, '2023-07-16': 5.32, '2023-07-17': 5.25, '2023-07-18': 5.31, '2023-07-19': 5.28, '2023-07-20': 5.23, '2023-07-21': 5.37, '2023-07-22': 5.36, '2023-07-23': 5.23, '2023-07-24': 5.23, '2023-07-25': 5.27, '2023-07-26': 5.31, '2023-07-27': 5.29, '2023-07-28': 5.31, '2023-07-29': 5.27, '2023-07-30': 5.36, '2023-07-31': 5.26, '2023-08-01': 5.26}, 2, 0.0, []], 5.29], ['normal control 4', [[2028, 6, 15], [2028, 6, 16], {'2028-05-26': 4.27, '2028-05-27': 4.33, '2028-05-28': 4.29, '2028-05-29': 4.35, '2028-05-30': 4.34, '2028-05-31': 4.28, '2028-06-01': 4.27, '2028-06-02': 4.37, '2028-06-03': 4.36, '2028-06-04': 4.3, '2028-06-05': 4.22, '2028-06-06': 4.25, '2028-06-07': 4.32, '2028-06-08': 4.23, '2028-06-09': 4.33, '2028-06-10': 4.23, '2028-06-11': 4.26, '2028-06-12': 4.35, '2028-06-13': 4.34, '2028-06-14': 4.37, '2028-06-15': 4.28, '2028-06-16': 4.25}, 0, 0.0, []], 4.28]], [['regression rate day weight 1', [[2028, 8, 16], [2028, 9, 25], {'2028-07-27': 0.09, '2028-07-28': -0.03, '2028-07-29': 0.08, '2028-07-30': 0.07, '2028-07-31': 0.11, '2028-08-01': 0.03, '2028-08-02': 0.01, '2028-08-03': 0.13, '2028-08-04': 0.0, '2028-08-05': -0.01, '2028-08-06': 0.04, '2028-08-07': 0.05, '2028-08-08': 0.09, '2028-08-09': 0.02, '2028-08-10': 0.0, '2028-08-11': 0.04, '2028-08-12': 0.08, '2028-08-13': 0.09, '2028-08-14': 0.05, '2028-08-15': 0.12, '2028-08-16': 0.06, '2028-08-17': 0.09, '2028-08-18': -0.03, '2028-08-19': 0.08, '2028-08-20': 0.04, '2028-08-21': 0.08, '2028-08-22': 0.06, '2028-08-23': 0.13, '2028-08-24': 0.05, '2028-08-25': 0.13, '2028-08-26': -0.03, '2028-08-27': 0.0, '2028-08-28': 0.12, '2028-08-29': 0.1, '2028-08-30': 0.09, '2028-08-31': 0.02, '2028-09-01': 0.09, '2028-09-02': 0.1, '2028-09-03': -0.03, '2028-09-04': 0.05, '2028-09-05': -0.03, '2028-09-06': 0.11, '2028-09-07': -0.03, '2028-09-08': -0.02, '2028-09-09': 0.03, '2028-09-10': -0.02, '2028-09-11': 0.12, '2028-09-12': 0.0, '2028-09-13': 0.13, '2028-09-14': 0.1, '2028-09-15': 0.02, '2028-09-16': -0.02, '2028-09-17': 0.03, '2028-09-18': 0.13, '2028-09-19': 0.08, '2028-09-20': 0.04, '2028-09-21': 0.02, '2028-09-22': 0.0, '2028-09-23': 0.0, '2028-09-24': 0.08, '2028-09-25': 0.06}, 0, 0.0, [[2028, 9, 11]]], 0.048751], ['regression rate day weight 2', [[2026, 2, 12], [2026, 3, 11], {'2026-01-23': 5.39, '2026-01-24': 5.39, '2026-01-25': 5.34, '2026-01-26': 5.33, '2026-01-27': 5.26, '2026-01-28': 5.36, '2026-01-29': 5.29, '2026-01-30': 5.32, '2026-01-31': 5.36, '2026-02-01': 5.36, '2026-02-02': 5.29, '2026-02-03': 5.36, '2026-02-04': 5.39, '2026-02-05': 5.35, '2026-02-06': 5.3, '2026-02-07': 5.32, '2026-02-08': 5.27, '2026-02-09': 5.3, '2026-02-10': 5.33, '2026-02-11': 5.29, '2026-02-12': 5.31, '2026-02-13': 5.23, '2026-02-14': 5.33, '2026-02-15': 5.23, '2026-02-16': 5.37, '2026-02-17': 5.35, '2026-02-18': 5.37, '2026-02-19': 5.38, '2026-02-20': 5.33, '2026-02-21': 5.36, '2026-02-22': 5.24, '2026-02-23': 5.29, '2026-02-24': 5.39, '2026-02-25': 5.38, '2026-02-26': 5.23, '2026-02-27': 5.27, '2026-02-28': 5.36, '2026-03-01': 5.26, '2026-03-02': 5.27, '2026-03-03': 5.37, '2026-03-04': 5.23, '2026-03-05': 5.28, '2026-03-06': 5.27, '2026-03-07': 5.33, '2026-03-08': 5.34, '2026-03-09': 5.28, '2026-03-10': 5.31, '2026-03-11': 5.28}, 2, 0.1, [[2026, 2, 23], [2026, 3, 4]]], 5.438683], ['partial repair probe 1', [[2028, 1, 31], [2028, 2, 15], {'2028-01-11': -0.03, '2028-01-12': 0.03, '2028-01-13': -0.01, '2028-01-14': 0.03, '2028-01-15': 0.07, '2028-01-16': 0.04, '2028-01-17': 0.08, '2028-01-18': 0.06, '2028-01-19': 0.12, '2028-01-20': 0.1, '2028-01-21': 0.03, '2028-01-22': 0.02, '2028-01-23': 0.03, '2028-01-24': 0.1, '2028-01-25': 0.0, '2028-01-26': 0.0, '2028-01-27': -0.01, '2028-01-28': 0.04, '2028-01-29': 0.01, '2028-01-30': 0.13, '2028-01-31': 0.07, '2028-02-01': 0.11, '2028-02-02': 0.1, '2028-02-03': 0.02, '2028-02-04': 0.06, '2028-02-05': 0.08, '2028-02-06': 0.11, '2028-02-07': -0.01, '2028-02-08': 0.05, '2028-02-09': -0.02, '2028-02-10': -0.03, '2028-02-11': 0.05, '2028-02-12': 0.05, '2028-02-13': -0.03, '2028-02-14': 0.13, '2028-02-15': 0.07}, 5, 0.1, [[2028, 2, 3], [2028, 2, 8], [2028, 2, 14]]], 0.148667], ['partial repair probe 2', [[2023, 9, 1], [2023, 9, 13], {'2023-08-12': -0.01, '2023-08-13': -0.01, '2023-08-14': 0.02, '2023-08-15': 0.0, '2023-08-16': 0.12, '2023-08-17': -0.03, '2023-08-18': 0.09, '2023-08-19': 0.07, '2023-08-20': 0.04, '2023-08-21': 0.01, '2023-08-22': 0.01, '2023-08-23': 0.13, '2023-08-24': 0.07, '2023-08-25': 0.0, '2023-08-26': 0.12, '2023-08-27': 0.01, '2023-08-28': 0.09, '2023-08-29': 0.02, '2023-08-30': 0.07, '2023-08-31': 0.12, '2023-09-01': 0.05, '2023-09-02': 0.02, '2023-09-03': 0.1, '2023-09-04': 0.04, '2023-09-05': 0.11, '2023-09-06': 0.08, '2023-09-07': 0.0, '2023-09-08': 0.01, '2023-09-09': 0.13, '2023-09-10': 0.09, '2023-09-11': 0.02, '2023-09-12': -0.03, '2023-09-13': 0.02}, 2, 0.1, [[2023, 9, 12], [2023, 9, 11], [2023, 9, 4]]], 0.180001], ['normal control 1', [[2023, 1, 11], [2023, 1, 12], {'2022-12-22': -0.02, '2022-12-23': 0.03, '2022-12-24': 0.06, '2022-12-25': 0.05, '2022-12-26': 0.09, '2022-12-27': 0.04, '2022-12-28': 0.03, '2022-12-29': 0.04, '2022-12-30': -0.03, '2022-12-31': 0.05, '2023-01-01': 0.11, '2023-01-02': -0.03, '2023-01-03': 0.05, '2023-01-04': 0.07, '2023-01-05': 0.09, '2023-01-06': 0.1, '2023-01-07': 0.03, '2023-01-08': 0.1, '2023-01-09': 0.06, '2023-01-10': 0.02, '2023-01-11': -0.01, '2023-01-12': 0.05}, 2, 0.0, []], 0.06], ['normal control 2', [[2025, 9, 18], [2025, 9, 19], {'2025-08-29': 5.28, '2025-08-30': 5.25, '2025-08-31': 5.23, '2025-09-01': 5.32, '2025-09-02': 5.33, '2025-09-03': 5.3, '2025-09-04': 5.27, '2025-09-05': 5.32, '2025-09-06': 5.35, '2025-09-07': 5.26, '2025-09-08': 5.33, '2025-09-09': 5.3, '2025-09-10': 5.37, '2025-09-11': 5.28, '2025-09-12': 5.27, '2025-09-13': 5.29, '2025-09-14': 5.23, '2025-09-15': 5.39, '2025-09-16': 5.33, '2025-09-17': 5.29, '2025-09-18': 5.32, '2025-09-19': 5.34}, 5, 0.0, []], 5.28], ['normal control 3', [[2026, 11, 2], [2026, 11, 3], {'2026-10-13': 1.52, '2026-10-14': 1.63, '2026-10-15': 1.5, '2026-10-16': 1.58, '2026-10-17': 1.51, '2026-10-18': 1.55, '2026-10-19': 1.49, '2026-10-20': 1.61, '2026-10-21': 1.47, '2026-10-22': 1.5, '2026-10-23': 1.61, '2026-10-24': 1.48, '2026-10-25': 1.49, '2026-10-26': 1.5, '2026-10-27': 1.49, '2026-10-28': 1.47, '2026-10-29': 1.6, '2026-10-30': 1.5, '2026-10-31': 1.62, '2026-11-01': 1.51, '2026-11-02': 1.56, '2026-11-03': 1.57}, 2, 0.1, []], 1.7], ['normal control 4', [[2026, 3, 2], [2026, 3, 4], {'2026-02-10': 4.22, '2026-02-11': 4.3, '2026-02-12': 4.26, '2026-02-13': 4.36, '2026-02-14': 4.29, '2026-02-15': 4.33, '2026-02-16': 4.23, '2026-02-17': 4.34, '2026-02-18': 4.26, '2026-02-19': 4.28, '2026-02-20': 4.37, '2026-02-21': 4.26, '2026-02-22': 4.37, '2026-02-23': 4.32, '2026-02-24': 4.25, '2026-02-25': 4.24, '2026-02-26': 4.26, '2026-02-27': 4.37, '2026-02-28': 4.22, '2026-03-01': 4.26, '2026-03-02': 4.27, '2026-03-03': 4.29, '2026-03-04': 4.32}, 0, 0.25, []], 4.530254]]]
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 |
|---|---|---|---|
| regression rate day weight 1 | 1.503954 | 1.503954 | Passed |
| regression rate day weight 2 | 5.233435 | 5.426674 | Failed |
| partial repair probe 1 | 1.469964 | 1.620563 | Failed |
| partial repair probe 2 | 3.889432 | 4.496933 | Failed |
| normal control 1 | 0.38 | 0.38 | Passed |
| normal control 2 | 0.05 | 0.05 | Passed |
| normal control 3 | 5.54 | 5.54 | Passed |
| normal control 4 | 1.773398 | 1.773398 | Passed |
SHA-256 / e99d304cc6bfd6a82223e8b8aae272978bf778f0437c760597ba89d17bb7129f
3 / The verified repair
Exit 0"""Failure Map reference implementation. Python standard library only."""
import json
import datetime
N = 1
observations = []
def solve(start, end, rates, lookback, spread, holidays):
S = datetime.date(*start)
E = datetime.date(*end)
H = {datetime.date(*h) for h in holidays}
def biz(x):
return x.weekday() < 5 and x not in H
def back(x, k):
while k > 0:
x -= datetime.timedelta(days=1)
if biz(x):
k -= 1
return x
days = []
x = S
while x < E:
if biz(x):
days.append(x)
x += datetime.timedelta(days=1)
prod = 1.0
for i, d in enumerate(days):
nxt = days[i + 1] if i + 1 < len(days) else E
n = (nxt - d).days
obs = back(d, lookback)
prod *= 1 + rates[obs.isoformat()] / 100 * n / 360
total = (E - S).days
return round((prod - 1) * 360 / total * 100 + spread, 6)
def check(label, actual, expected):
observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[['regression rate day weight 1', [[2027, 3, 1], [2027, 3, 15], {'2027-02-09': 1.62, '2027-02-10': 1.5, '2027-02-11': 1.49, '2027-02-12': 1.55, '2027-02-13': 1.61, '2027-02-14': 1.57, '2027-02-15': 1.48, '2027-02-16': 1.51, '2027-02-17': 1.62, '2027-02-18': 1.56, '2027-02-19': 1.6, '2027-02-20': 1.49, '2027-02-21': 1.53, '2027-02-22': 1.57, '2027-02-23': 1.56, '2027-02-24': 1.63, '2027-02-25': 1.58, '2027-02-26': 1.63, '2027-02-27': 1.61, '2027-02-28': 1.49, '2027-03-01': 1.54, '2027-03-02': 1.48, '2027-03-03': 1.49, '2027-03-04': 1.6, '2027-03-05': 1.48, '2027-03-06': 1.54, '2027-03-07': 1.54, '2027-03-08': 1.51, '2027-03-09': 1.58, '2027-03-10': 1.52, '2027-03-11': 1.48, '2027-03-12': 1.47, '2027-03-13': 1.55, '2027-03-14': 1.51, '2027-03-15': 1.57}, 0, 0.0, []], 1.503954], ['regression rate day weight 2', [[2027, 9, 27], [2027, 10, 25], {'2027-09-07': 5.31, '2027-09-08': 5.34, '2027-09-09': 5.37, '2027-09-10': 5.3, '2027-09-11': 5.23, '2027-09-12': 5.34, '2027-09-13': 5.39, '2027-09-14': 5.24, '2027-09-15': 5.36, '2027-09-16': 5.25, '2027-09-17': 5.32, '2027-09-18': 5.38, '2027-09-19': 5.24, '2027-09-20': 5.38, '2027-09-21': 5.31, '2027-09-22': 5.36, '2027-09-23': 5.39, '2027-09-24': 5.25, '2027-09-25': 5.31, '2027-09-26': 5.39, '2027-09-27': 5.26, '2027-09-28': 5.35, '2027-09-29': 5.35, '2027-09-30': 5.39, '2027-10-01': 5.39, '2027-10-02': 5.23, '2027-10-03': 5.37, '2027-10-04': 5.35, '2027-10-05': 5.23, '2027-10-06': 5.37, '2027-10-07': 5.26, '2027-10-08': 5.31, '2027-10-09': 5.35, '2027-10-10': 5.34, '2027-10-11': 5.35, '2027-10-12': 5.39, '2027-10-13': 5.26, '2027-10-14': 5.24, '2027-10-15': 5.25, '2027-10-16': 5.33, '2027-10-17': 5.25, '2027-10-18': 5.32, '2027-10-19': 5.28, '2027-10-20': 5.29, '2027-10-21': 5.32, '2027-10-22': 5.39, '2027-10-23': 5.3, '2027-10-24': 5.3, '2027-10-25': 5.35}, 2, 0.1, [[2027, 9, 28]]], 5.426674], ['partial repair probe 1', [[2026, 1, 9], [2026, 1, 29], {'2025-12-20': 1.51, '2025-12-21': 1.56, '2025-12-22': 1.56, '2025-12-23': 1.48, '2025-12-24': 1.58, '2025-12-25': 1.53, '2025-12-26': 1.53, '2025-12-27': 1.63, '2025-12-28': 1.59, '2025-12-29': 1.47, '2025-12-30': 1.55, '2025-12-31': 1.55, '2026-01-01': 1.63, '2026-01-02': 1.52, '2026-01-03': 1.53, '2026-01-04': 1.54, '2026-01-05': 1.53, '2026-01-06': 1.49, '2026-01-07': 1.48, '2026-01-08': 1.54, '2026-01-09': 1.51, '2026-01-10': 1.56, '2026-01-11': 1.6, '2026-01-12': 1.56, '2026-01-13': 1.62, '2026-01-14': 1.53, '2026-01-15': 1.48, '2026-01-16': 1.52, '2026-01-17': 1.59, '2026-01-18': 1.51, '2026-01-19': 1.55, '2026-01-20': 1.54, '2026-01-21': 1.48, '2026-01-22': 1.62, '2026-01-23': 1.53, '2026-01-24': 1.55, '2026-01-25': 1.56, '2026-01-26': 1.58, '2026-01-27': 1.5, '2026-01-28': 1.62, '2026-01-29': 1.53}, 2, 0.1, [[2026, 1, 26], [2026, 1, 19]]], 1.620563], ['partial repair probe 2', [[2023, 3, 28], [2023, 4, 4], {'2023-03-08': 4.33, '2023-03-09': 4.32, '2023-03-10': 4.24, '2023-03-11': 4.38, '2023-03-12': 4.25, '2023-03-13': 4.31, '2023-03-14': 4.23, '2023-03-15': 4.34, '2023-03-16': 4.28, '2023-03-17': 4.38, '2023-03-18': 4.36, '2023-03-19': 4.35, '2023-03-20': 4.33, '2023-03-21': 4.22, '2023-03-22': 4.35, '2023-03-23': 4.23, '2023-03-24': 4.24, '2023-03-25': 4.31, '2023-03-26': 4.32, '2023-03-27': 4.24, '2023-03-28': 4.25, '2023-03-29': 4.38, '2023-03-30': 4.28, '2023-03-31': 4.22, '2023-04-01': 4.36, '2023-04-02': 4.29, '2023-04-03': 4.28, '2023-04-04': 4.38}, 0, 0.25, [[2023, 3, 29]]], 4.496933], ['normal control 1', [[2024, 12, 23], [2024, 12, 24], {'2024-12-03': 0.1, '2024-12-04': 0.09, '2024-12-05': 0.07, '2024-12-06': -0.01, '2024-12-07': 0.03, '2024-12-08': 0.13, '2024-12-09': 0.09, '2024-12-10': 0.02, '2024-12-11': -0.03, '2024-12-12': 0.05, '2024-12-13': 0.02, '2024-12-14': 0.1, '2024-12-15': -0.03, '2024-12-16': 0.1, '2024-12-17': 0.01, '2024-12-18': 0.04, '2024-12-19': 0.13, '2024-12-20': -0.03, '2024-12-21': 0.07, '2024-12-22': 0.11, '2024-12-23': 0.11, '2024-12-24': 0.03}, 2, 0.25, []], 0.38], ['normal control 2', [[2026, 7, 13], [2026, 7, 16], {'2026-06-23': 0.0, '2026-06-24': 0.03, '2026-06-25': 0.07, '2026-06-26': 0.12, '2026-06-27': 0.09, '2026-06-28': 0.09, '2026-06-29': 0.01, '2026-06-30': 0.02, '2026-07-01': 0.07, '2026-07-02': 0.05, '2026-07-03': 0.04, '2026-07-04': 0.04, '2026-07-05': 0.08, '2026-07-06': 0.09, '2026-07-07': 0.13, '2026-07-08': 0.11, '2026-07-09': -0.03, '2026-07-10': 0.06, '2026-07-11': 0.05, '2026-07-12': 0.02, '2026-07-13': 0.12, '2026-07-14': 0.06, '2026-07-15': 0.04, '2026-07-16': 0.04}, 2, 0.0, []], 0.05], ['normal control 3', [[2025, 10, 28], [2025, 10, 29], {'2025-10-08': 5.23, '2025-10-09': 5.3, '2025-10-10': 5.35, '2025-10-11': 5.36, '2025-10-12': 5.29, '2025-10-13': 5.29, '2025-10-14': 5.39, '2025-10-15': 5.32, '2025-10-16': 5.3, '2025-10-17': 5.33, '2025-10-18': 5.3, '2025-10-19': 5.38, '2025-10-20': 5.28, '2025-10-21': 5.29, '2025-10-22': 5.24, '2025-10-23': 5.36, '2025-10-24': 5.33, '2025-10-25': 5.28, '2025-10-26': 5.31, '2025-10-27': 5.24, '2025-10-28': 5.28, '2025-10-29': 5.34}, 5, 0.25, []], 5.54], ['normal control 4', [[2023, 10, 30], [2023, 11, 2], {'2023-10-10': 1.49, '2023-10-11': 1.58, '2023-10-12': 1.53, '2023-10-13': 1.5, '2023-10-14': 1.49, '2023-10-15': 1.54, '2023-10-16': 1.56, '2023-10-17': 1.61, '2023-10-18': 1.51, '2023-10-19': 1.6, '2023-10-20': 1.55, '2023-10-21': 1.5, '2023-10-22': 1.52, '2023-10-23': 1.5, '2023-10-24': 1.56, '2023-10-25': 1.51, '2023-10-26': 1.52, '2023-10-27': 1.52, '2023-10-28': 1.62, '2023-10-29': 1.53, '2023-10-30': 1.48, '2023-10-31': 1.54, '2023-11-01': 1.53, '2023-11-02': 1.57}, 5, 0.25, []], 1.773398]], [['regression rate day weight 1', [[2027, 11, 11], [2027, 12, 8], {'2027-10-22': 1.63, '2027-10-23': 1.54, '2027-10-24': 1.63, '2027-10-25': 1.6, '2027-10-26': 1.63, '2027-10-27': 1.62, '2027-10-28': 1.55, '2027-10-29': 1.61, '2027-10-30': 1.56, '2027-10-31': 1.55, '2027-11-01': 1.63, '2027-11-02': 1.51, '2027-11-03': 1.51, '2027-11-04': 1.48, '2027-11-05': 1.55, '2027-11-06': 1.6, '2027-11-07': 1.5, '2027-11-08': 1.63, '2027-11-09': 1.58, '2027-11-10': 1.47, '2027-11-11': 1.5, '2027-11-12': 1.47, '2027-11-13': 1.6, '2027-11-14': 1.54, '2027-11-15': 1.49, '2027-11-16': 1.49, '2027-11-17': 1.6, '2027-11-18': 1.54, '2027-11-19': 1.63, '2027-11-20': 1.59, '2027-11-21': 1.48, '2027-11-22': 1.56, '2027-11-23': 1.63, '2027-11-24': 1.59, '2027-11-25': 1.47, '2027-11-26': 1.53, '2027-11-27': 1.61, '2027-11-28': 1.49, '2027-11-29': 1.55, '2027-11-30': 1.63, '2027-12-01': 1.55, '2027-12-02': 1.52, '2027-12-03': 1.55, '2027-12-04': 1.53, '2027-12-05': 1.6, '2027-12-06': 1.47, '2027-12-07': 1.52, '2027-12-08': 1.6}, 2, 0.0, []], 1.547872], ['regression rate day weight 2', [[2025, 3, 31], [2025, 4, 25], {'2025-03-11': 4.28, '2025-03-12': 4.35, '2025-03-13': 4.27, '2025-03-14': 4.27, '2025-03-15': 4.23, '2025-03-16': 4.37, '2025-03-17': 4.36, '2025-03-18': 4.24, '2025-03-19': 4.26, '2025-03-20': 4.37, '2025-03-21': 4.26, '2025-03-22': 4.3, '2025-03-23': 4.32, '2025-03-24': 4.26, '2025-03-25': 4.3, '2025-03-26': 4.29, '2025-03-27': 4.24, '2025-03-28': 4.28, '2025-03-29': 4.34, '2025-03-30': 4.36, '2025-03-31': 4.38, '2025-04-01': 4.29, '2025-04-02': 4.22, '2025-04-03': 4.32, '2025-04-04': 4.32, '2025-04-05': 4.25, '2025-04-06': 4.29, '2025-04-07': 4.37, '2025-04-08': 4.38, '2025-04-09': 4.37, '2025-04-10': 4.32, '2025-04-11': 4.31, '2025-04-12': 4.26, '2025-04-13': 4.33, '2025-04-14': 4.23, '2025-04-15': 4.33, '2025-04-16': 4.35, '2025-04-17': 4.24, '2025-04-18': 4.33, '2025-04-19': 4.23, '2025-04-20': 4.29, '2025-04-21': 4.23, '2025-04-22': 4.25, '2025-04-23': 4.33, '2025-04-24': 4.29, '2025-04-25': 4.22}, 2, 0.25, [[2025, 4, 11]]], 4.565144], ['partial repair probe 1', [[2023, 4, 24], [2023, 5, 2], {'2023-04-04': 0.06, '2023-04-05': 0.0, '2023-04-06': 0.12, '2023-04-07': 0.09, '2023-04-08': 0.09, '2023-04-09': 0.05, '2023-04-10': 0.1, '2023-04-11': 0.11, '2023-04-12': -0.02, '2023-04-13': 0.05, '2023-04-14': 0.0, '2023-04-15': 0.1, '2023-04-16': 0.05, '2023-04-17': -0.02, '2023-04-18': 0.11, '2023-04-19': -0.03, '2023-04-20': -0.03, '2023-04-21': 0.08, '2023-04-22': 0.12, '2023-04-23': -0.01, '2023-04-24': 0.08, '2023-04-25': 0.02, '2023-04-26': 0.01, '2023-04-27': 0.08, '2023-04-28': 0.04, '2023-04-29': 0.09, '2023-04-30': 0.06, '2023-05-01': 0.13, '2023-05-02': 0.05}, 2, 0.1, [[2023, 4, 25], [2023, 5, 1]]], 0.1175], ['normal control 1', [[2023, 5, 29], [2023, 6, 1], {'2023-05-09': 1.58, '2023-05-10': 1.58, '2023-05-11': 1.55, '2023-05-12': 1.62, '2023-05-13': 1.59, '2023-05-14': 1.51, '2023-05-15': 1.58, '2023-05-16': 1.54, '2023-05-17': 1.61, '2023-05-18': 1.58, '2023-05-19': 1.63, '2023-05-20': 1.63, '2023-05-21': 1.62, '2023-05-22': 1.6, '2023-05-23': 1.53, '2023-05-24': 1.6, '2023-05-25': 1.61, '2023-05-26': 1.56, '2023-05-27': 1.52, '2023-05-28': 1.58, '2023-05-29': 1.47, '2023-05-30': 1.59, '2023-05-31': 1.51, '2023-06-01': 1.48}, 5, 0.1, []], 1.676736], ['normal control 2', [[2025, 12, 30], [2025, 12, 31], {'2025-12-10': 0.1, '2025-12-11': 0.12, '2025-12-12': 0.0, '2025-12-13': 0.02, '2025-12-14': 0.07, '2025-12-15': 0.11, '2025-12-16': 0.02, '2025-12-17': 0.03, '2025-12-18': 0.07, '2025-12-19': 0.04, '2025-12-20': -0.02, '2025-12-21': 0.08, '2025-12-22': 0.07, '2025-12-23': 0.05, '2025-12-24': 0.0, '2025-12-25': 0.09, '2025-12-26': 0.1, '2025-12-27': 0.11, '2025-12-28': 0.01, '2025-12-29': 0.12, '2025-12-30': 0.04, '2025-12-31': 0.01}, 0, 0.1, []], 0.14], ['normal control 3', [[2024, 5, 13], [2024, 5, 16], {'2024-04-23': 4.34, '2024-04-24': 4.35, '2024-04-25': 4.28, '2024-04-26': 4.23, '2024-04-27': 4.32, '2024-04-28': 4.35, '2024-04-29': 4.28, '2024-04-30': 4.34, '2024-05-01': 4.25, '2024-05-02': 4.29, '2024-05-03': 4.31, '2024-05-04': 4.23, '2024-05-05': 4.38, '2024-05-06': 4.34, '2024-05-07': 4.33, '2024-05-08': 4.25, '2024-05-09': 4.22, '2024-05-10': 4.33, '2024-05-11': 4.25, '2024-05-12': 4.3, '2024-05-13': 4.31, '2024-05-14': 4.33, '2024-05-15': 4.3, '2024-05-16': 4.26}, 0, 0.1, []], 4.41385], ['normal control 4', [[2028, 10, 30], [2028, 11, 2], {'2028-10-10': 0.06, '2028-10-11': 0.13, '2028-10-12': 0.0, '2028-10-13': -0.03, '2028-10-14': 0.13, '2028-10-15': 0.08, '2028-10-16': 0.09, '2028-10-17': 0.0, '2028-10-18': 0.05, '2028-10-19': 0.12, '2028-10-20': 0.04, '2028-10-21': 0.02, '2028-10-22': 0.03, '2028-10-23': 0.06, '2028-10-24': 0.08, '2028-10-25': 0.01, '2028-10-26': 0.02, '2028-10-27': -0.01, '2028-10-28': 0.0, '2028-10-29': 0.03, '2028-10-30': -0.03, '2028-10-31': 0.04, '2028-11-01': 0.12, '2028-11-02': -0.02}, 2, 0.25, []], 0.243333], ['normal control 5', [[2024, 8, 8], [2024, 8, 9], {'2024-07-19': 5.24, '2024-07-20': 5.32, '2024-07-21': 5.31, '2024-07-22': 5.27, '2024-07-23': 5.35, '2024-07-24': 5.29, '2024-07-25': 5.32, '2024-07-26': 5.26, '2024-07-27': 5.38, '2024-07-28': 5.24, '2024-07-29': 5.31, '2024-07-30': 5.35, '2024-07-31': 5.25, '2024-08-01': 5.29, '2024-08-02': 5.24, '2024-08-03': 5.24, '2024-08-04': 5.37, '2024-08-05': 5.33, '2024-08-06': 5.29, '2024-08-07': 5.33, '2024-08-08': 5.27, '2024-08-09': 5.37}, 5, 0.25, []], 5.54]], [['regression rate day weight 1', [[2021, 10, 14], [2021, 10, 18], {'2021-09-24': 4.38, '2021-09-25': 4.29, '2021-09-26': 4.25, '2021-09-27': 4.32, '2021-09-28': 4.33, '2021-09-29': 4.28, '2021-09-30': 4.3, '2021-10-01': 4.29, '2021-10-02': 4.25, '2021-10-03': 4.36, '2021-10-04': 4.37, '2021-10-05': 4.29, '2021-10-06': 4.32, '2021-10-07': 4.29, '2021-10-08': 4.38, '2021-10-09': 4.35, '2021-10-10': 4.36, '2021-10-11': 4.37, '2021-10-12': 4.35, '2021-10-13': 4.22, '2021-10-14': 4.34, '2021-10-15': 4.29, '2021-10-16': 4.3, '2021-10-17': 4.36, '2021-10-18': 4.27}, 0, 0.0, []], 4.302888], ['regression rate day weight 2', [[2028, 6, 30], [2028, 7, 3], {'2028-06-10': 5.39, '2028-06-11': 5.39, '2028-06-12': 5.24, '2028-06-13': 5.3, '2028-06-14': 5.35, '2028-06-15': 5.39, '2028-06-16': 5.24, '2028-06-17': 5.37, '2028-06-18': 5.37, '2028-06-19': 5.24, '2028-06-20': 5.34, '2028-06-21': 5.32, '2028-06-22': 5.39, '2028-06-23': 5.24, '2028-06-24': 5.25, '2028-06-25': 5.33, '2028-06-26': 5.23, '2028-06-27': 5.39, '2028-06-28': 5.33, '2028-06-29': 5.29, '2028-06-30': 5.28, '2028-07-01': 5.35, '2028-07-02': 5.32, '2028-07-03': 5.35}, 5, 0.25, []], 5.49], ['partial repair probe 1', [[2025, 11, 17], [2025, 12, 15], {'2025-10-28': 5.38, '2025-10-29': 5.34, '2025-10-30': 5.23, '2025-10-31': 5.34, '2025-11-01': 5.28, '2025-11-02': 5.39, '2025-11-03': 5.33, '2025-11-04': 5.25, '2025-11-05': 5.24, '2025-11-06': 5.35, '2025-11-07': 5.36, '2025-11-08': 5.33, '2025-11-09': 5.23, '2025-11-10': 5.29, '2025-11-11': 5.24, '2025-11-12': 5.26, '2025-11-13': 5.35, '2025-11-14': 5.23, '2025-11-15': 5.26, '2025-11-16': 5.29, '2025-11-17': 5.35, '2025-11-18': 5.36, '2025-11-19': 5.39, '2025-11-20': 5.27, '2025-11-21': 5.35, '2025-11-22': 5.39, '2025-11-23': 5.32, '2025-11-24': 5.38, '2025-11-25': 5.36, '2025-11-26': 5.32, '2025-11-27': 5.25, '2025-11-28': 5.38, '2025-11-29': 5.38, '2025-11-30': 5.29, '2025-12-01': 5.36, '2025-12-02': 5.25, '2025-12-03': 5.34, '2025-12-04': 5.25, '2025-12-05': 5.34, '2025-12-06': 5.3, '2025-12-07': 5.23, '2025-12-08': 5.31, '2025-12-09': 5.3, '2025-12-10': 5.37, '2025-12-11': 5.24, '2025-12-12': 5.25, '2025-12-13': 5.35, '2025-12-14': 5.24, '2025-12-15': 5.38}, 2, 0.0, [[2025, 12, 8]]], 5.345259], ['partial repair probe 2', [[2026, 2, 20], [2026, 3, 9], {'2026-01-31': 1.53, '2026-02-01': 1.54, '2026-02-02': 1.55, '2026-02-03': 1.61, '2026-02-04': 1.53, '2026-02-05': 1.5, '2026-02-06': 1.6, '2026-02-07': 1.61, '2026-02-08': 1.54, '2026-02-09': 1.53, '2026-02-10': 1.58, '2026-02-11': 1.6, '2026-02-12': 1.49, '2026-02-13': 1.58, '2026-02-14': 1.52, '2026-02-15': 1.58, '2026-02-16': 1.54, '2026-02-17': 1.59, '2026-02-18': 1.57, '2026-02-19': 1.54, '2026-02-20': 1.62, '2026-02-21': 1.62, '2026-02-22': 1.59, '2026-02-23': 1.54, '2026-02-24': 1.55, '2026-02-25': 1.48, '2026-02-26': 1.5, '2026-02-27': 1.57, '2026-02-28': 1.51, '2026-03-01': 1.54, '2026-03-02': 1.5, '2026-03-03': 1.5, '2026-03-04': 1.59, '2026-03-05': 1.6, '2026-03-06': 1.57, '2026-03-07': 1.59, '2026-03-08': 1.57, '2026-03-09': 1.53}, 0, 0.25, [[2026, 3, 6]]], 1.816966], ['normal control 1', [[2022, 12, 20], [2022, 12, 23], {'2022-11-30': 1.51, '2022-12-01': 1.53, '2022-12-02': 1.53, '2022-12-03': 1.6, '2022-12-04': 1.63, '2022-12-05': 1.47, '2022-12-06': 1.56, '2022-12-07': 1.61, '2022-12-08': 1.5, '2022-12-09': 1.58, '2022-12-10': 1.58, '2022-12-11': 1.61, '2022-12-12': 1.61, '2022-12-13': 1.51, '2022-12-14': 1.57, '2022-12-15': 1.49, '2022-12-16': 1.5, '2022-12-17': 1.53, '2022-12-18': 1.51, '2022-12-19': 1.62, '2022-12-20': 1.49, '2022-12-21': 1.58, '2022-12-22': 1.54, '2022-12-23': 1.55}, 5, 0.25, []], 1.773398], ['normal control 2', [[2027, 7, 12], [2027, 7, 15], {'2027-06-22': 1.56, '2027-06-23': 1.49, '2027-06-24': 1.48, '2027-06-25': 1.51, '2027-06-26': 1.6, '2027-06-27': 1.55, '2027-06-28': 1.48, '2027-06-29': 1.62, '2027-06-30': 1.55, '2027-07-01': 1.63, '2027-07-02': 1.59, '2027-07-03': 1.57, '2027-07-04': 1.63, '2027-07-05': 1.47, '2027-07-06': 1.62, '2027-07-07': 1.55, '2027-07-08': 1.56, '2027-07-09': 1.55, '2027-07-10': 1.63, '2027-07-11': 1.57, '2027-07-12': 1.53, '2027-07-13': 1.63, '2027-07-14': 1.51, '2027-07-15': 1.57}, 0, 0.25, []], 1.806734], ['normal control 3', [[2022, 8, 1], [2022, 8, 4], {'2022-07-12': 1.49, '2022-07-13': 1.63, '2022-07-14': 1.48, '2022-07-15': 1.54, '2022-07-16': 1.56, '2022-07-17': 1.63, '2022-07-18': 1.6, '2022-07-19': 1.62, '2022-07-20': 1.51, '2022-07-21': 1.48, '2022-07-22': 1.58, '2022-07-23': 1.49, '2022-07-24': 1.6, '2022-07-25': 1.62, '2022-07-26': 1.57, '2022-07-27': 1.47, '2022-07-28': 1.6, '2022-07-29': 1.54, '2022-07-30': 1.5, '2022-07-31': 1.61, '2022-08-01': 1.56, '2022-08-02': 1.6, '2022-08-03': 1.56, '2022-08-04': 1.49}, 0, 0.1, []], 1.673402], ['normal control 4', [[2024, 12, 12], [2024, 12, 13], {'2024-11-22': 0.11, '2024-11-23': 0.11, '2024-11-24': 0.13, '2024-11-25': 0.1, '2024-11-26': 0.13, '2024-11-27': 0.01, '2024-11-28': 0.12, '2024-11-29': 0.03, '2024-11-30': 0.09, '2024-12-01': 0.07, '2024-12-02': 0.04, '2024-12-03': -0.01, '2024-12-04': 0.11, '2024-12-05': 0.02, '2024-12-06': 0.05, '2024-12-07': 0.01, '2024-12-08': 0.0, '2024-12-09': -0.02, '2024-12-10': 0.09, '2024-12-11': 0.04, '2024-12-12': 0.09, '2024-12-13': 0.05}, 2, 0.0, []], 0.09]], [['regression rate day weight 1', [[2025, 4, 14], [2025, 4, 17], {'2025-03-25': 5.35, '2025-03-26': 5.29, '2025-03-27': 5.26, '2025-03-28': 5.26, '2025-03-29': 5.27, '2025-03-30': 5.34, '2025-03-31': 5.33, '2025-04-01': 5.23, '2025-04-02': 5.24, '2025-04-03': 5.31, '2025-04-04': 5.35, '2025-04-05': 5.35, '2025-04-06': 5.34, '2025-04-07': 5.31, '2025-04-08': 5.32, '2025-04-09': 5.31, '2025-04-10': 5.3, '2025-04-11': 5.23, '2025-04-12': 5.39, '2025-04-13': 5.34, '2025-04-14': 5.32, '2025-04-15': 5.37, '2025-04-16': 5.36, '2025-04-17': 5.36}, 2, 0.0, [[2025, 4, 16]]], 5.253847], ['regression rate day weight 2', [[2024, 2, 29], [2024, 3, 4], {'2024-02-09': 4.3, '2024-02-10': 4.24, '2024-02-11': 4.22, '2024-02-12': 4.28, '2024-02-13': 4.36, '2024-02-14': 4.35, '2024-02-15': 4.26, '2024-02-16': 4.26, '2024-02-17': 4.28, '2024-02-18': 4.24, '2024-02-19': 4.36, '2024-02-20': 4.26, '2024-02-21': 4.29, '2024-02-22': 4.28, '2024-02-23': 4.27, '2024-02-24': 4.27, '2024-02-25': 4.28, '2024-02-26': 4.34, '2024-02-27': 4.33, '2024-02-28': 4.34, '2024-02-29': 4.37, '2024-03-01': 4.37, '2024-03-02': 4.23, '2024-03-03': 4.28, '2024-03-04': 4.25}, 2, 0.1, []], 4.437892], ['partial repair probe 1', [[2022, 9, 1], [2022, 9, 26], {'2022-08-12': 1.61, '2022-08-13': 1.6, '2022-08-14': 1.58, '2022-08-15': 1.54, '2022-08-16': 1.52, '2022-08-17': 1.47, '2022-08-18': 1.54, '2022-08-19': 1.56, '2022-08-20': 1.61, '2022-08-21': 1.62, '2022-08-22': 1.63, '2022-08-23': 1.52, '2022-08-24': 1.47, '2022-08-25': 1.63, '2022-08-26': 1.57, '2022-08-27': 1.63, '2022-08-28': 1.6, '2022-08-29': 1.52, '2022-08-30': 1.52, '2022-08-31': 1.6, '2022-09-01': 1.57, '2022-09-02': 1.51, '2022-09-03': 1.58, '2022-09-04': 1.58, '2022-09-05': 1.56, '2022-09-06': 1.49, '2022-09-07': 1.5, '2022-09-08': 1.58, '2022-09-09': 1.63, '2022-09-10': 1.59, '2022-09-11': 1.56, '2022-09-12': 1.55, '2022-09-13': 1.5, '2022-09-14': 1.5, '2022-09-15': 1.58, '2022-09-16': 1.63, '2022-09-17': 1.49, '2022-09-18': 1.54, '2022-09-19': 1.6, '2022-09-20': 1.57, '2022-09-21': 1.62, '2022-09-22': 1.51, '2022-09-23': 1.48, '2022-09-24': 1.47, '2022-09-25': 1.55, '2022-09-26': 1.59}, 5, 0.0, [[2022, 9, 9], [2022, 9, 23]]], 1.557959], ['partial repair probe 2', [[2026, 4, 6], [2026, 4, 23], {'2026-03-17': 1.51, '2026-03-18': 1.54, '2026-03-19': 1.57, '2026-03-20': 1.58, '2026-03-21': 1.58, '2026-03-22': 1.52, '2026-03-23': 1.56, '2026-03-24': 1.61, '2026-03-25': 1.51, '2026-03-26': 1.54, '2026-03-27': 1.6, '2026-03-28': 1.47, '2026-03-29': 1.57, '2026-03-30': 1.53, '2026-03-31': 1.47, '2026-04-01': 1.51, '2026-04-02': 1.62, '2026-04-03': 1.52, '2026-04-04': 1.59, '2026-04-05': 1.62, '2026-04-06': 1.48, '2026-04-07': 1.51, '2026-04-08': 1.48, '2026-04-09': 1.52, '2026-04-10': 1.63, '2026-04-11': 1.6, '2026-04-12': 1.6, '2026-04-13': 1.47, '2026-04-14': 1.47, '2026-04-15': 1.52, '2026-04-16': 1.51, '2026-04-17': 1.59, '2026-04-18': 1.52, '2026-04-19': 1.58, '2026-04-20': 1.57, '2026-04-21': 1.53, '2026-04-22': 1.55, '2026-04-23': 1.5}, 0, 0.25, [[2026, 4, 14], [2026, 4, 16]]], 1.796381], ['normal control 1', [[2023, 3, 16], [2023, 3, 17], {'2023-02-24': 0.04, '2023-02-25': 0.03, '2023-02-26': 0.0, '2023-02-27': 0.04, '2023-02-28': 0.05, '2023-03-01': -0.02, '2023-03-02': 0.13, '2023-03-03': 0.13, '2023-03-04': 0.0, '2023-03-05': 0.05, '2023-03-06': 0.1, '2023-03-07': 0.12, '2023-03-08': 0.01, '2023-03-09': -0.03, '2023-03-10': 0.12, '2023-03-11': 0.0, '2023-03-12': -0.03, '2023-03-13': 0.0, '2023-03-14': -0.03, '2023-03-15': -0.01, '2023-03-16': 0.05, '2023-03-17': 0.04}, 2, 0.0, []], -0.03], ['normal control 2', [[2022, 1, 26], [2022, 1, 27], {'2022-01-06': 5.3, '2022-01-07': 5.24, '2022-01-08': 5.31, '2022-01-09': 5.35, '2022-01-10': 5.24, '2022-01-11': 5.3, '2022-01-12': 5.3, '2022-01-13': 5.26, '2022-01-14': 5.25, '2022-01-15': 5.27, '2022-01-16': 5.26, '2022-01-17': 5.26, '2022-01-18': 5.31, '2022-01-19': 5.27, '2022-01-20': 5.31, '2022-01-21': 5.23, '2022-01-22': 5.23, '2022-01-23': 5.23, '2022-01-24': 5.24, '2022-01-25': 5.25, '2022-01-26': 5.36, '2022-01-27': 5.38}, 2, 0.1, []], 5.34], ['normal control 3', [[2023, 7, 31], [2023, 8, 1], {'2023-07-11': 5.38, '2023-07-12': 5.29, '2023-07-13': 5.26, '2023-07-14': 5.31, '2023-07-15': 5.31, '2023-07-16': 5.32, '2023-07-17': 5.25, '2023-07-18': 5.31, '2023-07-19': 5.28, '2023-07-20': 5.23, '2023-07-21': 5.37, '2023-07-22': 5.36, '2023-07-23': 5.23, '2023-07-24': 5.23, '2023-07-25': 5.27, '2023-07-26': 5.31, '2023-07-27': 5.29, '2023-07-28': 5.31, '2023-07-29': 5.27, '2023-07-30': 5.36, '2023-07-31': 5.26, '2023-08-01': 5.26}, 2, 0.0, []], 5.29], ['normal control 4', [[2028, 6, 15], [2028, 6, 16], {'2028-05-26': 4.27, '2028-05-27': 4.33, '2028-05-28': 4.29, '2028-05-29': 4.35, '2028-05-30': 4.34, '2028-05-31': 4.28, '2028-06-01': 4.27, '2028-06-02': 4.37, '2028-06-03': 4.36, '2028-06-04': 4.3, '2028-06-05': 4.22, '2028-06-06': 4.25, '2028-06-07': 4.32, '2028-06-08': 4.23, '2028-06-09': 4.33, '2028-06-10': 4.23, '2028-06-11': 4.26, '2028-06-12': 4.35, '2028-06-13': 4.34, '2028-06-14': 4.37, '2028-06-15': 4.28, '2028-06-16': 4.25}, 0, 0.0, []], 4.28]], [['regression rate day weight 1', [[2028, 8, 16], [2028, 9, 25], {'2028-07-27': 0.09, '2028-07-28': -0.03, '2028-07-29': 0.08, '2028-07-30': 0.07, '2028-07-31': 0.11, '2028-08-01': 0.03, '2028-08-02': 0.01, '2028-08-03': 0.13, '2028-08-04': 0.0, '2028-08-05': -0.01, '2028-08-06': 0.04, '2028-08-07': 0.05, '2028-08-08': 0.09, '2028-08-09': 0.02, '2028-08-10': 0.0, '2028-08-11': 0.04, '2028-08-12': 0.08, '2028-08-13': 0.09, '2028-08-14': 0.05, '2028-08-15': 0.12, '2028-08-16': 0.06, '2028-08-17': 0.09, '2028-08-18': -0.03, '2028-08-19': 0.08, '2028-08-20': 0.04, '2028-08-21': 0.08, '2028-08-22': 0.06, '2028-08-23': 0.13, '2028-08-24': 0.05, '2028-08-25': 0.13, '2028-08-26': -0.03, '2028-08-27': 0.0, '2028-08-28': 0.12, '2028-08-29': 0.1, '2028-08-30': 0.09, '2028-08-31': 0.02, '2028-09-01': 0.09, '2028-09-02': 0.1, '2028-09-03': -0.03, '2028-09-04': 0.05, '2028-09-05': -0.03, '2028-09-06': 0.11, '2028-09-07': -0.03, '2028-09-08': -0.02, '2028-09-09': 0.03, '2028-09-10': -0.02, '2028-09-11': 0.12, '2028-09-12': 0.0, '2028-09-13': 0.13, '2028-09-14': 0.1, '2028-09-15': 0.02, '2028-09-16': -0.02, '2028-09-17': 0.03, '2028-09-18': 0.13, '2028-09-19': 0.08, '2028-09-20': 0.04, '2028-09-21': 0.02, '2028-09-22': 0.0, '2028-09-23': 0.0, '2028-09-24': 0.08, '2028-09-25': 0.06}, 0, 0.0, [[2028, 9, 11]]], 0.048751], ['regression rate day weight 2', [[2026, 2, 12], [2026, 3, 11], {'2026-01-23': 5.39, '2026-01-24': 5.39, '2026-01-25': 5.34, '2026-01-26': 5.33, '2026-01-27': 5.26, '2026-01-28': 5.36, '2026-01-29': 5.29, '2026-01-30': 5.32, '2026-01-31': 5.36, '2026-02-01': 5.36, '2026-02-02': 5.29, '2026-02-03': 5.36, '2026-02-04': 5.39, '2026-02-05': 5.35, '2026-02-06': 5.3, '2026-02-07': 5.32, '2026-02-08': 5.27, '2026-02-09': 5.3, '2026-02-10': 5.33, '2026-02-11': 5.29, '2026-02-12': 5.31, '2026-02-13': 5.23, '2026-02-14': 5.33, '2026-02-15': 5.23, '2026-02-16': 5.37, '2026-02-17': 5.35, '2026-02-18': 5.37, '2026-02-19': 5.38, '2026-02-20': 5.33, '2026-02-21': 5.36, '2026-02-22': 5.24, '2026-02-23': 5.29, '2026-02-24': 5.39, '2026-02-25': 5.38, '2026-02-26': 5.23, '2026-02-27': 5.27, '2026-02-28': 5.36, '2026-03-01': 5.26, '2026-03-02': 5.27, '2026-03-03': 5.37, '2026-03-04': 5.23, '2026-03-05': 5.28, '2026-03-06': 5.27, '2026-03-07': 5.33, '2026-03-08': 5.34, '2026-03-09': 5.28, '2026-03-10': 5.31, '2026-03-11': 5.28}, 2, 0.1, [[2026, 2, 23], [2026, 3, 4]]], 5.438683], ['partial repair probe 1', [[2028, 1, 31], [2028, 2, 15], {'2028-01-11': -0.03, '2028-01-12': 0.03, '2028-01-13': -0.01, '2028-01-14': 0.03, '2028-01-15': 0.07, '2028-01-16': 0.04, '2028-01-17': 0.08, '2028-01-18': 0.06, '2028-01-19': 0.12, '2028-01-20': 0.1, '2028-01-21': 0.03, '2028-01-22': 0.02, '2028-01-23': 0.03, '2028-01-24': 0.1, '2028-01-25': 0.0, '2028-01-26': 0.0, '2028-01-27': -0.01, '2028-01-28': 0.04, '2028-01-29': 0.01, '2028-01-30': 0.13, '2028-01-31': 0.07, '2028-02-01': 0.11, '2028-02-02': 0.1, '2028-02-03': 0.02, '2028-02-04': 0.06, '2028-02-05': 0.08, '2028-02-06': 0.11, '2028-02-07': -0.01, '2028-02-08': 0.05, '2028-02-09': -0.02, '2028-02-10': -0.03, '2028-02-11': 0.05, '2028-02-12': 0.05, '2028-02-13': -0.03, '2028-02-14': 0.13, '2028-02-15': 0.07}, 5, 0.1, [[2028, 2, 3], [2028, 2, 8], [2028, 2, 14]]], 0.148667], ['partial repair probe 2', [[2023, 9, 1], [2023, 9, 13], {'2023-08-12': -0.01, '2023-08-13': -0.01, '2023-08-14': 0.02, '2023-08-15': 0.0, '2023-08-16': 0.12, '2023-08-17': -0.03, '2023-08-18': 0.09, '2023-08-19': 0.07, '2023-08-20': 0.04, '2023-08-21': 0.01, '2023-08-22': 0.01, '2023-08-23': 0.13, '2023-08-24': 0.07, '2023-08-25': 0.0, '2023-08-26': 0.12, '2023-08-27': 0.01, '2023-08-28': 0.09, '2023-08-29': 0.02, '2023-08-30': 0.07, '2023-08-31': 0.12, '2023-09-01': 0.05, '2023-09-02': 0.02, '2023-09-03': 0.1, '2023-09-04': 0.04, '2023-09-05': 0.11, '2023-09-06': 0.08, '2023-09-07': 0.0, '2023-09-08': 0.01, '2023-09-09': 0.13, '2023-09-10': 0.09, '2023-09-11': 0.02, '2023-09-12': -0.03, '2023-09-13': 0.02}, 2, 0.1, [[2023, 9, 12], [2023, 9, 11], [2023, 9, 4]]], 0.180001], ['normal control 1', [[2023, 1, 11], [2023, 1, 12], {'2022-12-22': -0.02, '2022-12-23': 0.03, '2022-12-24': 0.06, '2022-12-25': 0.05, '2022-12-26': 0.09, '2022-12-27': 0.04, '2022-12-28': 0.03, '2022-12-29': 0.04, '2022-12-30': -0.03, '2022-12-31': 0.05, '2023-01-01': 0.11, '2023-01-02': -0.03, '2023-01-03': 0.05, '2023-01-04': 0.07, '2023-01-05': 0.09, '2023-01-06': 0.1, '2023-01-07': 0.03, '2023-01-08': 0.1, '2023-01-09': 0.06, '2023-01-10': 0.02, '2023-01-11': -0.01, '2023-01-12': 0.05}, 2, 0.0, []], 0.06], ['normal control 2', [[2025, 9, 18], [2025, 9, 19], {'2025-08-29': 5.28, '2025-08-30': 5.25, '2025-08-31': 5.23, '2025-09-01': 5.32, '2025-09-02': 5.33, '2025-09-03': 5.3, '2025-09-04': 5.27, '2025-09-05': 5.32, '2025-09-06': 5.35, '2025-09-07': 5.26, '2025-09-08': 5.33, '2025-09-09': 5.3, '2025-09-10': 5.37, '2025-09-11': 5.28, '2025-09-12': 5.27, '2025-09-13': 5.29, '2025-09-14': 5.23, '2025-09-15': 5.39, '2025-09-16': 5.33, '2025-09-17': 5.29, '2025-09-18': 5.32, '2025-09-19': 5.34}, 5, 0.0, []], 5.28], ['normal control 3', [[2026, 11, 2], [2026, 11, 3], {'2026-10-13': 1.52, '2026-10-14': 1.63, '2026-10-15': 1.5, '2026-10-16': 1.58, '2026-10-17': 1.51, '2026-10-18': 1.55, '2026-10-19': 1.49, '2026-10-20': 1.61, '2026-10-21': 1.47, '2026-10-22': 1.5, '2026-10-23': 1.61, '2026-10-24': 1.48, '2026-10-25': 1.49, '2026-10-26': 1.5, '2026-10-27': 1.49, '2026-10-28': 1.47, '2026-10-29': 1.6, '2026-10-30': 1.5, '2026-10-31': 1.62, '2026-11-01': 1.51, '2026-11-02': 1.56, '2026-11-03': 1.57}, 2, 0.1, []], 1.7], ['normal control 4', [[2026, 3, 2], [2026, 3, 4], {'2026-02-10': 4.22, '2026-02-11': 4.3, '2026-02-12': 4.26, '2026-02-13': 4.36, '2026-02-14': 4.29, '2026-02-15': 4.33, '2026-02-16': 4.23, '2026-02-17': 4.34, '2026-02-18': 4.26, '2026-02-19': 4.28, '2026-02-20': 4.37, '2026-02-21': 4.26, '2026-02-22': 4.37, '2026-02-23': 4.32, '2026-02-24': 4.25, '2026-02-25': 4.24, '2026-02-26': 4.26, '2026-02-27': 4.37, '2026-02-28': 4.22, '2026-03-01': 4.26, '2026-03-02': 4.27, '2026-03-03': 4.29, '2026-03-04': 4.32}, 0, 0.25, []], 4.530254]]]
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 |
|---|---|---|---|
| regression rate day weight 1 | 1.503954 | 1.503954 | Passed |
| regression rate day weight 2 | 5.426674 | 5.426674 | Passed |
| partial repair probe 1 | 1.620563 | 1.620563 | Passed |
| partial repair probe 2 | 4.496933 | 4.496933 | Passed |
| normal control 1 | 0.38 | 0.38 | Passed |
| normal control 2 | 0.05 | 0.05 | Passed |
| normal control 3 | 5.54 | 5.54 | Passed |
| normal control 4 | 1.773398 | 1.773398 | Passed |
SHA-256 / 4ef7f3b0a35341640be1d3e0c2d4c27774604099e123d8144636c336d41ee034
Verification & scope
A deterministic toy contract stated explicitly in the contract field; no claim of conformance to any published convention text. 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:46:51.008053+00:00.
Case digest / bc28876514b8c1dd91ae1ebcaf83999f227a228979c3153d128cdfa358ecb0d8