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

KORD — Chicago O'Hare

41.9797, -87.9044 · 203 m· standard offset UTC-6 h · truth product CLIORD

These pages are always bilinear interpolation, the headline method. The nearest-node variant, and every other window/initialization/interpolation/variable combination, is published on each permanent link below — follow any number.

Daily maximum temperature — MAE °F

the last 90 days, 12Z, bilinear. MAE with the bias and n underneath; every cell links to its permanent page. The sparkline shows the same model across lead days 1–9 on a scale shared within this table.
Modeld0d1d2d3d4d5d6d7d8d9lead 1–9
ECMWF AIFS Singleaifs_single 3.30-3.30 · n=29 3.42-3.38 · n=28 3.46-3.26 · n=27 3.11-2.76 · n=26 3.52-2.98 · n=24 3.83-3.29 · n=24 4.60-4.38 · n=23 5.06-4.58 · n=22 5.71-5.03 · n=21 ECMWF AIFS Single MAE by lead day 1 to 9, tmax
Aurora (GFS init)aurora_gfs 4.12-4.12 · n=2 8.53-8.53 · n=1 Aurora (GFS init) MAE by lead day 1 to 9, tmax
Aurora (IFS init)aurora_ifs 1.79-1.79 · n=2 1.83-1.83 · n=1 Aurora (IFS init) MAE by lead day 1 to 9, tmax
FourCastNet v2 (GFS init)fourcastnet_gfs 0.81-0.81 · n=2 1.13-1.13 · n=1 FourCastNet v2 (GFS init) MAE by lead day 1 to 9, tmax
FourCastNet v2 (IFS init)fourcastnet_ifs 2.02-2.02 · n=2 1.55-1.55 · n=1 FourCastNet v2 (IFS init) MAE by lead day 1 to 9, tmax
NCEP GFSgfs 2.12-1.73 · n=29 2.22-0.27 · n=28 2.52+0.24 · n=27 3.04-1.16 · n=26 2.83-1.37 · n=25 3.20-1.17 · n=24 4.18-2.97 · n=23 4.45-1.22 · n=22 4.86-2.60 · n=21 NCEP GFS MAE by lead day 1 to 9, tmax
GraphCast (GFS init)graphcast_gfs 3.06-3.06 · n=2 6.15-6.15 · n=1 GraphCast (GFS init) MAE by lead day 1 to 9, tmax
GraphCast (IFS init)graphcast_ifs 4.01-4.01 · n=27 4.38-4.35 · n=26 4.53-4.45 · n=25 3.95-3.84 · n=25 4.01-3.60 · n=25 4.06-3.62 · n=24 4.15-3.41 · n=23 4.35-3.42 · n=22 4.50-3.04 · n=21 GraphCast (IFS init) MAE by lead day 1 to 9, tmax
ECMWF IFS HRESifs_hres 2.81-2.58 · n=24 2.64-2.29 · n=22 2.89-1.84 · n=22 2.50-1.95 · n=21 2.31-1.41 · n=20 3.28-1.69 · n=19 3.64-3.11 · n=17 4.82-3.95 · n=17 4.51-4.03 · n=15 ECMWF IFS HRES MAE by lead day 1 to 9, tmax
Pangu-Weather (GFS init)pangu_gfs 1.45-0.89 · n=2 0.41-0.41 · n=1 Pangu-Weather (GFS init) MAE by lead day 1 to 9, tmax
Pangu-Weather (IFS init)pangu_ifs 1.62-1.57 · n=2 0.32+0.32 · n=1 Pangu-Weather (IFS init) MAE by lead day 1 to 9, tmax
Persistence (baseline)persistence 4.12-0.10 · n=90 5.41-0.17 · n=90 5.52-0.28 · n=90 6.04-0.24 · n=90 6.40-0.38 · n=90 6.93-0.36 · n=90 7.49-0.29 · n=90 7.04-0.22 · n=90 6.72-0.28 · n=90 Persistence (baseline) MAE by lead day 1 to 9, tmax

Up to 1 of the scored days in this table carry a QC flag on the observation (a CLI value that disagreed with the hourly observations, or a fallback source). They are kept in the scores and counted here rather than dropped — see methodology.

+ 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.

Daily minimum temperature — MAE °F

the last 90 days, 12Z, bilinear. MAE with the bias and n underneath; every cell links to its permanent page. The sparkline shows the same model across lead days 1–9 on a scale shared within this table.
Modeld0d1d2d3d4d5d6d7d8d9lead 1–9
ECMWF AIFS Singleaifs_single 1.71+0.66 · n=29 1.55+0.28 · n=28 1.55+0.18 · n=27 1.74+0.60 · n=26 2.04+0.60 · n=24 2.26+0.57 · n=24 1.98+0.07 · n=23 2.91-0.70 · n=22 3.58-1.66 · n=21 ECMWF AIFS Single MAE by lead day 1 to 9, tmin
Aurora (GFS init)aurora_gfs 1.41+1.41 · n=2 0.31-0.31 · n=1 Aurora (GFS init) MAE by lead day 1 to 9, tmin
Aurora (IFS init)aurora_ifs 0.99+0.99 · n=2 0.39+0.39 · n=1 Aurora (IFS init) MAE by lead day 1 to 9, tmin
FourCastNet v2 (GFS init)fourcastnet_gfs 2.44+2.44 · n=2 2.16+2.16 · n=1 FourCastNet v2 (GFS init) MAE by lead day 1 to 9, tmin
FourCastNet v2 (IFS init)fourcastnet_ifs 2.07+2.07 · n=2 2.32+2.32 · n=1 FourCastNet v2 (IFS init) MAE by lead day 1 to 9, tmin
NCEP GFSgfs 1.75+0.44 · n=29 2.20+0.42 · n=28 2.51+1.02 · n=27 2.55+0.98 · n=26 2.45+0.86 · n=25 2.99+1.21 · n=24 3.27+0.38 · n=23 4.58+0.62 · n=22 4.06+0.12 · n=21 NCEP GFS MAE by lead day 1 to 9, tmin
GraphCast (GFS init)graphcast_gfs 1.87+1.87 · n=2 0.32+0.32 · n=1 GraphCast (GFS init) MAE by lead day 1 to 9, tmin
GraphCast (IFS init)graphcast_ifs 1.40+0.08 · n=27 1.41+0.03 · n=26 1.51-0.20 · n=25 1.76+0.12 · n=25 1.71-0.08 · n=25 1.91+0.09 · n=24 2.30+0.37 · n=23 4.03-0.15 · n=22 5.99-0.47 · n=21 GraphCast (IFS init) MAE by lead day 1 to 9, tmin
ECMWF IFS HRESifs_hres 1.47+0.16 · n=24 1.55+0.13 · n=22 1.79+0.30 · n=22 2.07+0.56 · n=21 2.31+0.55 · n=20 2.24+0.68 · n=19 2.30+0.78 · n=17 3.50+0.42 · n=17 3.13-1.13 · n=15 ECMWF IFS HRES MAE by lead day 1 to 9, tmin
Pangu-Weather (GFS init)pangu_gfs 3.49+3.49 · n=2 1.41+1.41 · n=1 Pangu-Weather (GFS init) MAE by lead day 1 to 9, tmin
Pangu-Weather (IFS init)pangu_ifs 2.03+2.03 · n=2 2.09+2.09 · n=1 Pangu-Weather (IFS init) MAE by lead day 1 to 9, tmin
Persistence (baseline)persistence 3.32-0.17 · n=90 4.32-0.28 · n=90 5.32-0.41 · n=90 5.37-0.59 · n=90 5.86-0.81 · n=90 6.53-0.82 · n=90 6.91-0.76 · n=90 6.80-0.78 · n=90 6.83-0.88 · n=90 Persistence (baseline) MAE by lead day 1 to 9, tmin

Up to 1 of the scored days in this table carry a QC flag on the observation (a CLI value that disagreed with the hourly observations, or a fallback source). They are kept in the scores and counted here rather than dropped — see methodology.

Month-by-month slices, model availability and the observed-truth table live on the canonical page: they do not depend on the window, initialization or interpolation selected here.

All scores as JSON scores_latest.csv daily_errors.csv.gz data & licences