The Performance Factor (PF) project provides an online database of elapsed times and Time Corrected Factors (TCFs) for Australian keelboat racing, with statistical analysis and graphical presentation. Fundamentally, this project is about presenting the ultimate source of truth - Elapsed Times, in a form that can better inform a club handicappers' decisions about handicap allocation. The Performance Factor(PF), Reference Factor(RF), and Performance Profile(PP) are just alternate (experimental) ways of presenting the relationships between the elapsed times of various boats and designs.

A PF is a back-calculated Time Correction Factor (TCF) a boat would have needed, averaged across all its recorded racing history, to have been near equal corrected time with a hypothetical 1.000 reference boat. An RF is a similar TCF for boat designs. The PP is a totally new way of presenting a boat's historical performance. The algorithms use weighted factors to propagate quality and probability through the calculations.

Watch this video for an introduction and this video for some detail about the implementation.

The project is currently hosted at sailing.mortbay.org and developed at github.

Not a PHS Handicap

The PF is not PHS handicaps. Whilst a PHS handicap can also be a time correction factor (TCF), there are significant differences including:

The PF could be used as a handicap system, but not as a replacement for traditional PHS club handicaps. It can be used to inform initial PHS handicap allocation.

Algorithm Overview

The PF calculation uses any known measurement handicaps (ORC, AMS, IRC) to establish Reference Factors (RFs) for most boats and designs. Boats are assigned an RF based on either their own measurement handicaps or their historic median performance against boats already assigned an RF. A design's RF is the weighted aggregation of all initial RFs assigned to boats of that design. A boat's final RF is a weighted combination with the design RF.

Boat RFs are then used to calculate a reference time (RT) for every race for a hypothetical 1.000 reference boat. An optimisation process then allocates and refines PFs for each boat by minimizing their corrected time differences with the RT of all races they finished in.

The result is each boat is assigned a single number time correction factor for spinnaker, non-spinnaker and 2-handed. There are no separate factors for inshore, offshore, windward-leeward, strong/medium/soft conditions etc.

Note that TCFs are ALWAYS WRONG, because if they were correct then every race would end in a tie. At best, they are an approximate model of a possible reality — a poor substitute for One Design racing.

Measurement handicap for ORC and AMS data is taken from the corresponding official websites. IRC handicap values are taken from public entry pages of IRC races. Elapsed times are also taken from the public results pages of clubs. There are data importers for BWPS, TopYacht and Sailsys results formats. No personal details (owners, skippers etc.) are loaded, nor are any PHS allocated handicaps loaded or considered.

Note that by request of SailSystem the fetching of race data from their system has been disabled.

The Problem with Elapsed-Time Analysis

Rating yacht performance from elapsed times sounds straightforward, but the data is deeply ambiguous. For any single race result, we do not know:

Even if every one of those factors were stable, sample sizes are tiny. Most boats in a club fleet do perhaps 20–50 races per year, often split across multiple series with changing competition. A typical boat in this database may have 50–200 recorded finishes spanning several years. In the context of statistical inference, where each observation is contaminated by all the unknowns above, this is a very thin basis for a reliable estimate of anything. The PF for a boat with fewer than about 20 finishes should be treated as highly tentative.

The optimiser mitigates these problems — outlier down-weighting suppresses individual bad results; the asymmetry principle discounts apparently extraordinary fast finishes; the weighted median reference time reduces the influence of large-fleet outliers — but it cannot eliminate the underlying uncertainty. The confidence weights and per-race residual charts are the honest acknowledgement of this: a low-weight PF and a wide residual scatter mean we genuinely do not know what this boat should be handicapped at from its history alone.

Measurement certificates help, but not primarily by providing accurate individual factors. Their main value is as a common reference: IRC, ORC, and AMS are all widely used, and a boat's certificate value in any of those systems gives us a plausible starting point that is roughly comparable across the fleet, across clubs, and across years. By anchoring the PF optimisation to certificate-derived Reference Factors, we ensure that the resulting factors are at least expressed in a scale similar to other systems — so an PF of 0.950 means roughly what IRC 0.950 means, which is something other clubs and handicappers can interpret. Without that anchor, PF values would be identified only up to an arbitrary global scale factor and would be meaningless outside the specific fleet used to compute them.

Further reading:

Licence

Status

This project is in early development and almost certainly contains errors, omissions and accidental inclusions in both the data loaded and the analysis performed. Feedback, comments, requests, and contributions are welcome via GitHub.

Moreover, requests to merge/exclude boats/designs are most welcome and can be made

Contacts

The source code for this project is available on GitHub. Please use the Issue system there for questions, comments, or suggestions.