Skip to content

Fix multi-round forecast matching for multi-horizon dataset questions - #171

Merged
lukeinglis merged 1 commit into
mainfrom
fix/eval-keyerror-non-result-files
Aug 22, 2026
Merged

Fix multi-round forecast matching for multi-horizon dataset questions#171
lukeinglis merged 1 commit into
mainfrom
fix/eval-keyerror-non-result-files

Conversation

@lukeinglis

Copy link
Copy Markdown
Owner

Closes the multi-round forecast matching bug (root cause of poor dataset Brier scores)

Changes

  • eval.py: During question dedup (lines 386-399), merge resolution_dates across all rounds for each unique question ID. Previously, only the first round's resolution_dates were kept, so the multi-horizon forecaster only produced composite keys for one round. Later rounds' composite keys (e.g., dq1_2024-07-30) had no matching forecast and scored as 0.5 (missing).
  • tests/test_eval.py: Added TestMultiRoundForecastMatching with two regression tests:
    • test_multi_round_merges_resolution_dates: Verifies the multi_forecaster receives all merged horizons
    • test_multi_round_no_missing_forecasts: Verifies n_missing=0 when a question spans multiple rounds

Root Cause

When a multi-horizon dataset question appears in N rounds, join_resolved_questions creates entries for each round with round-specific resolution_dates (forecast_due_date + FORECAST_HORIZONS_IN_DAYS). The eval dedup kept only the first round's dates, so the forecaster produced composite keys (e.g., dq1_2024-06-29) for only one round. The composite-key rewriting step couldn't match later rounds' entries, leaving them unmatched → scored as 0.5.

When a dataset question appears in multiple rounds, each round has
different resolution_dates (derived from forecast_due_date + horizons).
The dedup logic only kept resolution_dates from the first round seen,
so later rounds' composite keys had no matching forecast and scored
as 0.5 (missing). Fix by merging resolution_dates across all rounds
for each unique question ID during dedup.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
@lukeinglis
lukeinglis marked this pull request as ready for review August 22, 2026 22:32
@lukeinglis
lukeinglis merged commit e0fcf25 into main Aug 22, 2026
5 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant