Misquote
the method detail loaded.

How a quote is made

Every quote here is a replay over recorded pool history, priced net of adverse selection and every cost of being there.

Why the quote says 362.9h and the tape says 725.7h

One replay is one observation, so the tape is cut into 20 overlapping sub-windows and the policy is replayed in each.

20 windows × 3 perturbations = 60 observations · floor 30 — clear · every verdict on this site divides by this
From tape to quote
MetricValueNote
tape span725.7heverything the replay saw
× 0.50362.9hone sub-window
windows20overlapping, not disjoint
× perturbations3γ and κ, each side of nominal
= observations60the denominator on every verdict

Disjoint, these would be 36.3h each against 362.9h overlapping. Overlap buys length at the cost of independence. A5

The 5 floors

Each can stop this product printing a number, at the value the code enforces. A floor a UI could get wrong is not a floor.

min_windows = 20

20 usable sub-windows

Below this the quote is withheld entirely rather than estimated from a handful. A5

Windows in this run20 / floor 20
min_window_hours = 24

24h per window

A window shorter than the policy horizon measures nothing, however many of them there are.

Hours per window363 h / floor 24
min_hours_to_annualise = 168

168h before annualising

This run is over it at 725.7h, so the quote reads annualised — a 725.7h result multiplied up to a year.

Hours of tape726 h / floor 168
min_observations = 30

30 observations before a verdict

Below it the tearsheet prints “no verdict” and the count that was missing. A confident number on a tiny sample is worth less than a refusal.

Observations in this run60 / floor 30
in_range_floor = 0.7

70.0% of the time in range

The one floor that calls a verdict rather than withholding a number: below it, in-range fails on every card.

In range, this run5.8% / floor 70.0%

Why the replay cannot cheat

Look-ahead is prevented structurally rather than by review.

  • The estimators cannot read a clock. The pure layer — policy, estimators, LVR, replay — is forbidden from importing web3, sqlite3, asyncio or the wall clock, and a test walks the imports to enforce it. Time arrives as an argument.
  • Ingest asserts on future events. Any event newer than the decision time raises, unconditionally, in both the live and the replay driver. There is no flag to disable it. A3
  • The tape bounds itself in SQL. The frontier is a bind parameter on the query, not an if in Python, so there is no in-memory future available to leak.

Verified by tests T1–T4 and L1 — make replay-tests.

Every assumption these methods rest on →