Raw model output on the native 0.25° grid — no MOS, no bias correction, no post-processing. Scores understate operational forecast quality. Read the fairness statement →

CastCheck methodology v0.2 · data through 2026-08-30

How far off was each weather model?

Over the last 365 days, across 23 U.S. stations, the most accurate raw daily minimum temperature forecast 1 day ahead is GraphCast (IFS init): mean absolute error 2.23 °F [2.01, 2.56], bias +0.80 °F, on n = 33 scored days.

Scope: raw model output on the native 0.25° grid, daily maximum/minimum taken as the max/min of the four common 6-hourly samples, scored against the first final NWS Daily Climate Report, errors computed in °C and shown in °F (methodology v0.2).

Lead day 1 — daily minimum temperature

the last 365 days, all stations pooled, 00Z initialization, bilinear interpolation. Lower MAE is better; bias is positive when the model is too warm. Every number links to its permanent page. Skill is measured against persistence; skill, debiased repeats it after removing each station's constant offset, which is why a station with a steady warm bias can look skill-less in one column and skilful in the other. Under n: the mean number of stations behind each scored day, and how many of those days carry a QC flag on the observation.
rankModel MAE °FBias °F ±3 °F Skill Skill, debiased nvs leader
1 GraphCast (IFS init)graphcast_ifs 2.23 [2.01, 2.56] +0.80 [0.53, 1.06] 72% +0.19 +0.36 3323 stns · 2 QC lowest MAE in this view
Pangu-Weather (IFS init)pangu_ifs 2.22 [2.12, 2.32] +0.08 [-1.11, 1.27] 74% +0.14 +0.26 223 stns · 2 QC
ECMWF AIFS Singleaifs_single 2.23 [1.99, 2.45] +0.24 [-0.03, 0.41] 72% +0.05 +0.48 2923 stns · 2 QC
Aurora (IFS init)aurora_ifs 2.24 [2.12, 2.36] +0.24 [-0.71, 1.20] 70% +0.13 +0.40 223 stns · 2 QC
ECMWF IFS HRESifs_hres 2.33 [2.15, 2.53] +1.16 [0.80, 1.48] 71% +0.00 +0.29 2322.7 stns · 2 QC
Pangu-Weather (GFS init)pangu_gfs 2.37 [2.37, 2.37] -0.17 [-0.17, -0.17] 74% -0.13 123 stns · 1 QC
FourCastNet v2 (GFS init)fourcastnet_gfs 2.43 [2.43, 2.43] +0.13 [0.13, 0.13] 74% -0.16 123 stns · 1 QC
FourCastNet v2 (IFS init)fourcastnet_ifs 2.64 [2.16, 3.12] +0.93 [-0.02, 1.87] 67% -0.02 +0.41 223 stns · 2 QC
GraphCast (GFS init)graphcast_gfs 2.74 [2.74, 2.74] -0.32 [-0.32, -0.32] 70% -0.31 123 stns · 1 QC
Aurora (GFS init)aurora_gfs 2.77 [2.77, 2.77] -0.49 [-0.49, -0.49] 65% -0.33 123 stns · 1 QC
NCEP GFSgfs 2.91 [2.72, 3.13] +1.76 [1.30, 2.26] 59% -0.24 +0.20 2923 stns · 2 QC
Persistence (baseline)persistence · baseline 3.86 [3.50, 4.24] -0.01 [-0.24, 0.19] 54% 36523 stns · 2 QC

+ model too warm · − model too cold · bias interval includes zero · ★ lowest MAE · = not distinguishable from the leader · ▼ significantly worse · n < 30 greyed and unranked · CI is a 95 % moving-block bootstrap interval.

Lead day 3 — daily minimum temperature

the last 365 days, all stations pooled, 00Z initialization, bilinear interpolation. Lower MAE is better; bias is positive when the model is too warm. Every number links to its permanent page. Skill is measured against persistence; skill, debiased repeats it after removing each station's constant offset, which is why a station with a steady warm bias can look skill-less in one column and skilful in the other. Under n: the mean number of stations behind each scored day, and how many of those days carry a QC flag on the observation.
rankModel MAE °FBias °F ±3 °F Skill Skill, debiased nvs leader
1 GraphCast (IFS init)graphcast_ifs 2.42 [2.19, 2.81] +0.75 [0.38, 1.04] 70% +0.36 +0.61 3123 stns lowest MAE in this view
ECMWF AIFS Singleaifs_single 2.37 [2.13, 2.61] +0.39 [0.09, 0.65] 69% +0.25 +0.52 2723 stns · 2 QC
ECMWF IFS HRESifs_hres 2.77 [2.58, 3.19] +1.60 [1.25, 2.07] 63% +0.11 +0.39 2223 stns · 2 QC
NCEP GFSgfs 3.17 [2.86, 3.51] +2.07 [1.61, 2.52] 56% -0.01 +0.44 2723 stns · 2 QC
Persistence (baseline)persistence · baseline 6.09 [5.51, 6.73] -0.03 [-0.62, 0.50] 39% 36523 stns · 2 QC

Lead day 5 — daily minimum temperature

the last 365 days, all stations pooled, 00Z initialization, bilinear interpolation. Lower MAE is better; bias is positive when the model is too warm. Every number links to its permanent page. Skill is measured against persistence; skill, debiased repeats it after removing each station's constant offset, which is why a station with a steady warm bias can look skill-less in one column and skilful in the other. Under n: the mean number of stations behind each scored day, and how many of those days carry a QC flag on the observation.
rankModel MAE °FBias °F ±3 °F Skill Skill, debiased nvs leader
1 GraphCast (IFS init)graphcast_ifs 2.79 [2.37, 3.50] +0.88 [0.35, 1.74] 63% +0.39 +0.55 3123 stns · 2 QC lowest MAE in this view
ECMWF AIFS Singleaifs_single 2.51 [2.17, 2.90] +0.42 [-0.01, 0.82] 68% +0.20 +0.27 2523 stns · 2 QC
ECMWF IFS HRESifs_hres 2.86 [2.52, 3.16] +1.59 [0.91, 2.13] 63% +0.09 +0.09 1822.9 stns · 2 QC
NCEP GFSgfs 3.37 [3.14, 3.58] +1.74 [1.14, 2.26] 54% -0.07 -0.04 2523 stns · 2 QC
Persistence (baseline)persistence · baseline 6.67 [6.02, 7.35] -0.06 [-0.89, 0.73] 36% 36523 stns · 2 QC

Lead day 7 — daily minimum temperature

the last 365 days, all stations pooled, 00Z initialization, bilinear interpolation. Lower MAE is better; bias is positive when the model is too warm. Every number links to its permanent page. Skill is measured against persistence; skill, debiased repeats it after removing each station's constant offset, which is why a station with a steady warm bias can look skill-less in one column and skilful in the other. Under n: the mean number of stations behind each scored day, and how many of those days carry a QC flag on the observation. in the rank column means fewer than 30 scored days, so the group is published but not ranked.
rankModel MAE °FBias °F ±3 °F Skill Skill, debiased nvs leader
ECMWF AIFS Singleaifs_single 2.74 [2.39, 3.03] +0.36 [-0.04, 0.77] 65% +0.25 +0.53 2323 stns · 2 QC
ECMWF IFS HRESifs_hres 3.17 [2.82, 3.58] +1.82 [1.54, 2.16] 55% +0.15 +0.38 1822.9 stns · 2 QC
GraphCast (IFS init)graphcast_ifs 3.31 [2.81, 4.15] +0.78 [0.15, 1.66] 55% +0.34 +0.38 2923 stns · 2 QC
NCEP GFSgfs 3.69 [3.47, 3.88] +1.68 [1.02, 2.31] 47% -0.00 +0.25 2323 stns · 2 QC
Persistence (baseline)persistence · baseline 7.11 [6.43, 7.83] -0.07 [-1.11, 0.95] 33% 36523 stns · 2 QC

Every model × every lead day

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

Model d0d1d2d3d4d5d6d7d8d9lead 1–9
ECMWF AIFS Singleaifs_single 2.12+0.09 · n=30 2.23+0.24 · n=29 2.34+0.34 · n=28 2.37+0.39 · n=27 2.43+0.39 · n=26 2.51+0.42 · n=25 2.65+0.40 · n=24 2.74+0.36 · n=23 2.89+0.16 · n=22 3.40+0.93 · n=21 ECMWF AIFS Single MAE by lead day 1 to 9
Aurora (GFS init)aurora_gfs 2.69+0.41 · n=2 2.77-0.49 · n=1 Aurora (GFS init) MAE by lead day 1 to 9
Aurora (IFS init)aurora_ifs 2.11+0.27 · n=3 2.24+0.24 · n=2 2.55-0.80 · n=1 Aurora (IFS init) MAE by lead day 1 to 9
FourCastNet v2 (GFS init)fourcastnet_gfs 2.82-0.10 · n=2 2.43+0.13 · n=1 FourCastNet v2 (GFS init) MAE by lead day 1 to 9
FourCastNet v2 (IFS init)fourcastnet_ifs 2.38-0.37 · n=3 2.64+0.93 · n=2 2.58+0.56 · n=1 FourCastNet v2 (IFS init) MAE by lead day 1 to 9
NCEP GFSgfs 2.67+1.59 · n=30 2.91+1.76 · n=29 2.95+1.74 · n=28 3.17+2.07 · n=27 3.26+1.93 · n=26 3.37+1.74 · n=25 3.54+1.77 · n=24 3.69+1.68 · n=23 3.85+1.52 · n=22 4.30+1.34 · n=21 NCEP GFS MAE by lead day 1 to 9
GraphCast (GFS init)graphcast_gfs 2.78+0.58 · n=2 2.74-0.32 · n=1 GraphCast (GFS init) MAE by lead day 1 to 9
GraphCast (IFS init)graphcast_ifs 2.17+1.03 · n=34 2.23+0.80 · n=33 2.34+0.73 · n=32 2.42+0.75 · n=31 2.59+0.88 · n=31 2.79+0.88 · n=31 3.02+0.92 · n=30 3.31+0.78 · n=29 3.54+0.50 · n=28 4.11+0.83 · n=27 GraphCast (IFS init) MAE by lead day 1 to 9
ECMWF IFS HRESifs_hres 2.06+1.02 · n=25 2.33+1.16 · n=23 2.53+1.32 · n=23 2.77+1.60 · n=22 2.84+1.71 · n=20 2.86+1.59 · n=18 2.98+1.74 · n=19 3.17+1.82 · n=18 3.47+1.85 · n=17 4.24+2.93 · n=16 ECMWF IFS HRES MAE by lead day 1 to 9
Pangu-Weather (GFS init)pangu_gfs 2.59+0.63 · n=2 2.37-0.17 · n=1 Pangu-Weather (GFS init) MAE by lead day 1 to 9
Pangu-Weather (IFS init)pangu_ifs 2.07+0.60 · n=3 2.22+0.08 · n=2 2.38-0.77 · n=1 Pangu-Weather (IFS init) MAE by lead day 1 to 9
Persistence (baseline)persistence 3.86-0.01 · n=365 5.44-0.02 · n=365 6.09-0.03 · n=365 6.39-0.05 · n=365 6.67-0.06 · n=365 6.95-0.07 · n=365 7.11-0.07 · n=365 7.22-0.07 · n=365 7.36-0.08 · n=365 Persistence (baseline) MAE by lead day 1 to 9

Where the errors are

Mean bias in °F of each station's best model, lead day 1, daily minimum, 365d window, 00Z, bilinear125°W115°W105°W95°W85°W75°W65°W25°N30°N35°N40°N45°N50°NKATL Atlanta Hartsfield: bias -0.09 °F, n = 1KATLKAUS Austin Bergstrom: bias +2.74 °F, n = 29KAUS+KBOS Boston Logan: bias -0.03 °F, n = 28KBOSKDCA Washington Reagan: bias -0.28 °F, n = 1KDCAKDEN Denver Intl: bias +0.06 °F, n = 1KDEN+KDFW Dallas-Fort Worth: bias +0.22 °F, n = 2KDFW+KEWR Newark Liberty: bias +0.80 °F, n = 1KEWR+KIAH Houston Bush: bias +0.31 °F, n = 2KIAH+KLAS Las Vegas Harry Reid: bias -2.10 °F, n = 33KLASKLAX Los Angeles Intl: bias -0.01 °F, n = 29KLAXKMIA Miami Intl: bias -0.07 °F, n = 1KMIAKMSP Minneapolis-St Paul: bias +0.02 °F, n = 2KMSP+KMSY New Orleans Intl: bias +1.40 °F, n = 29KMSY+KNYC New York Central Park: bias -0.24 °F, n = 1KNYCKOKC Oklahoma City: bias +1.54 °F, n = 1KOKC+KORD Chicago O'Hare: bias +0.87 °F, n = 1KORD+KPHL Philadelphia Intl: bias -0.41 °F, n = 2KPHLKPHX Phoenix Sky Harbor: bias -0.83 °F, n = 2KPHXKSAN San Diego Lindbergh: bias -0.66 °F, n = 1KSANKSAT San Antonio Intl: bias -0.77 °F, n = 29KSATKSEA Seattle-Tacoma: bias +0.01 °F, n = 1KSEA+KSFO San Francisco Intl: bias -0.33 °F, n = 1KSFOKTTN Trenton Mercer: bias +3.08 °F, n = 33KTTN+
Each station's best model at lead day 1 (the last 365 days, 00Z, bilinear, daily minimum): 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). There is no coastline because CastCheck ships no third-party boundary file; the frame is a latitude/longitude graticule. Hover a dot for its numbers.
The same data as a table
StationBest model MAE °FBias °F n
KATL Atlanta Hartsfield FourCastNet v2 (GFS init)0.09 -0.09 1
KAUS Austin Bergstrom ECMWF AIFS Single2.94 +2.74 29
KBOS Boston Logan ECMWF AIFS Single1.22 -0.03 28
KDCA Washington Reagan FourCastNet v2 (GFS init)0.28 -0.28 1
KDEN Denver Intl FourCastNet v2 (GFS init)0.06 +0.06 1
KDFW Dallas-Fort Worth Aurora (IFS init)0.27 +0.22 2
KEWR Newark Liberty Pangu-Weather (GFS init)0.80 +0.80 1
KIAH Houston Bush Pangu-Weather (IFS init)0.31 +0.31 2
KLAS Las Vegas Harry Reid GraphCast (IFS init)2.70 -2.10 33
KLAX Los Angeles Intl ECMWF AIFS Single0.60 -0.01 29
KMIA Miami Intl Pangu-Weather (GFS init)0.07 -0.07 1
KMSP Minneapolis-St Paul Aurora (IFS init)1.01 +0.02 2
KMSY New Orleans Intl NCEP GFS1.80 +1.40 29
KNYC New York Central Park FourCastNet v2 (GFS init)0.24 -0.24 1
KOKC Oklahoma City FourCastNet v2 (GFS init)1.54 +1.54 1
KORD Chicago O'Hare Aurora (GFS init)0.87 +0.87 1
KPHL Philadelphia Intl Aurora (IFS init)0.41 -0.41 2
KPHX Phoenix Sky Harbor Pangu-Weather (IFS init)0.89 -0.83 2
KSAN San Diego Lindbergh FourCastNet v2 (GFS init)0.66 -0.66 1
KSAT San Antonio Intl ECMWF AIFS Single1.51 -0.77 29
KSEA Seattle-Tacoma FourCastNet v2 (GFS init)0.01 +0.01 1
KSFO San Francisco Intl Aurora (GFS init)0.33 -0.33 1
KTTN Trenton Mercer GraphCast (IFS init)3.11 +3.08 33

Data availability

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

ModelPeriod Scored daysCoverage
ECMWF AIFS Single 2026-08-02 → 2026-08-3029
Aurora (GFS init) 2026-08-30 → 2026-08-301
Aurora (IFS init) 2026-08-29 → 2026-08-302
FourCastNet v2 (GFS init) 2026-08-30 → 2026-08-301
FourCastNet v2 (IFS init) 2026-08-29 → 2026-08-302
NCEP GFS 2026-08-02 → 2026-08-3029
GraphCast (GFS init) 2026-08-30 → 2026-08-301
GraphCast (IFS init) 2026-01-02 → 2026-08-3033
ECMWF IFS HRES 2026-08-02 → 2026-08-3023
Pangu-Weather (GFS init) 2026-08-30 → 2026-08-301
Pangu-Weather (IFS init) 2026-08-29 → 2026-08-302
Persistence (baseline) 2024-01-02 → 2026-08-30972

Stations