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

KSAT — San Antonio Intl

29.5328, -98.4636 · 246 m· standard offset UTC-6 h · truth product CLISAT

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, 00Z, 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.19-3.19 · n=30 3.12-3.12 · n=29 3.10-3.10 · n=28 3.03-3.03 · n=27 2.82-2.82 · n=26 2.77-2.76 · n=25 2.65-2.65 · n=24 2.78-2.77 · n=23 2.73-2.73 · n=22 3.14-2.87 · n=21 ECMWF AIFS Single MAE by lead day 1 to 9, tmax
Aurora (GFS init)aurora_gfs 7.33-7.33 · n=2 7.82-7.82 · n=1 Aurora (GFS init) MAE by lead day 1 to 9, tmax
Aurora (IFS init)aurora_ifs 6.29-6.29 · n=3 6.05-6.05 · n=2 4.64-4.64 · n=1 Aurora (IFS init) MAE by lead day 1 to 9, tmax
FourCastNet v2 (GFS init)fourcastnet_gfs 4.35-4.35 · n=2 3.79-3.79 · n=1 FourCastNet v2 (GFS init) MAE by lead day 1 to 9, tmax
FourCastNet v2 (IFS init)fourcastnet_ifs 4.22-4.22 · n=3 2.73-2.73 · n=2 1.67-1.67 · n=1 FourCastNet v2 (IFS init) MAE by lead day 1 to 9, tmax
NCEP GFSgfs 2.11-1.97 · n=30 1.76-1.45 · n=29 1.77-1.39 · n=28 1.61-1.28 · n=27 1.70-0.83 · n=26 1.90-1.61 · n=25 1.63-1.29 · n=24 2.04-1.22 · n=23 1.98-0.70 · n=22 2.41-0.74 · n=21 NCEP GFS MAE by lead day 1 to 9, tmax
GraphCast (GFS init)graphcast_gfs 6.67-6.67 · n=2 7.52-7.52 · n=1 GraphCast (GFS init) MAE by lead day 1 to 9, tmax
GraphCast (IFS init)graphcast_ifs 5.46-5.46 · n=28 5.72-5.72 · n=27 5.69-5.69 · n=26 5.75-5.75 · n=25 5.53-5.53 · n=25 5.49-5.49 · n=25 5.40-5.40 · n=24 5.60-5.60 · n=23 5.89-5.89 · n=22 6.16-6.16 · n=21 GraphCast (IFS init) MAE by lead day 1 to 9, tmax
ECMWF IFS HRESifs_hres 3.23-3.23 · n=24 3.17-3.17 · n=23 3.13-3.08 · n=22 2.92-2.74 · n=22 2.58-2.56 · n=20 2.70-2.70 · n=18 2.93-2.93 · n=19 2.89-2.47 · n=18 3.01-2.53 · n=17 3.01-2.66 · n=16 ECMWF IFS HRES MAE by lead day 1 to 9, tmax
Pangu-Weather (GFS init)pangu_gfs 3.03-3.03 · n=2 3.17-3.17 · n=1 Pangu-Weather (GFS init) MAE by lead day 1 to 9, tmax
Pangu-Weather (IFS init)pangu_ifs 2.73-2.73 · n=3 3.94-3.94 · n=2 4.20-4.20 · n=1 Pangu-Weather (IFS init) MAE by lead day 1 to 9, tmax
Persistence (baseline)persistence 1.92-0.08 · n=90 2.67-0.20 · n=90 2.97-0.37 · n=90 3.00-0.51 · n=90 3.02-0.64 · n=90 3.28-0.83 · n=90 3.42-1.02 · n=90 3.48-1.21 · n=90 3.41-1.39 · 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, 00Z, 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.49-0.90 · n=30 1.51-0.77 · n=29 1.64-0.82 · n=28 1.61-0.81 · n=27 1.52-0.59 · n=26 1.55-0.51 · n=25 1.54-0.40 · n=24 1.53-0.41 · n=23 1.61-0.08 · n=22 1.70-0.26 · n=21 ECMWF AIFS Single MAE by lead day 1 to 9, tmin
Aurora (GFS init)aurora_gfs 0.99-0.99 · n=2 2.30-2.30 · n=1 Aurora (GFS init) MAE by lead day 1 to 9, tmin
Aurora (IFS init)aurora_ifs 2.14+0.48 · n=3 1.72-0.83 · n=2 2.52-2.52 · n=1 Aurora (IFS init) MAE by lead day 1 to 9, tmin
FourCastNet v2 (GFS init)fourcastnet_gfs 2.98-2.98 · n=2 2.00-2.00 · n=1 FourCastNet v2 (GFS init) MAE by lead day 1 to 9, tmin
FourCastNet v2 (IFS init)fourcastnet_ifs 0.95-0.51 · n=3 1.76+0.21 · n=2 1.22-1.22 · n=1 FourCastNet v2 (IFS init) MAE by lead day 1 to 9, tmin
NCEP GFSgfs 1.69-0.14 · n=30 1.96-0.37 · n=29 2.11-0.66 · n=28 1.96-0.63 · n=27 2.12-0.80 · n=26 2.15-0.86 · n=25 2.15-0.87 · n=24 2.04-1.22 · n=23 1.73-1.01 · n=22 2.07-1.08 · n=21 NCEP GFS MAE by lead day 1 to 9, tmin
GraphCast (GFS init)graphcast_gfs 1.07-0.46 · n=2 2.20-2.20 · n=1 GraphCast (GFS init) MAE by lead day 1 to 9, tmin
GraphCast (IFS init)graphcast_ifs 1.25+0.46 · n=28 0.96+0.36 · n=27 1.03+0.30 · n=26 1.19+0.69 · n=25 1.38+1.01 · n=25 1.35+0.88 · n=25 1.36+1.11 · n=24 1.58+1.29 · n=23 1.71+1.14 · n=22 1.61+1.07 · n=21 GraphCast (IFS init) MAE by lead day 1 to 9, tmin
ECMWF IFS HRESifs_hres 1.79+1.10 · n=24 2.09+1.07 · n=23 2.12+1.17 · n=22 1.93+1.08 · n=22 2.37+1.57 · n=20 2.68+1.64 · n=18 2.74+1.76 · n=19 2.59+2.03 · n=18 2.36+2.00 · n=17 2.68+1.78 · n=16 ECMWF IFS HRES MAE by lead day 1 to 9, tmin
Pangu-Weather (GFS init)pangu_gfs 0.94-0.53 · n=2 2.72-2.72 · n=1 Pangu-Weather (GFS init) MAE by lead day 1 to 9, tmin
Pangu-Weather (IFS init)pangu_ifs 2.75+1.13 · n=3 1.70-1.70 · n=2 3.89-3.89 · n=1 Pangu-Weather (IFS init) MAE by lead day 1 to 9, tmin
Persistence (baseline)persistence 1.64-0.07 · n=90 2.12-0.10 · n=90 2.07-0.09 · n=90 2.00-0.16 · n=90 1.91-0.31 · n=90 2.19-0.43 · n=90 2.48-0.57 · n=90 2.78-0.62 · n=90 2.81-0.72 · 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

MAE °F at lead day 1, 00Z, bilinear, daily maximum — the seasonal slice behind the window averages. A model that is excellent in one season and poor in another shows up here and nowhere else.

Monthaifs_singleaurora_gfsaurora_ifsfourcastnet_gfsfourcastnet_ifsgfsgraphcast_gfsgraphcast_ifsifs_hrespangu_gfspangu_ifs
2026-08 3.12-3.12 · n=297.82-7.82 · n=16.05-6.05 · n=23.79-3.79 · n=12.73-2.73 · n=21.76-1.45 · n=297.52-7.52 · n=15.72-5.72 · n=273.17-3.17 · n=233.17-3.17 · n=13.94-3.94 · n=2
2026-01 8.29-8.29 · n=6

Model availability at this station

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

Observed truth — last 30 days

Climatological dayTmax °F Tmin °FSourceFlag
2026-08-309778OBSobs_fallback
2026-08-299874CLI
2026-08-2810072CLI
2026-08-2710278CLI
2026-08-2610177CLI
2026-08-2510174CLI
2026-08-2410276CLI
2026-08-2310374CLI
2026-08-2210375CLI
2026-08-2110277CLI
2026-08-2010276CLI
2026-08-1910177CLI
2026-08-1810078CLI
2026-08-1710078CLI
2026-08-169977CLI
2026-08-1510079CLI
2026-08-149879CLI
2026-08-1310278CLI
2026-08-1210178CLI
2026-08-119979CLI
2026-08-109878CLI
2026-08-099878CLI
2026-08-089676CLI
2026-08-079878CLI
2026-08-069978CLI
2026-08-059878CLI
2026-08-049878CLI
2026-08-039975CLI
2026-08-029978CLI
2026-08-019977CLI

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