ANALYTICS

BrazilCT 2024 and 2025Last heat: Lexus Tahiti Pro 2025

Miguel
Pupo

Trim
−0.59per heat, ± 0.88 (95%)
Rated heats
47at or above 16
Prior weight
0.11411% of the rating
Heats surfed
4716 events
Heats won
17of 47
Mean heat total
11.09over 47
Best heat
15.37Western Australia Margaret River Pro

The swell · four moments from 47 rated heats

  1. Heat 10 · Western Australia Margaret River Pro 2024 · Opening RoundThe highest crest.15.37 (Main Break, 1-4', onshore) against an expected 10.72. A gap of +4.65.
  2. Heat 14 · Lexus Pipe Pro 2025 · Opening RoundThe deepest trough.3.53 against an expected 10.72: a gap of −7.19, his largest miss in these seasons.
  3. Heat 47 · Lexus Tahiti Pro 2025 · Elimination RoundThe low tide.7.83 against an expected 11.47 (Teahupo'o, 8-10', offshore). His Trim bottoms out at −0.595.

Trim timeline

Every recorded heat, 2024 and 2025

first 15 heats: prior is 50% or more of the ratingprior · 02025−0.59heat 1heat 47Deviation from Datum, each heatHeat 1 — 2024 Lexus Pipe Pro · Opening Round heat 12 Scored 14.10 against an expected 10.72 (+3.38) Trim 0.000 → 0.153 · prior weight 0.955 1st in the heatHeat 2 — 2024 Lexus Pipe Pro · Round of 32 heat 12 Scored 10.10 against an expected 11.74 (−1.64) Trim 0.153 → 0.071 · prior weight 0.912 2nd in the heatHeat 3 — 2024 Hurley Pro Sunset Beach · Opening Round heat 11 Scored 13.77 against an expected 10.72 (+3.05) Trim 0.071 → 0.206 · prior weight 0.871 2nd in the heatHeat 4 — 2024 Hurley Pro Sunset Beach · Round of 32 heat 6 Scored 11.00 against an expected 11.74 (−0.74) Trim 0.206 → 0.163 · prior weight 0.831 1st in the heatHeat 5 — 2024 Hurley Pro Sunset Beach · Round of 16 heat 3 Scored 8.83 against an expected 12.04 (−3.21) Trim 0.163 → 0.011 · prior weight 0.794 2nd in the heatHeat 6 — 2024 MEO Rip Curl Pro Portugal · Opening Round heat 9 Scored 10.50 against an expected 10.72 (−0.22) Trim 0.011 → 0.000 · prior weight 0.758 2nd in the heatHeat 7 — 2024 MEO Rip Curl Pro Portugal · Round of 32 heat 10 Scored 10.03 against an expected 11.74 (−1.71) Trim 0.000 → −0.077 · prior weight 0.724 2nd in the heatHeat 8 — 2024 Rip Curl Pro Bells Beach · Opening Round heat 2 Scored 10.10 against an expected 10.72 (−0.62) Trim −0.077 → −0.102 · prior weight 0.691 1st in the heatHeat 9 — 2024 Rip Curl Pro Bells Beach · Round of 32 heat 10 Scored 13.53 against an expected 11.74 (+1.79) Trim −0.102 → −0.017 · prior weight 0.660 2nd in the heatHeat 10 — 2024 Western Australia Margaret River Pro · Opening Round heat 12 Scored 15.37 against an expected 10.72 (+4.65) Trim −0.017 → 0.194 · prior weight 0.630 3rd in the heatHeat 11 — 2024 Western Australia Margaret River Pro · Elimination Round heat 2 Scored 12.63 against an expected 11.47 (+1.16) Trim 0.194 → 0.238 · prior weight 0.602 2nd in the heatHeat 12 — 2024 Western Australia Margaret River Pro · Round of 32 heat 3 Scored 15.27 against an expected 11.74 (+3.53) Trim 0.238 → 0.386 · prior weight 0.574 1st in the heatHeat 13 — 2024 Western Australia Margaret River Pro · Round of 16 heat 2 Scored 10.10 against an expected 12.04 (−1.94) Trim 0.386 → 0.281 · prior weight 0.548 2nd in the heatHeat 14 — 2025 Lexus Pipe Pro · Opening Round heat 9 Scored 3.53 against an expected 10.72 (−7.19) Trim 0.281 → −0.056 · prior weight 0.524 3rd in the heatHeat 15 — 2025 Lexus Pipe Pro · Elimination Round heat 4 Scored 8.56 against an expected 11.47 (−2.91) Trim −0.056 → −0.185 · prior weight 0.500 1st in the heatHeat 16 — 2025 Lexus Pipe Pro · Round of 32 heat 3 Scored 5.83 against an expected 11.74 (−5.91) Trim −0.185 → −0.444 · prior weight 0.477 1st in the heatHeat 17 — 2025 Lexus Pipe Pro · Round of 16 heat 2 Scored 10.00 against an expected 12.04 (−2.04) Trim −0.444 → −0.516 · prior weight 0.456 1st in the heatHeat 18 — 2025 Lexus Pipe Pro · Quarterfinals heat 1 Scored 15.10 against an expected 13.05 (+2.05) Trim −0.516 → −0.400 · prior weight 0.435 2nd in the heatHeat 19 — 2025 Surf Abu Dhabi Pro · Qualifying Round heat 2 Scored 11.30 against an expected 11.17 (+0.13) Trim −0.400 → −0.376 · prior weight 0.416 2nd in the heatHeat 20 — 2025 Surf Abu Dhabi Pro · Round of 16 heat 2 Scored 13.34 against an expected 12.04 (+1.30) Trim −0.376 → −0.300 · prior weight 0.397 1st in the heatHeat 21 — 2025 Surf Abu Dhabi Pro · Quarterfinals heat 1 Scored 12.20 against an expected 13.05 (−0.85) Trim −0.300 → −0.325 · prior weight 0.379 2nd in the heatHeat 22 — 2025 MEO Rip Curl Pro Portugal · Opening Round heat 12 Scored 10.17 against an expected 10.72 (−0.55) Trim −0.325 → −0.335 · prior weight 0.362 1st in the heatHeat 23 — 2025 MEO Rip Curl Pro Portugal · Round of 32 heat 14 Scored 9.26 against an expected 11.74 (−2.48) Trim −0.335 → −0.432 · prior weight 0.345 2nd in the heatHeat 24 — 2025 Surf City El Salvador Pro · Opening Round heat 12 Scored 9.20 against an expected 10.72 (−1.52) Trim −0.432 → −0.482 · prior weight 0.330 3rd in the heatHeat 25 — 2025 Surf City El Salvador Pro · Elimination Round heat 1 Scored 13.10 against an expected 11.47 (+1.63) Trim −0.482 → −0.386 · prior weight 0.315 2nd in the heatHeat 26 — 2025 Surf City El Salvador Pro · Round of 32 heat 15 Scored 12.50 against an expected 11.74 (+0.76) Trim −0.386 → −0.335 · prior weight 0.301 1st in the heatHeat 27 — 2025 Surf City El Salvador Pro · Round of 16 heat 8 Scored 15.33 against an expected 12.04 (+3.29) Trim −0.335 → −0.171 · prior weight 0.287 1st in the heatHeat 28 — 2025 Surf City El Salvador Pro · Quarterfinals heat 4 Scored 5.97 against an expected 13.05 (−7.08) Trim −0.171 → −0.483 · prior weight 0.274 2nd in the heatHeat 29 — 2025 Rip Curl Pro Bells Beach · Opening Round heat 9 Scored 10.53 against an expected 10.72 (−0.19) Trim −0.483 → −0.470 · prior weight 0.262 2nd in the heatHeat 30 — 2025 Rip Curl Pro Bells Beach · Round of 32 heat 4 Scored 13.50 against an expected 11.74 (+1.76) Trim −0.470 → −0.369 · prior weight 0.250 2nd in the heatHeat 31 — 2025 Bonsoy Gold Coast Pro · Opening Round heat 9 Scored 11.60 against an expected 10.72 (+0.88) Trim −0.369 → −0.313 · prior weight 0.239 2nd in the heatHeat 32 — 2025 Bonsoy Gold Coast Pro · Round of 32 heat 11 Scored 10.76 against an expected 11.74 (−0.98) Trim −0.313 → −0.343 · prior weight 0.228 1st in the heatHeat 33 — 2025 Bonsoy Gold Coast Pro · Round of 16 heat 6 Scored 12.33 against an expected 12.04 (+0.29) Trim −0.343 → −0.314 · prior weight 0.218 1st in the heatHeat 34 — 2025 Bonsoy Gold Coast Pro · Quarterfinals heat 3 Scored 9.40 against an expected 13.05 (−3.65) Trim −0.314 → −0.465 · prior weight 0.208 2nd in the heatHeat 35 — 2025 Western Australia Margaret River Pro · Opening Round heat 9 Scored 13.13 against an expected 10.72 (+2.41) Trim −0.465 → −0.335 · prior weight 0.198 2nd in the heatHeat 36 — 2025 Western Australia Margaret River Pro · Round of 32 heat 4 Scored 15.27 against an expected 11.74 (+3.53) Trim −0.335 → −0.161 · prior weight 0.189 1st in the heatHeat 37 — 2025 Western Australia Margaret River Pro · Round of 16 heat 2 Scored 7.04 against an expected 12.04 (−5.00) Trim −0.161 → −0.379 · prior weight 0.181 2nd in the heatHeat 38 — 2025 Lexus Trestles Pro · Opening Round heat 7 Scored 11.77 against an expected 10.72 (+1.05) Trim −0.379 → −0.315 · prior weight 0.173 2nd in the heatHeat 39 — 2025 Lexus Trestles Pro · Elimination Round heat 2 Scored 6.27 against an expected 11.47 (−5.20) Trim −0.315 → −0.536 · prior weight 0.165 2nd in the heatHeat 40 — 2025 VIVO Rio Pro · Opening Round heat 6 Scored 12.00 against an expected 10.72 (+1.28) Trim −0.536 → −0.454 · prior weight 0.157 1st in the heatHeat 41 — 2025 VIVO Rio Pro · Round of 16 heat 2 Scored 10.83 against an expected 12.04 (−1.21) Trim −0.454 → −0.488 · prior weight 0.150 1st in the heatHeat 42 — 2025 VIVO Rio Pro · Quarterfinals heat 1 Scored 12.33 against an expected 13.05 (−0.72) Trim −0.488 → −0.498 · prior weight 0.144 1st in the heatHeat 43 — 2025 VIVO Rio Pro · Semifinals heat 1 Scored 13.83 against an expected 13.75 (+0.08) Trim −0.498 → −0.472 · prior weight 0.137 2nd in the heatHeat 44 — 2025 Corona Cero Open J-Bay · Opening Round heat 7 Scored 12.06 against an expected 10.72 (+1.34) Trim −0.472 → −0.390 · prior weight 0.131 3rd in the heatHeat 45 — 2025 Corona Cero Open J-Bay · Elimination Round heat 2 Scored 8.80 against an expected 11.47 (−2.67) Trim −0.390 → −0.493 · prior weight 0.125 2nd in the heatHeat 46 — 2025 Lexus Tahiti Pro · Opening Round heat 1 Scored 11.17 against an expected 10.72 (+0.45) Trim −0.493 → −0.451 · prior weight 0.119 3rd in the heatHeat 47 — 2025 Lexus Tahiti Pro · Elimination Round heat 6 Scored 7.83 against an expected 11.47 (−3.64) Trim −0.451 → −0.595 · prior weight 0.114 2nd in the heat

Reading it — the line is Trim after each heat: points per heat above or below what that round usually yields. It starts at the prior, 0.000, and moves by a decayed share of each heat's deviation. The bars below are those deviations, one per heat, on their own scale. Neither panel is a prediction.

Extremes — best +4.65 at 2024 Western Australia Margaret River Pro · Opening Round heat 12; worst −7.19 at 2025 Lexus Pipe Pro · Opening Round heat 9. Axis to ±8, the exact maximum rounded outward.

How this is computed
Computed over trim joined to datum, in the run's own ordering — 47 of this surfer's 47 heats. Trim is an EWMA of the deviation from Datum (ewma_residual_hl15, half-life 15 heats, prior 0, computed 2026-10-17 over 1845 entries and 73 surfers). Datum is a ridge on the round alone, so “expected” is what that round usually yields, not what these conditions or this break usually yield. The decay earns very little: walk-forward RMSE 2.9098 against 2.9123 for a shrunk flat mean of the same residuals — paired t 0.56. Predicting zero for everyone scores 2.9688. The ordering is what Trim is for; the half-life is not doing the work.

Heat log

47 heats across 16 events

Every heat this surfer surfed, in career order, with the published finishing position, heat total, counting rides, the deviation from Datum and the Trim that followed
Counting ridesConditionsProgression
12024 Lexus Pipe ProOpening Round · heat 12 · Pipeline1st14.107.60 + 6.50+3.38exp 10.720.1530.9558-10' · CalmAdv to R/32 - HT 12
22024 Lexus Pipe ProRound of 32 · heat 122nd10.105.83 + 4.27−1.64exp 11.740.0710.9128-10' · Calm—
32024 Hurley Pro Sunset BeachOpening Round · heat 11 · Sunset Beach2nd13.778.27 + 5.50+3.05exp 10.720.2060.8716-8' · CrossAdv to R/32 - HT 6
42024 Hurley Pro Sunset BeachRound of 32 · heat 6 · Sunset Beach1st11.006.33 + 4.67−0.74exp 11.740.1630.83110-14' · Cross—
52024 Hurley Pro Sunset BeachRound of 16 · heat 3 · Sunset Beach2nd8.835.50 + 3.33−3.21exp 12.040.0110.79410-14' · Cross—
62024 MEO Rip Curl Pro PortugalOpening Round · heat 9 · Supertubos2nd10.506.33 + 4.17−0.22exp 10.720.0000.7584-6' · OffshoreAdv to R/32 - HT 10
72024 MEO Rip Curl Pro PortugalRound of 32 · heat 10 · Supertubos2nd10.035.33 + 4.70−1.71exp 11.74−0.0770.7244-6' · Cross—
82024 Rip Curl Pro Bells BeachOpening Round · heat 2 · Bells Beach1st10.106.67 + 3.43−0.62exp 10.72−0.1020.6914-6' · OffshoreAdv to R/32 - HT 10
92024 Rip Curl Pro Bells BeachRound of 32 · heat 10 · Winki Pop2nd13.536.83 + 6.70+1.79exp 11.74−0.0170.6601-4' · Light—
102024 Western Australia Margaret River ProOpening Round · heat 12 · Main Break3rd15.378.07 + 7.30+4.65exp 10.720.1940.6301-4' · OnshoreAdv to ER - HT 2
112024 Western Australia Margaret River ProElimination Round · heat 2 · Main Break2nd12.636.63 + 6.00+1.16exp 11.470.2380.6024-6' · OffshoreAdv to R/32 - HT 3
122024 Western Australia Margaret River ProRound of 32 · heat 3 · Main Break1st15.278.17 + 7.10+3.53exp 11.740.3860.5744-6' · Offshore—
132024 Western Australia Margaret River ProRound of 16 · heat 2 · Main Break2nd10.105.50 + 4.60−1.94exp 12.040.2810.5481-4' · Offshore—
142025 Lexus Pipe ProOpening Round · heat 9 · Pipeline3rd3.533.30 + 0.23−7.19exp 10.72−0.0560.5246-8' · CalmAdv to ER - HT 4
152025 Lexus Pipe ProElimination Round · heat 4 · Pipeline1st8.565.83 + 2.73−2.91exp 11.47−0.1850.5006-8' · CalmAdv to R/32 - HT 3
162025 Lexus Pipe ProRound of 32 · heat 3 · Pipeline1st5.834.50 + 1.33−5.91exp 11.74−0.4440.4776-8' · Calm—
172025 Lexus Pipe ProRound of 16 · heat 2 · Pipeline1st10.005.83 + 4.17−2.04exp 12.04−0.5160.4566-8' · Calm—
182025 Lexus Pipe ProQuarterfinals · heat 1 · Pipeline2nd15.107.93 + 7.17+2.05exp 13.05−0.4000.4354-6' · Calm—
192025 Surf Abu Dhabi ProQualifying Round · heat 2 · Surf Abu Dhabi2nd11.30—+0.13exp 11.17−0.3760.416not publishedAdv to NS
202025 Surf Abu Dhabi ProRound of 16 · heat 21st13.34—+1.30exp 12.04−0.3000.397not publishedAdv to QF - HT 1
212025 Surf Abu Dhabi ProQuarterfinals · heat 12nd12.20—−0.85exp 13.05−0.3250.379not publishedEliminated
222025 MEO Rip Curl Pro PortugalOpening Round · heat 12 · Supertubos1st10.175.50 + 4.67−0.55exp 10.72−0.3350.3624-6' · CalmAdv to R/32 - HT 14
232025 MEO Rip Curl Pro PortugalRound of 32 · heat 14 · Supertubos2nd9.264.93 + 4.33−2.48exp 11.74−0.4320.3454-6' · Onshore—
242025 Surf City El Salvador ProOpening Round · heat 12 · Punta Roca3rd9.204.60 + 4.60−1.52exp 10.72−0.4820.3304-6' · CalmAdv to ER - HT 1
252025 Surf City El Salvador ProElimination Round · heat 1 · Punta Roca2nd13.107.10 + 6.00+1.63exp 11.47−0.3860.3154-6' · CalmAdv to R/32 - HT 15
262025 Surf City El Salvador ProRound of 32 · heat 15 · Punta Roca1st12.506.83 + 5.67+0.76exp 11.74−0.3350.3014-6' · Calm—
272025 Surf City El Salvador ProRound of 16 · heat 8 · Punta Roca1st15.338.50 + 6.83+3.29exp 12.04−0.1710.2876-8' · Onshore—
282025 Surf City El Salvador ProQuarterfinals · heat 4 · Punta Roca2nd5.975.30 + 0.67−7.08exp 13.05−0.4830.2744-6' · Calm—
292025 Rip Curl Pro Bells BeachOpening Round · heat 9 · Bells Beach2nd10.535.60 + 4.93−0.19exp 10.72−0.4700.2624-6' · OnshoreAdv to R/32 - HT 4
302025 Rip Curl Pro Bells BeachRound of 32 · heat 42nd13.507.67 + 5.83+1.76exp 11.74−0.3690.2501-4' · Calm—
312025 Bonsoy Gold Coast ProOpening Round · heat 9 · Burleigh2nd11.606.17 + 5.43+0.88exp 10.72−0.3130.2391-4' · OffshoreAdv to R/32 - HT 11
322025 Bonsoy Gold Coast ProRound of 32 · heat 11 · Burleigh1st10.765.43 + 5.33−0.98exp 11.74−0.3430.2284-6' · Light—
332025 Bonsoy Gold Coast ProRound of 16 · heat 6 · Burleigh1st12.336.83 + 5.50+0.29exp 12.04−0.3140.2184-6' · Light—
342025 Bonsoy Gold Coast ProQuarterfinals · heat 3 · Burleigh2nd9.404.90 + 4.50−3.65exp 13.05−0.4650.2081-4' · Light—
352025 Western Australia Margaret River ProOpening Round · heat 9 · Main Break2nd13.137.13 + 6.00+2.41exp 10.72−0.3350.1984-6' · OffshoreAdv to R/32 - HT 4
362025 Western Australia Margaret River ProRound of 32 · heat 4 · Main Break1st15.278.00 + 7.27+3.53exp 11.74−0.1610.1898-10' · Offshore—
372025 Western Australia Margaret River ProRound of 16 · heat 2 · The Box2nd7.045.17 + 1.87−5.00exp 12.04−0.3790.1814-6' · Offshore—
382025 Lexus Trestles ProOpening Round · heat 7 · Lower Trestles2nd11.777.60 + 4.17+1.05exp 10.72−0.3150.1734-6' · LightAdv to ER - HT 2
392025 Lexus Trestles ProElimination Round · heat 2 · Lower Trestles2nd6.276.27 (1 of 2)−5.20exp 11.47−0.5360.1654-6' · LightEliminated
402025 VIVO Rio ProOpening Round · heat 6 · Itaúna1st12.006.67 + 5.33+1.28exp 10.72−0.4540.1571-4' · CalmAdv to R/16 - HT 2
412025 VIVO Rio ProRound of 16 · heat 2 · Itaúna1st10.836.00 + 4.83−1.21exp 12.04−0.4880.1504-6' · Offshore—
422025 VIVO Rio ProQuarterfinals · heat 1 · Itaúna1st12.336.50 + 5.83−0.72exp 13.05−0.4980.1444-6' · Calm—
432025 VIVO Rio ProSemifinals · heat 1 · Itaúna2nd13.837.33 + 6.50+0.08exp 13.75−0.4720.1374-6' · Offshore—
442025 Corona Cero Open J-BayOpening Round · heat 7 · Supertubes3rd12.067.23 + 4.83+1.34exp 10.72−0.3900.1314-6' · LightAdv to ER - HT 2
452025 Corona Cero Open J-BayElimination Round · heat 2 · Supertubes2nd8.804.67 + 4.13−2.67exp 11.47−0.4930.1254-6' · OnshoreEliminated
462025 Lexus Tahiti ProOpening Round · heat 1 · Teahupo'o3rd11.176.17 + 5.00+0.45exp 10.72−0.4510.1198-10' · CalmAdv to ER - HT 6
472025 Lexus Tahiti ProElimination Round · heat 6 · Teahupo'o2nd7.834.50 + 3.33−3.64exp 11.47−0.5950.1148-10' · OffshoreEliminated
How this is computed
Computed over heat_entries joined to heats, rounds and events, one row per heat surfed. position and heat_total are published, never derived from the rides; a heat with no total renders as an em-dash, never as zero. The counting rides are the stored waves.counted flag in score order, not ride order, which is how WSL publishes the decomposition; they are not the best two, because an interference penalty zeroes a counting ride without promoting the next one. counting_rides belongs to the round, not the event. Venue is heats.venue_id — the break the heat was actually surfed at, which for 43 of these 47 heatsis stored, and which is not always the event's nominal venue. Round order carries a known gap and no tie countback is stored, so a shared position is shown as published.

Condition splits

What he scored, by what the page said

By published wave height

By published wave height: heats, mean heat total, best heat total and mean deviation from the round's expected total, for each published condition
HeightHeatsMeanBestvs Datum
1-4'712.2115.37+0.68
4-6'2410.9815.27−0.66
6-8'69.5015.33−1.95
8-10'511.6915.27+0.41
10-14'29.9211.00−1.98

“Heats” counts the rated heats in the split; where a heat carries no published total it is shown as rated of total and left out of the means.

By published wind

By published wind: heats, mean heat total, best heat total and mean deviation from the round's expected total, for each published condition
WindHeatsMeanBestvs Datum
Calm1610.4515.10−1.14
Offshore1211.5115.27−0.09
Light710.8713.53−0.77
Onshore511.8615.37+0.52
Cross410.9113.77−0.65

“Heats” counts the rated heats in the split; where a heat carries no published total it is shown as rated of total and left out of the means.

What these are not Conditions are not in the model. Datum V1 is a ridge on the round alone: break, wave type and field size were tested on 27 August and dropped, because adding them made the leave-one-event-out error worse rather than better. The “vs Datum” column in each split is therefore this surfer's deviation from what that round usually yields, averaged over the heats that fall in the split. It is a description of where he scored, not a measurement of conditions he favours, and a difference between two rows here is not evidence that either caused anything. Computed over the 44 of his 47 heatswhose popup was retained and publishes both figures; the remainder are absent from these tables rather than pooled into an “unknown” row.

How this is computed
Computed over heats.wave_height_published and heats.wind_conditions, both read off the retained heat popup and shown in the words the page used. Across the database these are held for 771 of 801 heats, a different population from venue, which is held for 713. For this surfer that is 44 of 47. Heats with no published conditions are left out of both tables; they are not an “unknown” category.