ONNWX Forecasts
⚠ Experimental personal forecast — not an official warning. For watches & warnings use Environment and Climate Change Canada alerts.

Methodology

Status: experimental, personal research forecast by @derecho_series (#onwx). It is not an official forecast or warning. Always follow Environment and Climate Change Canada (ECCC) alerts.

Pipeline

  1. Every run fetches the latest hourly Open-Meteo forecast (2 m T/Td, 10 m wind & gusts, MSLP, precipitation, CAPE, lifted index, precipitable water, freezing level, and temperature / height / wind / relative humidity at 925, 850, 700 and 500 hPa) on a ~0.5° × 0.6° point mesh over 41–47.5°N, 85.5–72°W (wide enough to include the upwind lakes), plus Great Lakes surface-water temperatures at open-water sample points.
  2. Deep-layer (sfc–500 hPa) and low-level (sfc–850 hPa) bulk shear are computed; storm-relative helicity is a shear-based proxy.
  3. Products are computed every 3 h from now to +48 h, interpolated to 0.05° and smoothed for contouring.
  4. At +6 h and +12 h the Control Thunderstorm Volatility Index is blended 50/50 (where its grid overlaps) with the ML spatial forecaster — a ConvLSTM + U-Net residual (Δ-state, GraphCast-inspired) model trained on ERA5 1.5° Ontario grids — initialised from the last four 6-hourly Open-Meteo frames.

Severe weather

Severe Thunderstorm Parameter (1–10)

The original machine-learning model (formerly “Severe Weather Index”), restored Nov 1 2026 with the exact pipeline that made the Sept 2 2026 render. For each map time the Ontario spatial forecaster (a ConvLSTM + U-Net residual model, GraphCast-inspired, trained on ERA5 Ontario grids with constraints drawn from @derecho_series posts) takes the four 6-hourly Open-Meteo frames ending 6 hours earlier and predicts the fields 6 hours ahead. The original index is then computed on those predicted fields: CAPE, 0–6 km shear and storm-relative helicity, scored against the rest of the map plus absolute terms (CAPE/2000, shear/25 m/s, helicity/200), with a significant-severe bonus. Original colour scale, levels every 0.5.
Environment ceiling (Nov 1 2026): because part of the original score is relative to the rest of the map, quiet days used to show high values in the relatively best area. The map now keeps the original pattern but caps it with an absolute ceiling built from the same ingredients as the Control damper:
Parameter = min(original value, C), C = 10 × f(CAPE) × f(shear) × f(profile). f(CAPE) runs 0→1 from 100 to 1200 J/kg; f(shear) runs 0.55→1 for 0–6 km shear of 8→18 m/s; f(profile) = f(2 m dew point 8→13 °C) × (0.6→1 for 700–500 hPa lapse rate 5→6.5 °C/km), fading to 1 as CAPE rises from 1000 to 2500 J/kg. The ceiling has no floor, so on a stable day it is near 0 and values under 1 are not drawn: a blank map.
Validation (Open-Meteo historical-forecast archive, 14 cases): event-day maxima 6.1–9.3 (6 of 6 at 6 or higher; Sept 2 2026 stays at 8.4). Mundane-day maxima 0.1–8.1 (2 of 8 at 6 or higher, down from 8 of 8 without the ceiling): Aug 5 2024 (6.7) and May 15 2025 (8.1, at the south-west edge of the map) still read high because CAPE and moisture were genuinely high.

Control Thunderstorm Volatility Index (1–10)

The previous live version of the index (map-relative scores with floors and a CAPE gate, plus the ML blend), unchanged, with a damper for marginal environments:
Index = 1 + (Parameter − 1) × D. D is a product of smooth tapers, each running from 0.4 at the marginal end to 1 at the robust end: CAPE 300→1000 J/kg, 2 m temperature 18→22 °C, 2 m dew point 12→16 °C, 700–500 hPa lapse rate 5.5→6.5 °C/km. Because CAPE already reflects the temperature profile, the temperature, dew point and lapse-rate tapers fade out as CAPE rises from 1000 to 2500 J/kg. Damping only applies when the profile and CAPE are both marginal. When the ingredients are robust, D = 1 and nothing changes.
Validation (Open-Meteo historical-forecast archive, 14 cases, without the ML blend): event-day maxima: Parameter 9.1–10.0, Control 8.5–10.0 (6 of 6 at 6 or higher). Mundane-day maxima: Parameter 7.9–10.0 (8 of 8 at 6 or higher), Control 2.9–10.0 (mean 6.2, 3 of 8 at 6 or higher). The damper removes most false alarms on cool, low-CAPE days. It cannot separate hot, high-CAPE days without storms (Jul 8 2025, May 15 2025 stay near 10). The earlier multi-ingredient rebuild has been retired.

Lightning Probability (%)

Physically motivated, not calibrated against lightning observations (no lightning flash-density truth is available in the ERA5 stores this pipeline can reach): buoyancy σ((CAPE−250)/200)·σ((0.5−LI)/1.2), charge-separation-zone instability from the 700–500 hPa lapse (≈ −10 to −20 °C layer), 700 hPa moisture and model precipitation as an updraft proxy. Treat the percentages as relative, not reliable frequencies.

Winter

Snowsquall Parameter (0, rain/mix 1–3, snow 1–10)

Output scale: blank (0) = no lake-effect precipitation possible; green 1–3 = lake-effect rain or mixed precipitation (hard-capped at 3): the lake-effect ingredients are met but the profile is too warm for snow (850 hPa above −5 °C, a warm layer, or 2 m above +2 °C); snow colours 1–10 only where the temperature profile supports snow. Map labels show each lake’s surface temperature (Open-Meteo surface temperature over open water at run start) and observed 2 m temperatures (METAR reports from aviationweather.gov at run time). Validation (ERA5): quiet days 8/8 blank for snow; 4 autumn cold-outbreak cases (assumed lake-effect rain, not radar-verified) gave rain/mix on 2/4 (max 3.0 on 2017-10-25), none on 2/4; snow events showed no rain/mix.
A physically constrained lake-effect model (replaces the earlier heuristic). For each lake (Superior, Michigan, Huron, Georgian Bay, Erie, Ontario) the column over the water is scored with that lake’s surface-water temperature: Ingredients are multiplied (each is necessary). Bands are then placed by tracing upwind from every grid point along the 925–850 hPa steering wind: fetch over each lake, the mean column score over that water, and distance inland from the lee shore (~90 km e-folding) set the value; a 2 m temperature guard removes rain cases.
Hard gates (the value is 0, blank, when any fails, with a smooth taper just above each threshold): lake–850 ΔT ≥ 10 °C; 850 hPa T ≤ −5 °C; no layer above 0 °C at 850/700 hPa; 2 m T ≤ +2 °C; open, ice-free water; 850 hPa RH ≥ 55%; 850–700 hPa direction change ≤ 60°; 850 hPa wind 3–30 m/s; over-water fetch ≥ 50 km; no capping inversion below ~1000 m.
ERA5 validation (11 documented lake-effect times, 8 warm/summer times and 6 cold-season non-squall times, 2007–2022): event peaks averaged 4.25 (median 4.48, lowest 1.22); warm/summer peaks averaged 1.04 (highest 1.25); cold non-squall peaks averaged 1.15 (highest 1.88). Values ≥ 4 occurred in 6/11 event times, 0/8 warm/summer and 0/6 cold times; ≥ 3 in 9/11 events and 0/6 cold times. The cold non-squall days are assumed (not radar-checked). A small, partly tuned sample — not a skill score.

Snow totals (cm)

Hourly precipitation × a Kuchera-style temperature-dependent snow-to-liquid ratio, counted only in hours the temperature profile types as snow, accumulated since run start.

Precipitation Type and Intensity

Each grid point gets a type and a 1–10 intensity, shown as light-to-heavy shades of that type's colour: rain (green), snow (blue), freezing rain or ice pellets (pink) and mixed rain and snow (purple). Type: snow when 2 m T ≤ 1 °C and the warmest of 925/850 hPa ≤ 0.5 °C; freezing rain or ice pellets when 2 m T ≤ 0 °C with a warm layer above 0.5 °C; mixed when neither applies but 2 m T ≤ 2 °C and the warm layer ≤ 1.5 °C; otherwise rain. Blank below 0.1 mm/h. Intensity is the hourly precipitation rate (liquid equivalent) against these lower thresholds for levels 1 to 10:
Rain: 0.1, 0.25, 0.5, 1, 2, 3, 4.5, 6, 8, 10+ mm/h
Snow: 0.1, 0.2, 0.3, 0.5, 0.75, 1, 1.5, 2, 2.5, 3+ mm/h (about 1 to 3+ cm of snow per hour at 10:1)
Freezing rain / ice pellets: 0.1, 0.2, 0.3, 0.5, 0.75, 1, 1.5, 2, 3, 4+ mm/h
Mixed rain and snow: 0.1, 0.2, 0.4, 0.6, 1, 1.5, 2, 3, 4, 5+ mm/h
Snow and ice are scaled lower than rain because the same liquid rate is far more disruptive when frozen. Click the map for the type, intensity and rate.

Freezing Rain Ice Accretion (mm)

Precipitation typed as freezing rain (2 m T ≤ 0 °C with a warm nose > 1.5 °C at 925 or 850 hPa) × 0.6 accretion efficiency, accumulated. Ice pellets: warm nose 0.5–1.5 °C.

Precipitation

Precipitation (1 h, 6 h, 24 h, total) and Rain total (mm)

Model liquid-equivalent precipitation over the trailing window or since run start. Rain total counts only hours typed as rain from the temperature profile.

Heavy Rain / Flash Flood Potential (1–10)

1 + 9 × max(σ((1 h−15)/5), σ((6 h−35)/10)) × (0.5 + 0.3·σ((PWAT−30)/5) + 0.2·σ((q850·V850 − 0.12)/0.04)) — rainfall rate, precipitable water and 850 hPa moisture flux. No soil-moisture or urban-drainage information.

Wind

10 m Winds and Max Wind Gust (km/h)

Open-Meteo 10 m sustained wind speed (arrows show direction) and the highest model gust in the 3 h before the valid time. Gusts are raised by up to 10% within ~25 km of open water when the lake is more than ~5 °C warmer than the air (deeper mixing in cold air over warm water). No downslope term — southern Ontario has little terrain for it.

Regions: Southern Ontario and Newfoundland

Region selector

The map has two regions: Southern Ontario (default) and Newfoundland (the island; Labrador is not included). Old links without a region still open Southern Ontario; Newfoundland links add r=nl. Both regions are built in the same run, with the same 14 layers. Newfoundland maps use a satellite basemap, Newfoundland town labels and Newfoundland time (Newfoundland Standard Time / Newfoundland Daylight Time). Colour is drawn only over the island and about 25 km of coastal water, so there is no rectangular edge.

How each layer is made for Newfoundland

Combination maps (both regions)

Synoptic maps (both regions)

These three layers use a wider view than the other maps (Southern Ontario: 30–60°N, 106–56°W; Newfoundland: 34–64°N, 84–30°W) so whole weather systems fit on screen. Model data from Open-Meteo on a 1.25° mesh is smoothed onto a 0.5° grid.

Water levels

Newfoundland significant wave height

Open-Meteo Marine significant wave height (the average of the highest third of waves) with mean wave direction arrows; click for the wave period. Shown over water within about 230 km of the island.

Storm surge model

A point model at coastal ports (Newfoundland: St. John's, Argentia, Port aux Basques, Harbour Breton, Bonavista, Lewisporte, Botwood, Corner Brook, Lark Harbour; Southern Ontario: Lake Erie, Lake Ontario, Lake Huron and Georgian Bay ports). Surge is the sum of: Not included: resonance and sloshing after the wind stops (lake seiches oscillate for hours), coastally trapped waves, river flow, ice cover, the long-term lake level, and runup on individual beaches. Real surge lags the wind by a few hours on Lake Erie.

Validation (hindcasts, no tuning)

Weather from the Open-Meteo reanalysis archive; waves from the Open-Meteo Marine archive (not available for 2021, so Hurricane Larry has no wave setup). Observed surge: Fisheries and Oceans Canada observed minus predicted levels, and the United States National Oceanic and Atmospheric Administration hourly levels for Lake Erie (minus the 5-day pre-storm mean). Peak values are the largest absolute value in the window.
CaseObserved peak (m)Model peak (m)Peak error (m)Timing (h)Root-mean-square error (m)Correlation
Hurricane Larry, St. John's-0.55+0.37+0.93-40.200.16
Hurricane Larry, Argentia+1.40+0.40-1.00+10.320.20
Post-tropical Fiona, Port aux Basques+0.88+1.99+1.12+30.650.73
Post-tropical Fiona, Argentia+0.58+0.94+0.36+80.430.33
Hurricane Larry, Bonavista+0.46+0.38-0.07+10.130.53
Lake Erie seiche Dec 2022, Buffalo+2.37+2.51+0.14+50.370.97
Lake Erie seiche Dec 2022, Toledo-2.88-2.22+0.66+20.350.93
Lake Erie Halloween storm Oct 31 2019, Buffalo+1.90+1.56-0.34-30.180.93
Lake Erie Halloween storm Oct 31 2019, Toledo-1.60-1.31+0.29-40.260.87
Lake Erie is the strongest result (correlation 0.87–0.97, peaks within 0.15–0.66 m). Newfoundland is much weaker: wave setup is overdone at harbour tide gauges during Fiona (gauges sit in sheltered water), and the reanalysis winds are too weak and too smooth for a small fast hurricane like Larry, so Larry's surge is missed. Treat the Newfoundland surge layer as an indication of risk, not a forecast of water height.

Southern Ontario seiche: the physics model and the control formula

Lake Erie hindcasts, same weather and observations as above. Both are shown as separate layers, like the Severe Thunderstorm Parameter and its Control Thunderstorm Volatility Index: Storm surge / seiche is the physics model (wind stress with a speed-dependent drag over the lake length and depth, 3-hour mean lake wind, plus the inverse barometer) and stays primary because it fits the timing best (lower root-mean-square error in nine of ten cases); Seiche control uses the control formula (5-hour mean of sustained wind and gusts, 0.6 of the set-up at each end, plus the inverse barometer) and matches the peak heights more closely in most cases. Where the two agree, confidence is higher. Applying the full set-up at one end, as in a single hand calculation for one shore, roughly doubles the peaks against the gauges, so the site splits the tilt between the two ends.
CaseObserved peak (m)Physics model peak (m)Physics root-mean-square error (m)Physics correlationControl peak (m)Control root-mean-square error (m)Control correlation
Lake Erie Dec 2022, Buffalo+2.37+2.510.370.97+2.670.590.95
Lake Erie Dec 2022, Toledo-2.88-2.220.350.93-2.390.480.90
Lake Erie Oct 2019, Buffalo+1.90+1.560.180.93+1.880.290.92
Lake Erie Oct 2019, Toledo-1.60-1.310.260.87-1.750.390.85
Lake Erie Dec 2021, Buffalo+1.97+1.990.430.78+2.090.520.80
Lake Erie Dec 2021, Toledo-1.37-1.730.400.73-1.880.490.75
Lake Erie Mar 2021, Buffalo+1.53+0.830.220.70+1.110.220.76
Lake Erie Mar 2021, Toledo-0.62-0.680.200.60-0.990.270.61
Lake Erie Nov 2020, Buffalo+2.17+1.970.330.88+2.180.500.88
Lake Erie Nov 2020, Toledo-2.03-1.710.260.93-2.020.400.90

Shoreline inundation and erosion coefficients

Two 1–10 coefficients drawn as colour-coded shoreline segments of about 1.5 km (layers Shoreline inundation and Shoreline erosion, under Water levels). The water level on each segment comes from the control formula Sh = [(3.2e-6)/(g·zm)]·[W²·l]: in Southern Ontario from the Seiche control layer (5-hour mean lake wind, 0.6 of the set-up, placed along the lake axis); in Newfoundland from the new Surge control layer, which applies the formula with the onshore wind over the coastal fetch and the depth at the nearest port, capped at a quarter of the depth, plus the inverse barometer, the predicted tide at the nearest Fisheries and Oceans Canada port and a wave setup of about 0.1 of the wave height. Waves are fetch-limited on the lakes and from the Open-Meteo Marine model at sea, reduced by the angle of approach.

Inundation compares the total water level (water level plus wave runup) with the height of the land behind the shore, read from the Copernicus 30 m elevation model along a 600 m inland profile, or with the crest of a structure. Erosion builds up over 12 hours from the time the water plus half the runup stays above the toe of the shore, weighted by wave energy and by how easily the shore erodes.

Shore typeErodibility
Bluff (glacial till)1.0
Sand, low beach0.7
Rocky shore with sediment0.4
Limestone bedrock0.3
Bedrock, bedrock cliff, harbour0.2
Pier, wharf, groyne0.15
Breakwater, seawall0.1

Protected structures (harbours, piers, wharves, breakwaters, seawalls) come from OpenStreetMap. In Newfoundland they are included with low erodibility and an overtopping test against the crest height: the tagged height where present, otherwise the elevation at the structure, otherwise an estimated 3.0 m (marked "estimated" in the popup). In Southern Ontario only natural shores are shown. Each popup gives the segment type, both coefficients, water level, tide, runup, total level, crest or backshore height and erodibility.

Hindcasts: Lake Erie east end, Dec 23 2022 — 10 at the peak on both coefficients, 34 of 79 segments at 7 or more for inundation, water level 1.45 m on the south shore toward Buffalo at 11:00 AM; the Buffalo gauge rose about 2.4 m. Post-tropical Fiona, Sep 24 2022 — southwest coast 10 on both, 33 of 93 segments at 7 or more for inundation and 76 for erosion; the Port aux Basques wharf (crest estimated at 3.0 m) is overtopped.

Limitations: the elevation model measures surfaces (buildings and trees raise it); the Natural Earth shoreline is off by hundreds of metres in places, so backshore heights have floors of 1 m on the lakes and 2 m at sea; tide is taken at the nearest port; crest heights are mostly estimated; ice cover, beach width and storm duration beyond 12 hours are ignored. The coefficients rank relative risk and are not calibrated against surveyed damage.

Limitations

Data: Open-Meteo (CC BY 4.0); ERA5 (Copernicus/ECMWF) via WeatherBench2 and ARCO-ERA5 for validation. Basemap © OpenStreetMap contributors © Esri. Map library: Leaflet.