Skip to content

Compare boats

Every skier has an opinion about which boat brand they ski best behind. This recipe checks whether your data agrees with your gut.

For each value of `boatBrand` that appears in my sets, compute my average best pass.
Best pass per set = longest `lineOffUs`, tiebreaker highest `buoyCount`.
Derive it from the `passes` array — ignore the cached `bestPass*` fields.
Exclude:
- Sets where `boatBrand` is null.
- Draft passes (any of `speedMph` / `lineOffUs` / `buoyCount` null).
- `autoGenerated: true` passes.
Output a markdown table sorted by average best line off (descending), with columns:
- Boat brand
- Number of sets
- Average best line off
- Average buoy count at best line
- Most common ski site for sets behind this boat (`skiSiteText` mode)
Boat brandSetsAvg best line offAvg buoys at best lineMost common site
Nautique42-31.43.2Sunset Lakes
MasterCraft28-29.84.1Bell Acqua
Malibu11-28.63.5Sunset Lakes
Other3-22.04.7Trophy Lakes

“Is the gap between the top and bottom boat statistically meaningful given the sample sizes? Use a simple back-of-envelope rule (e.g. larger than 1 standard deviation across sets).”

“At what speed is the gap between the top and bottom boat largest? Re-run the analysis grouped by (boatBrand, speedMph).”

“Repeat the analysis but only for sets after 2024-01-01, and only for tournament sets (isPractice === false).”

Compare boat settings, not just brands. Group by boatSetting.letter + boatSetting.number (e.g., “A1”, “B2”). Many skiers feel a difference between A1 and A1+; this surfaces whether their data agrees.

Compare by model year or engine size. boatModelYear and boatEngineSize are present when the user logged them. Newer boats with bigger engines tend to give cleaner pulls.

Practice vs tournament. Filter by isPractice to see if the boat preference is real or just a confidence effect that disappears in tournaments.