The Racing Rules of Sailing
Minutes Advantage Formula for Pursuit Races based on PHPF (HCP)
Please review this and provided feedback on whether it's is sound and fair. Not sure how the major packages do it.
This simple formula creates a set of minutes advantages based on current PHP for a fleet for an expected race duration. The predicted race time is entered into the formula. Usually the course is set to have a set duration say 2 hours. For JBSC this is 110 minutes, and the RO adjusts the leg length for our Triangle courses to get that approximate duration for the fleet and prevailing conditions. It does not matter if this is incorrect. The minutes advantages do not affect the PHP calculations in any way. They are simply added to each boat’s elapsed time before they are entered into the results tabulated system.
The formula provides a set of minutes advantage for each entrant on the list based on their current handicap. A scratch boat with zero minutes advantage is defined.
This simple formula creates a set of minutes advantages based on current PHP for a fleet for an expected race duration. The predicted race time is entered into the formula. Usually the course is set to have a set duration say 2 hours. For JBSC this is 110 minutes, and the RO adjusts the leg length for our Triangle courses to get that approximate duration for the fleet and prevailing conditions. It does not matter if this is incorrect. The minutes advantages do not affect the PHP calculations in any way. They are simply added to each boat’s elapsed time before they are entered into the results tabulated system.
The formula provides a set of minutes advantage for each entrant on the list based on their current handicap. A scratch boat with zero minutes advantage is defined.
So the list is thus: Boat A=>0; Boat B=>10; Boat C=>5; Boat D=>23 etc
Advantage (minutes) = max(0, round(raceDurationMin × (HCPboat − HCPscratch)))
Advantage (minutes) = max(0, round(raceDurationMin × (HCPboat − HCPscratch)))
Where:
- HCPboat — that boat's current PHP (HCPn), freshly recalculated every time the page loads from their seeded starting handicap plus every genuine race result since (never a stored value — always derived live).
- HCPscratch — the lowest HCPn in the whole fleet right now. Whichever boat currently has the smallest handicap number becomes "scratch" automatically — no boat is hardcoded as scratch, it shifts as handicaps move.
- raceDurationMin — the predicted duration of the next race, editable on the page (defaults to 110, matching what you asked about).
- The result is rounded to the nearest whole minute, and floored at 0 — the scratch boat always gets exactly 0, and no one can end up with a negative head start even if their handicap briefly dips below the current scratch boat's.
In plain terms: every boat's Advantage is directly proportional to how much slower their current handicap is than the fastest boat in the fleet right now, scaled to how long the next race is expected to take.
Processing the Results after the Pursuit Race. To continue the PHPF you simply add each boat's minutes advantage to their elapsed time before entry into the results system. This is their actual elapsed time. The PHP calculates the handicaps for the next race and recreates the advantages for that.
I understand that SailSys anchors off the slowest boat (giving it the earliest/base start) rather than defining a zero-advantage scratch boat off the fastest — mathematically it's the mirror image of your formula (everyone gets a positive head-start relative to the fastest boat, rather than the fastest getting zero).
Created: Today 22:27
Comments
Format:
You must be signed in to add a comment.