The accuracy edge, measured
Our blend beats the best single model
5.3%
lower forecast error than the best single model at 1–3 days out
We blend all seven models and score the result against measured snowfall. No single model wins at every horizon or at every mountain, which is the case for blending — and the table below shows where it holds and where it does not.
| Horizon | Blend MAE | Best single model | vs best |
|---|---|---|---|
| All horizons | 5.6 cm | NAM (5.5 cm) | 2% worse |
| 1–3 days out | 5.2 cm | NAM (5.5 cm) | 5.3% better |
| 4–7 days out | 5.7 cm | NBM (5.2 cm) | 8.6% worse |
| 8–14 days out | 6.4 cm | NBM (3.0 cm) | 112% worse |
MAE = mean absolute error, in the units you have chosen. Scored on snow days (measured snowfall ≥ 1 cm), against measured ground truth only — SNOTEL stations and resort-reported totals, never another model. Lower error is better; “X% better” means the blend’s error is that much lower than the strongest single model’s for that horizon. Coverage today is weighted toward SNOTEL-instrumented (largely North American) resorts. Updated Oct 25, 2026, 8:00 AM UTC.
Why we built this
Ski forecasts disagree — a lot. ECMWF, GFS, GEM, and four other global models can diverge by 30 cm or more on the same storm. Picking the wrong one means bad trip timing, missed powder, or chasing storms that never arrive.
SnowSure runs a daily verification pipeline: we store what each model predicted, wait for the snow to fall, then grade the forecast against real ground truth — never against another model. That corpus powers regional model weights, per-resort accuracy cards, and our ML extended outlook.
Verification corpus
One row per resort × model × forecast day × target day. Grows daily as the verify-forecasts cron runs.
Verified forecast rows
10,561,992
All horizons, all models
Resorts tracked
592
Mountains with coordinates
Weather models
13
ECMWF, GFS, GEM, JMA, Météo-France, Met Norway, ICON, UKMO, NBM, NAM, HRRR, MeteoSwiss ICON, ICON-2I
Date range
2024-01-01 → 2026-10-29
Historical backfill + live archive
Historical backfill
4,007,823 rows
Open-Meteo Previous Runs vs ERA5 actuals, 2024-01-01 → pre-archive gap
Live daily archive
6,554,169 rows
From 2026-02-21 — stored forecasts vs measured outcomes each morning
Ground truth tiers
We never grade a forecast against itself. Actual snowfall is resolved through a strict priority ladder — higher tiers always win when available for that resort and date.
981 active stations matched to resorts · daily NRCS ingestion
Relayed from official resort snow reports where available
Used only when no SNOTEL or resort report exists for that mountain and date
Best model by region
Recalculated weekly from verified mean absolute error (MAE). Skill score is 100 − (MAE × 5), capped 0–100 — higher is better. Each resort page shows a 90-day breakdown for that specific mountain.
| Region | Top model | Day-1 MAE | Samples | Skill score |
|---|---|---|---|---|
| Alps | NBM | 2.5 cm | n = 126 | 87.5 |
| Rockies | Météo-France | 4.2 cm | n = 3,165 | 78.5 |
| Cascades | UKMO | 5.8 cm | n = 377 | 68.7 |
| Andes | Météo-France | 8.6 cm | n = 143 | 56.9 |
| Sierra | NBM | 9.1 cm | n = 63 | 48 |
Ten-day totals, graded at the station’s own height
Every night, the ten-day snow total SnowSure published for each resort is graded against what one station measured over those same ten days. The station is the one nearest the forecast’s own height, within 300 m, that reported every day of the window, and only stations held out of all model training count. A cell with fewer than 20 station-days says “too few” rather than a number. The result is published whichever way it falls.
Last graded 2026-10-30 (UTC) over forecasts issued 2026-09-28 to 2026-10-18.
SnowSure, as published
Days 1–10 — the headline window. Days 1–5 alone can flip a verdict when a storm lands on day 6.
| Region | Station-days | Bias | Average miss | ≥10cm hit | ≥25cm hit |
|---|---|---|---|---|---|
| All regions | 416 | +5.1cm | 6.5 cm | 65% · 73% false | 38% · 90% false |
| Alps | 5 / 20 | too few | too few | too few | too few |
| Cascades | 16 / 20 | too few | too few | too few | too few |
| Rockies | 390 | +5cm | 6.2 cm | 63% · 75% false | 0% · 100% false |
| Sierra | 5 / 20 | too few | too few | too few | too few |
Days 1–5, all regions: bias +0.7cm, average miss 1.5 cm · 520 station-days
Days 6–10, all regions: bias +2.5cm, average miss 4.1 cm · 680 station-days
- Forecast:
published_forecast_verifications, the number on the resort page, summed over horizons 1–10 of each issue, at the height it was made for.- Measured:
snowfall_actuals_screened, boards and gauges only (no depth-derived floors, no model analyses), the station nearest the forecast’s height within 300 m, held out by ruleinterim-fnv1a-1in5.- Grade:
forecast_scorecard_daily, bias is forecast minus measured; a hit is a window that measured at least the threshold and was forecast at least the threshold; the false share is the forecasts at the threshold that did not measure it. A station-day is one resort’s issue graded at one station over its window.
How verification works
- 1
Capture forecasts
Every hour, weather-sync stores each model's multi-day snowfall forecast per resort in weather_snapshots. A daily archive row is kept indefinitely.
- 2
Measure what fell
SNOTEL cron pulls station snow-water equivalent; sync-resort-depths captures operator-reported 24h totals. ERA5 fills gaps for resorts without local sensors.
- 3
Grade predictions
The verify-forecasts cron (8 AM UTC) pairs yesterday's stored forecasts with measured actuals and writes one verification row per model and horizon.
- 4
Weight and display
Weekly model-accuracy cron updates regional blending weights. Resort pages show per-model MAE; this page shows the global corpus and regional leaders.
Use this data
Per-resort accuracy appears on every resort page. Developers and AI agents can query the JSON API — cite SnowSure when sharing forecast credibility.
GET /api/v1/blend-accuracy · GET /api/v1/forecast-trust · GET /api/v1/resorts/{slug}/forecast-accuracy






