WindWindow How it works

How Wind Window works

the whole pipeline, one page

Wind Window reads four weather models four times a day, averages two of them into one forecast, and saves every forecast it publishes. Later, each saved forecast is checked against what the wind actually did. That check is the point of the site. Everything else is presentation.

The short version

1

Fetch each model on its own

Four times a day, at 01, 07, 13 and 19 UTC, we ask Open-Meteo for four models across all 26 spots. Each model gets its own request. Open-Meteo would happily merge them into one, but then a single model going down would quietly drag the others with it, and we could never score them separately.

2

Save it before doing anything with it

Every raw response is written to storage before we calculate a single number from it, and nothing ever overwrites it. If the rest of the run falls over, the part that matters is already done. A missed run leaves a hole in the record that no amount of later work can fill.

3

Average the two ECMWF models

The headline number is a straight average of ECMWF IFS and ECMWF AIFS. One is a physics model and the other machine learning, both from the same agency, and they get things wrong in different ways.

Direction needs more care. Averaging 350° and 10° the ordinary way gives 180°, a southerly where there is a northerly, so directions are averaged around the compass instead.

4

Work out what it means on the water

Cross-shore angle comes from the wind direction and the way the beach faces. Kite size comes from the wind and your weight, and in boating mode that row names the water instead. We also show how far apart the four models are, which becomes a rough confidence level.

5

Score it later against measured wind

Each night the saved forecasts are compared against real station readings, and the error is recorded for every model and every forecast range. This is the step that is not finished yet. The next section explains why.

Why there are no accuracy scores yet

Not for want of measured wind. Eleven Bureau of Meteorology stations are connected and read every ten minutes: five on Port Phillip, five on the Perth coast, and one above Lake Eildon. Thirteen spots sit close enough to a station to be scored against it. The three Lake Eildon spots are not among them, because the only station near the lake is a fire tower 400 m up a ridge, which measures nothing like the water.

What is missing is overlap. To score a forecast you need the same hour from both sides: what we said, and what happened. The archive has not been running long enough to have many of those pairs. An error worked out from one windy afternoon would move several knots on the next one.

So the scores stay hidden until they settle down. When they do appear, they will cover the whole archive at once rather than the last few days.

The readings themselves are already on the forecast page

The Live stations panel shows what those stations are measuring right now, each with the last 48 hours behind it. The Bureau publishes a combined state feed every ten minutes, which is the finest resolution any of its public products offer, so that is what we read. A slower per-station feed fills in behind it once an hour. The page also refreshes itself every five minutes, so a tab left open in a car park does not go stale.

It is the same data Baywinds has plotted for years. Baywinds is a display of these same Bureau stations rather than a source of its own. It draws today, yesterday and the week as separate graphs, and we draw a rolling 48 hours. Same readings, different choice.

The Bureau's anonymous feeds are free to use for non-commercial purposes, and this site carries no advertising, subscription or revenue, so republishing them with credit is within those terms. Earning money is what would change that, not the credit. If revenue ever starts, this either moves to a Bureau data licence or the live display goes off and the readings go back to scoring forecasts only. It is written down on the data sources page so it does not get quietly forgotten.

A club-owned station has neither problem, because a club can grant the right to republish outright. That is why we keep asking clubs.

The archive is why this matters now rather than later. The moment a station connects, every forecast published since launch can be scored against it at once. The first numbers on that page will cover months, not days. A site that only started saving forecasts the day it found a station would be a year behind.

We could fill the gap with model spread and call it accuracy. We do show spread, but not under that heading, because it only measures whether the models agree with each other. All four can agree and all four be wrong in the same direction, which is exactly what a sea-breeze bias looks like.

What the blend is, and what it is not

It is the average of two models. That is all it is today, and the site says so on every screen.

What it is meant to become is the interesting part. Global models run on a grid about 25 km across, and your spot is not 25 km across. The model knows nothing about the headland, the shallow bank, the way the bay funnels a south-westerly, or the fact that the sea breeze at your beach always turns up ninety minutes late and two knots under. Those errors are not random. They repeat, which means they can be learned.

Learning them takes months of forecasts paired with observations, which is the archive being built right now. Once there is enough of it, each model gets a correction for that spot and that forecast range before the averaging, and the blend starts being worth more than the models that go into it. The code already has the gap where that correction will sit.

We will not apply a correction before we can show it works. An adjustment tuned by feel, because it makes the numbers look better, is worse than no adjustment at all. It would destroy the one thing that makes the archive worth having: that every forecast in it came out of a process we can describe exactly.

Reading the matrix

  • Wind Window — the blend. The number you would use.
  • Gust — the average of the gusts the blended models publish. AIFS does not publish one, so today this is the IFS gust on its own.
  • Cross-shore — where the wind sits relative to the beach. Onshore pushes you back to the sand, offshore pushes you out to sea, and cross-on is what most people want. This is geometry, not a safety assessment.
  • Kite — a starting size for an intermediate freerider at the weight you set. Your kit and your ability move it.
  • Water — in boating mode, the same wind named as a surface: glass, ripple, chop or rough. It replaces the kite row and adds nothing new, because what really decides chop is fetch, and it does not know the fetch at your ramp.
  • The four model rows — each model's own raw wind, unblended, so you can see where they disagree instead of taking our word for it.
  • Model spread — how far apart the four models are. Small means they agree with each other. It does not mean they are right.
  • Measured — what the nearest station actually recorded that hour. Ringed cells rather than filled ones: measured and forecast never wear the same shape on this site.
  • Error — forecast minus measured, in knots. A positive number means we called more wind than turned up. It is blank for hours that were already over when the run started, because scoring ourselves on those would flatter us.
  • Wave — display only, never blended and never scored. In enclosed water and rivers the values mean very little, and they are shown as they come rather than quietly hidden.

Every row label carries a small i. It opens where that row comes from, and for a fetched model it links to the exact API call behind it, so you can read the raw numbers yourself. The data sources page lists all of them in one place.

Where the data comes from

Four models, from three agencies, all delivered through Open-Meteo: ECMWF IFS and ECMWF AIFS from the European Centre for Medium-Range Weather Forecasts, GFS from NOAA, and ICON from Deutscher Wetterdienst. The first two are blended. All four are shown, all four are archived, and all four will be scored on their own.

Coastlines and estuaries come from OpenStreetMap, trimmed to each region and simplified to about 50 m when the site is built. The arrows on the map are real fetched values at each grid point rather than a smooth field drawn between spots, which would look better and mean less.

Honest limitations

  • No bias correction is applied. The blend is a plain average.
  • No accuracy scores yet. Eleven stations are connected, but the archive needs more overlapping hours before a score would mean anything.
  • Global models at about 25 km miss local effects, and the coast is where that hurts most.
  • Wave data is unchecked, and in a bay or a river it means very little.
  • Maps are schematic. Do not navigate by them.
  • Forecasts refresh four times a day, not continuously. The status page always shows when the last run landed.

If something here looks wrong, it probably is, and the fastest way to check is the raw-data link on the row in question.