FA-61016 / Bond day-count conventions / Open access
Compounded overnight rate in arrears with lookback: the compounded return is annualized over business days · case 01
Coupons are several times too large for periods containing weekends.
ROOT CAUSE
The annualization divides by the count of business days instead of calendar days.
VERIFIED REPAIR
Annualize over the calendar days from start to end.
Unsuccessful approach: Approximating calendar days by adding two days per full week still ignores partial weeks and 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 = (nxt - d).days
obs = back(d, lookback)
prod *= 1 + rates[obs.isoformat()] / 100 * n / 360
total = len(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 annualization basis 1', [[2025, 4, 16], [2025, 5, 15], {'2025-03-27': 1.56, '2025-03-28': 1.6, '2025-03-29': 1.58, '2025-03-30': 1.59, '2025-03-31': 1.54, '2025-04-01': 1.48, '2025-04-02': 1.48, '2025-04-03': 1.47, '2025-04-04': 1.52, '2025-04-05': 1.48, '2025-04-06': 1.62, '2025-04-07': 1.51, '2025-04-08': 1.59, '2025-04-09': 1.56, '2025-04-10': 1.63, '2025-04-11': 1.57, '2025-04-12': 1.51, '2025-04-13': 1.52, '2025-04-14': 1.55, '2025-04-15': 1.48, '2025-04-16': 1.63, '2025-04-17': 1.5, '2025-04-18': 1.56, '2025-04-19': 1.51, '2025-04-20': 1.61, '2025-04-21': 1.61, '2025-04-22': 1.59, '2025-04-23': 1.48, '2025-04-24': 1.58, '2025-04-25': 1.61, '2025-04-26': 1.47, '2025-04-27': 1.47, '2025-04-28': 1.51, '2025-04-29': 1.55, '2025-04-30': 1.49, '2025-05-01': 1.5, '2025-05-02': 1.5, '2025-05-03': 1.47, '2025-05-04': 1.58, '2025-05-05': 1.48, '2025-05-06': 1.55, '2025-05-07': 1.6, '2025-05-08': 1.47, '2025-05-09': 1.55, '2025-05-10': 1.55, '2025-05-11': 1.61, '2025-05-12': 1.57, '2025-05-13': 1.48, '2025-05-14': 1.62, '2025-05-15': 1.62}, 5, 0.0, [[2025, 5, 14]]], 1.55125], ['regression annualization basis 2', [[2023, 4, 17], [2023, 5, 22], {'2023-03-28': 4.25, '2023-03-29': 4.34, '2023-03-30': 4.26, '2023-03-31': 4.22, '2023-04-01': 4.27, '2023-04-02': 4.37, '2023-04-03': 4.32, '2023-04-04': 4.31, '2023-04-05': 4.38, '2023-04-06': 4.25, '2023-04-07': 4.37, '2023-04-08': 4.25, '2023-04-09': 4.36, '2023-04-10': 4.27, '2023-04-11': 4.27, '2023-04-12': 4.26, '2023-04-13': 4.38, '2023-04-14': 4.26, '2023-04-15': 4.32, '2023-04-16': 4.35, '2023-04-17': 4.33, '2023-04-18': 4.31, '2023-04-19': 4.25, '2023-04-20': 4.22, '2023-04-21': 4.28, '2023-04-22': 4.22, '2023-04-23': 4.36, '2023-04-24': 4.37, '2023-04-25': 4.26, '2023-04-26': 4.25, '2023-04-27': 4.34, '2023-04-28': 4.33, '2023-04-29': 4.28, '2023-04-30': 4.26, '2023-05-01': 4.22, '2023-05-02': 4.35, '2023-05-03': 4.34, '2023-05-04': 4.29, '2023-05-05': 4.38, '2023-05-06': 4.23, '2023-05-07': 4.23, '2023-05-08': 4.32, '2023-05-09': 4.23, '2023-05-10': 4.23, '2023-05-11': 4.23, '2023-05-12': 4.34, '2023-05-13': 4.29, '2023-05-14': 4.33, '2023-05-15': 4.22, '2023-05-16': 4.36, '2023-05-17': 4.35, '2023-05-18': 4.29, '2023-05-19': 4.28, '2023-05-20': 4.27, '2023-05-21': 4.29, '2023-05-22': 4.35}, 2, 0.0, [[2023, 4, 27], [2023, 5, 8]]], 4.30416], ['partial repair probe 1', [[2027, 11, 5], [2027, 11, 10], {'2027-10-16': 1.57, '2027-10-17': 1.56, '2027-10-18': 1.52, '2027-10-19': 1.51, '2027-10-20': 1.63, '2027-10-21': 1.55, '2027-10-22': 1.47, '2027-10-23': 1.62, '2027-10-24': 1.56, '2027-10-25': 1.56, '2027-10-26': 1.51, '2027-10-27': 1.56, '2027-10-28': 1.6, '2027-10-29': 1.55, '2027-10-30': 1.57, '2027-10-31': 1.62, '2027-11-01': 1.53, '2027-11-02': 1.49, '2027-11-03': 1.6, '2027-11-04': 1.58, '2027-11-05': 1.62, '2027-11-06': 1.52, '2027-11-07': 1.57, '2027-11-08': 1.53, '2027-11-09': 1.6, '2027-11-10': 1.56}, 2, 0.0, []], 1.6001], ['partial repair probe 2', [[2027, 7, 29], [2027, 9, 6], {'2027-07-09': 0.11, '2027-07-10': 0.11, '2027-07-11': 0.06, '2027-07-12': 0.1, '2027-07-13': 0.03, '2027-07-14': 0.11, '2027-07-15': 0.0, '2027-07-16': 0.07, '2027-07-17': 0.02, '2027-07-18': -0.03, '2027-07-19': 0.11, '2027-07-20': 0.07, '2027-07-21': 0.06, '2027-07-22': 0.1, '2027-07-23': 0.03, '2027-07-24': 0.13, '2027-07-25': -0.02, '2027-07-26': -0.03, '2027-07-27': 0.04, '2027-07-28': 0.02, '2027-07-29': 0.13, '2027-07-30': 0.07, '2027-07-31': 0.07, '2027-08-01': 0.01, '2027-08-02': 0.1, '2027-08-03': -0.02, '2027-08-04': 0.07, '2027-08-05': -0.02, '2027-08-06': 0.03, '2027-08-07': 0.07, '2027-08-08': -0.01, '2027-08-09': -0.02, '2027-08-10': 0.13, '2027-08-11': -0.02, '2027-08-12': 0.06, '2027-08-13': 0.1, '2027-08-14': 0.12, '2027-08-15': 0.1, '2027-08-16': 0.11, '2027-08-17': 0.12, '2027-08-18': 0.07, '2027-08-19': -0.02, '2027-08-20': 0.0, '2027-08-21': 0.02, '2027-08-22': 0.13, '2027-08-23': 0.07, '2027-08-24': 0.01, '2027-08-25': 0.06, '2027-08-26': 0.03, '2027-08-27': 0.1, '2027-08-28': 0.0, '2027-08-29': 0.04, '2027-08-30': 0.1, '2027-08-31': -0.02, '2027-09-01': 0.1, '2027-09-02': 0.11, '2027-09-03': 0.05, '2027-09-04': 0.0, '2027-09-05': -0.03, '2027-09-06': 0.11}, 5, 0.0, [[2027, 8, 13]]], 0.043078], ['normal control 1', [[2027, 7, 28], [2027, 7, 29], {'2027-07-08': 4.26, '2027-07-09': 4.33, '2027-07-10': 4.24, '2027-07-11': 4.3, '2027-07-12': 4.31, '2027-07-13': 4.37, '2027-07-14': 4.32, '2027-07-15': 4.32, '2027-07-16': 4.36, '2027-07-17': 4.26, '2027-07-18': 4.29, '2027-07-19': 4.3, '2027-07-20': 4.32, '2027-07-21': 4.22, '2027-07-22': 4.37, '2027-07-23': 4.26, '2027-07-24': 4.24, '2027-07-25': 4.37, '2027-07-26': 4.36, '2027-07-27': 4.38, '2027-07-28': 4.26, '2027-07-29': 4.22}, 0, 0.1, []], 4.36], ['normal control 2', [[2028, 3, 1], [2028, 3, 2], {'2028-02-10': 4.22, '2028-02-11': 4.34, '2028-02-12': 4.34, '2028-02-13': 4.22, '2028-02-14': 4.37, '2028-02-15': 4.22, '2028-02-16': 4.29, '2028-02-17': 4.36, '2028-02-18': 4.23, '2028-02-19': 4.32, '2028-02-20': 4.22, '2028-02-21': 4.31, '2028-02-22': 4.26, '2028-02-23': 4.36, '2028-02-24': 4.26, '2028-02-25': 4.22, '2028-02-26': 4.31, '2028-02-27': 4.3, '2028-02-28': 4.37, '2028-02-29': 4.35, '2028-03-01': 4.26, '2028-03-02': 4.34}, 0, 0.25, []], 4.51], ['normal control 3', [[2023, 2, 28], [2023, 3, 2], {'2023-02-08': 4.36, '2023-02-09': 4.38, '2023-02-10': 4.28, '2023-02-11': 4.32, '2023-02-12': 4.38, '2023-02-13': 4.38, '2023-02-14': 4.35, '2023-02-15': 4.38, '2023-02-16': 4.36, '2023-02-17': 4.36, '2023-02-18': 4.23, '2023-02-19': 4.36, '2023-02-20': 4.31, '2023-02-21': 4.33, '2023-02-22': 4.28, '2023-02-23': 4.34, '2023-02-24': 4.28, '2023-02-25': 4.33, '2023-02-26': 4.26, '2023-02-27': 4.3, '2023-02-28': 4.34, '2023-03-01': 4.36, '2023-03-02': 4.33}, 5, 0.25, []], 4.555257], ['normal control 4', [[2021, 11, 15], [2021, 11, 18], {'2021-10-26': 4.38, '2021-10-27': 4.27, '2021-10-28': 4.36, '2021-10-29': 4.22, '2021-10-30': 4.37, '2021-10-31': 4.34, '2021-11-01': 4.34, '2021-11-02': 4.37, '2021-11-03': 4.31, '2021-11-04': 4.38, '2021-11-05': 4.35, '2021-11-06': 4.22, '2021-11-07': 4.24, '2021-11-08': 4.38, '2021-11-09': 4.26, '2021-11-10': 4.38, '2021-11-11': 4.34, '2021-11-12': 4.27, '2021-11-13': 4.24, '2021-11-14': 4.29, '2021-11-15': 4.34, '2021-11-16': 4.36, '2021-11-17': 4.31, '2021-11-18': 4.3}, 2, 0.0, []], 4.317184]], [['regression annualization basis 1', [[2024, 11, 28], [2025, 1, 6], {'2024-11-08': 5.23, '2024-11-09': 5.34, '2024-11-10': 5.34, '2024-11-11': 5.39, '2024-11-12': 5.36, '2024-11-13': 5.37, '2024-11-14': 5.35, '2024-11-15': 5.26, '2024-11-16': 5.33, '2024-11-17': 5.36, '2024-11-18': 5.33, '2024-11-19': 5.27, '2024-11-20': 5.29, '2024-11-21': 5.29, '2024-11-22': 5.27, '2024-11-23': 5.28, '2024-11-24': 5.27, '2024-11-25': 5.28, '2024-11-26': 5.31, '2024-11-27': 5.26, '2024-11-28': 5.26, '2024-11-29': 5.23, '2024-11-30': 5.24, '2024-12-01': 5.25, '2024-12-02': 5.26, '2024-12-03': 5.27, '2024-12-04': 5.38, '2024-12-05': 5.29, '2024-12-06': 5.38, '2024-12-07': 5.39, '2024-12-08': 5.32, '2024-12-09': 5.26, '2024-12-10': 5.27, '2024-12-11': 5.34, '2024-12-12': 5.3, '2024-12-13': 5.36, '2024-12-14': 5.35, '2024-12-15': 5.34, '2024-12-16': 5.35, '2024-12-17': 5.33, '2024-12-18': 5.23, '2024-12-19': 5.27, '2024-12-20': 5.39, '2024-12-21': 5.27, '2024-12-22': 5.34, '2024-12-23': 5.32, '2024-12-24': 5.25, '2024-12-25': 5.39, '2024-12-26': 5.39, '2024-12-27': 5.34, '2024-12-28': 5.38, '2024-12-29': 5.32, '2024-12-30': 5.29, '2024-12-31': 5.3, '2025-01-01': 5.29, '2025-01-02': 5.24, '2025-01-03': 5.26, '2025-01-04': 5.32, '2025-01-05': 5.23, '2025-01-06': 5.27}, 5, 0.25, [[2024, 12, 27], [2024, 12, 10]]], 5.567247], ['regression annualization basis 2', [[2023, 2, 1], [2023, 2, 6], {'2023-01-12': 0.06, '2023-01-13': 0.04, '2023-01-14': 0.07, '2023-01-15': 0.0, '2023-01-16': 0.1, '2023-01-17': 0.09, '2023-01-18': 0.01, '2023-01-19': 0.02, '2023-01-20': 0.11, '2023-01-21': 0.01, '2023-01-22': 0.12, '2023-01-23': 0.06, '2023-01-24': 0.1, '2023-01-25': 0.03, '2023-01-26': 0.08, '2023-01-27': 0.09, '2023-01-28': 0.07, '2023-01-29': 0.0, '2023-01-30': 0.03, '2023-01-31': 0.05, '2023-02-01': 0.08, '2023-02-02': 0.03, '2023-02-03': 0.13, '2023-02-04': 0.08, '2023-02-05': -0.02, '2023-02-06': 0.02}, 0, 0.1, []], 0.2], ['partial repair probe 1', [[2027, 2, 24], [2027, 3, 1], {'2027-02-04': 0.0, '2027-02-05': 0.02, '2027-02-06': 0.12, '2027-02-07': 0.11, '2027-02-08': 0.1, '2027-02-09': 0.09, '2027-02-10': -0.02, '2027-02-11': 0.11, '2027-02-12': 0.13, '2027-02-13': 0.1, '2027-02-14': 0.03, '2027-02-15': 0.12, '2027-02-16': 0.03, '2027-02-17': 0.06, '2027-02-18': 0.0, '2027-02-19': -0.03, '2027-02-20': 0.1, '2027-02-21': 0.1, '2027-02-22': 0.05, '2027-02-23': -0.02, '2027-02-24': 0.02, '2027-02-25': 0.11, '2027-02-26': 0.12, '2027-02-27': 0.03, '2027-02-28': 0.07, '2027-03-01': 0.12}, 2, 0.25, []], 0.268], ['partial repair probe 2', [[2025, 1, 31], [2025, 2, 6], {'2025-01-11': 1.49, '2025-01-12': 1.52, '2025-01-13': 1.56, '2025-01-14': 1.53, '2025-01-15': 1.51, '2025-01-16': 1.56, '2025-01-17': 1.59, '2025-01-18': 1.54, '2025-01-19': 1.53, '2025-01-20': 1.62, '2025-01-21': 1.6, '2025-01-22': 1.54, '2025-01-23': 1.58, '2025-01-24': 1.48, '2025-01-25': 1.57, '2025-01-26': 1.48, '2025-01-27': 1.6, '2025-01-28': 1.5, '2025-01-29': 1.57, '2025-01-30': 1.53, '2025-01-31': 1.58, '2025-02-01': 1.52, '2025-02-02': 1.55, '2025-02-03': 1.63, '2025-02-04': 1.56, '2025-02-05': 1.55, '2025-02-06': 1.62}, 2, 0.1, []], 1.675138], ['normal control 1', [[2027, 11, 30], [2027, 12, 3], {'2027-11-10': 5.25, '2027-11-11': 5.34, '2027-11-12': 5.35, '2027-11-13': 5.32, '2027-11-14': 5.25, '2027-11-15': 5.3, '2027-11-16': 5.23, '2027-11-17': 5.36, '2027-11-18': 5.27, '2027-11-19': 5.23, '2027-11-20': 5.35, '2027-11-21': 5.32, '2027-11-22': 5.38, '2027-11-23': 5.28, '2027-11-24': 5.27, '2027-11-25': 5.33, '2027-11-26': 5.36, '2027-11-27': 5.35, '2027-11-28': 5.28, '2027-11-29': 5.23, '2027-11-30': 5.33, '2027-12-01': 5.33, '2027-12-02': 5.39, '2027-12-03': 5.33}, 2, 0.25, []], 5.557449], ['normal control 2', [[2024, 11, 27], [2024, 11, 29], {'2024-11-07': 5.38, '2024-11-08': 5.39, '2024-11-09': 5.23, '2024-11-10': 5.28, '2024-11-11': 5.3, '2024-11-12': 5.32, '2024-11-13': 5.33, '2024-11-14': 5.32, '2024-11-15': 5.3, '2024-11-16': 5.39, '2024-11-17': 5.36, '2024-11-18': 5.32, '2024-11-19': 5.31, '2024-11-20': 5.35, '2024-11-21': 5.28, '2024-11-22': 5.3, '2024-11-23': 5.3, '2024-11-24': 5.35, '2024-11-25': 5.24, '2024-11-26': 5.24, '2024-11-27': 5.29, '2024-11-28': 5.37, '2024-11-29': 5.31}, 2, 0.1, []], 5.340381], ['normal control 3', [[2022, 2, 28], [2022, 3, 3], {'2022-02-08': 4.28, '2022-02-09': 4.22, '2022-02-10': 4.27, '2022-02-11': 4.3, '2022-02-12': 4.22, '2022-02-13': 4.25, '2022-02-14': 4.34, '2022-02-15': 4.35, '2022-02-16': 4.25, '2022-02-17': 4.35, '2022-02-18': 4.35, '2022-02-19': 4.32, '2022-02-20': 4.23, '2022-02-21': 4.3, '2022-02-22': 4.24, '2022-02-23': 4.24, '2022-02-24': 4.25, '2022-02-25': 4.23, '2022-02-26': 4.22, '2022-02-27': 4.23, '2022-02-28': 4.29, '2022-03-01': 4.27, '2022-03-02': 4.32, '2022-03-03': 4.3}, 5, 0.1, []], 4.360504], ['normal control 4', [[2022, 6, 30], [2022, 7, 1], {'2022-06-10': 1.57, '2022-06-11': 1.48, '2022-06-12': 1.51, '2022-06-13': 1.61, '2022-06-14': 1.61, '2022-06-15': 1.57, '2022-06-16': 1.51, '2022-06-17': 1.55, '2022-06-18': 1.63, '2022-06-19': 1.55, '2022-06-20': 1.51, '2022-06-21': 1.58, '2022-06-22': 1.52, '2022-06-23': 1.47, '2022-06-24': 1.54, '2022-06-25': 1.51, '2022-06-26': 1.6, '2022-06-27': 1.61, '2022-06-28': 1.62, '2022-06-29': 1.63, '2022-06-30': 1.48, '2022-07-01': 1.56}, 2, 0.1, []], 1.72]], [['regression annualization basis 1', [[2024, 1, 9], [2024, 1, 26], {'2023-12-20': 5.25, '2023-12-21': 5.34, '2023-12-22': 5.31, '2023-12-23': 5.37, '2023-12-24': 5.37, '2023-12-25': 5.26, '2023-12-26': 5.32, '2023-12-27': 5.36, '2023-12-28': 5.27, '2023-12-29': 5.29, '2023-12-30': 5.24, '2023-12-31': 5.24, '2024-01-01': 5.25, '2024-01-02': 5.26, '2024-01-03': 5.34, '2024-01-04': 5.3, '2024-01-05': 5.28, '2024-01-06': 5.35, '2024-01-07': 5.24, '2024-01-08': 5.31, '2024-01-09': 5.26, '2024-01-10': 5.39, '2024-01-11': 5.32, '2024-01-12': 5.26, '2024-01-13': 5.39, '2024-01-14': 5.3, '2024-01-15': 5.28, '2024-01-16': 5.33, '2024-01-17': 5.34, '2024-01-18': 5.25, '2024-01-19': 5.24, '2024-01-20': 5.24, '2024-01-21': 5.31, '2024-01-22': 5.26, '2024-01-23': 5.27, '2024-01-24': 5.31, '2024-01-25': 5.35, '2024-01-26': 5.35}, 2, 0.1, [[2024, 1, 23], [2024, 1, 23], [2024, 1, 16]]], 5.412948], ['regression annualization basis 2', [[2026, 12, 28], [2027, 1, 8], {'2026-12-08': 5.33, '2026-12-09': 5.37, '2026-12-10': 5.35, '2026-12-11': 5.28, '2026-12-12': 5.31, '2026-12-13': 5.39, '2026-12-14': 5.37, '2026-12-15': 5.33, '2026-12-16': 5.39, '2026-12-17': 5.25, '2026-12-18': 5.24, '2026-12-19': 5.24, '2026-12-20': 5.34, '2026-12-21': 5.24, '2026-12-22': 5.26, '2026-12-23': 5.38, '2026-12-24': 5.24, '2026-12-25': 5.33, '2026-12-26': 5.27, '2026-12-27': 5.33, '2026-12-28': 5.27, '2026-12-29': 5.39, '2026-12-30': 5.33, '2026-12-31': 5.38, '2027-01-01': 5.29, '2027-01-02': 5.33, '2027-01-03': 5.24, '2027-01-04': 5.25, '2027-01-05': 5.25, '2027-01-06': 5.23, '2027-01-07': 5.3, '2027-01-08': 5.37}, 0, 0.25, []], 5.55096], ['partial repair probe 1', [[2024, 12, 2], [2024, 12, 18], {'2024-11-12': 0.09, '2024-11-13': 0.13, '2024-11-14': 0.04, '2024-11-15': 0.03, '2024-11-16': 0.09, '2024-11-17': 0.13, '2024-11-18': 0.09, '2024-11-19': -0.02, '2024-11-20': 0.07, '2024-11-21': 0.01, '2024-11-22': 0.12, '2024-11-23': 0.05, '2024-11-24': 0.01, '2024-11-25': -0.02, '2024-11-26': 0.05, '2024-11-27': -0.03, '2024-11-28': 0.04, '2024-11-29': 0.02, '2024-11-30': 0.05, '2024-12-01': 0.02, '2024-12-02': 0.04, '2024-12-03': 0.06, '2024-12-04': 0.04, '2024-12-05': -0.03, '2024-12-06': 0.07, '2024-12-07': 0.05, '2024-12-08': 0.12, '2024-12-09': 0.06, '2024-12-10': 0.03, '2024-12-11': 0.08, '2024-12-12': -0.01, '2024-12-13': 0.09, '2024-12-14': -0.01, '2024-12-15': -0.01, '2024-12-16': 0.1, '2024-12-17': 0.09, '2024-12-18': 0.08}, 0, 0.25, [[2024, 12, 13], [2024, 12, 9]]], 0.290625], ['partial repair probe 2', [[2027, 12, 30], [2028, 1, 5], {'2027-12-10': 1.6, '2027-12-11': 1.55, '2027-12-12': 1.5, '2027-12-13': 1.58, '2027-12-14': 1.6, '2027-12-15': 1.56, '2027-12-16': 1.62, '2027-12-17': 1.54, '2027-12-18': 1.49, '2027-12-19': 1.61, '2027-12-20': 1.57, '2027-12-21': 1.61, '2027-12-22': 1.53, '2027-12-23': 1.57, '2027-12-24': 1.53, '2027-12-25': 1.48, '2027-12-26': 1.49, '2027-12-27': 1.63, '2027-12-28': 1.6, '2027-12-29': 1.49, '2027-12-30': 1.6, '2027-12-31': 1.48, '2028-01-01': 1.57, '2028-01-02': 1.53, '2028-01-03': 1.6, '2028-01-04': 1.55, '2028-01-05': 1.6}, 2, 0.25, [[2028, 1, 3]]], 1.776767], ['normal control 1', [[2026, 7, 29], [2026, 7, 30], {'2026-07-09': 4.35, '2026-07-10': 4.25, '2026-07-11': 4.26, '2026-07-12': 4.27, '2026-07-13': 4.32, '2026-07-14': 4.25, '2026-07-15': 4.3, '2026-07-16': 4.35, '2026-07-17': 4.35, '2026-07-18': 4.23, '2026-07-19': 4.31, '2026-07-20': 4.38, '2026-07-21': 4.25, '2026-07-22': 4.23, '2026-07-23': 4.28, '2026-07-24': 4.22, '2026-07-25': 4.24, '2026-07-26': 4.27, '2026-07-27': 4.26, '2026-07-28': 4.23, '2026-07-29': 4.23, '2026-07-30': 4.27}, 2, 0.0, []], 4.26], ['normal control 2', [[2022, 7, 28], [2022, 7, 29], {'2022-07-08': 4.37, '2022-07-09': 4.32, '2022-07-10': 4.28, '2022-07-11': 4.3, '2022-07-12': 4.34, '2022-07-13': 4.32, '2022-07-14': 4.29, '2022-07-15': 4.31, '2022-07-16': 4.32, '2022-07-17': 4.3, '2022-07-18': 4.31, '2022-07-19': 4.32, '2022-07-20': 4.3, '2022-07-21': 4.37, '2022-07-22': 4.29, '2022-07-23': 4.37, '2022-07-24': 4.32, '2022-07-25': 4.23, '2022-07-26': 4.31, '2022-07-27': 4.34, '2022-07-28': 4.37, '2022-07-29': 4.33}, 2, 0.1, []], 4.41], ['normal control 3', [[2026, 6, 30], [2026, 7, 1], {'2026-06-10': 5.38, '2026-06-11': 5.28, '2026-06-12': 5.27, '2026-06-13': 5.23, '2026-06-14': 5.33, '2026-06-15': 5.35, '2026-06-16': 5.26, '2026-06-17': 5.23, '2026-06-18': 5.27, '2026-06-19': 5.31, '2026-06-20': 5.36, '2026-06-21': 5.37, '2026-06-22': 5.33, '2026-06-23': 5.23, '2026-06-24': 5.28, '2026-06-25': 5.35, '2026-06-26': 5.34, '2026-06-27': 5.35, '2026-06-28': 5.38, '2026-06-29': 5.29, '2026-06-30': 5.25, '2026-07-01': 5.24}, 5, 0.25, []], 5.48], ['normal control 4', [[2022, 6, 20], [2022, 6, 22], {'2022-05-31': 0.07, '2022-06-01': -0.01, '2022-06-02': 0.09, '2022-06-03': -0.01, '2022-06-04': 0.04, '2022-06-05': 0.05, '2022-06-06': 0.13, '2022-06-07': 0.13, '2022-06-08': 0.03, '2022-06-09': 0.05, '2022-06-10': 0.08, '2022-06-11': 0.0, '2022-06-12': 0.02, '2022-06-13': 0.08, '2022-06-14': -0.01, '2022-06-15': 0.08, '2022-06-16': 0.09, '2022-06-17': -0.01, '2022-06-18': 0.01, '2022-06-19': 0.1, '2022-06-20': 0.11, '2022-06-21': -0.01, '2022-06-22': 0.05}, 2, 0.25, []], 0.29]], [['regression annualization basis 1', [[2024, 12, 3], [2025, 1, 13], {'2024-11-13': 1.47, '2024-11-14': 1.52, '2024-11-15': 1.49, '2024-11-16': 1.52, '2024-11-17': 1.56, '2024-11-18': 1.57, '2024-11-19': 1.59, '2024-11-20': 1.57, '2024-11-21': 1.5, '2024-11-22': 1.54, '2024-11-23': 1.5, '2024-11-24': 1.62, '2024-11-25': 1.6, '2024-11-26': 1.54, '2024-11-27': 1.5, '2024-11-28': 1.59, '2024-11-29': 1.48, '2024-11-30': 1.52, '2024-12-01': 1.54, '2024-12-02': 1.49, '2024-12-03': 1.56, '2024-12-04': 1.55, '2024-12-05': 1.5, '2024-12-06': 1.58, '2024-12-07': 1.55, '2024-12-08': 1.59, '2024-12-09': 1.63, '2024-12-10': 1.52, '2024-12-11': 1.48, '2024-12-12': 1.57, '2024-12-13': 1.58, '2024-12-14': 1.48, '2024-12-15': 1.59, '2024-12-16': 1.61, '2024-12-17': 1.57, '2024-12-18': 1.53, '2024-12-19': 1.56, '2024-12-20': 1.63, '2024-12-21': 1.56, '2024-12-22': 1.6, '2024-12-23': 1.63, '2024-12-24': 1.5, '2024-12-25': 1.58, '2024-12-26': 1.63, '2024-12-27': 1.47, '2024-12-28': 1.55, '2024-12-29': 1.54, '2024-12-30': 1.61, '2024-12-31': 1.5, '2025-01-01': 1.49, '2025-01-02': 1.54, '2025-01-03': 1.54, '2025-01-04': 1.63, '2025-01-05': 1.58, '2025-01-06': 1.61, '2025-01-07': 1.52, '2025-01-08': 1.48, '2025-01-09': 1.48, '2025-01-10': 1.59, '2025-01-11': 1.55, '2025-01-12': 1.58, '2025-01-13': 1.5}, 5, 0.0, [[2024, 12, 26], [2024, 12, 10]]], 1.540065], ['regression annualization basis 2', [[2026, 7, 23], [2026, 7, 27], {'2026-07-03': 1.53, '2026-07-04': 1.49, '2026-07-05': 1.49, '2026-07-06': 1.58, '2026-07-07': 1.54, '2026-07-08': 1.47, '2026-07-09': 1.51, '2026-07-10': 1.57, '2026-07-11': 1.62, '2026-07-12': 1.58, '2026-07-13': 1.52, '2026-07-14': 1.62, '2026-07-15': 1.56, '2026-07-16': 1.53, '2026-07-17': 1.56, '2026-07-18': 1.49, '2026-07-19': 1.48, '2026-07-20': 1.6, '2026-07-21': 1.48, '2026-07-22': 1.59, '2026-07-23': 1.55, '2026-07-24': 1.48, '2026-07-25': 1.61, '2026-07-26': 1.55, '2026-07-27': 1.58}, 5, 0.1, [[2026, 7, 24]]], 1.63], ['partial repair probe 1', [[2024, 12, 2], [2024, 12, 20], {'2024-11-12': 0.08, '2024-11-13': 0.09, '2024-11-14': 0.06, '2024-11-15': 0.08, '2024-11-16': 0.01, '2024-11-17': 0.13, '2024-11-18': 0.02, '2024-11-19': -0.01, '2024-11-20': 0.01, '2024-11-21': 0.1, '2024-11-22': 0.11, '2024-11-23': -0.03, '2024-11-24': 0.09, '2024-11-25': 0.07, '2024-11-26': 0.01, '2024-11-27': 0.03, '2024-11-28': -0.03, '2024-11-29': -0.02, '2024-11-30': 0.1, '2024-12-01': 0.05, '2024-12-02': -0.01, '2024-12-03': 0.08, '2024-12-04': 0.04, '2024-12-05': 0.01, '2024-12-06': 0.01, '2024-12-07': 0.04, '2024-12-08': 0.08, '2024-12-09': 0.0, '2024-12-10': 0.0, '2024-12-11': -0.01, '2024-12-12': 0.05, '2024-12-13': 0.01, '2024-12-14': -0.03, '2024-12-15': 0.1, '2024-12-16': 0.07, '2024-12-17': 0.05, '2024-12-18': 0.13, '2024-12-19': 0.05, '2024-12-20': -0.01}, 5, 0.0, [[2024, 12, 18], [2024, 12, 13], [2024, 12, 19]]], 0.01], ['partial repair probe 2', [[2027, 10, 29], [2027, 11, 10], {'2027-10-09': 4.35, '2027-10-10': 4.22, '2027-10-11': 4.23, '2027-10-12': 4.32, '2027-10-13': 4.22, '2027-10-14': 4.25, '2027-10-15': 4.32, '2027-10-16': 4.23, '2027-10-17': 4.34, '2027-10-18': 4.34, '2027-10-19': 4.32, '2027-10-20': 4.24, '2027-10-21': 4.26, '2027-10-22': 4.25, '2027-10-23': 4.27, '2027-10-24': 4.28, '2027-10-25': 4.37, '2027-10-26': 4.27, '2027-10-27': 4.27, '2027-10-28': 4.26, '2027-10-29': 4.35, '2027-10-30': 4.37, '2027-10-31': 4.27, '2027-11-01': 4.24, '2027-11-02': 4.25, '2027-11-03': 4.33, '2027-11-04': 4.35, '2027-11-05': 4.37, '2027-11-06': 4.38, '2027-11-07': 4.29, '2027-11-08': 4.3, '2027-11-09': 4.35, '2027-11-10': 4.22}, 5, 0.0, []], 4.290887], ['normal control 1', [[2021, 8, 31], [2021, 9, 1], {'2021-08-11': -0.01, '2021-08-12': 0.05, '2021-08-13': -0.03, '2021-08-14': 0.07, '2021-08-15': 0.11, '2021-08-16': 0.04, '2021-08-17': 0.12, '2021-08-18': 0.13, '2021-08-19': 0.06, '2021-08-20': 0.12, '2021-08-21': 0.04, '2021-08-22': 0.12, '2021-08-23': -0.01, '2021-08-24': -0.02, '2021-08-25': 0.03, '2021-08-26': 0.07, '2021-08-27': -0.01, '2021-08-28': 0.13, '2021-08-29': 0.09, '2021-08-30': 0.09, '2021-08-31': 0.05, '2021-09-01': 0.11}, 0, 0.1, []], 0.15], ['normal control 2', [[2024, 3, 28], [2024, 3, 29], {'2024-03-08': 0.03, '2024-03-09': 0.0, '2024-03-10': 0.12, '2024-03-11': 0.01, '2024-03-12': 0.0, '2024-03-13': 0.01, '2024-03-14': 0.09, '2024-03-15': 0.07, '2024-03-16': 0.07, '2024-03-17': 0.13, '2024-03-18': 0.06, '2024-03-19': 0.08, '2024-03-20': -0.01, '2024-03-21': 0.1, '2024-03-22': 0.06, '2024-03-23': 0.07, '2024-03-24': 0.13, '2024-03-25': 0.13, '2024-03-26': 0.01, '2024-03-27': -0.03, '2024-03-28': 0.1, '2024-03-29': 0.06}, 0, 0.1, []], 0.2], ['normal control 3', [[2026, 12, 28], [2026, 12, 29], {'2026-12-08': 5.25, '2026-12-09': 5.39, '2026-12-10': 5.34, '2026-12-11': 5.29, '2026-12-12': 5.26, '2026-12-13': 5.32, '2026-12-14': 5.33, '2026-12-15': 5.3, '2026-12-16': 5.31, '2026-12-17': 5.29, '2026-12-18': 5.39, '2026-12-19': 5.26, '2026-12-20': 5.37, '2026-12-21': 5.39, '2026-12-22': 5.24, '2026-12-23': 5.26, '2026-12-24': 5.23, '2026-12-25': 5.39, '2026-12-26': 5.23, '2026-12-27': 5.38, '2026-12-28': 5.23, '2026-12-29': 5.31}, 0, 0.1, []], 5.33], ['normal control 4', [[2023, 7, 31], [2023, 8, 3], {'2023-07-11': 5.24, '2023-07-12': 5.28, '2023-07-13': 5.36, '2023-07-14': 5.34, '2023-07-15': 5.23, '2023-07-16': 5.27, '2023-07-17': 5.37, '2023-07-18': 5.37, '2023-07-19': 5.38, '2023-07-20': 5.31, '2023-07-21': 5.32, '2023-07-22': 5.27, '2023-07-23': 5.32, '2023-07-24': 5.33, '2023-07-25': 5.24, '2023-07-26': 5.33, '2023-07-27': 5.35, '2023-07-28': 5.3, '2023-07-29': 5.33, '2023-07-30': 5.32, '2023-07-31': 5.32, '2023-08-01': 5.38, '2023-08-02': 5.25, '2023-08-03': 5.33}, 2, 0.25, []], 5.574121]], [['regression annualization basis 1', [[2024, 12, 26], [2024, 12, 30], {'2024-12-06': -0.03, '2024-12-07': 0.11, '2024-12-08': -0.02, '2024-12-09': 0.02, '2024-12-10': 0.09, '2024-12-11': 0.05, '2024-12-12': 0.06, '2024-12-13': 0.11, '2024-12-14': 0.06, '2024-12-15': 0.06, '2024-12-16': 0.02, '2024-12-17': 0.1, '2024-12-18': 0.01, '2024-12-19': 0.07, '2024-12-20': -0.01, '2024-12-21': 0.06, '2024-12-22': -0.01, '2024-12-23': 0.07, '2024-12-24': 0.03, '2024-12-25': 0.07, '2024-12-26': -0.02, '2024-12-27': -0.02, '2024-12-28': 0.07, '2024-12-29': 0.13, '2024-12-30': 0.06}, 5, 0.25, [[2024, 12, 27]]], 0.32], ['regression annualization basis 2', [[2027, 10, 26], [2027, 10, 29], {'2027-10-06': 1.57, '2027-10-07': 1.59, '2027-10-08': 1.52, '2027-10-09': 1.59, '2027-10-10': 1.49, '2027-10-11': 1.56, '2027-10-12': 1.47, '2027-10-13': 1.54, '2027-10-14': 1.55, '2027-10-15': 1.59, '2027-10-16': 1.5, '2027-10-17': 1.63, '2027-10-18': 1.49, '2027-10-19': 1.57, '2027-10-20': 1.47, '2027-10-21': 1.58, '2027-10-22': 1.56, '2027-10-23': 1.49, '2027-10-24': 1.49, '2027-10-25': 1.47, '2027-10-26': 1.55, '2027-10-27': 1.58, '2027-10-28': 1.53, '2027-10-29': 1.61}, 5, 0.1, [[2027, 10, 28], [2027, 10, 27], [2027, 10, 28]]], 1.67], ['partial repair probe 1', [[2022, 4, 11], [2022, 4, 14], {'2022-03-22': 4.22, '2022-03-23': 4.36, '2022-03-24': 4.25, '2022-03-25': 4.32, '2022-03-26': 4.29, '2022-03-27': 4.36, '2022-03-28': 4.3, '2022-03-29': 4.22, '2022-03-30': 4.22, '2022-03-31': 4.23, '2022-04-01': 4.24, '2022-04-02': 4.24, '2022-04-03': 4.36, '2022-04-04': 4.33, '2022-04-05': 4.35, '2022-04-06': 4.25, '2022-04-07': 4.26, '2022-04-08': 4.35, '2022-04-09': 4.37, '2022-04-10': 4.3, '2022-04-11': 4.24, '2022-04-12': 4.32, '2022-04-13': 4.32, '2022-04-14': 4.29}, 0, 0.1, [[2022, 4, 13], [2022, 4, 12]]], 4.34], ['partial repair probe 2', [[2025, 8, 25], [2025, 9, 3], {'2025-08-05': 0.08, '2025-08-06': 0.04, '2025-08-07': -0.01, '2025-08-08': 0.0, '2025-08-09': 0.03, '2025-08-10': 0.11, '2025-08-11': 0.01, '2025-08-12': -0.03, '2025-08-13': 0.08, '2025-08-14': 0.04, '2025-08-15': 0.06, '2025-08-16': 0.08, '2025-08-17': 0.1, '2025-08-18': 0.11, '2025-08-19': 0.13, '2025-08-20': 0.05, '2025-08-21': 0.13, '2025-08-22': 0.13, '2025-08-23': 0.12, '2025-08-24': 0.0, '2025-08-25': 0.04, '2025-08-26': 0.07, '2025-08-27': 0.09, '2025-08-28': 0.07, '2025-08-29': 0.05, '2025-08-30': -0.01, '2025-08-31': -0.03, '2025-09-01': 0.09, '2025-09-02': -0.03, '2025-09-03': 0.04}, 0, 0.1, [[2025, 8, 29]]], 0.16], ['normal control 1', [[2023, 10, 3], [2023, 10, 4], {'2023-09-13': 5.33, '2023-09-14': 5.35, '2023-09-15': 5.37, '2023-09-16': 5.29, '2023-09-17': 5.28, '2023-09-18': 5.37, '2023-09-19': 5.37, '2023-09-20': 5.25, '2023-09-21': 5.23, '2023-09-22': 5.28, '2023-09-23': 5.38, '2023-09-24': 5.36, '2023-09-25': 5.27, '2023-09-26': 5.25, '2023-09-27': 5.26, '2023-09-28': 5.34, '2023-09-29': 5.32, '2023-09-30': 5.31, '2023-10-01': 5.27, '2023-10-02': 5.23, '2023-10-03': 5.38, '2023-10-04': 5.27}, 5, 0.0, []], 5.25], ['normal control 2', [[2025, 4, 30], [2025, 5, 1], {'2025-04-10': 1.47, '2025-04-11': 1.6, '2025-04-12': 1.54, '2025-04-13': 1.58, '2025-04-14': 1.55, '2025-04-15': 1.48, '2025-04-16': 1.51, '2025-04-17': 1.52, '2025-04-18': 1.5, '2025-04-19': 1.63, '2025-04-20': 1.58, '2025-04-21': 1.55, '2025-04-22': 1.61, '2025-04-23': 1.58, '2025-04-24': 1.49, '2025-04-25': 1.62, '2025-04-26': 1.59, '2025-04-27': 1.47, '2025-04-28': 1.48, '2025-04-29': 1.6, '2025-04-30': 1.51, '2025-05-01': 1.48}, 2, 0.0, []], 1.48], ['normal control 3', [[2023, 1, 10], [2023, 1, 11], {'2022-12-21': 5.28, '2022-12-22': 5.35, '2022-12-23': 5.26, '2022-12-24': 5.34, '2022-12-25': 5.37, '2022-12-26': 5.33, '2022-12-27': 5.3, '2022-12-28': 5.29, '2022-12-29': 5.32, '2022-12-30': 5.3, '2022-12-31': 5.35, '2023-01-01': 5.3, '2023-01-02': 5.37, '2023-01-03': 5.36, '2023-01-04': 5.32, '2023-01-05': 5.32, '2023-01-06': 5.36, '2023-01-07': 5.27, '2023-01-08': 5.27, '2023-01-09': 5.28, '2023-01-10': 5.32, '2023-01-11': 5.38}, 0, 0.1, []], 5.42], ['normal control 4', [[2021, 9, 6], [2021, 9, 7], {'2021-08-17': 5.36, '2021-08-18': 5.28, '2021-08-19': 5.23, '2021-08-20': 5.25, '2021-08-21': 5.32, '2021-08-22': 5.36, '2021-08-23': 5.26, '2021-08-24': 5.37, '2021-08-25': 5.33, '2021-08-26': 5.32, '2021-08-27': 5.3, '2021-08-28': 5.25, '2021-08-29': 5.31, '2021-08-30': 5.32, '2021-08-31': 5.3, '2021-09-01': 5.35, '2021-09-02': 5.39, '2021-09-03': 5.36, '2021-09-04': 5.31, '2021-09-05': 5.32, '2021-09-06': 5.35, '2021-09-07': 5.36}, 2, 0.1, []], 5.49]]]
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 annualization basis 1 | 2.249312 | 1.55125 | Failed |
| regression annualization basis 2 | 6.549809 | 4.30416 | Failed |
| partial repair probe 1 | 2.666833 | 1.6001 | Failed |
| partial repair probe 2 | 0.064617 | 0.043078 | Failed |
| normal control 1 | 4.36 | 4.36 | Passed |
| normal control 2 | 4.51 | 4.51 | Passed |
| normal control 3 | 4.555257 | 4.555257 | Passed |
| normal control 4 | 4.317184 | 4.317184 | Passed |
SHA-256 / ea59662d27c5750af75e8f867055fcce46cd3ac6b72e4bd14b781aec3ef8a1cf
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 = (nxt - d).days
obs = back(d, lookback)
prod *= 1 + rates[obs.isoformat()] / 100 * n / 360
total = len(days) + (E - S).days // 7 * 2
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 annualization basis 1', [[2025, 4, 16], [2025, 5, 15], {'2025-03-27': 1.56, '2025-03-28': 1.6, '2025-03-29': 1.58, '2025-03-30': 1.59, '2025-03-31': 1.54, '2025-04-01': 1.48, '2025-04-02': 1.48, '2025-04-03': 1.47, '2025-04-04': 1.52, '2025-04-05': 1.48, '2025-04-06': 1.62, '2025-04-07': 1.51, '2025-04-08': 1.59, '2025-04-09': 1.56, '2025-04-10': 1.63, '2025-04-11': 1.57, '2025-04-12': 1.51, '2025-04-13': 1.52, '2025-04-14': 1.55, '2025-04-15': 1.48, '2025-04-16': 1.63, '2025-04-17': 1.5, '2025-04-18': 1.56, '2025-04-19': 1.51, '2025-04-20': 1.61, '2025-04-21': 1.61, '2025-04-22': 1.59, '2025-04-23': 1.48, '2025-04-24': 1.58, '2025-04-25': 1.61, '2025-04-26': 1.47, '2025-04-27': 1.47, '2025-04-28': 1.51, '2025-04-29': 1.55, '2025-04-30': 1.49, '2025-05-01': 1.5, '2025-05-02': 1.5, '2025-05-03': 1.47, '2025-05-04': 1.58, '2025-05-05': 1.48, '2025-05-06': 1.55, '2025-05-07': 1.6, '2025-05-08': 1.47, '2025-05-09': 1.55, '2025-05-10': 1.55, '2025-05-11': 1.61, '2025-05-12': 1.57, '2025-05-13': 1.48, '2025-05-14': 1.62, '2025-05-15': 1.62}, 5, 0.0, [[2025, 5, 14]]], 1.55125], ['regression annualization basis 2', [[2023, 4, 17], [2023, 5, 22], {'2023-03-28': 4.25, '2023-03-29': 4.34, '2023-03-30': 4.26, '2023-03-31': 4.22, '2023-04-01': 4.27, '2023-04-02': 4.37, '2023-04-03': 4.32, '2023-04-04': 4.31, '2023-04-05': 4.38, '2023-04-06': 4.25, '2023-04-07': 4.37, '2023-04-08': 4.25, '2023-04-09': 4.36, '2023-04-10': 4.27, '2023-04-11': 4.27, '2023-04-12': 4.26, '2023-04-13': 4.38, '2023-04-14': 4.26, '2023-04-15': 4.32, '2023-04-16': 4.35, '2023-04-17': 4.33, '2023-04-18': 4.31, '2023-04-19': 4.25, '2023-04-20': 4.22, '2023-04-21': 4.28, '2023-04-22': 4.22, '2023-04-23': 4.36, '2023-04-24': 4.37, '2023-04-25': 4.26, '2023-04-26': 4.25, '2023-04-27': 4.34, '2023-04-28': 4.33, '2023-04-29': 4.28, '2023-04-30': 4.26, '2023-05-01': 4.22, '2023-05-02': 4.35, '2023-05-03': 4.34, '2023-05-04': 4.29, '2023-05-05': 4.38, '2023-05-06': 4.23, '2023-05-07': 4.23, '2023-05-08': 4.32, '2023-05-09': 4.23, '2023-05-10': 4.23, '2023-05-11': 4.23, '2023-05-12': 4.34, '2023-05-13': 4.29, '2023-05-14': 4.33, '2023-05-15': 4.22, '2023-05-16': 4.36, '2023-05-17': 4.35, '2023-05-18': 4.29, '2023-05-19': 4.28, '2023-05-20': 4.27, '2023-05-21': 4.29, '2023-05-22': 4.35}, 2, 0.0, [[2023, 4, 27], [2023, 5, 8]]], 4.30416], ['partial repair probe 1', [[2027, 11, 5], [2027, 11, 10], {'2027-10-16': 1.57, '2027-10-17': 1.56, '2027-10-18': 1.52, '2027-10-19': 1.51, '2027-10-20': 1.63, '2027-10-21': 1.55, '2027-10-22': 1.47, '2027-10-23': 1.62, '2027-10-24': 1.56, '2027-10-25': 1.56, '2027-10-26': 1.51, '2027-10-27': 1.56, '2027-10-28': 1.6, '2027-10-29': 1.55, '2027-10-30': 1.57, '2027-10-31': 1.62, '2027-11-01': 1.53, '2027-11-02': 1.49, '2027-11-03': 1.6, '2027-11-04': 1.58, '2027-11-05': 1.62, '2027-11-06': 1.52, '2027-11-07': 1.57, '2027-11-08': 1.53, '2027-11-09': 1.6, '2027-11-10': 1.56}, 2, 0.0, []], 1.6001], ['partial repair probe 2', [[2027, 7, 29], [2027, 9, 6], {'2027-07-09': 0.11, '2027-07-10': 0.11, '2027-07-11': 0.06, '2027-07-12': 0.1, '2027-07-13': 0.03, '2027-07-14': 0.11, '2027-07-15': 0.0, '2027-07-16': 0.07, '2027-07-17': 0.02, '2027-07-18': -0.03, '2027-07-19': 0.11, '2027-07-20': 0.07, '2027-07-21': 0.06, '2027-07-22': 0.1, '2027-07-23': 0.03, '2027-07-24': 0.13, '2027-07-25': -0.02, '2027-07-26': -0.03, '2027-07-27': 0.04, '2027-07-28': 0.02, '2027-07-29': 0.13, '2027-07-30': 0.07, '2027-07-31': 0.07, '2027-08-01': 0.01, '2027-08-02': 0.1, '2027-08-03': -0.02, '2027-08-04': 0.07, '2027-08-05': -0.02, '2027-08-06': 0.03, '2027-08-07': 0.07, '2027-08-08': -0.01, '2027-08-09': -0.02, '2027-08-10': 0.13, '2027-08-11': -0.02, '2027-08-12': 0.06, '2027-08-13': 0.1, '2027-08-14': 0.12, '2027-08-15': 0.1, '2027-08-16': 0.11, '2027-08-17': 0.12, '2027-08-18': 0.07, '2027-08-19': -0.02, '2027-08-20': 0.0, '2027-08-21': 0.02, '2027-08-22': 0.13, '2027-08-23': 0.07, '2027-08-24': 0.01, '2027-08-25': 0.06, '2027-08-26': 0.03, '2027-08-27': 0.1, '2027-08-28': 0.0, '2027-08-29': 0.04, '2027-08-30': 0.1, '2027-08-31': -0.02, '2027-09-01': 0.1, '2027-09-02': 0.11, '2027-09-03': 0.05, '2027-09-04': 0.0, '2027-09-05': -0.03, '2027-09-06': 0.11}, 5, 0.0, [[2027, 8, 13]]], 0.043078], ['normal control 1', [[2027, 7, 28], [2027, 7, 29], {'2027-07-08': 4.26, '2027-07-09': 4.33, '2027-07-10': 4.24, '2027-07-11': 4.3, '2027-07-12': 4.31, '2027-07-13': 4.37, '2027-07-14': 4.32, '2027-07-15': 4.32, '2027-07-16': 4.36, '2027-07-17': 4.26, '2027-07-18': 4.29, '2027-07-19': 4.3, '2027-07-20': 4.32, '2027-07-21': 4.22, '2027-07-22': 4.37, '2027-07-23': 4.26, '2027-07-24': 4.24, '2027-07-25': 4.37, '2027-07-26': 4.36, '2027-07-27': 4.38, '2027-07-28': 4.26, '2027-07-29': 4.22}, 0, 0.1, []], 4.36], ['normal control 2', [[2028, 3, 1], [2028, 3, 2], {'2028-02-10': 4.22, '2028-02-11': 4.34, '2028-02-12': 4.34, '2028-02-13': 4.22, '2028-02-14': 4.37, '2028-02-15': 4.22, '2028-02-16': 4.29, '2028-02-17': 4.36, '2028-02-18': 4.23, '2028-02-19': 4.32, '2028-02-20': 4.22, '2028-02-21': 4.31, '2028-02-22': 4.26, '2028-02-23': 4.36, '2028-02-24': 4.26, '2028-02-25': 4.22, '2028-02-26': 4.31, '2028-02-27': 4.3, '2028-02-28': 4.37, '2028-02-29': 4.35, '2028-03-01': 4.26, '2028-03-02': 4.34}, 0, 0.25, []], 4.51], ['normal control 3', [[2023, 2, 28], [2023, 3, 2], {'2023-02-08': 4.36, '2023-02-09': 4.38, '2023-02-10': 4.28, '2023-02-11': 4.32, '2023-02-12': 4.38, '2023-02-13': 4.38, '2023-02-14': 4.35, '2023-02-15': 4.38, '2023-02-16': 4.36, '2023-02-17': 4.36, '2023-02-18': 4.23, '2023-02-19': 4.36, '2023-02-20': 4.31, '2023-02-21': 4.33, '2023-02-22': 4.28, '2023-02-23': 4.34, '2023-02-24': 4.28, '2023-02-25': 4.33, '2023-02-26': 4.26, '2023-02-27': 4.3, '2023-02-28': 4.34, '2023-03-01': 4.36, '2023-03-02': 4.33}, 5, 0.25, []], 4.555257], ['normal control 4', [[2021, 11, 15], [2021, 11, 18], {'2021-10-26': 4.38, '2021-10-27': 4.27, '2021-10-28': 4.36, '2021-10-29': 4.22, '2021-10-30': 4.37, '2021-10-31': 4.34, '2021-11-01': 4.34, '2021-11-02': 4.37, '2021-11-03': 4.31, '2021-11-04': 4.38, '2021-11-05': 4.35, '2021-11-06': 4.22, '2021-11-07': 4.24, '2021-11-08': 4.38, '2021-11-09': 4.26, '2021-11-10': 4.38, '2021-11-11': 4.34, '2021-11-12': 4.27, '2021-11-13': 4.24, '2021-11-14': 4.29, '2021-11-15': 4.34, '2021-11-16': 4.36, '2021-11-17': 4.31, '2021-11-18': 4.3}, 2, 0.0, []], 4.317184]], [['regression annualization basis 1', [[2024, 11, 28], [2025, 1, 6], {'2024-11-08': 5.23, '2024-11-09': 5.34, '2024-11-10': 5.34, '2024-11-11': 5.39, '2024-11-12': 5.36, '2024-11-13': 5.37, '2024-11-14': 5.35, '2024-11-15': 5.26, '2024-11-16': 5.33, '2024-11-17': 5.36, '2024-11-18': 5.33, '2024-11-19': 5.27, '2024-11-20': 5.29, '2024-11-21': 5.29, '2024-11-22': 5.27, '2024-11-23': 5.28, '2024-11-24': 5.27, '2024-11-25': 5.28, '2024-11-26': 5.31, '2024-11-27': 5.26, '2024-11-28': 5.26, '2024-11-29': 5.23, '2024-11-30': 5.24, '2024-12-01': 5.25, '2024-12-02': 5.26, '2024-12-03': 5.27, '2024-12-04': 5.38, '2024-12-05': 5.29, '2024-12-06': 5.38, '2024-12-07': 5.39, '2024-12-08': 5.32, '2024-12-09': 5.26, '2024-12-10': 5.27, '2024-12-11': 5.34, '2024-12-12': 5.3, '2024-12-13': 5.36, '2024-12-14': 5.35, '2024-12-15': 5.34, '2024-12-16': 5.35, '2024-12-17': 5.33, '2024-12-18': 5.23, '2024-12-19': 5.27, '2024-12-20': 5.39, '2024-12-21': 5.27, '2024-12-22': 5.34, '2024-12-23': 5.32, '2024-12-24': 5.25, '2024-12-25': 5.39, '2024-12-26': 5.39, '2024-12-27': 5.34, '2024-12-28': 5.38, '2024-12-29': 5.32, '2024-12-30': 5.29, '2024-12-31': 5.3, '2025-01-01': 5.29, '2025-01-02': 5.24, '2025-01-03': 5.26, '2025-01-04': 5.32, '2025-01-05': 5.23, '2025-01-06': 5.27}, 5, 0.25, [[2024, 12, 27], [2024, 12, 10]]], 5.567247], ['regression annualization basis 2', [[2023, 2, 1], [2023, 2, 6], {'2023-01-12': 0.06, '2023-01-13': 0.04, '2023-01-14': 0.07, '2023-01-15': 0.0, '2023-01-16': 0.1, '2023-01-17': 0.09, '2023-01-18': 0.01, '2023-01-19': 0.02, '2023-01-20': 0.11, '2023-01-21': 0.01, '2023-01-22': 0.12, '2023-01-23': 0.06, '2023-01-24': 0.1, '2023-01-25': 0.03, '2023-01-26': 0.08, '2023-01-27': 0.09, '2023-01-28': 0.07, '2023-01-29': 0.0, '2023-01-30': 0.03, '2023-01-31': 0.05, '2023-02-01': 0.08, '2023-02-02': 0.03, '2023-02-03': 0.13, '2023-02-04': 0.08, '2023-02-05': -0.02, '2023-02-06': 0.02}, 0, 0.1, []], 0.2], ['partial repair probe 1', [[2027, 2, 24], [2027, 3, 1], {'2027-02-04': 0.0, '2027-02-05': 0.02, '2027-02-06': 0.12, '2027-02-07': 0.11, '2027-02-08': 0.1, '2027-02-09': 0.09, '2027-02-10': -0.02, '2027-02-11': 0.11, '2027-02-12': 0.13, '2027-02-13': 0.1, '2027-02-14': 0.03, '2027-02-15': 0.12, '2027-02-16': 0.03, '2027-02-17': 0.06, '2027-02-18': 0.0, '2027-02-19': -0.03, '2027-02-20': 0.1, '2027-02-21': 0.1, '2027-02-22': 0.05, '2027-02-23': -0.02, '2027-02-24': 0.02, '2027-02-25': 0.11, '2027-02-26': 0.12, '2027-02-27': 0.03, '2027-02-28': 0.07, '2027-03-01': 0.12}, 2, 0.25, []], 0.268], ['partial repair probe 2', [[2025, 1, 31], [2025, 2, 6], {'2025-01-11': 1.49, '2025-01-12': 1.52, '2025-01-13': 1.56, '2025-01-14': 1.53, '2025-01-15': 1.51, '2025-01-16': 1.56, '2025-01-17': 1.59, '2025-01-18': 1.54, '2025-01-19': 1.53, '2025-01-20': 1.62, '2025-01-21': 1.6, '2025-01-22': 1.54, '2025-01-23': 1.58, '2025-01-24': 1.48, '2025-01-25': 1.57, '2025-01-26': 1.48, '2025-01-27': 1.6, '2025-01-28': 1.5, '2025-01-29': 1.57, '2025-01-30': 1.53, '2025-01-31': 1.58, '2025-02-01': 1.52, '2025-02-02': 1.55, '2025-02-03': 1.63, '2025-02-04': 1.56, '2025-02-05': 1.55, '2025-02-06': 1.62}, 2, 0.1, []], 1.675138], ['normal control 1', [[2027, 11, 30], [2027, 12, 3], {'2027-11-10': 5.25, '2027-11-11': 5.34, '2027-11-12': 5.35, '2027-11-13': 5.32, '2027-11-14': 5.25, '2027-11-15': 5.3, '2027-11-16': 5.23, '2027-11-17': 5.36, '2027-11-18': 5.27, '2027-11-19': 5.23, '2027-11-20': 5.35, '2027-11-21': 5.32, '2027-11-22': 5.38, '2027-11-23': 5.28, '2027-11-24': 5.27, '2027-11-25': 5.33, '2027-11-26': 5.36, '2027-11-27': 5.35, '2027-11-28': 5.28, '2027-11-29': 5.23, '2027-11-30': 5.33, '2027-12-01': 5.33, '2027-12-02': 5.39, '2027-12-03': 5.33}, 2, 0.25, []], 5.557449], ['normal control 2', [[2024, 11, 27], [2024, 11, 29], {'2024-11-07': 5.38, '2024-11-08': 5.39, '2024-11-09': 5.23, '2024-11-10': 5.28, '2024-11-11': 5.3, '2024-11-12': 5.32, '2024-11-13': 5.33, '2024-11-14': 5.32, '2024-11-15': 5.3, '2024-11-16': 5.39, '2024-11-17': 5.36, '2024-11-18': 5.32, '2024-11-19': 5.31, '2024-11-20': 5.35, '2024-11-21': 5.28, '2024-11-22': 5.3, '2024-11-23': 5.3, '2024-11-24': 5.35, '2024-11-25': 5.24, '2024-11-26': 5.24, '2024-11-27': 5.29, '2024-11-28': 5.37, '2024-11-29': 5.31}, 2, 0.1, []], 5.340381], ['normal control 3', [[2022, 2, 28], [2022, 3, 3], {'2022-02-08': 4.28, '2022-02-09': 4.22, '2022-02-10': 4.27, '2022-02-11': 4.3, '2022-02-12': 4.22, '2022-02-13': 4.25, '2022-02-14': 4.34, '2022-02-15': 4.35, '2022-02-16': 4.25, '2022-02-17': 4.35, '2022-02-18': 4.35, '2022-02-19': 4.32, '2022-02-20': 4.23, '2022-02-21': 4.3, '2022-02-22': 4.24, '2022-02-23': 4.24, '2022-02-24': 4.25, '2022-02-25': 4.23, '2022-02-26': 4.22, '2022-02-27': 4.23, '2022-02-28': 4.29, '2022-03-01': 4.27, '2022-03-02': 4.32, '2022-03-03': 4.3}, 5, 0.1, []], 4.360504], ['normal control 4', [[2022, 6, 30], [2022, 7, 1], {'2022-06-10': 1.57, '2022-06-11': 1.48, '2022-06-12': 1.51, '2022-06-13': 1.61, '2022-06-14': 1.61, '2022-06-15': 1.57, '2022-06-16': 1.51, '2022-06-17': 1.55, '2022-06-18': 1.63, '2022-06-19': 1.55, '2022-06-20': 1.51, '2022-06-21': 1.58, '2022-06-22': 1.52, '2022-06-23': 1.47, '2022-06-24': 1.54, '2022-06-25': 1.51, '2022-06-26': 1.6, '2022-06-27': 1.61, '2022-06-28': 1.62, '2022-06-29': 1.63, '2022-06-30': 1.48, '2022-07-01': 1.56}, 2, 0.1, []], 1.72]], [['regression annualization basis 1', [[2024, 1, 9], [2024, 1, 26], {'2023-12-20': 5.25, '2023-12-21': 5.34, '2023-12-22': 5.31, '2023-12-23': 5.37, '2023-12-24': 5.37, '2023-12-25': 5.26, '2023-12-26': 5.32, '2023-12-27': 5.36, '2023-12-28': 5.27, '2023-12-29': 5.29, '2023-12-30': 5.24, '2023-12-31': 5.24, '2024-01-01': 5.25, '2024-01-02': 5.26, '2024-01-03': 5.34, '2024-01-04': 5.3, '2024-01-05': 5.28, '2024-01-06': 5.35, '2024-01-07': 5.24, '2024-01-08': 5.31, '2024-01-09': 5.26, '2024-01-10': 5.39, '2024-01-11': 5.32, '2024-01-12': 5.26, '2024-01-13': 5.39, '2024-01-14': 5.3, '2024-01-15': 5.28, '2024-01-16': 5.33, '2024-01-17': 5.34, '2024-01-18': 5.25, '2024-01-19': 5.24, '2024-01-20': 5.24, '2024-01-21': 5.31, '2024-01-22': 5.26, '2024-01-23': 5.27, '2024-01-24': 5.31, '2024-01-25': 5.35, '2024-01-26': 5.35}, 2, 0.1, [[2024, 1, 23], [2024, 1, 23], [2024, 1, 16]]], 5.412948], ['regression annualization basis 2', [[2026, 12, 28], [2027, 1, 8], {'2026-12-08': 5.33, '2026-12-09': 5.37, '2026-12-10': 5.35, '2026-12-11': 5.28, '2026-12-12': 5.31, '2026-12-13': 5.39, '2026-12-14': 5.37, '2026-12-15': 5.33, '2026-12-16': 5.39, '2026-12-17': 5.25, '2026-12-18': 5.24, '2026-12-19': 5.24, '2026-12-20': 5.34, '2026-12-21': 5.24, '2026-12-22': 5.26, '2026-12-23': 5.38, '2026-12-24': 5.24, '2026-12-25': 5.33, '2026-12-26': 5.27, '2026-12-27': 5.33, '2026-12-28': 5.27, '2026-12-29': 5.39, '2026-12-30': 5.33, '2026-12-31': 5.38, '2027-01-01': 5.29, '2027-01-02': 5.33, '2027-01-03': 5.24, '2027-01-04': 5.25, '2027-01-05': 5.25, '2027-01-06': 5.23, '2027-01-07': 5.3, '2027-01-08': 5.37}, 0, 0.25, []], 5.55096], ['partial repair probe 1', [[2024, 12, 2], [2024, 12, 18], {'2024-11-12': 0.09, '2024-11-13': 0.13, '2024-11-14': 0.04, '2024-11-15': 0.03, '2024-11-16': 0.09, '2024-11-17': 0.13, '2024-11-18': 0.09, '2024-11-19': -0.02, '2024-11-20': 0.07, '2024-11-21': 0.01, '2024-11-22': 0.12, '2024-11-23': 0.05, '2024-11-24': 0.01, '2024-11-25': -0.02, '2024-11-26': 0.05, '2024-11-27': -0.03, '2024-11-28': 0.04, '2024-11-29': 0.02, '2024-11-30': 0.05, '2024-12-01': 0.02, '2024-12-02': 0.04, '2024-12-03': 0.06, '2024-12-04': 0.04, '2024-12-05': -0.03, '2024-12-06': 0.07, '2024-12-07': 0.05, '2024-12-08': 0.12, '2024-12-09': 0.06, '2024-12-10': 0.03, '2024-12-11': 0.08, '2024-12-12': -0.01, '2024-12-13': 0.09, '2024-12-14': -0.01, '2024-12-15': -0.01, '2024-12-16': 0.1, '2024-12-17': 0.09, '2024-12-18': 0.08}, 0, 0.25, [[2024, 12, 13], [2024, 12, 9]]], 0.290625], ['partial repair probe 2', [[2027, 12, 30], [2028, 1, 5], {'2027-12-10': 1.6, '2027-12-11': 1.55, '2027-12-12': 1.5, '2027-12-13': 1.58, '2027-12-14': 1.6, '2027-12-15': 1.56, '2027-12-16': 1.62, '2027-12-17': 1.54, '2027-12-18': 1.49, '2027-12-19': 1.61, '2027-12-20': 1.57, '2027-12-21': 1.61, '2027-12-22': 1.53, '2027-12-23': 1.57, '2027-12-24': 1.53, '2027-12-25': 1.48, '2027-12-26': 1.49, '2027-12-27': 1.63, '2027-12-28': 1.6, '2027-12-29': 1.49, '2027-12-30': 1.6, '2027-12-31': 1.48, '2028-01-01': 1.57, '2028-01-02': 1.53, '2028-01-03': 1.6, '2028-01-04': 1.55, '2028-01-05': 1.6}, 2, 0.25, [[2028, 1, 3]]], 1.776767], ['normal control 1', [[2026, 7, 29], [2026, 7, 30], {'2026-07-09': 4.35, '2026-07-10': 4.25, '2026-07-11': 4.26, '2026-07-12': 4.27, '2026-07-13': 4.32, '2026-07-14': 4.25, '2026-07-15': 4.3, '2026-07-16': 4.35, '2026-07-17': 4.35, '2026-07-18': 4.23, '2026-07-19': 4.31, '2026-07-20': 4.38, '2026-07-21': 4.25, '2026-07-22': 4.23, '2026-07-23': 4.28, '2026-07-24': 4.22, '2026-07-25': 4.24, '2026-07-26': 4.27, '2026-07-27': 4.26, '2026-07-28': 4.23, '2026-07-29': 4.23, '2026-07-30': 4.27}, 2, 0.0, []], 4.26], ['normal control 2', [[2022, 7, 28], [2022, 7, 29], {'2022-07-08': 4.37, '2022-07-09': 4.32, '2022-07-10': 4.28, '2022-07-11': 4.3, '2022-07-12': 4.34, '2022-07-13': 4.32, '2022-07-14': 4.29, '2022-07-15': 4.31, '2022-07-16': 4.32, '2022-07-17': 4.3, '2022-07-18': 4.31, '2022-07-19': 4.32, '2022-07-20': 4.3, '2022-07-21': 4.37, '2022-07-22': 4.29, '2022-07-23': 4.37, '2022-07-24': 4.32, '2022-07-25': 4.23, '2022-07-26': 4.31, '2022-07-27': 4.34, '2022-07-28': 4.37, '2022-07-29': 4.33}, 2, 0.1, []], 4.41], ['normal control 3', [[2026, 6, 30], [2026, 7, 1], {'2026-06-10': 5.38, '2026-06-11': 5.28, '2026-06-12': 5.27, '2026-06-13': 5.23, '2026-06-14': 5.33, '2026-06-15': 5.35, '2026-06-16': 5.26, '2026-06-17': 5.23, '2026-06-18': 5.27, '2026-06-19': 5.31, '2026-06-20': 5.36, '2026-06-21': 5.37, '2026-06-22': 5.33, '2026-06-23': 5.23, '2026-06-24': 5.28, '2026-06-25': 5.35, '2026-06-26': 5.34, '2026-06-27': 5.35, '2026-06-28': 5.38, '2026-06-29': 5.29, '2026-06-30': 5.25, '2026-07-01': 5.24}, 5, 0.25, []], 5.48], ['normal control 4', [[2022, 6, 20], [2022, 6, 22], {'2022-05-31': 0.07, '2022-06-01': -0.01, '2022-06-02': 0.09, '2022-06-03': -0.01, '2022-06-04': 0.04, '2022-06-05': 0.05, '2022-06-06': 0.13, '2022-06-07': 0.13, '2022-06-08': 0.03, '2022-06-09': 0.05, '2022-06-10': 0.08, '2022-06-11': 0.0, '2022-06-12': 0.02, '2022-06-13': 0.08, '2022-06-14': -0.01, '2022-06-15': 0.08, '2022-06-16': 0.09, '2022-06-17': -0.01, '2022-06-18': 0.01, '2022-06-19': 0.1, '2022-06-20': 0.11, '2022-06-21': -0.01, '2022-06-22': 0.05}, 2, 0.25, []], 0.29]], [['regression annualization basis 1', [[2024, 12, 3], [2025, 1, 13], {'2024-11-13': 1.47, '2024-11-14': 1.52, '2024-11-15': 1.49, '2024-11-16': 1.52, '2024-11-17': 1.56, '2024-11-18': 1.57, '2024-11-19': 1.59, '2024-11-20': 1.57, '2024-11-21': 1.5, '2024-11-22': 1.54, '2024-11-23': 1.5, '2024-11-24': 1.62, '2024-11-25': 1.6, '2024-11-26': 1.54, '2024-11-27': 1.5, '2024-11-28': 1.59, '2024-11-29': 1.48, '2024-11-30': 1.52, '2024-12-01': 1.54, '2024-12-02': 1.49, '2024-12-03': 1.56, '2024-12-04': 1.55, '2024-12-05': 1.5, '2024-12-06': 1.58, '2024-12-07': 1.55, '2024-12-08': 1.59, '2024-12-09': 1.63, '2024-12-10': 1.52, '2024-12-11': 1.48, '2024-12-12': 1.57, '2024-12-13': 1.58, '2024-12-14': 1.48, '2024-12-15': 1.59, '2024-12-16': 1.61, '2024-12-17': 1.57, '2024-12-18': 1.53, '2024-12-19': 1.56, '2024-12-20': 1.63, '2024-12-21': 1.56, '2024-12-22': 1.6, '2024-12-23': 1.63, '2024-12-24': 1.5, '2024-12-25': 1.58, '2024-12-26': 1.63, '2024-12-27': 1.47, '2024-12-28': 1.55, '2024-12-29': 1.54, '2024-12-30': 1.61, '2024-12-31': 1.5, '2025-01-01': 1.49, '2025-01-02': 1.54, '2025-01-03': 1.54, '2025-01-04': 1.63, '2025-01-05': 1.58, '2025-01-06': 1.61, '2025-01-07': 1.52, '2025-01-08': 1.48, '2025-01-09': 1.48, '2025-01-10': 1.59, '2025-01-11': 1.55, '2025-01-12': 1.58, '2025-01-13': 1.5}, 5, 0.0, [[2024, 12, 26], [2024, 12, 10]]], 1.540065], ['regression annualization basis 2', [[2026, 7, 23], [2026, 7, 27], {'2026-07-03': 1.53, '2026-07-04': 1.49, '2026-07-05': 1.49, '2026-07-06': 1.58, '2026-07-07': 1.54, '2026-07-08': 1.47, '2026-07-09': 1.51, '2026-07-10': 1.57, '2026-07-11': 1.62, '2026-07-12': 1.58, '2026-07-13': 1.52, '2026-07-14': 1.62, '2026-07-15': 1.56, '2026-07-16': 1.53, '2026-07-17': 1.56, '2026-07-18': 1.49, '2026-07-19': 1.48, '2026-07-20': 1.6, '2026-07-21': 1.48, '2026-07-22': 1.59, '2026-07-23': 1.55, '2026-07-24': 1.48, '2026-07-25': 1.61, '2026-07-26': 1.55, '2026-07-27': 1.58}, 5, 0.1, [[2026, 7, 24]]], 1.63], ['partial repair probe 1', [[2024, 12, 2], [2024, 12, 20], {'2024-11-12': 0.08, '2024-11-13': 0.09, '2024-11-14': 0.06, '2024-11-15': 0.08, '2024-11-16': 0.01, '2024-11-17': 0.13, '2024-11-18': 0.02, '2024-11-19': -0.01, '2024-11-20': 0.01, '2024-11-21': 0.1, '2024-11-22': 0.11, '2024-11-23': -0.03, '2024-11-24': 0.09, '2024-11-25': 0.07, '2024-11-26': 0.01, '2024-11-27': 0.03, '2024-11-28': -0.03, '2024-11-29': -0.02, '2024-11-30': 0.1, '2024-12-01': 0.05, '2024-12-02': -0.01, '2024-12-03': 0.08, '2024-12-04': 0.04, '2024-12-05': 0.01, '2024-12-06': 0.01, '2024-12-07': 0.04, '2024-12-08': 0.08, '2024-12-09': 0.0, '2024-12-10': 0.0, '2024-12-11': -0.01, '2024-12-12': 0.05, '2024-12-13': 0.01, '2024-12-14': -0.03, '2024-12-15': 0.1, '2024-12-16': 0.07, '2024-12-17': 0.05, '2024-12-18': 0.13, '2024-12-19': 0.05, '2024-12-20': -0.01}, 5, 0.0, [[2024, 12, 18], [2024, 12, 13], [2024, 12, 19]]], 0.01], ['partial repair probe 2', [[2027, 10, 29], [2027, 11, 10], {'2027-10-09': 4.35, '2027-10-10': 4.22, '2027-10-11': 4.23, '2027-10-12': 4.32, '2027-10-13': 4.22, '2027-10-14': 4.25, '2027-10-15': 4.32, '2027-10-16': 4.23, '2027-10-17': 4.34, '2027-10-18': 4.34, '2027-10-19': 4.32, '2027-10-20': 4.24, '2027-10-21': 4.26, '2027-10-22': 4.25, '2027-10-23': 4.27, '2027-10-24': 4.28, '2027-10-25': 4.37, '2027-10-26': 4.27, '2027-10-27': 4.27, '2027-10-28': 4.26, '2027-10-29': 4.35, '2027-10-30': 4.37, '2027-10-31': 4.27, '2027-11-01': 4.24, '2027-11-02': 4.25, '2027-11-03': 4.33, '2027-11-04': 4.35, '2027-11-05': 4.37, '2027-11-06': 4.38, '2027-11-07': 4.29, '2027-11-08': 4.3, '2027-11-09': 4.35, '2027-11-10': 4.22}, 5, 0.0, []], 4.290887], ['normal control 1', [[2021, 8, 31], [2021, 9, 1], {'2021-08-11': -0.01, '2021-08-12': 0.05, '2021-08-13': -0.03, '2021-08-14': 0.07, '2021-08-15': 0.11, '2021-08-16': 0.04, '2021-08-17': 0.12, '2021-08-18': 0.13, '2021-08-19': 0.06, '2021-08-20': 0.12, '2021-08-21': 0.04, '2021-08-22': 0.12, '2021-08-23': -0.01, '2021-08-24': -0.02, '2021-08-25': 0.03, '2021-08-26': 0.07, '2021-08-27': -0.01, '2021-08-28': 0.13, '2021-08-29': 0.09, '2021-08-30': 0.09, '2021-08-31': 0.05, '2021-09-01': 0.11}, 0, 0.1, []], 0.15], ['normal control 2', [[2024, 3, 28], [2024, 3, 29], {'2024-03-08': 0.03, '2024-03-09': 0.0, '2024-03-10': 0.12, '2024-03-11': 0.01, '2024-03-12': 0.0, '2024-03-13': 0.01, '2024-03-14': 0.09, '2024-03-15': 0.07, '2024-03-16': 0.07, '2024-03-17': 0.13, '2024-03-18': 0.06, '2024-03-19': 0.08, '2024-03-20': -0.01, '2024-03-21': 0.1, '2024-03-22': 0.06, '2024-03-23': 0.07, '2024-03-24': 0.13, '2024-03-25': 0.13, '2024-03-26': 0.01, '2024-03-27': -0.03, '2024-03-28': 0.1, '2024-03-29': 0.06}, 0, 0.1, []], 0.2], ['normal control 3', [[2026, 12, 28], [2026, 12, 29], {'2026-12-08': 5.25, '2026-12-09': 5.39, '2026-12-10': 5.34, '2026-12-11': 5.29, '2026-12-12': 5.26, '2026-12-13': 5.32, '2026-12-14': 5.33, '2026-12-15': 5.3, '2026-12-16': 5.31, '2026-12-17': 5.29, '2026-12-18': 5.39, '2026-12-19': 5.26, '2026-12-20': 5.37, '2026-12-21': 5.39, '2026-12-22': 5.24, '2026-12-23': 5.26, '2026-12-24': 5.23, '2026-12-25': 5.39, '2026-12-26': 5.23, '2026-12-27': 5.38, '2026-12-28': 5.23, '2026-12-29': 5.31}, 0, 0.1, []], 5.33], ['normal control 4', [[2023, 7, 31], [2023, 8, 3], {'2023-07-11': 5.24, '2023-07-12': 5.28, '2023-07-13': 5.36, '2023-07-14': 5.34, '2023-07-15': 5.23, '2023-07-16': 5.27, '2023-07-17': 5.37, '2023-07-18': 5.37, '2023-07-19': 5.38, '2023-07-20': 5.31, '2023-07-21': 5.32, '2023-07-22': 5.27, '2023-07-23': 5.32, '2023-07-24': 5.33, '2023-07-25': 5.24, '2023-07-26': 5.33, '2023-07-27': 5.35, '2023-07-28': 5.3, '2023-07-29': 5.33, '2023-07-30': 5.32, '2023-07-31': 5.32, '2023-08-01': 5.38, '2023-08-02': 5.25, '2023-08-03': 5.33}, 2, 0.25, []], 5.574121]], [['regression annualization basis 1', [[2024, 12, 26], [2024, 12, 30], {'2024-12-06': -0.03, '2024-12-07': 0.11, '2024-12-08': -0.02, '2024-12-09': 0.02, '2024-12-10': 0.09, '2024-12-11': 0.05, '2024-12-12': 0.06, '2024-12-13': 0.11, '2024-12-14': 0.06, '2024-12-15': 0.06, '2024-12-16': 0.02, '2024-12-17': 0.1, '2024-12-18': 0.01, '2024-12-19': 0.07, '2024-12-20': -0.01, '2024-12-21': 0.06, '2024-12-22': -0.01, '2024-12-23': 0.07, '2024-12-24': 0.03, '2024-12-25': 0.07, '2024-12-26': -0.02, '2024-12-27': -0.02, '2024-12-28': 0.07, '2024-12-29': 0.13, '2024-12-30': 0.06}, 5, 0.25, [[2024, 12, 27]]], 0.32], ['regression annualization basis 2', [[2027, 10, 26], [2027, 10, 29], {'2027-10-06': 1.57, '2027-10-07': 1.59, '2027-10-08': 1.52, '2027-10-09': 1.59, '2027-10-10': 1.49, '2027-10-11': 1.56, '2027-10-12': 1.47, '2027-10-13': 1.54, '2027-10-14': 1.55, '2027-10-15': 1.59, '2027-10-16': 1.5, '2027-10-17': 1.63, '2027-10-18': 1.49, '2027-10-19': 1.57, '2027-10-20': 1.47, '2027-10-21': 1.58, '2027-10-22': 1.56, '2027-10-23': 1.49, '2027-10-24': 1.49, '2027-10-25': 1.47, '2027-10-26': 1.55, '2027-10-27': 1.58, '2027-10-28': 1.53, '2027-10-29': 1.61}, 5, 0.1, [[2027, 10, 28], [2027, 10, 27], [2027, 10, 28]]], 1.67], ['partial repair probe 1', [[2022, 4, 11], [2022, 4, 14], {'2022-03-22': 4.22, '2022-03-23': 4.36, '2022-03-24': 4.25, '2022-03-25': 4.32, '2022-03-26': 4.29, '2022-03-27': 4.36, '2022-03-28': 4.3, '2022-03-29': 4.22, '2022-03-30': 4.22, '2022-03-31': 4.23, '2022-04-01': 4.24, '2022-04-02': 4.24, '2022-04-03': 4.36, '2022-04-04': 4.33, '2022-04-05': 4.35, '2022-04-06': 4.25, '2022-04-07': 4.26, '2022-04-08': 4.35, '2022-04-09': 4.37, '2022-04-10': 4.3, '2022-04-11': 4.24, '2022-04-12': 4.32, '2022-04-13': 4.32, '2022-04-14': 4.29}, 0, 0.1, [[2022, 4, 13], [2022, 4, 12]]], 4.34], ['partial repair probe 2', [[2025, 8, 25], [2025, 9, 3], {'2025-08-05': 0.08, '2025-08-06': 0.04, '2025-08-07': -0.01, '2025-08-08': 0.0, '2025-08-09': 0.03, '2025-08-10': 0.11, '2025-08-11': 0.01, '2025-08-12': -0.03, '2025-08-13': 0.08, '2025-08-14': 0.04, '2025-08-15': 0.06, '2025-08-16': 0.08, '2025-08-17': 0.1, '2025-08-18': 0.11, '2025-08-19': 0.13, '2025-08-20': 0.05, '2025-08-21': 0.13, '2025-08-22': 0.13, '2025-08-23': 0.12, '2025-08-24': 0.0, '2025-08-25': 0.04, '2025-08-26': 0.07, '2025-08-27': 0.09, '2025-08-28': 0.07, '2025-08-29': 0.05, '2025-08-30': -0.01, '2025-08-31': -0.03, '2025-09-01': 0.09, '2025-09-02': -0.03, '2025-09-03': 0.04}, 0, 0.1, [[2025, 8, 29]]], 0.16], ['normal control 1', [[2023, 10, 3], [2023, 10, 4], {'2023-09-13': 5.33, '2023-09-14': 5.35, '2023-09-15': 5.37, '2023-09-16': 5.29, '2023-09-17': 5.28, '2023-09-18': 5.37, '2023-09-19': 5.37, '2023-09-20': 5.25, '2023-09-21': 5.23, '2023-09-22': 5.28, '2023-09-23': 5.38, '2023-09-24': 5.36, '2023-09-25': 5.27, '2023-09-26': 5.25, '2023-09-27': 5.26, '2023-09-28': 5.34, '2023-09-29': 5.32, '2023-09-30': 5.31, '2023-10-01': 5.27, '2023-10-02': 5.23, '2023-10-03': 5.38, '2023-10-04': 5.27}, 5, 0.0, []], 5.25], ['normal control 2', [[2025, 4, 30], [2025, 5, 1], {'2025-04-10': 1.47, '2025-04-11': 1.6, '2025-04-12': 1.54, '2025-04-13': 1.58, '2025-04-14': 1.55, '2025-04-15': 1.48, '2025-04-16': 1.51, '2025-04-17': 1.52, '2025-04-18': 1.5, '2025-04-19': 1.63, '2025-04-20': 1.58, '2025-04-21': 1.55, '2025-04-22': 1.61, '2025-04-23': 1.58, '2025-04-24': 1.49, '2025-04-25': 1.62, '2025-04-26': 1.59, '2025-04-27': 1.47, '2025-04-28': 1.48, '2025-04-29': 1.6, '2025-04-30': 1.51, '2025-05-01': 1.48}, 2, 0.0, []], 1.48], ['normal control 3', [[2023, 1, 10], [2023, 1, 11], {'2022-12-21': 5.28, '2022-12-22': 5.35, '2022-12-23': 5.26, '2022-12-24': 5.34, '2022-12-25': 5.37, '2022-12-26': 5.33, '2022-12-27': 5.3, '2022-12-28': 5.29, '2022-12-29': 5.32, '2022-12-30': 5.3, '2022-12-31': 5.35, '2023-01-01': 5.3, '2023-01-02': 5.37, '2023-01-03': 5.36, '2023-01-04': 5.32, '2023-01-05': 5.32, '2023-01-06': 5.36, '2023-01-07': 5.27, '2023-01-08': 5.27, '2023-01-09': 5.28, '2023-01-10': 5.32, '2023-01-11': 5.38}, 0, 0.1, []], 5.42], ['normal control 4', [[2021, 9, 6], [2021, 9, 7], {'2021-08-17': 5.36, '2021-08-18': 5.28, '2021-08-19': 5.23, '2021-08-20': 5.25, '2021-08-21': 5.32, '2021-08-22': 5.36, '2021-08-23': 5.26, '2021-08-24': 5.37, '2021-08-25': 5.33, '2021-08-26': 5.32, '2021-08-27': 5.3, '2021-08-28': 5.25, '2021-08-29': 5.31, '2021-08-30': 5.32, '2021-08-31': 5.3, '2021-09-01': 5.35, '2021-09-02': 5.39, '2021-09-03': 5.36, '2021-09-04': 5.31, '2021-09-05': 5.32, '2021-09-06': 5.35, '2021-09-07': 5.36}, 2, 0.1, []], 5.49]]]
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 annualization basis 1 | 1.606651 | 1.55125 | Failed |
| regression annualization basis 2 | 4.565018 | 4.30416 | Failed |
| partial repair probe 1 | 2.666833 | 1.6001 | Failed |
| partial repair probe 2 | 0.046668 | 0.043078 | Failed |
| normal control 1 | 4.36 | 4.36 | Passed |
| normal control 2 | 4.51 | 4.51 | Passed |
| normal control 3 | 4.555257 | 4.555257 | Passed |
| normal control 4 | 4.317184 | 4.317184 | Passed |
SHA-256 / b611be3fbba7a7c5ebd3904d8b8b8adeeabc603ef4a02f8289ccc08ae64e7f7e
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 annualization basis 1', [[2025, 4, 16], [2025, 5, 15], {'2025-03-27': 1.56, '2025-03-28': 1.6, '2025-03-29': 1.58, '2025-03-30': 1.59, '2025-03-31': 1.54, '2025-04-01': 1.48, '2025-04-02': 1.48, '2025-04-03': 1.47, '2025-04-04': 1.52, '2025-04-05': 1.48, '2025-04-06': 1.62, '2025-04-07': 1.51, '2025-04-08': 1.59, '2025-04-09': 1.56, '2025-04-10': 1.63, '2025-04-11': 1.57, '2025-04-12': 1.51, '2025-04-13': 1.52, '2025-04-14': 1.55, '2025-04-15': 1.48, '2025-04-16': 1.63, '2025-04-17': 1.5, '2025-04-18': 1.56, '2025-04-19': 1.51, '2025-04-20': 1.61, '2025-04-21': 1.61, '2025-04-22': 1.59, '2025-04-23': 1.48, '2025-04-24': 1.58, '2025-04-25': 1.61, '2025-04-26': 1.47, '2025-04-27': 1.47, '2025-04-28': 1.51, '2025-04-29': 1.55, '2025-04-30': 1.49, '2025-05-01': 1.5, '2025-05-02': 1.5, '2025-05-03': 1.47, '2025-05-04': 1.58, '2025-05-05': 1.48, '2025-05-06': 1.55, '2025-05-07': 1.6, '2025-05-08': 1.47, '2025-05-09': 1.55, '2025-05-10': 1.55, '2025-05-11': 1.61, '2025-05-12': 1.57, '2025-05-13': 1.48, '2025-05-14': 1.62, '2025-05-15': 1.62}, 5, 0.0, [[2025, 5, 14]]], 1.55125], ['regression annualization basis 2', [[2023, 4, 17], [2023, 5, 22], {'2023-03-28': 4.25, '2023-03-29': 4.34, '2023-03-30': 4.26, '2023-03-31': 4.22, '2023-04-01': 4.27, '2023-04-02': 4.37, '2023-04-03': 4.32, '2023-04-04': 4.31, '2023-04-05': 4.38, '2023-04-06': 4.25, '2023-04-07': 4.37, '2023-04-08': 4.25, '2023-04-09': 4.36, '2023-04-10': 4.27, '2023-04-11': 4.27, '2023-04-12': 4.26, '2023-04-13': 4.38, '2023-04-14': 4.26, '2023-04-15': 4.32, '2023-04-16': 4.35, '2023-04-17': 4.33, '2023-04-18': 4.31, '2023-04-19': 4.25, '2023-04-20': 4.22, '2023-04-21': 4.28, '2023-04-22': 4.22, '2023-04-23': 4.36, '2023-04-24': 4.37, '2023-04-25': 4.26, '2023-04-26': 4.25, '2023-04-27': 4.34, '2023-04-28': 4.33, '2023-04-29': 4.28, '2023-04-30': 4.26, '2023-05-01': 4.22, '2023-05-02': 4.35, '2023-05-03': 4.34, '2023-05-04': 4.29, '2023-05-05': 4.38, '2023-05-06': 4.23, '2023-05-07': 4.23, '2023-05-08': 4.32, '2023-05-09': 4.23, '2023-05-10': 4.23, '2023-05-11': 4.23, '2023-05-12': 4.34, '2023-05-13': 4.29, '2023-05-14': 4.33, '2023-05-15': 4.22, '2023-05-16': 4.36, '2023-05-17': 4.35, '2023-05-18': 4.29, '2023-05-19': 4.28, '2023-05-20': 4.27, '2023-05-21': 4.29, '2023-05-22': 4.35}, 2, 0.0, [[2023, 4, 27], [2023, 5, 8]]], 4.30416], ['partial repair probe 1', [[2027, 11, 5], [2027, 11, 10], {'2027-10-16': 1.57, '2027-10-17': 1.56, '2027-10-18': 1.52, '2027-10-19': 1.51, '2027-10-20': 1.63, '2027-10-21': 1.55, '2027-10-22': 1.47, '2027-10-23': 1.62, '2027-10-24': 1.56, '2027-10-25': 1.56, '2027-10-26': 1.51, '2027-10-27': 1.56, '2027-10-28': 1.6, '2027-10-29': 1.55, '2027-10-30': 1.57, '2027-10-31': 1.62, '2027-11-01': 1.53, '2027-11-02': 1.49, '2027-11-03': 1.6, '2027-11-04': 1.58, '2027-11-05': 1.62, '2027-11-06': 1.52, '2027-11-07': 1.57, '2027-11-08': 1.53, '2027-11-09': 1.6, '2027-11-10': 1.56}, 2, 0.0, []], 1.6001], ['partial repair probe 2', [[2027, 7, 29], [2027, 9, 6], {'2027-07-09': 0.11, '2027-07-10': 0.11, '2027-07-11': 0.06, '2027-07-12': 0.1, '2027-07-13': 0.03, '2027-07-14': 0.11, '2027-07-15': 0.0, '2027-07-16': 0.07, '2027-07-17': 0.02, '2027-07-18': -0.03, '2027-07-19': 0.11, '2027-07-20': 0.07, '2027-07-21': 0.06, '2027-07-22': 0.1, '2027-07-23': 0.03, '2027-07-24': 0.13, '2027-07-25': -0.02, '2027-07-26': -0.03, '2027-07-27': 0.04, '2027-07-28': 0.02, '2027-07-29': 0.13, '2027-07-30': 0.07, '2027-07-31': 0.07, '2027-08-01': 0.01, '2027-08-02': 0.1, '2027-08-03': -0.02, '2027-08-04': 0.07, '2027-08-05': -0.02, '2027-08-06': 0.03, '2027-08-07': 0.07, '2027-08-08': -0.01, '2027-08-09': -0.02, '2027-08-10': 0.13, '2027-08-11': -0.02, '2027-08-12': 0.06, '2027-08-13': 0.1, '2027-08-14': 0.12, '2027-08-15': 0.1, '2027-08-16': 0.11, '2027-08-17': 0.12, '2027-08-18': 0.07, '2027-08-19': -0.02, '2027-08-20': 0.0, '2027-08-21': 0.02, '2027-08-22': 0.13, '2027-08-23': 0.07, '2027-08-24': 0.01, '2027-08-25': 0.06, '2027-08-26': 0.03, '2027-08-27': 0.1, '2027-08-28': 0.0, '2027-08-29': 0.04, '2027-08-30': 0.1, '2027-08-31': -0.02, '2027-09-01': 0.1, '2027-09-02': 0.11, '2027-09-03': 0.05, '2027-09-04': 0.0, '2027-09-05': -0.03, '2027-09-06': 0.11}, 5, 0.0, [[2027, 8, 13]]], 0.043078], ['normal control 1', [[2027, 7, 28], [2027, 7, 29], {'2027-07-08': 4.26, '2027-07-09': 4.33, '2027-07-10': 4.24, '2027-07-11': 4.3, '2027-07-12': 4.31, '2027-07-13': 4.37, '2027-07-14': 4.32, '2027-07-15': 4.32, '2027-07-16': 4.36, '2027-07-17': 4.26, '2027-07-18': 4.29, '2027-07-19': 4.3, '2027-07-20': 4.32, '2027-07-21': 4.22, '2027-07-22': 4.37, '2027-07-23': 4.26, '2027-07-24': 4.24, '2027-07-25': 4.37, '2027-07-26': 4.36, '2027-07-27': 4.38, '2027-07-28': 4.26, '2027-07-29': 4.22}, 0, 0.1, []], 4.36], ['normal control 2', [[2028, 3, 1], [2028, 3, 2], {'2028-02-10': 4.22, '2028-02-11': 4.34, '2028-02-12': 4.34, '2028-02-13': 4.22, '2028-02-14': 4.37, '2028-02-15': 4.22, '2028-02-16': 4.29, '2028-02-17': 4.36, '2028-02-18': 4.23, '2028-02-19': 4.32, '2028-02-20': 4.22, '2028-02-21': 4.31, '2028-02-22': 4.26, '2028-02-23': 4.36, '2028-02-24': 4.26, '2028-02-25': 4.22, '2028-02-26': 4.31, '2028-02-27': 4.3, '2028-02-28': 4.37, '2028-02-29': 4.35, '2028-03-01': 4.26, '2028-03-02': 4.34}, 0, 0.25, []], 4.51], ['normal control 3', [[2023, 2, 28], [2023, 3, 2], {'2023-02-08': 4.36, '2023-02-09': 4.38, '2023-02-10': 4.28, '2023-02-11': 4.32, '2023-02-12': 4.38, '2023-02-13': 4.38, '2023-02-14': 4.35, '2023-02-15': 4.38, '2023-02-16': 4.36, '2023-02-17': 4.36, '2023-02-18': 4.23, '2023-02-19': 4.36, '2023-02-20': 4.31, '2023-02-21': 4.33, '2023-02-22': 4.28, '2023-02-23': 4.34, '2023-02-24': 4.28, '2023-02-25': 4.33, '2023-02-26': 4.26, '2023-02-27': 4.3, '2023-02-28': 4.34, '2023-03-01': 4.36, '2023-03-02': 4.33}, 5, 0.25, []], 4.555257], ['normal control 4', [[2021, 11, 15], [2021, 11, 18], {'2021-10-26': 4.38, '2021-10-27': 4.27, '2021-10-28': 4.36, '2021-10-29': 4.22, '2021-10-30': 4.37, '2021-10-31': 4.34, '2021-11-01': 4.34, '2021-11-02': 4.37, '2021-11-03': 4.31, '2021-11-04': 4.38, '2021-11-05': 4.35, '2021-11-06': 4.22, '2021-11-07': 4.24, '2021-11-08': 4.38, '2021-11-09': 4.26, '2021-11-10': 4.38, '2021-11-11': 4.34, '2021-11-12': 4.27, '2021-11-13': 4.24, '2021-11-14': 4.29, '2021-11-15': 4.34, '2021-11-16': 4.36, '2021-11-17': 4.31, '2021-11-18': 4.3}, 2, 0.0, []], 4.317184]], [['regression annualization basis 1', [[2024, 11, 28], [2025, 1, 6], {'2024-11-08': 5.23, '2024-11-09': 5.34, '2024-11-10': 5.34, '2024-11-11': 5.39, '2024-11-12': 5.36, '2024-11-13': 5.37, '2024-11-14': 5.35, '2024-11-15': 5.26, '2024-11-16': 5.33, '2024-11-17': 5.36, '2024-11-18': 5.33, '2024-11-19': 5.27, '2024-11-20': 5.29, '2024-11-21': 5.29, '2024-11-22': 5.27, '2024-11-23': 5.28, '2024-11-24': 5.27, '2024-11-25': 5.28, '2024-11-26': 5.31, '2024-11-27': 5.26, '2024-11-28': 5.26, '2024-11-29': 5.23, '2024-11-30': 5.24, '2024-12-01': 5.25, '2024-12-02': 5.26, '2024-12-03': 5.27, '2024-12-04': 5.38, '2024-12-05': 5.29, '2024-12-06': 5.38, '2024-12-07': 5.39, '2024-12-08': 5.32, '2024-12-09': 5.26, '2024-12-10': 5.27, '2024-12-11': 5.34, '2024-12-12': 5.3, '2024-12-13': 5.36, '2024-12-14': 5.35, '2024-12-15': 5.34, '2024-12-16': 5.35, '2024-12-17': 5.33, '2024-12-18': 5.23, '2024-12-19': 5.27, '2024-12-20': 5.39, '2024-12-21': 5.27, '2024-12-22': 5.34, '2024-12-23': 5.32, '2024-12-24': 5.25, '2024-12-25': 5.39, '2024-12-26': 5.39, '2024-12-27': 5.34, '2024-12-28': 5.38, '2024-12-29': 5.32, '2024-12-30': 5.29, '2024-12-31': 5.3, '2025-01-01': 5.29, '2025-01-02': 5.24, '2025-01-03': 5.26, '2025-01-04': 5.32, '2025-01-05': 5.23, '2025-01-06': 5.27}, 5, 0.25, [[2024, 12, 27], [2024, 12, 10]]], 5.567247], ['regression annualization basis 2', [[2023, 2, 1], [2023, 2, 6], {'2023-01-12': 0.06, '2023-01-13': 0.04, '2023-01-14': 0.07, '2023-01-15': 0.0, '2023-01-16': 0.1, '2023-01-17': 0.09, '2023-01-18': 0.01, '2023-01-19': 0.02, '2023-01-20': 0.11, '2023-01-21': 0.01, '2023-01-22': 0.12, '2023-01-23': 0.06, '2023-01-24': 0.1, '2023-01-25': 0.03, '2023-01-26': 0.08, '2023-01-27': 0.09, '2023-01-28': 0.07, '2023-01-29': 0.0, '2023-01-30': 0.03, '2023-01-31': 0.05, '2023-02-01': 0.08, '2023-02-02': 0.03, '2023-02-03': 0.13, '2023-02-04': 0.08, '2023-02-05': -0.02, '2023-02-06': 0.02}, 0, 0.1, []], 0.2], ['partial repair probe 1', [[2027, 2, 24], [2027, 3, 1], {'2027-02-04': 0.0, '2027-02-05': 0.02, '2027-02-06': 0.12, '2027-02-07': 0.11, '2027-02-08': 0.1, '2027-02-09': 0.09, '2027-02-10': -0.02, '2027-02-11': 0.11, '2027-02-12': 0.13, '2027-02-13': 0.1, '2027-02-14': 0.03, '2027-02-15': 0.12, '2027-02-16': 0.03, '2027-02-17': 0.06, '2027-02-18': 0.0, '2027-02-19': -0.03, '2027-02-20': 0.1, '2027-02-21': 0.1, '2027-02-22': 0.05, '2027-02-23': -0.02, '2027-02-24': 0.02, '2027-02-25': 0.11, '2027-02-26': 0.12, '2027-02-27': 0.03, '2027-02-28': 0.07, '2027-03-01': 0.12}, 2, 0.25, []], 0.268], ['partial repair probe 2', [[2025, 1, 31], [2025, 2, 6], {'2025-01-11': 1.49, '2025-01-12': 1.52, '2025-01-13': 1.56, '2025-01-14': 1.53, '2025-01-15': 1.51, '2025-01-16': 1.56, '2025-01-17': 1.59, '2025-01-18': 1.54, '2025-01-19': 1.53, '2025-01-20': 1.62, '2025-01-21': 1.6, '2025-01-22': 1.54, '2025-01-23': 1.58, '2025-01-24': 1.48, '2025-01-25': 1.57, '2025-01-26': 1.48, '2025-01-27': 1.6, '2025-01-28': 1.5, '2025-01-29': 1.57, '2025-01-30': 1.53, '2025-01-31': 1.58, '2025-02-01': 1.52, '2025-02-02': 1.55, '2025-02-03': 1.63, '2025-02-04': 1.56, '2025-02-05': 1.55, '2025-02-06': 1.62}, 2, 0.1, []], 1.675138], ['normal control 1', [[2027, 11, 30], [2027, 12, 3], {'2027-11-10': 5.25, '2027-11-11': 5.34, '2027-11-12': 5.35, '2027-11-13': 5.32, '2027-11-14': 5.25, '2027-11-15': 5.3, '2027-11-16': 5.23, '2027-11-17': 5.36, '2027-11-18': 5.27, '2027-11-19': 5.23, '2027-11-20': 5.35, '2027-11-21': 5.32, '2027-11-22': 5.38, '2027-11-23': 5.28, '2027-11-24': 5.27, '2027-11-25': 5.33, '2027-11-26': 5.36, '2027-11-27': 5.35, '2027-11-28': 5.28, '2027-11-29': 5.23, '2027-11-30': 5.33, '2027-12-01': 5.33, '2027-12-02': 5.39, '2027-12-03': 5.33}, 2, 0.25, []], 5.557449], ['normal control 2', [[2024, 11, 27], [2024, 11, 29], {'2024-11-07': 5.38, '2024-11-08': 5.39, '2024-11-09': 5.23, '2024-11-10': 5.28, '2024-11-11': 5.3, '2024-11-12': 5.32, '2024-11-13': 5.33, '2024-11-14': 5.32, '2024-11-15': 5.3, '2024-11-16': 5.39, '2024-11-17': 5.36, '2024-11-18': 5.32, '2024-11-19': 5.31, '2024-11-20': 5.35, '2024-11-21': 5.28, '2024-11-22': 5.3, '2024-11-23': 5.3, '2024-11-24': 5.35, '2024-11-25': 5.24, '2024-11-26': 5.24, '2024-11-27': 5.29, '2024-11-28': 5.37, '2024-11-29': 5.31}, 2, 0.1, []], 5.340381], ['normal control 3', [[2022, 2, 28], [2022, 3, 3], {'2022-02-08': 4.28, '2022-02-09': 4.22, '2022-02-10': 4.27, '2022-02-11': 4.3, '2022-02-12': 4.22, '2022-02-13': 4.25, '2022-02-14': 4.34, '2022-02-15': 4.35, '2022-02-16': 4.25, '2022-02-17': 4.35, '2022-02-18': 4.35, '2022-02-19': 4.32, '2022-02-20': 4.23, '2022-02-21': 4.3, '2022-02-22': 4.24, '2022-02-23': 4.24, '2022-02-24': 4.25, '2022-02-25': 4.23, '2022-02-26': 4.22, '2022-02-27': 4.23, '2022-02-28': 4.29, '2022-03-01': 4.27, '2022-03-02': 4.32, '2022-03-03': 4.3}, 5, 0.1, []], 4.360504], ['normal control 4', [[2022, 6, 30], [2022, 7, 1], {'2022-06-10': 1.57, '2022-06-11': 1.48, '2022-06-12': 1.51, '2022-06-13': 1.61, '2022-06-14': 1.61, '2022-06-15': 1.57, '2022-06-16': 1.51, '2022-06-17': 1.55, '2022-06-18': 1.63, '2022-06-19': 1.55, '2022-06-20': 1.51, '2022-06-21': 1.58, '2022-06-22': 1.52, '2022-06-23': 1.47, '2022-06-24': 1.54, '2022-06-25': 1.51, '2022-06-26': 1.6, '2022-06-27': 1.61, '2022-06-28': 1.62, '2022-06-29': 1.63, '2022-06-30': 1.48, '2022-07-01': 1.56}, 2, 0.1, []], 1.72]], [['regression annualization basis 1', [[2024, 1, 9], [2024, 1, 26], {'2023-12-20': 5.25, '2023-12-21': 5.34, '2023-12-22': 5.31, '2023-12-23': 5.37, '2023-12-24': 5.37, '2023-12-25': 5.26, '2023-12-26': 5.32, '2023-12-27': 5.36, '2023-12-28': 5.27, '2023-12-29': 5.29, '2023-12-30': 5.24, '2023-12-31': 5.24, '2024-01-01': 5.25, '2024-01-02': 5.26, '2024-01-03': 5.34, '2024-01-04': 5.3, '2024-01-05': 5.28, '2024-01-06': 5.35, '2024-01-07': 5.24, '2024-01-08': 5.31, '2024-01-09': 5.26, '2024-01-10': 5.39, '2024-01-11': 5.32, '2024-01-12': 5.26, '2024-01-13': 5.39, '2024-01-14': 5.3, '2024-01-15': 5.28, '2024-01-16': 5.33, '2024-01-17': 5.34, '2024-01-18': 5.25, '2024-01-19': 5.24, '2024-01-20': 5.24, '2024-01-21': 5.31, '2024-01-22': 5.26, '2024-01-23': 5.27, '2024-01-24': 5.31, '2024-01-25': 5.35, '2024-01-26': 5.35}, 2, 0.1, [[2024, 1, 23], [2024, 1, 23], [2024, 1, 16]]], 5.412948], ['regression annualization basis 2', [[2026, 12, 28], [2027, 1, 8], {'2026-12-08': 5.33, '2026-12-09': 5.37, '2026-12-10': 5.35, '2026-12-11': 5.28, '2026-12-12': 5.31, '2026-12-13': 5.39, '2026-12-14': 5.37, '2026-12-15': 5.33, '2026-12-16': 5.39, '2026-12-17': 5.25, '2026-12-18': 5.24, '2026-12-19': 5.24, '2026-12-20': 5.34, '2026-12-21': 5.24, '2026-12-22': 5.26, '2026-12-23': 5.38, '2026-12-24': 5.24, '2026-12-25': 5.33, '2026-12-26': 5.27, '2026-12-27': 5.33, '2026-12-28': 5.27, '2026-12-29': 5.39, '2026-12-30': 5.33, '2026-12-31': 5.38, '2027-01-01': 5.29, '2027-01-02': 5.33, '2027-01-03': 5.24, '2027-01-04': 5.25, '2027-01-05': 5.25, '2027-01-06': 5.23, '2027-01-07': 5.3, '2027-01-08': 5.37}, 0, 0.25, []], 5.55096], ['partial repair probe 1', [[2024, 12, 2], [2024, 12, 18], {'2024-11-12': 0.09, '2024-11-13': 0.13, '2024-11-14': 0.04, '2024-11-15': 0.03, '2024-11-16': 0.09, '2024-11-17': 0.13, '2024-11-18': 0.09, '2024-11-19': -0.02, '2024-11-20': 0.07, '2024-11-21': 0.01, '2024-11-22': 0.12, '2024-11-23': 0.05, '2024-11-24': 0.01, '2024-11-25': -0.02, '2024-11-26': 0.05, '2024-11-27': -0.03, '2024-11-28': 0.04, '2024-11-29': 0.02, '2024-11-30': 0.05, '2024-12-01': 0.02, '2024-12-02': 0.04, '2024-12-03': 0.06, '2024-12-04': 0.04, '2024-12-05': -0.03, '2024-12-06': 0.07, '2024-12-07': 0.05, '2024-12-08': 0.12, '2024-12-09': 0.06, '2024-12-10': 0.03, '2024-12-11': 0.08, '2024-12-12': -0.01, '2024-12-13': 0.09, '2024-12-14': -0.01, '2024-12-15': -0.01, '2024-12-16': 0.1, '2024-12-17': 0.09, '2024-12-18': 0.08}, 0, 0.25, [[2024, 12, 13], [2024, 12, 9]]], 0.290625], ['partial repair probe 2', [[2027, 12, 30], [2028, 1, 5], {'2027-12-10': 1.6, '2027-12-11': 1.55, '2027-12-12': 1.5, '2027-12-13': 1.58, '2027-12-14': 1.6, '2027-12-15': 1.56, '2027-12-16': 1.62, '2027-12-17': 1.54, '2027-12-18': 1.49, '2027-12-19': 1.61, '2027-12-20': 1.57, '2027-12-21': 1.61, '2027-12-22': 1.53, '2027-12-23': 1.57, '2027-12-24': 1.53, '2027-12-25': 1.48, '2027-12-26': 1.49, '2027-12-27': 1.63, '2027-12-28': 1.6, '2027-12-29': 1.49, '2027-12-30': 1.6, '2027-12-31': 1.48, '2028-01-01': 1.57, '2028-01-02': 1.53, '2028-01-03': 1.6, '2028-01-04': 1.55, '2028-01-05': 1.6}, 2, 0.25, [[2028, 1, 3]]], 1.776767], ['normal control 1', [[2026, 7, 29], [2026, 7, 30], {'2026-07-09': 4.35, '2026-07-10': 4.25, '2026-07-11': 4.26, '2026-07-12': 4.27, '2026-07-13': 4.32, '2026-07-14': 4.25, '2026-07-15': 4.3, '2026-07-16': 4.35, '2026-07-17': 4.35, '2026-07-18': 4.23, '2026-07-19': 4.31, '2026-07-20': 4.38, '2026-07-21': 4.25, '2026-07-22': 4.23, '2026-07-23': 4.28, '2026-07-24': 4.22, '2026-07-25': 4.24, '2026-07-26': 4.27, '2026-07-27': 4.26, '2026-07-28': 4.23, '2026-07-29': 4.23, '2026-07-30': 4.27}, 2, 0.0, []], 4.26], ['normal control 2', [[2022, 7, 28], [2022, 7, 29], {'2022-07-08': 4.37, '2022-07-09': 4.32, '2022-07-10': 4.28, '2022-07-11': 4.3, '2022-07-12': 4.34, '2022-07-13': 4.32, '2022-07-14': 4.29, '2022-07-15': 4.31, '2022-07-16': 4.32, '2022-07-17': 4.3, '2022-07-18': 4.31, '2022-07-19': 4.32, '2022-07-20': 4.3, '2022-07-21': 4.37, '2022-07-22': 4.29, '2022-07-23': 4.37, '2022-07-24': 4.32, '2022-07-25': 4.23, '2022-07-26': 4.31, '2022-07-27': 4.34, '2022-07-28': 4.37, '2022-07-29': 4.33}, 2, 0.1, []], 4.41], ['normal control 3', [[2026, 6, 30], [2026, 7, 1], {'2026-06-10': 5.38, '2026-06-11': 5.28, '2026-06-12': 5.27, '2026-06-13': 5.23, '2026-06-14': 5.33, '2026-06-15': 5.35, '2026-06-16': 5.26, '2026-06-17': 5.23, '2026-06-18': 5.27, '2026-06-19': 5.31, '2026-06-20': 5.36, '2026-06-21': 5.37, '2026-06-22': 5.33, '2026-06-23': 5.23, '2026-06-24': 5.28, '2026-06-25': 5.35, '2026-06-26': 5.34, '2026-06-27': 5.35, '2026-06-28': 5.38, '2026-06-29': 5.29, '2026-06-30': 5.25, '2026-07-01': 5.24}, 5, 0.25, []], 5.48], ['normal control 4', [[2022, 6, 20], [2022, 6, 22], {'2022-05-31': 0.07, '2022-06-01': -0.01, '2022-06-02': 0.09, '2022-06-03': -0.01, '2022-06-04': 0.04, '2022-06-05': 0.05, '2022-06-06': 0.13, '2022-06-07': 0.13, '2022-06-08': 0.03, '2022-06-09': 0.05, '2022-06-10': 0.08, '2022-06-11': 0.0, '2022-06-12': 0.02, '2022-06-13': 0.08, '2022-06-14': -0.01, '2022-06-15': 0.08, '2022-06-16': 0.09, '2022-06-17': -0.01, '2022-06-18': 0.01, '2022-06-19': 0.1, '2022-06-20': 0.11, '2022-06-21': -0.01, '2022-06-22': 0.05}, 2, 0.25, []], 0.29]], [['regression annualization basis 1', [[2024, 12, 3], [2025, 1, 13], {'2024-11-13': 1.47, '2024-11-14': 1.52, '2024-11-15': 1.49, '2024-11-16': 1.52, '2024-11-17': 1.56, '2024-11-18': 1.57, '2024-11-19': 1.59, '2024-11-20': 1.57, '2024-11-21': 1.5, '2024-11-22': 1.54, '2024-11-23': 1.5, '2024-11-24': 1.62, '2024-11-25': 1.6, '2024-11-26': 1.54, '2024-11-27': 1.5, '2024-11-28': 1.59, '2024-11-29': 1.48, '2024-11-30': 1.52, '2024-12-01': 1.54, '2024-12-02': 1.49, '2024-12-03': 1.56, '2024-12-04': 1.55, '2024-12-05': 1.5, '2024-12-06': 1.58, '2024-12-07': 1.55, '2024-12-08': 1.59, '2024-12-09': 1.63, '2024-12-10': 1.52, '2024-12-11': 1.48, '2024-12-12': 1.57, '2024-12-13': 1.58, '2024-12-14': 1.48, '2024-12-15': 1.59, '2024-12-16': 1.61, '2024-12-17': 1.57, '2024-12-18': 1.53, '2024-12-19': 1.56, '2024-12-20': 1.63, '2024-12-21': 1.56, '2024-12-22': 1.6, '2024-12-23': 1.63, '2024-12-24': 1.5, '2024-12-25': 1.58, '2024-12-26': 1.63, '2024-12-27': 1.47, '2024-12-28': 1.55, '2024-12-29': 1.54, '2024-12-30': 1.61, '2024-12-31': 1.5, '2025-01-01': 1.49, '2025-01-02': 1.54, '2025-01-03': 1.54, '2025-01-04': 1.63, '2025-01-05': 1.58, '2025-01-06': 1.61, '2025-01-07': 1.52, '2025-01-08': 1.48, '2025-01-09': 1.48, '2025-01-10': 1.59, '2025-01-11': 1.55, '2025-01-12': 1.58, '2025-01-13': 1.5}, 5, 0.0, [[2024, 12, 26], [2024, 12, 10]]], 1.540065], ['regression annualization basis 2', [[2026, 7, 23], [2026, 7, 27], {'2026-07-03': 1.53, '2026-07-04': 1.49, '2026-07-05': 1.49, '2026-07-06': 1.58, '2026-07-07': 1.54, '2026-07-08': 1.47, '2026-07-09': 1.51, '2026-07-10': 1.57, '2026-07-11': 1.62, '2026-07-12': 1.58, '2026-07-13': 1.52, '2026-07-14': 1.62, '2026-07-15': 1.56, '2026-07-16': 1.53, '2026-07-17': 1.56, '2026-07-18': 1.49, '2026-07-19': 1.48, '2026-07-20': 1.6, '2026-07-21': 1.48, '2026-07-22': 1.59, '2026-07-23': 1.55, '2026-07-24': 1.48, '2026-07-25': 1.61, '2026-07-26': 1.55, '2026-07-27': 1.58}, 5, 0.1, [[2026, 7, 24]]], 1.63], ['partial repair probe 1', [[2024, 12, 2], [2024, 12, 20], {'2024-11-12': 0.08, '2024-11-13': 0.09, '2024-11-14': 0.06, '2024-11-15': 0.08, '2024-11-16': 0.01, '2024-11-17': 0.13, '2024-11-18': 0.02, '2024-11-19': -0.01, '2024-11-20': 0.01, '2024-11-21': 0.1, '2024-11-22': 0.11, '2024-11-23': -0.03, '2024-11-24': 0.09, '2024-11-25': 0.07, '2024-11-26': 0.01, '2024-11-27': 0.03, '2024-11-28': -0.03, '2024-11-29': -0.02, '2024-11-30': 0.1, '2024-12-01': 0.05, '2024-12-02': -0.01, '2024-12-03': 0.08, '2024-12-04': 0.04, '2024-12-05': 0.01, '2024-12-06': 0.01, '2024-12-07': 0.04, '2024-12-08': 0.08, '2024-12-09': 0.0, '2024-12-10': 0.0, '2024-12-11': -0.01, '2024-12-12': 0.05, '2024-12-13': 0.01, '2024-12-14': -0.03, '2024-12-15': 0.1, '2024-12-16': 0.07, '2024-12-17': 0.05, '2024-12-18': 0.13, '2024-12-19': 0.05, '2024-12-20': -0.01}, 5, 0.0, [[2024, 12, 18], [2024, 12, 13], [2024, 12, 19]]], 0.01], ['partial repair probe 2', [[2027, 10, 29], [2027, 11, 10], {'2027-10-09': 4.35, '2027-10-10': 4.22, '2027-10-11': 4.23, '2027-10-12': 4.32, '2027-10-13': 4.22, '2027-10-14': 4.25, '2027-10-15': 4.32, '2027-10-16': 4.23, '2027-10-17': 4.34, '2027-10-18': 4.34, '2027-10-19': 4.32, '2027-10-20': 4.24, '2027-10-21': 4.26, '2027-10-22': 4.25, '2027-10-23': 4.27, '2027-10-24': 4.28, '2027-10-25': 4.37, '2027-10-26': 4.27, '2027-10-27': 4.27, '2027-10-28': 4.26, '2027-10-29': 4.35, '2027-10-30': 4.37, '2027-10-31': 4.27, '2027-11-01': 4.24, '2027-11-02': 4.25, '2027-11-03': 4.33, '2027-11-04': 4.35, '2027-11-05': 4.37, '2027-11-06': 4.38, '2027-11-07': 4.29, '2027-11-08': 4.3, '2027-11-09': 4.35, '2027-11-10': 4.22}, 5, 0.0, []], 4.290887], ['normal control 1', [[2021, 8, 31], [2021, 9, 1], {'2021-08-11': -0.01, '2021-08-12': 0.05, '2021-08-13': -0.03, '2021-08-14': 0.07, '2021-08-15': 0.11, '2021-08-16': 0.04, '2021-08-17': 0.12, '2021-08-18': 0.13, '2021-08-19': 0.06, '2021-08-20': 0.12, '2021-08-21': 0.04, '2021-08-22': 0.12, '2021-08-23': -0.01, '2021-08-24': -0.02, '2021-08-25': 0.03, '2021-08-26': 0.07, '2021-08-27': -0.01, '2021-08-28': 0.13, '2021-08-29': 0.09, '2021-08-30': 0.09, '2021-08-31': 0.05, '2021-09-01': 0.11}, 0, 0.1, []], 0.15], ['normal control 2', [[2024, 3, 28], [2024, 3, 29], {'2024-03-08': 0.03, '2024-03-09': 0.0, '2024-03-10': 0.12, '2024-03-11': 0.01, '2024-03-12': 0.0, '2024-03-13': 0.01, '2024-03-14': 0.09, '2024-03-15': 0.07, '2024-03-16': 0.07, '2024-03-17': 0.13, '2024-03-18': 0.06, '2024-03-19': 0.08, '2024-03-20': -0.01, '2024-03-21': 0.1, '2024-03-22': 0.06, '2024-03-23': 0.07, '2024-03-24': 0.13, '2024-03-25': 0.13, '2024-03-26': 0.01, '2024-03-27': -0.03, '2024-03-28': 0.1, '2024-03-29': 0.06}, 0, 0.1, []], 0.2], ['normal control 3', [[2026, 12, 28], [2026, 12, 29], {'2026-12-08': 5.25, '2026-12-09': 5.39, '2026-12-10': 5.34, '2026-12-11': 5.29, '2026-12-12': 5.26, '2026-12-13': 5.32, '2026-12-14': 5.33, '2026-12-15': 5.3, '2026-12-16': 5.31, '2026-12-17': 5.29, '2026-12-18': 5.39, '2026-12-19': 5.26, '2026-12-20': 5.37, '2026-12-21': 5.39, '2026-12-22': 5.24, '2026-12-23': 5.26, '2026-12-24': 5.23, '2026-12-25': 5.39, '2026-12-26': 5.23, '2026-12-27': 5.38, '2026-12-28': 5.23, '2026-12-29': 5.31}, 0, 0.1, []], 5.33], ['normal control 4', [[2023, 7, 31], [2023, 8, 3], {'2023-07-11': 5.24, '2023-07-12': 5.28, '2023-07-13': 5.36, '2023-07-14': 5.34, '2023-07-15': 5.23, '2023-07-16': 5.27, '2023-07-17': 5.37, '2023-07-18': 5.37, '2023-07-19': 5.38, '2023-07-20': 5.31, '2023-07-21': 5.32, '2023-07-22': 5.27, '2023-07-23': 5.32, '2023-07-24': 5.33, '2023-07-25': 5.24, '2023-07-26': 5.33, '2023-07-27': 5.35, '2023-07-28': 5.3, '2023-07-29': 5.33, '2023-07-30': 5.32, '2023-07-31': 5.32, '2023-08-01': 5.38, '2023-08-02': 5.25, '2023-08-03': 5.33}, 2, 0.25, []], 5.574121]], [['regression annualization basis 1', [[2024, 12, 26], [2024, 12, 30], {'2024-12-06': -0.03, '2024-12-07': 0.11, '2024-12-08': -0.02, '2024-12-09': 0.02, '2024-12-10': 0.09, '2024-12-11': 0.05, '2024-12-12': 0.06, '2024-12-13': 0.11, '2024-12-14': 0.06, '2024-12-15': 0.06, '2024-12-16': 0.02, '2024-12-17': 0.1, '2024-12-18': 0.01, '2024-12-19': 0.07, '2024-12-20': -0.01, '2024-12-21': 0.06, '2024-12-22': -0.01, '2024-12-23': 0.07, '2024-12-24': 0.03, '2024-12-25': 0.07, '2024-12-26': -0.02, '2024-12-27': -0.02, '2024-12-28': 0.07, '2024-12-29': 0.13, '2024-12-30': 0.06}, 5, 0.25, [[2024, 12, 27]]], 0.32], ['regression annualization basis 2', [[2027, 10, 26], [2027, 10, 29], {'2027-10-06': 1.57, '2027-10-07': 1.59, '2027-10-08': 1.52, '2027-10-09': 1.59, '2027-10-10': 1.49, '2027-10-11': 1.56, '2027-10-12': 1.47, '2027-10-13': 1.54, '2027-10-14': 1.55, '2027-10-15': 1.59, '2027-10-16': 1.5, '2027-10-17': 1.63, '2027-10-18': 1.49, '2027-10-19': 1.57, '2027-10-20': 1.47, '2027-10-21': 1.58, '2027-10-22': 1.56, '2027-10-23': 1.49, '2027-10-24': 1.49, '2027-10-25': 1.47, '2027-10-26': 1.55, '2027-10-27': 1.58, '2027-10-28': 1.53, '2027-10-29': 1.61}, 5, 0.1, [[2027, 10, 28], [2027, 10, 27], [2027, 10, 28]]], 1.67], ['partial repair probe 1', [[2022, 4, 11], [2022, 4, 14], {'2022-03-22': 4.22, '2022-03-23': 4.36, '2022-03-24': 4.25, '2022-03-25': 4.32, '2022-03-26': 4.29, '2022-03-27': 4.36, '2022-03-28': 4.3, '2022-03-29': 4.22, '2022-03-30': 4.22, '2022-03-31': 4.23, '2022-04-01': 4.24, '2022-04-02': 4.24, '2022-04-03': 4.36, '2022-04-04': 4.33, '2022-04-05': 4.35, '2022-04-06': 4.25, '2022-04-07': 4.26, '2022-04-08': 4.35, '2022-04-09': 4.37, '2022-04-10': 4.3, '2022-04-11': 4.24, '2022-04-12': 4.32, '2022-04-13': 4.32, '2022-04-14': 4.29}, 0, 0.1, [[2022, 4, 13], [2022, 4, 12]]], 4.34], ['partial repair probe 2', [[2025, 8, 25], [2025, 9, 3], {'2025-08-05': 0.08, '2025-08-06': 0.04, '2025-08-07': -0.01, '2025-08-08': 0.0, '2025-08-09': 0.03, '2025-08-10': 0.11, '2025-08-11': 0.01, '2025-08-12': -0.03, '2025-08-13': 0.08, '2025-08-14': 0.04, '2025-08-15': 0.06, '2025-08-16': 0.08, '2025-08-17': 0.1, '2025-08-18': 0.11, '2025-08-19': 0.13, '2025-08-20': 0.05, '2025-08-21': 0.13, '2025-08-22': 0.13, '2025-08-23': 0.12, '2025-08-24': 0.0, '2025-08-25': 0.04, '2025-08-26': 0.07, '2025-08-27': 0.09, '2025-08-28': 0.07, '2025-08-29': 0.05, '2025-08-30': -0.01, '2025-08-31': -0.03, '2025-09-01': 0.09, '2025-09-02': -0.03, '2025-09-03': 0.04}, 0, 0.1, [[2025, 8, 29]]], 0.16], ['normal control 1', [[2023, 10, 3], [2023, 10, 4], {'2023-09-13': 5.33, '2023-09-14': 5.35, '2023-09-15': 5.37, '2023-09-16': 5.29, '2023-09-17': 5.28, '2023-09-18': 5.37, '2023-09-19': 5.37, '2023-09-20': 5.25, '2023-09-21': 5.23, '2023-09-22': 5.28, '2023-09-23': 5.38, '2023-09-24': 5.36, '2023-09-25': 5.27, '2023-09-26': 5.25, '2023-09-27': 5.26, '2023-09-28': 5.34, '2023-09-29': 5.32, '2023-09-30': 5.31, '2023-10-01': 5.27, '2023-10-02': 5.23, '2023-10-03': 5.38, '2023-10-04': 5.27}, 5, 0.0, []], 5.25], ['normal control 2', [[2025, 4, 30], [2025, 5, 1], {'2025-04-10': 1.47, '2025-04-11': 1.6, '2025-04-12': 1.54, '2025-04-13': 1.58, '2025-04-14': 1.55, '2025-04-15': 1.48, '2025-04-16': 1.51, '2025-04-17': 1.52, '2025-04-18': 1.5, '2025-04-19': 1.63, '2025-04-20': 1.58, '2025-04-21': 1.55, '2025-04-22': 1.61, '2025-04-23': 1.58, '2025-04-24': 1.49, '2025-04-25': 1.62, '2025-04-26': 1.59, '2025-04-27': 1.47, '2025-04-28': 1.48, '2025-04-29': 1.6, '2025-04-30': 1.51, '2025-05-01': 1.48}, 2, 0.0, []], 1.48], ['normal control 3', [[2023, 1, 10], [2023, 1, 11], {'2022-12-21': 5.28, '2022-12-22': 5.35, '2022-12-23': 5.26, '2022-12-24': 5.34, '2022-12-25': 5.37, '2022-12-26': 5.33, '2022-12-27': 5.3, '2022-12-28': 5.29, '2022-12-29': 5.32, '2022-12-30': 5.3, '2022-12-31': 5.35, '2023-01-01': 5.3, '2023-01-02': 5.37, '2023-01-03': 5.36, '2023-01-04': 5.32, '2023-01-05': 5.32, '2023-01-06': 5.36, '2023-01-07': 5.27, '2023-01-08': 5.27, '2023-01-09': 5.28, '2023-01-10': 5.32, '2023-01-11': 5.38}, 0, 0.1, []], 5.42], ['normal control 4', [[2021, 9, 6], [2021, 9, 7], {'2021-08-17': 5.36, '2021-08-18': 5.28, '2021-08-19': 5.23, '2021-08-20': 5.25, '2021-08-21': 5.32, '2021-08-22': 5.36, '2021-08-23': 5.26, '2021-08-24': 5.37, '2021-08-25': 5.33, '2021-08-26': 5.32, '2021-08-27': 5.3, '2021-08-28': 5.25, '2021-08-29': 5.31, '2021-08-30': 5.32, '2021-08-31': 5.3, '2021-09-01': 5.35, '2021-09-02': 5.39, '2021-09-03': 5.36, '2021-09-04': 5.31, '2021-09-05': 5.32, '2021-09-06': 5.35, '2021-09-07': 5.36}, 2, 0.1, []], 5.49]]]
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 annualization basis 1 | 1.55125 | 1.55125 | Passed |
| regression annualization basis 2 | 4.30416 | 4.30416 | Passed |
| partial repair probe 1 | 1.6001 | 1.6001 | Passed |
| partial repair probe 2 | 0.043078 | 0.043078 | Passed |
| normal control 1 | 4.36 | 4.36 | Passed |
| normal control 2 | 4.51 | 4.51 | Passed |
| normal control 3 | 4.555257 | 4.555257 | Passed |
| normal control 4 | 4.317184 | 4.317184 | Passed |
SHA-256 / 5fc5ab6349358f79da906b8222d06ef7853b0479d0f5231ded8988f6431f1ca2
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.098024+00:00.
Case digest / 00c6e7053a44d5b4f7a042097d1883b127d8b061f435948c5805a4c0c3213e9b