We describe naturev1.cyclone, a hurricane track system built from hand-written physics: vortex removal, multi-layer steering with a beta drift that scales with the storm's outer circulation, evolving and climatology-damped flows, a vorticity budget, a barotropic model and a physics ensemble, blended per lead in along- and cross-track coordinates. On 4,447 forecasts of 407 storms from 2018 and 2020-2022, seasons never used to fit or tune anything, the consensus beats the strongest extrapolation at every lead from 6 to 120 hours (+12% to +38%, every 90% interval excluding zero) and beats CLIPER at every lead. It does not beat GraphCast, Pangu-Weather or IFS HRES beyond 6 hours; chosen per lead alongside any of them, it is never worse and is better at 6-12 hours. A genesis model in the same package has a Brier skill of +0.22 on the same unseen seasons.
A learned hurricane model is only worth something if it beats the forecasts that cost nothing: straight-line
extrapolation of the last 6 or 12 hours of motion, and CLIPER, the climatology-and-persistence regression that has been
the skill floor for official forecasts since the 1970s [1, 2]. At 6-12 hours extrapolation is hard to beat at all,
because a storm's motion changes slowly. NatureV1's learned track head already beats a steering-only track and
extrapolation on the held-out 2017, 2019 and 2021 Atlantic seasons. This report describes a second, independent
answer to the same question: how far can hand-written physics alone go, with every constant fitted on past
seasons and nothing learned by gradient descent? The result is naturev1.cyclone, 39 Python modules, and the
consensus it produces is now the physical prior that the learned model and its distillation targets are measured against.
Analyses. Each forecast starts from one ERA5 [3] analysis on the WeatherBench 2 [4] 1.5-degree grid (13 pressure levels, the analysis 12 hours earlier for tendencies) and the best track so far (IBTrACS [5]): position, intensity and the last 48 hours of motion. Cases. Every 00 and 12 UTC fix of a tropical or subtropical system in every basin. Verification follows NHC practice: a forecast is verified only while the system remains tropical, errors are great-circle distances, and every comparison uses a homogeneous sample (the same cases for every method at a given lead). 90% confidence intervals come from a bootstrap that resamples whole storms, since forecasts of the same storm are not independent.
Splits. CLIPER, SHIFOR and the analog database were fitted on 1980-2014 best tracks. Everything else (consensus weights, the cone, the genesis model) was tuned on 2016, 2017 and 2019. The four seasons 2018, 2020, 2021 and 2022 were not used for any choice and are reported once. The baseline at each lead is the strongest of three extrapolations (6-hour, 12-hour and great-circle), chosen per lead after the fact, which flatters the baseline rather than the model.
Every member predicts the full track to 120 hours. The physics members share one preprocessing step: the storm's own circulation is removed from the analysis by inverting its vorticity and divergence inside 600 km (a Biot-Savart / Poisson inversion with a 300 km taper), so the remaining flow is the environment that steers it [6].
| Member | Idea |
|---|---|
| Extrapolation, CLIPER, analogs | Persistence; a rebuilt five-basin CLIPER with 21 predictors in a poleward frame; track-shape analogs that match the last 48 h as a departure from persistence, rotated into the storm's own motion frame. |
| Steering trajectories | Pressure-weighted layer means over eight layers in a 500 km disc [7], integrated with fourth-order Runge-Kutta on the sphere in 3-hour steps, plus a dynamic beta drift [8]: 1.6 m/s at 40 degrees to the left of the vorticity gradient (right in the south), scaled by the storm's measured outer circulation instead of the usual fixed 1 m/s. |
| Evolving flow | The steering flow keeps changing the way it changed over the previous 12 hours, then relaxes. |
| Climatology-damped flow | The analysis anomaly from the 1981-2010 daily ERA5 climatology decays with an e-folding time of 48 or 96 hours, so the flow drifts toward what is normal for that place and day. |
| Vorticity budget | The storm moves to where its vorticity tendency is largest: advection of the vortex by the environment and of the environment by the vortex, solved for the motion each step. |
| Barotropic model | A limited-area non-divergent model (80 km grid, 73 x 73 cells, Arakawa Jacobian [9], sine-transform Poisson solver, sponge boundary) with a Rankine bogus vortex sized from the observed outer strength. |
| Physics ensemble | 24 members with streamfunction perturbations, larger over data-void oceans and doubling every 60 hours; its spread also widens the cone. |
The thirteen members of the shipped consensus: xtrp6, cliper, analog, budget_mix, evo12, med_anom48,
int_anom48, budget_anom96, evo_anom48, evo_anom96, ens48_mean, baro_res12, baro.
Members are combined in along-track and cross-track coordinates relative to a reference member, with a separate weight vector per lead for each direction [10]. Weights are constrained to the simplex and fitted by accelerated projected gradient descent (FISTA [11]) with an exact Lipschitz step; an unconstrained fit diverged once more than eight members were present. Regime-specific and selective variants were tried and were worse in leave-one-season-out cross-validation, so one global set of weights ships.
Figure 1. Mean track error on the held-out 2018, 2020, 2021 and 2022 seasons, all basins, homogeneous sample.
| Track error (km) | 6 h | 12 h | 24 h | 36 h | 48 h | 72 h | 96 h | 120 h |
|---|---|---|---|---|---|---|---|---|
| Forecasts | 4,217 | 3,983 | 3,559 | 3,177 | 2,826 | 2,200 | 1,677 | 1,262 |
| Strongest extrapolation | 33 | 74 | 179 | 303 | 442 | 751 | 1,086 | 1,417 |
| CLIPER (rebuilt, 1980-2014) | 32 | 70 | 163 | 268 | 378 | 589 | 769 | 914 |
| NatureV1 physics consensus | 29 | 59 | 127 | 207 | 301 | 515 | 719 | 884 |
| Skill against extrapolation | +12% | +21% | +29% | +32% | +32% | +31% | +34% | +38% |
Table 1. Every 90% interval of the improvement over extrapolation excludes zero, and the consensus also beats CLIPER at every lead. On the tuning seasons, in cross-validation, the same consensus scored 27/55/123/202/289/482/673/828 km, so there is no sign of overfitting to them.
Each teacher was tracked through its own WeatherBench 2 forecast, regridded to 1.5 degrees and started from the same position. Tracking at 1.5 degrees costs every teacher a little at 6-12 hours; they ran at 0.25 degrees.
| km | 6 h | 12 h | 24 h | 48 h | 72 h | 120 h |
|---|---|---|---|---|---|---|
| NatureV1 physics (2018, 2020) | 28 | 58 | 126 | 299 | 511 | 914 |
| GraphCast [12] | 49 | 54 | 67 | 102 | 162 | 296 |
| Physics + GraphCast, chosen per lead | 26 | 47 | 67 | 102 | 162 | 296 |
| Pangu-Weather [13] (2018-2022) | 49 | 58 | 69 | 101 | 151 | 278 |
| Physics + Pangu-Weather | 27 | 44 | 69 | 101 | 151 | 278 |
| IFS HRES (2018-2022) | 49 | 60 | 79 | 123 | 187 | 326 |
Table 2. The physics is far better than extrapolation and climatology and far worse than a modern global model beyond 6 hours. Combined, with weights that never see the scored season, it is never worse than the global model and is better at 6-12 hours. Distilling those models into NatureV1 is the route to their long-range skill.
With weights fitted on 2016-2017 only, the consensus scored 21/49/99/164/249/480/656/810 km at 6-120 hours against 6-hour extrapolation's 23/52/131/237/365/641/897/1173. During the stall over Grand Bahama, where the Bermuda High weakened and drifted east while the next trough stayed too far north to pick the storm up, its 48-hour error was 230 km against 341. The stall diagnostic (Newton search for saddle points of the steering flow) flags such cols explicitly.
Nine constructed scenarios (a Dorian-type col, ridge breakdown, trough capture, a loop, a Fujiwhara pair, a centre reformation, a sharp turn, a southern-hemisphere recurvature and a straight runner), with truth integrated through the evolving flow and the forecast shown only the start: the physics beats extrapolation at 48 and 72 hours in all nine (the Dorian stall 344 vs 552 km at 48 h and 471 vs 961 at 72 h; the loop 56 vs 416 at 48 h). It loses at 24 hours in four and at 120 hours in four, where the scenario's flow is unlike Earth's climatology and the climatological members pull the wrong way. A stall that only forms later is not flagged at the initial time.
Candidate disturbances are vorticity maxima found in the analysis. Each is scored by a logistic model with all pairwise and squared terms over thirteen features: 850 and 600 hPa vorticity and its 24-hour change, the Okubo-Weiss parameter, 600 hPa humidity, deep-layer shear, SST, the depth of the low, a warm-core measure, a genesis potential index, the candidate's age and latitude, and the closedness of its wave-relative pouch [14]. On the four unseen seasons (northern hemisphere, June-November, 259 formations) its Brier skill over climatology is +0.22, it is well calibrated (top third: forecast 12%, observed 13%), and at a 30% threshold it flags 68% of formations a median 24 hours ahead, with 52% of alarms false.
pip install naturev1 from naturev1.cyclone import physics_forecast out = physics_forecast(case, env, climatology, analogs) # track, members, cone, stall, ridge, regime, intensity
Code, fitted coefficients and the hindcast harness are Apache-2.0 at pypi.org/project/naturev1; the model
card is at huggingface.co/CorxLabs/NatureV1-500.