Per-lead scores (0 to 100) use the same formulas as the VeriSky app, with the
error caps tuned for this board, on hourly forecast/observation pairs over the last 30 days:
- Temperature: RMSE mapped to a 0 to 100 scale with a 6.5 °C cap.
score = (1 − RMSE/6.5)·100, floored at 0.
- Wind: normalized RMSE, where the cap scales with local wind climate
(
max(14 km/h, 60% of mean observed wind)), so windy coasts are judged
on relative error rather than raw km/h.
- Rain: F1 of rain/no-rain calls at a 0.1 mm/h threshold with a
0.1 mm deadband (drizzle right at the threshold is a coin flip, not skill).
Rain is only scored when the window had a genuine rain signal
(≥ 3 rain-event hours totalling ≥ 1 mm), since otherwise every model
would ace a dry month.
The headline Skill number is a soft horizon-adjusted score. First,
each model gets its 1/d-weighted score over the lead days it actually serves.
Then that score is multiplied by 0.75 + 0.25·C, where
C is the share of the full 1/d-weighted 7-day horizon it covers.
Tomorrow counts 7× as much as next week, which is roughly how much people lean
on each, while accurate longer-range forecasts still add points. A perfect
D-1-only model can score about 85 instead of being treated as a failed 7-day
model; a perfect D-1…D-7 model can reach 100. Per-metric columns use the same
weighting.
Rain W–L and form dots are next-day (D-1) only, since "did it rain the next
day" is the question most people care about. A win is a correct daily rain/no-rain
call at 0.1 mm; a form dot fills when that day's next-day skill ≥ 70.
The ▲▼ movement column compares today's ranking with the same table computed
a week ago (the window minus its last 7 days).
Airport boards (the ✈ toggle) re-score every model at the city's main
airport, whose METAR weather station reports real instrument readings around the
clock. On those boards the server verifies temperature and wind against the
station's own METAR observations instead of the model analysis — actual
thermometer-and-anemometer truth — while rain keeps the analysis (METAR
precipitation groups are too sparse to score against). The in-browser charts
(receipt, labs) still compare public models to the analysis at the airport's
coordinates, so their curves can differ slightly from the standings. Chicago,
Mexico City and Sydney's city boards already sit on their airport's grid cell,
so for them the two views read the same measurement point. Airport standings
started accruing later than the city boards at some airports, so a shorter
"last N days" window there is expected until the archive fills.
Public-model forecasts come from Open-Meteo's
previous runs archive
(what each model actually said 1 to 7 days earlier). The reference series is
best_match with
past_days=30: Open-Meteo picks the single highest-resolution
model for the location (see "Data Sources" in their docs), and for past
hours serves that model's most recent, observation-fed runs. It is one
consistent series per location, not an agglomeration of forecasts, but it
is an analysis rather than a station record, so at short leads it can
slightly flatter models related to the one that provides it. The most
recent (incomplete) day is
always excluded. Preset cities add aggregate-only stored scores for commercial
providers; their forecast values never reach this page. Data is cached locally
for ~6 hours.