Data-Driven Sailing Home Under the hood ICSA ISSA Notes
October 8, 2026 · data through October 4, 2026 · All notes

Are the boats even?

Rotation sheets, a null that keeps the rotation, and a chain of tests: boats differ by about 0.3 places a race, a good sailor doesn't leave a boat faster, fleets are uneven from day one, and a boat term in the rating model predicts 0.12 places a race between a fleet's best and worst fifth on held-out regattas.

Yes, some boats in a fleet are slow — but less than sailors think, a good sailor doesn't leave a boat faster for the next crew, and a fleet's unevenness is a property it arrives with, not one it wears into. Here is the chain of tests, in order, with the trap at each step.

1. The data, and the trap in it

Techscore's rotation sheets say which sail number each team had in each race: 964,000 team-races across 3,800 regattas, matched to 97% of our scored ICSA boat-races. Each team's result is converted to a surprisal — how much better or worse it finished than its pre-regatta rating predicted, in standard-error units — and demeaned within the team's regatta, so the team's form that weekend is gone. What remains is race-to-race movement; a boat's effect is its average over everyone who sailed it.

The trap: teams keep a boat for two races, then it passes to another team. A naive test treats those two races as independent evidence about the boat, when they are mostly evidence about the team in it. So the null hypothesis has to keep that structure: within each rotation set the sail numbers are relabelled at random, consistently for every team, and the boat-effect variance is recomputed. Only variance beyond that is boat.

0.0000.0400.0800.1200.1600.120rotation-preserving null0.138observedboat-effect variancevariance of boat effects (z²)
3,716 regatta-divisions with a full rotation. The excess, 0.018 z², is a boat standard deviation of 0.13 z — about 0.3 places a race in a 12-boat fleet for a one-sd boat.
0%4%8%12%16%5%12%p < 0.051%5%p < 0.01chanceobservedshare of regatta-divisions
Regattas with a significant boat effect against the rotation-preserving null, versus what chance would give. Roughly one fleet in fifteen has a boat worth complaining about on the day.

2. Two artefacts to clear before believing anything

Same team, same boat again. The raw correlation between a team's two stints in the same boat is −0.16 — which looks like "a boat that went well goes badly next time". It is arithmetic: demeaning a team's k stints forces them to sum to zero, so any two correlate about −1/(k−1). The same team's stints in different boats correlate −0.18. Same boat is 0.02 less negative: the small boat signal again, nothing more.

Does a good sailor tune the boat for the next crew? 211,396 handovers where a different team takes the boat in the next set:

-0.020-0.010+0.000+0.010+0.020-0.003previous skipper 1+ below the fleet-0.000within 1 point+0.0061+ abovenext team's surprisal
By the previous skipper's rating relative to the fleet (±0.005). Slope +0.0022 per rating point: nothing. The next team's result does correlate with the previous team's result in that boat (+0.034) — that is the boat's own fixed quality, and it does not grow when the previous skipper was strong.

Does inheriting a strong team's boat help?

The same question from the other side: for 211,390 handovers starting at race 3 or later, the next team's surprisal against the previous occupant's rating relative to the fleet.

-0.020-0.010+0.000+0.010+0.020-0.004-2.5+0.000-2.0-0.006-1.5-0.002-1.0+0.001-0.5-0.003+0.0+0.004+0.5+0.007+1.0+0.002+1.5next team's surprisal
Previous occupant's rating minus the fleet mean (bins of half a point, lower edge; ±0.004–0.013). Slope +0.0022 ± 0.0021 per rating point. A team's own rating moves its result by +0.143 per point — the inheritance effect is at most a sixtieth of that, and not distinguishable from zero.
-0.080-0.040+0.000+0.040+0.080previous occupant 1+ below fleetwithin 1 point1+ aboveprevious team sailed it badlysailed it wellnext team's surprisal
What does transfer is the boat: when the previous team went well in it the next team gains about +0.04, badly −0.04 — and by the same amount whether that team was strong or weak. A fast boat is handed on; a good crew's tuning is not.

One sub-slice, the second rotation set, reads +0.009 ± 0.004 per point; it is one of five set-level slopes (set 4 is −0.007 the other way), splits into +0.017 and +0.001 on random halves of the regattas, and would be worth four hundredths of a place a race even if real. Not news.

Is there a team whose boat you want next? Per previous-occupant school (109 with 300+ handovers): the spread of school effects is narrower than chance (sd of z 0.68 against 1.00), none beyond two sigma (5 expected), and the school means do not replicate between halves of the data (r = -0.34). Per skipper (524 with 100+): sd 0.89, 19 beyond two sigma against 24 expected. Nobody rigs a boat for the next crew, and nobody wrecks one.

3. Does a boat carry its effect to the next regatta?

A boat here is a sail number at one host, in one class, in one season (A and B divisions share a fleet unless the class is listed as "420/FJ"). Correlate a sail's effect in one regatta with the same sail at the same host later:

-0.02+0.01+0.04+0.07+0.10+0.08weekend+0.04season+0.020.5 yr+0.041 yr+0.031.5 yr+0.032 yr+0.032.5 yr+0.003 yr+-0.00other sailcorrelation
Same boat on the same weekend (A and B swapping fleets) +0.08; same season +0.04; about +0.04 for up to two and a half years; +0.001 beyond three — the lifetime of a fleet as the data sees it. A random other sail at the same host: -0.00.

So pooling helps, out to a horizon. Out of sample, predicting a regatta's boat effects from all earlier regattas at the host is best with a decay of 0.75–0.85 per half-season on older evidence (r ≈ 0.065); never decaying is worse than same-season-only, because three-year-old evidence describes a different boat.

4. Fleets, season by season

Cornell 420 fleet: boat effect by sail and season
Cornell's 420s. Rows are sails, columns seasons, green fast, the number is regattas with a rotation. Sail 4 is dark green for five straight seasons from 2014 and 15, 16, 10 are a red band across the same era; before and after it the same numbers are unremarkable. Best-to-worst in that era was 1.4 places a race — 20 points over a 16-race regatta.
Tufts Lark fleet: boat effect by sail and season with the detected fleet change
Tufts' Larks with the detected fleet change. Sail 1 is the slow boat for six seasons, then a good one; sail 3 goes from best to worst. Correlation of boat effects across the line: −0.46.

5. Finding the fleet changes

Within an era each sail has a constant effect; a boundary is placed where splitting the seasons reduces the weighted squared error by more than a penalty, and the penalty is calibrated per fleet by shuffling the season order until shuffled orders produce no boundary 95% of the time. Where that is too strict, the weakest link in the chain of pooled season-to-season correlations does the same job with less certainty. Scorers' daily summaries ("brand new Zim FJs", "first regatta in the new Larks") give the answer key:

FleetScorer / owner saysThe data said
BU FJf12f12
Tufts Larks16f16
Cornell 420s15f15
Eckerd FJs15f14
MIT FJf14f13
Wisconsin 420Ef17s16
Brown FJf172012–18 gap
Brown FJwinter 2023–24f23 | s24 (weakest link)
Brown FJ fleet: three eras, and old fleet vs new fleet
Brown's FJs: three fleets. The programme first dated the second change to 2021; the chain of correlations ran unbroken through 2021 (+0.44) and broke between fall 2023 and spring 2024 (−0.03) — which turned out to be when the fleet was replaced. Old fast boats (6, 17, 14) are not the new fast boats (18, 16, 8).

6. Uneven fleets and even ones

Within an era, each sail's pooled effect divided by its standard error is a z-score. An even fleet gives a standard normal; an uneven one gives a wider distribution.

z-score distributions of boats in uneven and even fleets
Three uneven fleets and three even ones, against N(0,1).
Fleet, eraSailssd of z (1 = even)Boats beyond 2σFleet χ² p
Cornell 420 f15-f17182.156< 0.001
Tufts lark f16-f18212.116< 0.001
Kings Point 420 f21-f23192.008< 0.001
Harvard fj s19-s24181.1510.21
Navy fj/z420 s19-f22180.8800.77
Brown fj s24-f25181.1820.17

Six to eight boats per uneven fleet are individually beyond two sigma; in the even fleets one is, which is what 18 draws give by chance.

7. Wear: by class, by age

Model each sail's true effect as a random walk with variance q per half-season, estimated from how the squared difference between two seasons' effects grows with the gap between them, within eras:

ClassFleetsDrift q (z² / half-season)Half-life of the fast/slow rankingUnevenness τ (z)τ in places / race
FJ440.0032 ± 0.00031.3 yrs0.108 ± 0.0070.25
420390.0002 ± 0.000412.7 yrs0.095 ± 0.0060.22
Z42070.0023 ± 0.00071.3 yrs0.093 ± 0.0220.21

FJ fleets reshuffle faster than 420 fleets — but hold the ratio loosely. Both drifts are small next to the measurement noise (season-to-season changes, scaled by their noise, have variance 1.10 for FJs and 1.03 for 420s against 1.00 for no change at all), and a half-life is τ² divided by that small number, so "1.3 years vs 13" is really "a year or two vs several". The changes show no jump signature either (excess kurtosis ≈ 0, large moves at the Gaussian rate, drops and gains equally common): single-boat events of the size that matters, a tenth of a place a race, are below what four regattas a season can resolve, so a physically sensible damage-and-repair model (boats only degrade; repairs and others' damage are what make a boat faster relative to the fleet) is indistinguishable here from a small symmetric walk. How uneven a fleet is does not depend on class — and it does not depend on age either:

0.000.050.100.150.200.090.140.11age 1-20.110.150.10age 3-40.110.080.06age 5-80.090.040.10age 9+FJ420Z420unevenness τ (z)
Unevenness by age since a scorer-dated purchase. Flat. Fleets arrive as uneven as they will ever be; a reversion test (boats that stick out drift back, slope -0.021 ± 0.006) says maintenance keeps it that way. "New fleet = even" is false: Cornell's and Tufts' were uneven from the first season.
fleet unevenness and share of significant fleets by class over time
By class over time, two-year windows. Left: unevenness across fleets, 0.12–0.15 z for FJs, 0.07–0.13 for 420s, no trend. Right: the share of fleets whose boats differ significantly, 15–40% against 5% by chance.

8. The prior, applied

Put together: the fleet's current era (a scorer-dated purchase, else a multi-year gap in hosting, else all its data), its own unevenness τ as the prior spread, the class drift q as the random walk, and a Kalman pass over the era's seasons. Each sail gets an expected finish change for next season with an uncertainty.

expected finish change next season by sail for eight example fleets
Eight fleets, sails sorted by expected effect in places per race (± one standard error). The 420 fleets at Cornell and Kings Point are the ones where the draw matters; Yale's and Navy's 420s and Brown's new FJs barely do.
FleetEraEra fromτ (places/race)Best sailWorst sailSpread, places/race / pts per 16
Brown FJs24–f25confirmed0.1518 (+0.21)17 (-0.26)0.47 / 7
Cornell 420f15–s25gap/first data0.314 (+0.45)13 (-0.43)0.88 / 14
Kings Point 420f19–s26gap/first data0.2517 (+0.48)11 (-0.44)0.92 / 15
Harvard FJf23–s24gap/first data0.2112 (+0.28)14 (-0.18)0.47 / 7
MIT 420f22–f26confirmed0.1817 (+0.25)5 (-0.27)0.52 / 8
Boston University FJf12–f26confirmed0.148 (+0.57)4 (-0.47)1.04 / 17
Yale 420s19–f26gap/first data0.1212 (+0.15)3 (-0.15)0.30 / 5
Navy 420s23–s26gap/first data0.152 (+0.15)4 (-0.12)0.27 / 4

Tufts' new FJs have too few regattas yet for any prior. The Boston University row runs the full 2012–26 era with FJ drift, so its older seasons contribute almost nothing; a confirmed later purchase would shorten it.

9. Predicting boat quality, tested on held-out regattas

The averaging above treats a boat's effect as a residual. The cleaner way is to put the boat inside the rating model itself: in the Plackett–Luce likelihood each team's strength in a race is its skipper's and crew's rating that week, plus a team-at-regatta term for form, plus a term for the boat it is in. The boat terms of a fleet-era are shrunk toward zero with the era's own unevenness τ, which is estimated at the same time, and everything is fitted jointly on the GPU (63,093 races, 8,268 boats in 500 fleet-eras). Then the honest test: hold out every third regatta in every fleet (1,103 regattas, 20,494 races), fit on the rest, and ask what the boat term knows about the regattas it has never seen.

-0.080-0.040+0.000+0.040+0.080-0.055worst fifth-0.0372nd fifth-0.0083rd fifth+0.0374th fifth+0.068best fifthrealised boat effect, places/race
Held-out regattas: each sail's realised effect on the day (team-demeaned surprisal, as in section 1) by fifth of its predicted effect from the other regattas. 25,080 sail-regattas, ±0.012. Monotone end to end: correlation with the realised effect +0.055 (se 0.006).

The fitted term is over-confident on its own: used at full size it makes the held-out finishing orders slightly less likely than the ratings alone. Scaled down it helps, and the best scale says how much of a boat's fitted effect is a property of the boat that travels to the next regatta:

-0.0020-0.0005+0.0010+0.0025+0.0040+0.0012&times;0.1+0.0022&times;0.2+0.0028&times;0.3+0.0030&times;0.4+0.0030&times;0.5+0.0015&times;0.75-0.0019&times;1held-out likelihood gain, nats/race
Gain in held-out log-likelihood per race over the ratings alone, by the factor applied to the boat term. The peak is at 0.4–0.5: +0.0030 ± 0.0005 nats a race at 0.4, about 6 sigma. For scale, a whole place a race in a 12-boat fleet is worth 0.087 nats.

So the prediction method is: fit the boat term on the fleet's current era, and expect 0.4 of it in the next regatta. At that scale the prediction is nearly calibrated (realised effects run 0.85 of predicted), and the boats it rates in the top fifth of a fleet beat the boats it rates in the bottom fifth by +0.12 ± 0.02 places a race in regattas it has not seen — about 2 points over a 16-race regatta. That is the reproducible edge in knowing the boats: the size of a good crew swap, three to four times larger in the uneven 420 fleets at Cornell and Kings Point, and essentially nil in Brown's or Yale's.

Why 0.4, and why not more? Within a single fleet-season the true spread of boats is τ = 0.105 z for FJs and 0.089 for 420s (about 0.24 places a race), against a per-regatta measurement noise of 0.37 z, so a sail's effect in one regatta is mostly noise and the term that fits it has to be discounted. Pooling the era is what makes the 40% recoverable:

012253850450.25 pl/race120.50 pl/race50.75 pl/race31.00 pl/raceregattas to call it at 2σregattas needed
Regattas needed to identify a boat of a given true size at two sigma. A typical programme hosts four to six a year; stable 420 fleets can be pooled for three years, which is where the sharpest per-boat calls come from.
0.000.250.500.751.000.352 reg.0.474 reg.0.556 reg.0.6410 reg.0.7720 reg.0.8640 reg.correlation with the truthcorrelation with the truth
How well a season's estimate of a boat tracks its true effect, by regattas per sail. At the usual four, a fifth of what you see is boat; the joint fit with the era pooled behind it is what lifts that to a usable prediction.

What it is worth

Every number on this page is produced by analysis/blog/boat_effects.py, boat_inherit.py, boat_fleet_prior.py, boat_pl.py, boat_pl_wind.py, boat_season_signal.py, boat_decay_shape.py, boat_season.py, boat_carry.py, boat_changepoints.py, boat_wear*.py, boat_post_data.py in the project repository, from the same database that powers the rest of the site. Corrections welcome: quinnbrighton2005@gmail.com.