Evaluate mature prediction cohorts with knowledge-time cutoffs
Track outcome horizons, arrival delays, cohort completeness, and revisions so recent incomplete labels do not masquerade as changing model quality.
On this page
The question for today
What you’ll understand
- Separate prediction time, outcome horizon, label availability, and evaluation time.
- Calculate a maturity cutoff under an explicit bounded-delay assumption.
- Report cohort completeness and handle late or revised outcomes without rewriting historical knowledge silently.
A prediction may concern an outcome that cannot be known for several days. Labels can then arrive late, be corrected, or be missing for reasons related to the outcome itself. A dashboard that evaluates only whatever labels have arrived compares different populations as the cohort ages. Treat freshness as an evidence property: state which predictions are eligible, what was known at evaluation time, and how much of the eligible cohort has actually been resolved.
Keep the clocks separate
Record prediction time, the end of the outcome-observation horizon, and the time a label became available to the monitoring system. A seven-day conversion target is unresolved before seven days even when no conversion has yet been logged. After the horizon, ingestion and reconciliation may add delay. Evaluation time is a separate cutoff that determines what the report could have known. A retrospective report using repaired labels can answer a useful question, but it must not be presented as the evidence available to an earlier operational decision.
Join outcomes using a stable prediction or decision identifier plus an explicit target definition. User identifiers alone can attach one later event to several unrelated predictions. Specify attribution rules for multiple exposures, duplicate labels, cancellations, and revised outcomes. Preserve the original model score and version instead of recomputing it with today's model. A monitor needs both cohort assignment by prediction time and outcome availability by knowledge time; grouping only by the label-arrival date can turn an upstream backlog release into a misleading performance trend.
Completeness is measured, not inferred from age alone
An age buffer is a scheduling choice, not proof that every outcome arrived. Report the eligible prediction count, resolved count, unresolved count, and label-delay distribution by relevant slice. When delay bounds are absent, call a cohort provisionally mature under the chosen rule and show observed coverage. Estimate recent performance only with a justified missing-outcome model or a clearly conditional estimand. Simply counting every unresolved case as negative can bias the target; discarding unresolved cases can bias it differently when difficult or positive outcomes take longer to resolve.
Keep a report revision identifier and allow late arrivals to backfill the affected prediction cohort. Preserve both the historical as-of report and the later resolved report so incident investigators can reconstruct decisions. A completeness alarm should be distinct from a model-quality alarm: the immediate corrective action may be repairing a join or ingestion job. If an outcome genuinely has no finite resolution time, define a censored-data analysis or a fixed-horizon target rather than claiming that an arbitrarily old window is complete.
Fresh alerts and mature quality serve different roles
Fast input, score, schema, and service-health monitors can detect suspicious changes while outcomes mature. They should carry their own timestamps rather than borrowing the apparent freshness of a live dashboard for a week-old accuracy estimate. Present the latest evaluated prediction interval beside the computation time. For a retraining decision, compare equally aged cohorts or fully resolved cohorts and inspect delay changes before interpreting a quality trend. If an intervention changes outcome collection, even a stable model can appear to improve because the evaluated subset changed.
The queue instrument illustrates an ingestion-capacity mechanism without modeling outcome maturity. Reset, set arrival λ=3 and service μ=2, predict a backlog of six after two seconds, then take four Steps. Separately Reset, set λ=2 and μ=3, predict backlog two after two seconds, then take four Steps. Its fluid backlog starts at four and uses one fixed rate pair for the entire elapsed time. Changing a control pauses but retains time. Neither the backlog nor its separate M/M/1 readout measures label completeness or supplies a bound on real ingestion delay.
Work it through
Choose a cutoff and expose unresolved outcomes
A fixed-horizon target needs 48 hours, and a contractual ingestion bound is six further hours. At evaluation time T=100 hours after a common origin, consider prediction cohorts at times 40 and 50 hours. The eligible cohort has 100 predictions, of which 90 have joined labels and 72 of those are correct.
The guaranteed-maturity cutoff is T−H−L=100−48−6=46 hours. The cohort predicted at hour 40 is eligible; the cohort at hour 50 is not yet eligible under this rule.
Observed completeness for the eligible cohort is 90/100=90%. Its ten unresolved labels violate the assumed complete-by-bound expectation and require an ingestion or contract investigation.
Accuracy among resolved cases is 72/90=80%. Without assumptions about the ten unresolved outcomes, full-cohort accuracy could be between 72/100=72% and 82/100=82%.
The report should show the maturity rule, 90% completeness, and conditional 80% accuracy. It cannot honestly present 80% as a fully observed cohort result.
The living notebook
Explore the model
Interactive lab · queue
An ingestion backlog can grow while predictions continue
Reset, set λ=3 and μ=2, predict backlog 6 at t=2 s, then take four Steps. Separately Reset, set λ=2 and μ=3, predict backlog 2 at t=2 s, then take four Steps. The model is max(0,4+(λ−μ)t), with each Step adding 0.5 s. It does not simulate labels, arrival variability, or cohort maturity; the M/M/1 value has separate stochastic assumptions.
- Fluid backlog
- 4
- Net rate · λ − μ
- −1 /s
- M/M/1 mean residence
- 1 s
Fluid backlog starts at 4 and follows max(0, 4 + (λ − μ)t). The separate M/M/1 residence-time formula assumes Poisson arrivals, exponential service and λ < μ. Parameter changes pause playback and recompute the model at the current elapsed time. Reset restores both parameters and returns time to zero. Playback starts paused. Adjust either parameter, then choose Play or Step.
Look forEvidence can become stale through collection capacity even when inference remains healthy.
Pause & reason
Check your understanding
Your turn
Try it yourself
A cohort has 200 eligible predictions, 150 resolved outcomes, and 120 correct resolved decisions. Compute completeness, resolved-only accuracy, and worst-case full-cohort accuracy bounds without assumptions about unresolved labels.
Take a moment to make a prediction or work it out on paper. Open a hint when you need one.
Give me a hint
The fifty unresolved cases could contribute anywhere from zero to fifty additional correct decisions.
Compare with the solution
Completeness is 150/200=75%; resolved-only accuracy is 120/150=80%. Full-cohort accuracy lies between 120/200=60% and 170/200=85%. These are identification bounds from missing labels, not confidence intervals for sampling uncertainty. A complete report separates both uncertainties and states the prediction-time cohort.
Keep the idea
Take it with you
- Prediction time, target horizon, label availability, and evaluation time are distinct clocks.
- Report completeness and preserve as-of revisions alongside delayed quality metrics.
- Fast distribution signals complement mature labels without replacing them.
Read further
Original sources and deeper explanations to follow at your own pace.
Optional progress, saved in this browser when available. Revisit any lesson at any time.
Lesson not marked complete.