The math

Measuring sail degradation

A sail costs as much as a small car and wears out invisibly. This page describes how the platform measures whether one has slowed down, what the confidence interval on that measurement means, and the sixteen things the method cannot tell you.

The question

Is this sail slower than it was when it was new? The difficulty is not the measurement. It is that everything else changed too: the crew, the rig tune, the sea state, the wind instrument’s calibration, and the team’s skill with that sail. A number that ignores all of that is not evidence, and a number that claims to have removed all of it is worse.

The approach here is to condition on what can be conditioned on, to put an interval on everything that remains, and to name what is left over.

1 Three numbers per second, not one

The simple whole-life view compares boat speed with the polar target at the angle the boat was sailing:

BSP % = 100 × boat speed / target boat speed (TWS, |TWA|)

That number has one blind spot, and it is the failure mode that matters most. A tired sail can hold target speed by sailing lower. The boat is doing the speed the polar asks for, so BSP % reads 100, and the boat is going nowhere upwind. So two more numbers are computed for every scored second:

VMG % = 100 × boat speed × |cos TWA| / V*(TWS) Δθ = |TWA| − θ*(TWS)

Read as a sentence: how much of the best speed toward the wind that this boat could achieve at this wind speed was it actually achieving, and how many degrees off the best angle was it sailing?

VMG % is the headline, because it falls whether the boat is slower or lower. Δθ is positive when the boat is sailing lower than optimum upwind, or deeper than optimum downwind — the direction that costs in both cases.

Where the optimum comes from

V* and θ* are the best speed made good and the angle that achieves it, per wind speed, read off the boat’s own polar. They are found by searching the polar’s populated cells for the largest boat speed × cos TWA at each wind speed, then interpolating linearly in wind speed and clamping flat outside the table’s range.

Searching cells rather than sweeping the interpolated surface is a deliberate correction. Expedition-format polar tables store the beat and run angles as their own wind-angle columns, and the surface between two stored columns is flat, so a fine sweep of the surface picks an angle that is an artefact of the interpolation. On the reference table at 8 knots a surface sweep lands on 37.6°; the table itself says 41.8°.

A consequence, named because it can be measured: on a polar whose rows do not all cover the same angles, this cell search does not equal a sweep of the interpolated surface, and the two can differ by a degree or more at wind speeds where the table is sparse.

2 The unit of evidence is a steady segment

A percentage measured through a tack says nothing about a sail. So the sailing is first cut into steady segments, using the same rules the calibration analysis uses — they are not tunable per sail, and both features move together if they ever change:

  • Upwind is recognised between 25° and 65° of true wind angle, downwind between 120° and 175°. Reaching is not scored at all.
  • Fifteen seconds are trimmed from both ends of every run, and what remains must be at least thirty seconds long and above two knots.
  • A segment is kept only if at least 20 seconds of it scored — seconds where the polar has a target and an optimum to compare against.

Each surviving segment is reduced to medians: wind speed, wind angle, boat speed and the three metrics, plus the median absolute deviation of each, which is the scatter the segment carries anyway. The segment is filed under its mode (upwind or downwind) and its 2-knot wind band, so a light-air segment is never averaged with a breeze-on one.

Which sail a segment belongs to

A segment counts for a sail if and only if the whole segment lies inside one closed, non-voided interval in that sail’s log.

A segment that straddles a sail change belongs to neither sail and is counted as an exclusion on the page. Every other sail whose interval also contains the segment is recorded as a companion: the segment is evidence about this sail in that combination.

3 Segments to days to windows

Aggregation is by median, twice, with equal weights:

day level = median over that day's segments in the cell window level = median over the days in the window

Read as a sentence: every segment counts the same within a day, and every day counts the same within a window.

Equal weights are the point. A single long day of flat-water sailing would otherwise dominate a season, and a day is the unit on which conditions are shared — which is what makes it the right unit to count.

The two windows

The sail is compared with itself. Prime is its earliest sailing and current is its latest, and both are measured in flying time rather than calendar time:

prime = earliest days until 10 flying hours AND 5 days current = latest days until 10 flying hours AND 5 days each window ≤ 40 % of the sail's total hours if 5 days would exceed that share: the most days that fit, never fewer than 3 the windows never overlap

Five days is what a confidence interval needs (section 4), so a window takes five whenever they fit inside 40 % of the sail’s hours. A sail whose sailing days are long enough that a fifth day would take the window past that share keeps the days that fit — four, or three — and its difference is served without an interval, with a note saying so.

A sail with less than 20 flying hours or 6 sailing days cannot fill two non-overlapping windows, and the platform says so rather than shrinking the windows until a number appears.

These amounts — 10 hours, 5 days, the 3-day minimum, 40 %, and the 20-hour and 6-day floor — are provisional. They were chosen before the first full season of segment data existed, and they are named here rather than on the analysis screen precisely because they are expected to change once there is enough data to choose them from measurement.

The horizontal axis of the trend is the sail’s cumulative flying hours, so two sails bought a year apart are read on the same scale. The calendar and the delivery date are shown as a reading aid and drive no number.

4 Evidence tiers, and hollow cells

Every mode × band cell is graded before it is served, and the grade decides what the platform is willing to say:

  • Counts only — fewer than 3 segments or fewer than 300 scored seconds. The counts are served and no level is.
  • Thin — at least 3 segments and 300 seconds, but fewer than 3 sailing days. A level is served and flagged; no difference is computed against it, in either direction.
  • Measured — at least 3 days, 6 segments and 600 seconds. A difference is served. A confidence interval is served only when both windows have at least 5 days in the cell; otherwise the difference is served with no interval and a note saying why.

A cell that fails a gate is drawn hollow with its counts rather than left out. A gap with no explanation reads as an absence of evidence in the wrong direction: the reader cannot tell whether the sail was never used in that band or whether the platform dropped it.

5 The confidence interval

Every difference the platform reports carries an interval, and the interval is computed by a day-clustered bootstrap: resample days with replacement, 2000 times, recompute the whole difference each time, and take the 2.5th and 97.5th percentiles of the result.

Days are resampled, not segments. Two segments from the same afternoon are not two independent measurements of a sail — they are two measurements of one afternoon.

Treating segments as independent — dividing a spread by the square root of the segment count — would produce intervals several times too narrow and would report a difference as certain on the strength of one windy Saturday. That is why it is not done here.

The bootstrap is seeded from the sail, the mode, the band and the algorithm version, so the same data always produces the same interval: a number that moved when you refreshed the page would be unusable in a conversation with a sailmaker.

The interval is labelled approximate 95 % throughout. Percentile bootstrap coverage is approximate, particularly with few clusters, and the label says so.

What the platform is allowed to conclude

interval entirely below zero → down interval entirely above zero → up interval contains zero → no detectable change no interval → not enough evidence

There is no threshold anywhere in that table, and no fifth row. A difference of four points with an interval running from −9 to +1 reads no detectable change; a difference of 0.4 points with an interval from −0.7 to −0.1 reads down. Colour follows the same rule: the analysis screen uses green or red only where the interval excludes zero.

What a cell can resolve at all

Each cell also reports its minimum resolvable effect: the size of difference that this many days could distinguish from zero. A band that cannot resolve two points has not shown a sail to be fine. It has shown that this much sailing cannot tell.

6 The trend over the sail’s life

Beside the two-window comparison, each cell carries a Theil–Sen slope over all of its days — the median of the slopes of every pair of points — reported in VMG points per 100 flying hours. A slope is computed at 5 days and given an interval at 8.

Theil–Sen rather than least squares because one exceptional day moves a least-squares line and does not move a median of pairwise slopes, and a season contains exceptional days.

7 Two sails on the same day

The strongest comparison the platform can make is not a sail against its own past. It is two sails against each other on the same day.

Anything that made the whole boat fast or slow on a day — the sea state, the crew, the rig, the calibration in force — is common to both sails and subtracts out of the difference between them.

For a mode and a band, take the days on which both sails have at least two segments in that cell, compute the difference on each day, and take the median across days with a bootstrap interval over the same days. The sign count is reported beside it — on how many of the paired days was the first sail ahead — because a count of days is not moved by one exceptional day at all.

Three paired days are needed for a number and five for an interval.

What does not cancel is drift within a day. If one sail flew the morning and the other the afternoon, the difference carries whatever changed between them. Alternating the two sails across the day is what makes this comparison strongest.

8 The boat’s own drift

A mainsail that is up all day cannot be compared with anything. So beside every cell the platform computes the same prime-versus-current difference over every segment the boat sailed in that mode and band, whatever sail was up. That is the boat’s own drift: crew, rig, sea state, a season of improvement.

If a sail’s difference sits inside the interval on the boat’s drift, the platform says indistinguishable from the boat’s own drift — which is the correct answer for an always-up mainsail, and which points at the paired comparison as the only way to separate the two.

9 What the two boards say

A cell that has enough evidence on both tacks is also compared one board at a time. Port against port, starboard against starboard, same two windows, same interval.

A sail is symmetric and wear is not tack-selective. A wind-angle offset, a masthead misalignment and a helm who is better on one board all are.

So when the difference appears on one board and not the other, the platform says so. The rule is arithmetic over two published intervals: exactly one of them excludes zero. It is not a judgement, and it is computed on the server so that two screens cannot disagree about it.

A one-board difference is a reason to check the boat’s wind calibration before calling the sailmaker. It is not proof that the sail is fine — a sail can be slow on both boards and the instrument wrong on one — but it is the cheaper thing to rule out first.

Both boards are shown whenever both cleared the gates, not only when they disagree. Seeing that port and starboard say the same thing is a reason to trust a cell, and it is worth as much as the warning.

10 What else the instruments recorded

Beside every window and every wind band the platform shows what the boat’s other instruments recorded while that sailing was happening: heel, the movement of fore-and-aft trim, the movement of the rudder, and rig load where a boat measures it. Heel is shown as a level with its spread beside it; trim and rudder are shown as spreads only, because the spread is the reading — trim movement is what this data has that tracks sea state, and rudder movement is how hard the helm was working.

These are displayed and none of them is modelled. No number anywhere in the analysis is computed from, adjusted for, or conditioned on anything in this list.

The reason is that each one is confounded by something the platform cannot see. Rig load tracks the wind as much as the trim. Rudder movement tracks the sea as much as the steering. Which quantities exist at all varies by boat and by day. A model built on three unobserved confounds produces a confident wrong number, and a confident wrong number is worse than an uncertain right one.

What they are for is the reader. Two windows compared at 22 degrees of heel and 26 degrees of heel are not the same comparison, and the only way to weigh that is to have both numbers on the same row as the difference.

A quantity the boat does not record is shown as not recorded rather than left out. A boat with no forestay sensor and a boat under no forestay load are different facts, and a value dropped from a list reads as the second. The count of segments that carried each quantity is shown too, so an instrument that came on partway through a season is visible rather than silent.

11 The segments underneath

Every count on the analysis is a claim about rows. Those rows are readable: for any window, or any single wind band, the platform lists the steady segments the number was computed from — day, time, board, wind speed, sailed angle, both second counts, the three metrics, what else was flying, and what the other instruments recorded.

The list is the same evidence with the aggregation left off: the same cache, the same attribution rule, the same gate. A segment appears in a sail’s list exactly when it counted towards that sail’s numbers, which is why a segment that straddles a sail change appears in neither list and is counted as excluded on both.

A row is already a reduction. Each value on it is the median over that segment’s own seconds, not a second-by-second record, so a segment the detector called steady can still contain a lull. The spread beside a covariate is what says how much things moved inside it.

12 Keeping it fast, and keeping it current

Segments are computed once per boat and sailing day and stored. Two fingerprints decide when a stored day is stale:

  • The yardstick key — the algorithm version, the active polar, every calibration entry effective on or before that day, and every upwash correction. Enter a calibration correction dated inside one day and exactly that day recomputes; upload a new polar and every day does.
  • The telemetry key — the imports overlapping the day and how many rows each holds. A live import extends a row count, a deleted race removes rows, and either moves the key.

A request computes a bounded number of missing days, so the first open of a long season returns a partial answer, says how many days are ready, and asks the browser to come back. Everything shown is measured on the days that are ready.

Editing the sail log never invalidates a stored day. Attribution happens when the answer is read, so correcting yesterday’s hours changes which sail a segment counts for without recomputing a single second.

13 The sixteen limits

Named here rather than left to be discovered. Each is a real constraint on what the numbers can be used for.

  1. Reaching is not measured. Only upwind and downwind sailing is segmented, so a sail that mostly reaches — most asymmetrics on most courses — has little evidence here.
  2. The polar is the yardstick, and it may be wrong. Every number is relative to the boat’s active polar. A polar that is optimistic in light air makes every sail look slow in light air.
  3. The polar re-levels the whole history. Every day is measured against the polar active now, including days sailed before it was uploaded. This is deliberate — the alternative puts a permanent step in the middle of a healthy sail’s chart — but it means an old chart can change.
  4. Wind angle is instrument data. VMG and the pointing deficit are both computed from true wind angle, which comes from the boat’s wind instrument through its calibration. A wind instrument error that changes with the season looks exactly like a sail that changed with the season.
  5. A segment that straddles a sail change is discarded. Boats that change sails often lose more evidence to this than boats that do not.
  6. Companions are recorded, not modelled. The platform reports which sails were up together and does not divide the boat’s speed between them. A jib measured only with the staysail up is a jib measured with the staysail up.
  7. The window amounts are provisional. The 10-hour, 5-day and 40 % figures in section 3, and the 3-day minimum beneath them, were chosen before the data existed to choose them from.
  8. An interval is approximate. Percentile bootstrap coverage with a handful of day clusters is approximate, and with very few days it can be optimistic.
  9. Days are not fully independent either. Two days of one regatta in one bay share more than two days a year apart, and the bootstrap treats them as equals.
  10. Covariates are displayed and never modelled. Heel, trim movement, rudder movement and rig loads are shown beside every window and every wind band (section 10), and nothing in the analysis is computed from any of them. Which of them exist varies by boat and by day, and rig loads track the wind as much as the trim, so a model built on them would produce a confident wrong number.
  11. Day effects are not decomposed. For a sail that is always up, separating the sail from the day is not possible from this data at all — not difficult, not identifiable. The paired comparison is the answer, and it needs crossover days.
  12. Within-day drift does not cancel in a pairing. Two sails compared across a morning and an afternoon carry whatever changed between them.
  13. A one-board difference is probably not the sail. When a difference appears on one tack and not the other, the wind instrument or the steering is the more likely explanation, and the platform flags it on the band it happened in (section 9). The flag does not prove the sail is fine: a sail can be slow on both boards and the instrument wrong on one, and both boards need enough evidence before the check runs at all.
  14. No cross-boat comparison. Nothing here compares your sail with anybody else’s, and nothing infers a sail change from telemetry: the log is the only record of which sail was up.
  15. Skill is indistinguishable from cloth. A crew that has spent a season learning a sail will measure faster with it. That improvement and a sail that has not degraded look identical from here.
  16. A segment is already a reduction. The list of segments behind a number (section 11) shows every value as the median over that segment’s own seconds, not second by second. A stretch the detector called steady can still contain a lull, and the spread beside each value is the only thing that says how much it moved.
A trend, not a verdict. Read it as evidence for a conversation with your sailmaker: it is good at showing that something changed, in which wind, and roughly when. It cannot tell you what changed.