Daily verification · methodology v0.3.1

How far off was each weather model?

Over the last 365 days, across 23 U.S. stations, the most accurate raw sampled daily maximum forecast 1 day ahead is GraphCast (IFS init): mean absolute error 2.87 °F [2.78, 2.98], bias −1.86 °F, on n = 198 scored days.

Scope: raw model output on the native 0.25° grid. This view scores the sampled daily maximum against the maximum of the four *observed* samples on the same day. Errors are computed in °C and shown in °F (methodology v0.3.1).

Window
the last 365 days
Variable
sampled daily maximum
Init
00Z
Interpolation
nearest
Data through
2026-08-30
Updated
Next update

Leader, lead day 1

2.87°F

[2.78, 2.98] MAE

GraphCast (IFS init)

Persistence baseline

5.04°F

[4.49, 5.58]

yesterday's observation — the bar every model has to clear

Scored days

198

23 stations · 12 systems

in the last 365 days, lead day 1

Systems ranked

2/12

next update

below n = 30: published, greyed, unranked

Mean absolute error with 95 % confidence intervals

Lead day 1 · the last 365 days · 23 stations pooled · 00Z · nearest · sampled daily maximum. Whiskers are moving-block bootstrap intervals; models whose whiskers overlap are not distinguishable at this sample size. Baselines are drawn in grey and never ranked.

MAE by model with 95 % confidence intervals, lead day 1, 365d, 00Z, nearest0246810mean absolute error, °FGraphCast (IFS init)GraphCast (IFS init): 2.87 °F2.87GraphCast (GFS init)GraphCast (GFS init): 3.21 °F3.21ECMWF AIFS SingleECMWF AIFS Single: 2.23 °F2.23FourCastNet v2 (GFS init)FourCastNet v2 (GFS init): 2.57 °F2.57ECMWF IFS HRESECMWF IFS HRES: 2.58 °F2.58FourCastNet v2 (IFS init)FourCastNet v2 (IFS init): 2.66 °F2.66Pangu-Weather (GFS init)Pangu-Weather (GFS init): 2.91 °F2.91Pangu-Weather (IFS init)Pangu-Weather (IFS init): 3.03 °F3.03Aurora (IFS init)Aurora (IFS init): 3.34 °F3.34NCEP GFSNCEP GFS: 3.57 °F3.57Aurora (GFS init)Aurora (GFS init): 4.64 °F4.64Persistence (baseline)Persistence (baseline): 5.04 °F5.04

Source: CastCheck 0.1.0, methodology v0.3.1 · ECMWF open data, NOAA/NCEP GFS, NOAA/CIRA AIWP, NWS ASOS · data through 2026-08-30 · CC BY 4.0. Hover a bar for its value.

Lead day 1target = init + 1 d

permalink

The last 365 days, all 23 stations pooled, 00Z initialization, nearest interpolation, sampled daily maximum against the maximum of the four *observed* samples on the same day. Lower MAE is better; bias is positive when the model is too warm. Every number links to its permanent page.

Skill is 1 − MAE ÷ MAE(persistence) computed on the days both have a value — the small print in that column is that denominator and the size of the intersection, so the number can be checked against the persistence row rather than contradicting it. The persistence row's own n is its whole record, marked all days. Skill, debiased (out-of-sample) repeats the score after removing a bias estimated on the 30 scored days before each day and applied forward, never on the day itself. An interval reads when the bootstrap could not run: fewer than 28 scored days or fewer than 4 blocks. Hit-rate intervals are Wilson score intervals, not bootstraps.

Lead day 1, the last 365 days, 00Z, nearest, sampled daily maximum.
RankModelMAE °FBias °F±3 °F SkillSkill, debiased (out-of-sample) nvs leader
1GraphCast (IFS init)graphcast_ifs2.87[2.78, 2.98]−1.86[−1.98, −1.73]59% +0.43[+0.34, +0.50]vs 5.06 (n=198)+0.62n=183 19822.8 stns lowest MAE in this view
2GraphCast (GFS init)graphcast_gfs3.21[2.98, 3.47]−2.53[−2.70, −2.34]52% +0.42[+0.36, +0.48]vs 5.56 (n=34)+0.63n=19 3422.5 stns= not distinguishable from the leader after the Holm correction within this table
ECMWF AIFS Singleaifs_single2.23[2.17, 2.29]−0.24[−0.37, −0.10]72% +0.20[+0.10, +0.28]vs 2.80 (n=29)+0.47n=14 2922.7 stns
FourCastNet v2 (GFS init)fourcastnet_gfs2.57−1.8873% vs 3.22 (n=1)n=0 115 stns
ECMWF IFS HRESifs_hres2.58[2.47, 2.71]−0.04[−0.38, 0.32]66% +0.08[−0.06, +0.19]vs 2.80 (n=29)+0.27n=14 2922.7 stns
FourCastNet v2 (IFS init)fourcastnet_ifs2.66−1.2273% vs 3.48 (n=2)n=0 219 stns
Pangu-Weather (GFS init)pangu_gfs2.91−0.2360% vs 3.22 (n=1)n=0 115 stns
Pangu-Weather (IFS init)pangu_ifs3.03−0.8556% vs 3.48 (n=2)n=0 219 stns
Aurora (IFS init)aurora_ifs3.34−2.9452% vs 3.48 (n=2)n=0 219 stns
NCEP GFSgfs3.57[3.32, 3.78]+1.81[1.45, 2.25]48% −0.28[−0.49, −0.14]vs 2.80 (n=29)+0.22n=14 2922.7 stns
Aurora (GFS init)aurora_gfs4.64−4.5033% vs 3.22 (n=1)n=0 115 stns
Persistence (baseline)persistence · baseline5.04[4.49, 5.58]−0.13[−0.41, 0.18]46% 215all days

+ model too warm − model too cold bias interval includes zero ★ lowest MAE = not distinguishable from the leader ▼ worse than the leader ▲ better than the leader — all three Holm-corrected within this table, over the family of comparisons against the leader; the uncorrected verdict for every pair is published in the pairwise table of each permanent link and in pairwise_latest.csv.gzn < 30 greyed and unranked CI is a 95 % moving-block bootstrap interval on the group's own days, and reads — when it could not be computed skill reads — when fewer than 10 days are common to the model and the baseline: the ratio of two means over a handful of shared days is not a number worth printing

Lead day 3target = init + 3 d

permalink

Same sampling as lead day 1. Skill is 1 − MAE ÷ MAE(persistence) on the days both have a value.

Lead day 3, the last 365 days, 00Z, nearest, sampled daily maximum.
RankModelMAE °FBias °FSkillnvs leader
1GraphCast (IFS init)graphcast_ifs3.25[3.13, 3.39]−1.91[−2.09, −1.74]+0.57[+0.50, +0.62]vs 7.53 (n=196)19622.8 stns lowest MAE in this view
2GraphCast (GFS init)graphcast_gfs3.82[3.59, 4.11]−2.56[−3.05, −2.05]+0.57[+0.51, +0.62]vs 8.85 (n=33)3322.7 stns= not distinguishable from the leader after the Holm correction within this table
ECMWF AIFS Singleaifs_single2.47−0.24+0.36vs 3.84 (n=27)2722.6 stns
ECMWF IFS HRESifs_hres2.90+0.18+0.24vs 3.84 (n=27)2722.6 stns
NCEP GFSgfs3.95+2.03−0.03vs 3.84 (n=27)2722.6 stns
Persistence (baseline)persistence · baseline7.61[6.68, 8.48]−0.46[−1.16, 0.28]215all days

Lead day 5target = init + 5 d

permalink

Same sampling as lead day 1. Skill is 1 − MAE ÷ MAE(persistence) on the days both have a value.

Lead day 5, the last 365 days, 00Z, nearest, sampled daily maximum.
RankModelMAE °FBias °FSkillnvs leader
1GraphCast (IFS init)graphcast_ifs4.13[3.88, 4.39]−1.85[−2.17, −1.51]+0.48[+0.42, +0.53]vs 8.00 (n=196)19622.8 stns lowest MAE in this view
2GraphCast (GFS init)graphcast_gfs4.91[4.32, 5.54]−1.57[−2.98, −0.16]+0.50[+0.44, +0.55]vs 9.77 (n=33)3322.7 stns= not distinguishable from the leader after the Holm correction within this table
ECMWF AIFS Singleaifs_single2.83−0.41+0.30vs 4.05 (n=25)2522.6 stns
ECMWF IFS HRESifs_hres3.29+0.14+0.19vs 4.05 (n=25)2522.6 stns
NCEP GFSgfs3.96+1.59+0.02vs 4.05 (n=25)2522.6 stns
Persistence (baseline)persistence · baseline8.07[7.14, 8.96]−0.70[−1.78, 0.30]215all days

Lead day 7target = init + 7 d

permalink

Same sampling as lead day 1. Skill is 1 − MAE ÷ MAE(persistence) on the days both have a value.

Lead day 7, the last 365 days, 00Z, nearest, sampled daily maximum.
RankModelMAE °FBias °FSkillnvs leader
1GraphCast (IFS init)graphcast_ifs5.28[4.84, 5.77]−2.03[−2.59, −1.50]+0.40[+0.34, +0.46]vs 8.78 (n=194)19422.7 stns lowest MAE in this view
2GraphCast (GFS init)graphcast_gfs6.77[5.31, 8.56]−0.14[−2.28, 2.90]+0.38[+0.22, +0.48]vs 10.85 (n=33)3322.7 stns= not distinguishable from the leader after the Holm correction within this table
ECMWF AIFS Singleaifs_single3.17−1.13+0.25vs 4.26 (n=23)2322.6 stns
ECMWF IFS HRESifs_hres3.51+0.24+0.17vs 4.26 (n=23)2322.6 stns
NCEP GFSgfs4.28+1.20−0.01vs 4.26 (n=23)2322.6 stns
Persistence (baseline)persistence · baseline8.70[7.67, 9.64]−0.85[−2.12, 0.38]215all days

The same four samples as a daily maximum and minimum

Lead day 1, the last 365 days, 00Z, nearest. Here the forecast's max/min of the four samples is scored against the observation's max/min of the same four instants. Like for like: whatever the four-sample definition misses, it misses on both sides. The comparison against the true NWS daily extremes is a different question and lives on the station and permanent-link pages.

Sampled daily maximumtmax_s

RankModelMAE °FBias °FSkillnvs leader
1GraphCast (IFS init)graphcast_ifs2.87[2.78, 2.98]−1.86[−1.98, −1.73]+0.43vs 5.06 (n=198)198
2GraphCast (GFS init)graphcast_gfs3.21[2.98, 3.47]−2.53[−2.70, −2.34]+0.42vs 5.56 (n=34)34=
ECMWF AIFS Singleaifs_single2.23[2.17, 2.29]−0.24[−0.37, −0.10]+0.20vs 2.80 (n=29)29
FourCastNet v2 (GFS init)fourcastnet_gfs2.57−1.88vs 3.22 (n=1)1
ECMWF IFS HRESifs_hres2.58[2.47, 2.71]−0.04[−0.38, 0.32]+0.08vs 2.80 (n=29)29
FourCastNet v2 (IFS init)fourcastnet_ifs2.66−1.22vs 3.48 (n=2)2
Pangu-Weather (GFS init)pangu_gfs2.91−0.23vs 3.22 (n=1)1
Pangu-Weather (IFS init)pangu_ifs3.03−0.85vs 3.48 (n=2)2
Aurora (IFS init)aurora_ifs3.34−2.94vs 3.48 (n=2)2
NCEP GFSgfs3.57[3.32, 3.78]+1.81[1.45, 2.25]−0.28vs 2.80 (n=29)29
Aurora (GFS init)aurora_gfs4.64−4.50vs 3.22 (n=1)1
Persistence (baseline)persistence5.04[4.49, 5.58]−0.13[−0.41, 0.18]215all days

Sampled daily minimumtmin_s

RankModelMAE °FBias °FSkillnvs leader
1GraphCast (IFS init)graphcast_ifs2.56[2.44, 2.69]−1.05[−1.17, −0.93]+0.42vs 4.40 (n=198)198
2GraphCast (GFS init)graphcast_gfs3.21[2.98, 3.50]−1.00[−1.36, −0.56]+0.48vs 6.19 (n=34)34=
Aurora (IFS init)aurora_ifs2.07−0.45vs 2.54 (n=2)2
Pangu-Weather (IFS init)pangu_ifs2.13−0.77vs 2.54 (n=2)2
FourCastNet v2 (GFS init)fourcastnet_gfs2.17+0.62vs 2.17 (n=1)1
FourCastNet v2 (IFS init)fourcastnet_ifs2.21+0.31vs 2.54 (n=2)2
Aurora (GFS init)aurora_gfs2.25+0.06vs 2.17 (n=1)1
ECMWF IFS HRESifs_hres2.38[2.23, 2.53]−0.14[−0.34, 0.07]−0.02vs 2.34 (n=29)29
ECMWF AIFS Singleaifs_single2.39[2.15, 2.58]−1.27[−1.51, −1.05]−0.02vs 2.34 (n=29)29
Pangu-Weather (GFS init)pangu_gfs2.53+0.17vs 2.17 (n=1)1
NCEP GFSgfs2.67[2.55, 2.80]+0.43[0.14, 0.78]−0.14vs 2.34 (n=29)29
Persistence (baseline)persistence4.37[3.79, 4.92]−0.17[−0.46, 0.11]215all days

Every model × every lead day

MAE in °F with the bias and n underneath, the last 365 days, 00Z, nearest, sampled daily maximum. The sparkline is the same model's MAE across lead days 1–9 on a shared vertical scale.

Modeld0d1d2d3d4d5d6d7d8d9 lead 1–9
ECMWF AIFS Singleaifs_single2.16−0.21 · n=302.23−0.24 · n=292.37−0.31 · n=282.47−0.24 · n=272.50−0.36 · n=262.83−0.41 · n=252.98−0.76 · n=243.17−1.13 · n=233.58−1.44 · n=223.76−1.32 · n=21ECMWF AIFS Single MAE by lead day 1 to 9
Aurora (GFS init)aurora_gfs3.52−3.26 · n=24.64−4.50 · n=1 Aurora (GFS init) MAE by lead day 1 to 9
Aurora (IFS init)aurora_ifs3.03−2.43 · n=33.34−2.94 · n=23.65−2.89 · n=1 Aurora (IFS init) MAE by lead day 1 to 9
FourCastNet v2 (GFS init)fourcastnet_gfs2.47−1.66 · n=22.57−1.88 · n=1 FourCastNet v2 (GFS init) MAE by lead day 1 to 9
FourCastNet v2 (IFS init)fourcastnet_ifs2.52−1.85 · n=32.66−1.22 · n=22.34−1.52 · n=1 FourCastNet v2 (IFS init) MAE by lead day 1 to 9
NCEP GFSgfs3.32+1.73 · n=303.57+1.81 · n=293.65+1.79 · n=283.95+2.03 · n=273.91+1.84 · n=263.96+1.59 · n=254.13+1.73 · n=244.28+1.20 · n=234.63+1.13 · n=225.20+1.80 · n=21NCEP GFS MAE by lead day 1 to 9
GraphCast (GFS init)graphcast_gfs2.91−2.26 · n=353.21−2.53 · n=343.50−2.65 · n=333.82−2.56 · n=334.30−2.26 · n=334.91−1.57 · n=335.77−1.11 · n=336.77−0.14 · n=336.76−0.57 · n=337.60+1.65 · n=33GraphCast (GFS init) MAE by lead day 1 to 9
GraphCast (IFS init)graphcast_ifs2.60−1.60 · n=1992.87−1.86 · n=1983.08−1.94 · n=1973.25−1.91 · n=1963.62−1.94 · n=1964.13−1.85 · n=1964.71−1.95 · n=1955.28−2.03 · n=1945.85−2.21 · n=1936.54−1.91 · n=192GraphCast (IFS init) MAE by lead day 1 to 9
ECMWF IFS HRESifs_hres2.42+0.06 · n=302.58−0.04 · n=292.74+0.15 · n=282.90+0.18 · n=273.04+0.24 · n=263.29+0.14 · n=253.70+0.41 · n=243.51+0.24 · n=234.01−0.04 · n=224.21+1.01 · n=21ECMWF IFS HRES MAE by lead day 1 to 9
Pangu-Weather (GFS init)pangu_gfs2.75−0.32 · n=22.91−0.23 · n=1 Pangu-Weather (GFS init) MAE by lead day 1 to 9
Pangu-Weather (IFS init)pangu_ifs2.47−0.44 · n=33.03−0.85 · n=22.99−1.16 · n=1 Pangu-Weather (IFS init) MAE by lead day 1 to 9
Persistence (baseline)persistence5.04−0.13 · n=2156.93−0.30 · n=2157.61−0.46 · n=2157.69−0.53 · n=2158.07−0.70 · n=2158.41−0.80 · n=2158.70−0.85 · n=2158.84−0.96 · n=2158.81−1.06 · n=215Persistence (baseline) MAE by lead day 1 to 9

Where the errors are

Both maps show a fixed quantity per station. Neither shows which model wins where: on samples this short the per-station winner is mostly noise, and a map of winners would invite a comparison the data cannot carry.

ECMWF IFS HRES bias

Mean bias of the fixed reference model ECMWF IFS HRES (lead day 1, sampled daily maximum, 365d window, 00Z, nearest). One model everywhere, so the colours compare stations, not models. Dot area grows with the number of scored days; fill is the mean bias (warm = model too warm, cool = too cold, grey = interval includes zero). The frame is a latitude/longitude graticule on an Albers projection.

Source: CastCheck · station coordinates NWS/NOAA · Albers conic projection · stations.csv. Hover a dot for its numbers.

model too cold interval includes zero model too warm dot area ∝ scored days

ECMWF IFS HRES bias as a table
StationModelMAE °FBias °Fn
KATL Atlanta HartsfieldECMWF IFS HRES2.43+1.4829
KAUS Austin BergstromECMWF IFS HRES1.63−0.9229
KBOS Boston LoganECMWF IFS HRES2.61+1.5626
KDCA Washington ReaganECMWF IFS HRES2.35+0.2529
KDEN Denver IntlECMWF IFS HRES2.74+1.3328
KDFW Dallas-Fort WorthECMWF IFS HRES1.87+1.5629
KEWR Newark LibertyECMWF IFS HRES2.85−1.9329
KIAH Houston BushECMWF IFS HRES1.37−0.6829
KLAS Las Vegas Harry ReidECMWF IFS HRES2.97−1.5228
KLAX Los Angeles IntlECMWF IFS HRES3.06−2.9728
KMIA Miami IntlECMWF IFS HRES3.30−2.2429
KMSP Minneapolis-St PaulECMWF IFS HRES2.14+1.2029
KMSY New Orleans IntlECMWF IFS HRES1.91−0.3329
KNYC New York Central ParkECMWF IFS HRES2.70+1.4229
KOKC Oklahoma CityECMWF IFS HRES2.27+1.5229
KORD Chicago O'HareECMWF IFS HRES1.86+0.1729
KPHL Philadelphia IntlECMWF IFS HRES2.49−1.2129
KPHX Phoenix Sky HarborECMWF IFS HRES1.71−0.1628
KSAN San Diego LindberghECMWF IFS HRES6.67−6.6728
KSAT San Antonio IntlECMWF IFS HRES1.24+0.8229
KSEA Seattle-TacomaECMWF IFS HRES2.45+0.8128
KSFO San Francisco IntlECMWF IFS HRES4.44+4.1228
KTTN Trenton MercerECMWF IFS HRES2.52+1.4829

All-model mean bias

Mean bias averaged over every scored model at each station (lead day 1, sampled daily maximum, 365d window, 00Z, nearest). A station that is cold for all of them is a station property — elevation, coastline, a grid cell that is partly sea — not a model ranking. Dot area grows with the number of scored days; fill is the mean bias (warm = model too warm, cool = too cold). The frame is a latitude/longitude graticule on an Albers projection.

Source: CastCheck · station coordinates NWS/NOAA · Albers conic projection · stations.csv. Hover a dot for its numbers.

model too cold interval includes zero model too warm dot area ∝ scored days

All-model mean bias as a table
StationModelsMAE °FBias °Fn
KATL Atlanta Hartsfield11 models2.50−1.15197
KAUS Austin Bergstrom11 models3.60−3.06197
KBOS Boston Logan8 models2.26+0.80185
KDCA Washington Reagan11 models2.48+0.65197
KDEN Denver Intl8 models2.30−0.23196
KDFW Dallas-Fort Worth11 models2.74−1.40194
KEWR Newark Liberty11 models2.37−0.36196
KIAH Houston Bush11 models1.75−0.37198
KLAS Las Vegas Harry Reid8 models5.16−4.80196
KLAX Los Angeles Intl8 models2.53−1.20197
KMIA Miami Intl11 models4.17−3.61196
KMSP Minneapolis-St Paul11 models3.92−2.63198
KMSY New Orleans Intl11 models2.99−2.58198
KNYC New York Central Park11 models2.45+1.79197
KOKC Oklahoma City11 models2.63−0.70197
KORD Chicago O'Hare11 models2.66−2.03198
KPHL Philadelphia Intl11 models2.35−0.74198
KPHX Phoenix Sky Harbor8 models4.62−4.11197
KSAN San Diego Lindbergh8 models5.83−5.83196
KSAT San Antonio Intl11 models3.10−2.35198
KSEA Seattle-Tacoma8 models2.77−0.99197
KSFO San Francisco Intl8 models3.02+1.42197
KTTN Trenton Mercer11 models3.32+2.95194

Data availability

Each model is scored only over its own available period (2026-01-01 → 2026-08-30); the windows above are therefore not identical across models. Pairwise comparisons on the permanent-link pages use common days only.

ModelPeriodScored daysCoverage
ECMWF AIFS Single2026-08-02 → 2026-08-3029
2026-01-012026-08-30
Aurora (GFS init)2026-08-30 → 2026-08-301
2026-01-012026-08-30
Aurora (IFS init)2026-08-29 → 2026-08-302
2026-01-012026-08-30
FourCastNet v2 (GFS init)2026-08-30 → 2026-08-301
2026-01-012026-08-30
FourCastNet v2 (IFS init)2026-08-29 → 2026-08-302
2026-01-012026-08-30
NCEP GFS2026-08-02 → 2026-08-3029
2026-01-012026-08-30
GraphCast (GFS init)2026-01-02 → 2026-08-3034
2026-01-012026-08-30
GraphCast (IFS init)2026-01-02 → 2026-08-30198
2026-01-012026-08-30
ECMWF IFS HRES2026-08-02 → 2026-08-3029
2026-01-012026-08-30
Pangu-Weather (GFS init)2026-08-30 → 2026-08-301
2026-01-012026-08-30
Pangu-Weather (IFS init)2026-08-29 → 2026-08-302
2026-01-012026-08-30
Persistence (baseline)2026-01-01 → 2026-08-30215
2026-01-012026-08-30

Stations23

full station table
  • KNYC — New York Central Park
  • KEWR — Newark Liberty
  • KPHL — Philadelphia Intl
  • KTTN — Trenton Mercer
  • KBOS — Boston Logan
  • KDCA — Washington Reagan
  • KATL — Atlanta Hartsfield
  • KMIA — Miami Intl
  • KORD — Chicago O'Hare
  • KMSP — Minneapolis-St Paul
  • KDFW — Dallas-Fort Worth
  • KIAH — Houston Bush
  • KAUS — Austin Bergstrom
  • KSAT — San Antonio Intl
  • KMSY — New Orleans Intl
  • KOKC — Oklahoma City
  • KDEN — Denver Intl
  • KPHX — Phoenix Sky Harbor
  • KLAS — Las Vegas Harry Reid
  • KLAX — Los Angeles Intl
  • KSAN — San Diego Lindbergh
  • KSFO — San Francisco Intl
  • KSEA — Seattle-Tacoma