Skip to content
← All method notes

Method note

Local wind from the fleet’s own tracks

How a ground-referenced wind direction is inferred from boats on opposite tacks, and why the boat being scored never contributes to its own estimate.

Evidence from opposite tacks

Every boat’s steady sailing is cut into 30 s blocks. A block needs 24 steady seconds above 3 kn and gives a median position and a mean course. Upwind blocks must sail 15–80° off the course axis, downwind blocks 105–175°.

Two blocks from different boats at the same moment, on opposite tacks (or gybes) and within 600 m of each other, make a pair. The bisector of their courses is a direction observation at the midpoint, reversed for gybing pairs. A bisector more than 40° off the course axis is discarded.

An estimate at one place and time

An estimate uses pairs within 900 m and 180 s. Upwind pairs are tried first and gybing pairs only when upwind evidence is short. It needs at least 2 boats on each tack and 4 different boats in all; a boat that appears in many pairs is down-weighted so repeats do not count as independent.

Pairs are weighted by distance and age on scales of 450 m and 90 s. Pairs more than 20° from the robust centre are dropped, and a gently penalised plane in east, north and time follows gradual shifts and differences across the course. An estimate is refused when the fit would correct more than 12° at the query point, lean more than 20° per 450 m or 20° per 90 s, or leave more than 12° of scatter.

Leave one boat out

When a boat is scored, every pair it belongs to is removed before the fit. Its own course therefore cannot pull the wind toward it, and a boat pointing unusually high or low does not shift the reference it is judged against. The wind map shows the fit from all boats; the scoring always refits without the boat.

Where the evidence is missing, the estimate is missing. Nothing is extrapolated past the support radius and window, and a missing wind leaves the sample unscored rather than falling back to the course axis.

What it cannot see

Course over ground includes current and leeway, so the direction is ground-referenced, not true wind. Boats sailing different angles on the two tacks look like a shift. The plane smooths sharp gradients. Wind speed is not estimated at all.

The figures, one by one

Local wind direction

Inferred from the fleet’s own tracks. Boats on opposite tacks (or gybes) within 600 m at the same moment give a bisector; bisectors within 900 m and 180 s are weighted by distance and age and fitted with a gentle local plane. At least 2 boats on each tack and 4 boats in all must contribute, and the boat being scored is left out of its own estimate.

Unit
degrees true, ground-referenced
Reading it
Direction the wind comes from.
Scope
At a place and time with enough independent opposite-tack evidence; elsewhere, missing.
Rules this figure depends on, read from the analysis code
RuleValueSource
Opposite-tack pair distance600 mlocal-wind.ts · LOCAL_WIND_POLICY.pairRadiusM
Query radius900 mlocal-wind.ts · LOCAL_WIND_POLICY.radiusM
Query time window either side180 slocal-wind.ts · LOCAL_WIND_POLICY.windowSeconds
Boats needed on each tack2 boatslocal-wind.ts · LOCAL_WIND_POLICY.minDonorsPerSide
Distinct donor boats4 boatslocal-wind.ts · LOCAL_WIND_RULES.minDonorBoats
Largest residual scatter12°local-wind.ts · LOCAL_WIND_POLICY.maxScatterDeg

Gybe-based wind share

Upwind pairs are used when they support an estimate; otherwise gybing pairs are tried. Boats sail different angles on the two gybes more often than on the two tacks, so a high share deserves more caution.

Unit
% of matched samples
Reading it
Higher means more of the result leans on downwind evidence.
Scope
Matched-time weighted over the selected races.
Rules this figure depends on, read from the analysis code
RuleValueSource
Upwind donor course off the axis15–80°local-wind.ts · LOCAL_WIND_RULES.upwindCourseDeg
Downwind donor course off the axis105–175°local-wind.ts · LOCAL_WIND_RULES.downwindCourseDeg

Analysis version: local-bisector-1.The numbers in this note are read from the same code that computes the figures, so they change when it does.