Introduction
Speed Grade (SG) answers a simple question: how fast did this horse actually run, compared with how fast a winner of this race should have run. Getting a reliable answer is not simple. This article walks through every step, from predicting a par time for the race, through correcting it for how the track rode on the day, to turning it into a grade for each horse and a form figure for horses, jockeys and trainers.
If you only want the short version:
SG = adjusted par time / the horse’s time x 100
100 means the horse ran exactly to par. 102 is about 2% faster than par, and 97 about 3% slower. Single-run figures are kept between 80 and 120.
Contents
Why measure speed against a par?
A raw race time on its own tells you almost nothing. A 6-furlong race run in 72 seconds might be brilliant at one course and ordinary at another. The same course rides seconds slower on heavy ground than on good, and some tracks are uphill, sharp or stiff.
So rather than look at times directly, we ask: what time should a winner have recorded here, over this trip, on this ground? That expected time is the par. Comparing a horse with par removes most of the course, distance and ground effects. What is left is a measure of how well the horse ran.
There are three stages:
| Stage | What it produces |
|---|---|
| Par time | The expected winning time for the race, from historical data and a machine-learning correction. |
| Daily adjustment | The par, corrected for how fast or slow the track was actually riding that day. |
| Horse grade | Each finisher’s own time, worked out from the winner’s time and the distance it was beaten, compared with the adjusted par. |
Building the par time
Seconds per furlong
Pars are built in seconds per furlong (SPF): the winning time divided by the race distance in furlongs. This lets races of slightly different distances be compared. For example, a 6f winner in 73.2 seconds ran at 12.2 seconds per furlong.
Once we have an expected SPF for a race, the par time is simply:
par time = expected SPF x exact race distance in furlongs
The exact distance matters. Two races at the same course might both be listed as “6f” but one is actually 6f 22y because of a rail movement. Both use the same SPF, but the longer race gets a slightly longer par.
Step 1: last year's evidence
The starting point is how fast winners ran last year over the same kind of race. We look at this at three levels of detail:
| Level | Races it looks at | Why |
|---|---|---|
| Course + distance + going | Last year’s winners at this course, over this trip, on this going | The most relevant evidence, but often only a handful of races. |
| Distance + going | Last year’s winners over this trip on this going, at every course | Plenty of races, but ignores the course. |
| Distance only | Last year’s winners over this trip, on any going, at any course | The broadest fallback. |
These are blended. Each level is given a weight (60%, 30% and 10% respectively), and the blend works on an evidence budget of 100 races. The budget is filled from the most specific level first:
- If the course had 100 or more matching races last year, the course figure is used on its own.
- If it had fewer, the remaining budget is filled from the all-courses figure for that distance and going, and then from the distance-only figure if needed.
Example. A 6f race on Good ground at a small track. Last year:
| Level | Races | Average SPF |
|---|---|---|
| This course, 6f, Good | 12 | 12.25 |
| Any course, 6f, Good | 400 | 12.45 |
| Any course, 6f, any going | 2,000 | 12.60 |
The course gets its 12 races of budget and the all-courses figure fills the other 88. The course figure carries 60% weight on 12 races and the all-courses figure 30% on 88, so the blend is about 12.41 s/f. That is pulled most of the way toward the all-courses figure, because 12 races are not enough to trust on their own.
With 50 course races instead, the course figure would carry about two-thirds of the result. With 100 or more it would carry all of it.
This approach is known as shrinkage. A small sample of races can easily be unusually fast or slow by chance, so we pull it toward a broader, more reliable average. The less evidence a course has, the more it borrows.
Step 2: the machine-learning correction
Last year’s average is a good start but has blind spots. Some courses consistently run faster or slower than their recent history suggests, and some goings affect long races more than short ones. To catch these patterns, a machine-learning model (XGBoost, a widely used gradient-boosted tree method) makes a correction to the blended figure.
The model sees four things for each type of race:
- distance (in furlongs),
- course,
- going,
- last year’s blended SPF.
It predicts how far this year’s actual SPF will differ from last year’s blend. The final expected SPF is the blend plus that predicted difference.
How it is trained. For each year a fresh model is trained on the previous year’s races. It learns how the blended history of the year before compared with what actually happened. It is then tested on the current year’s races, which it has not seen, so we can check that it genuinely improves on the plain blend. Some details:
- Each type of race is weighted by how many races it covers, so common races count for more.
- Extreme cases (more than three standard deviations out) are left out of training.
- The model is deliberately cautious: small trees, a slow learning rate and penalties on complexity. Its job is to nudge the historical figure, not replace it.
- A course or going the model has never seen is treated as the most common one from training.
In the worked example, if the model decides this course tends to ride a touch slower than its history, it might add 0.01 s/f, giving 12.42 s/f and a par for exactly 6f of 74.52 seconds.
What the par does not take into account
The par is the same for every race of the same course, distance and going in a year. In particular, it does not account for:
- Class. A Class 6 handicap and a Group 1 over the same course and distance on the same going share a par. Better horses run faster, so higher-class races will tend to produce higher Speed Grades. That is intended: SG measures speed, not performance against the class of the race.
- Pace and tactics. A slowly run race with a sprint finish produces a slower time, and lower grades, than the same horses would record in a truly run race.
- Field size and age or sex of the runners.
- Race type. Flat and jumps races are not modelled separately. Course and distance usually keep them apart, but where a course runs both over the same trip, they share a par.
Adjusting the par for the day
Why the par needs adjusting
The official going is a description, not a measurement. “Good” at one meeting can ride several seconds faster or slower than “Good” at the next because of watering, rain during the day, wind, rail movements or the official reading simply being off. If we compared every horse with an unadjusted par, a whole card could look exceptional or dreadful purely because the ground was quicker or slower than described.
So after racing, we measure how fast the track actually rode, known as the going variant, and correct the par.
How the variant is measured
For every race at a meeting, we compare the winner’s time with the par:
deviation = winning time – par time
A positive deviation means the race was run slower than par, and a negative one means faster. If the track was riding slow, nearly every race will show a positive deviation, and longer races will show bigger ones, because there is more ground to lose time on.
So we fit a straight line through the meeting’s races, plotting deviation against distance. The line has two parts:
| Part | Units | What it captures |
|---|---|---|
| Per race (fixed) | seconds | An offset that applies to every race regardless of trip, such as a timing difference or races generally being run tactically. |
| Per furlong (linear) | seconds per furlong | The effect that grows with distance. This is usually the ground: slow ground costs more over 2 miles than over 5 furlongs. |
Example. A four-race meeting:
| Race | Distance | Par | Winner’s time | Deviation |
|---|---|---|---|---|
| 1 | 5f | 61.00 | 61.90 | +0.90 |
| 2 | 6f | 74.52 | 75.62 | +1.10 |
| 3 | 8f | 99.00 | 100.40 | +1.40 |
| 4 | 12f | 152.00 | 154.30 | +2.30 |
Every race was slower than par, and the gap grows with distance. The best-fitting line is about -0.12 seconds per race plus 0.20 seconds per furlong. The ground was riding slow, by roughly a fifth of a second per furlong.
Blending with the whole day
A meeting with only a few races gives a shaky line. To steady it, we also fit the same line across every race run that day, at all courses, and blend the two:
85% from this meeting + 15% from the whole day
Suppose the whole-day line was +0.10 seconds per race and +0.15 seconds per furlong. The blended variant is about -0.09 seconds per race and +0.19 seconds per furlong.
If a fit is not possible, there is a fallback order:
- The meeting has two or more races and the day has a fit: use the 85/15 blend.
- Only the meeting has a fit: use the meeting on its own.
- The meeting has only one race: use the whole-day line.
- Nothing usable: no adjustment.
Applying it
adjusted par = par + per-race variant + (per-furlong variant x distance in furlongs)
For race 2 above: 74.52 + (-0.09 + 0.19 x 6) = 75.57 seconds.
As a safety guard, the adjusted par can never move more than 10% away from the original par, so a timing error or a freak result cannot distort a whole meeting.
Waiting for corrected times
Timeform sometimes corrects official race times a day or two after racing. The variant and adjusted pars are recalculated for the last few days every time the job runs, so grades settle once corrected times arrive. A grade you see on the day of the race may change slightly over the following days.
What the adjustment means for interpretation
Because the variant is measured from the winning times at the meeting, Speed Grade is relative to the other races at the same meeting, not a completely absolute measure of speed.
Higher grades for higher-class races still come through, because classier horses run faster than lower-class ones at the same meeting, but the absolute level is anchored to the day.
From the par to each horse
The horse's own time
Only the winner is officially timed. Every other horse is given a beaten distance in lengths. Those lengths are not measured on the track: they are converted from the time gaps on the finish photo, using a standard scale of lengths per second that depends on the going and on whether it is a flat or jumps race.
To get a time for every horse, we reverse that conversion. The beaten distance is turned back into seconds using the same kind of scale, and added to the winner’s time:
horse’s time = winner’s time + (lengths beaten / lengths per second)
Horses cover more lengths per second on fast ground than on heavy, so a 3-length defeat on firm ground represents a smaller time gap than the same defeat in the mud.
From the horse’s time we also record its average speed over the race, in metres per second (the race distance in metres divided by its time).
The grade
SG = adjusted par / horse’s time x 100
The result is rounded to 2 decimal places and kept between 80 and 120.
Example (race 2 above, adjusted par 75.57 seconds):
| Horse | Beaten | Time | Speed Grade |
|---|---|---|---|
| Winner | – | 75.62 | 75.57 / 75.62 x 100 = 99.93 |
| 2nd | 2.5 lengths (about 0.5 seconds on this going) | 76.12 | 75.57 / 76.12 x 100 = 99.28 |
What one point is worth
Because SG is a percentage of time, one point means more lengths in longer races:
| Race | Approx. time | 1 SG point is about |
|---|---|---|
| 5f sprint | 60 seconds | 0.6 seconds, roughly 3 lengths |
| 1m 4f | 150 seconds | 1.5 seconds, roughly 7 lengths |
| 2m 4f hurdle | 300 seconds | 3 seconds, roughly 12-15 lengths |
So a horse beaten 10 lengths in a staying hurdle can still record a perfectly respectable grade, while 10 lengths in a sprint is a big drop.
Who gets a grade
- Only finishers are graded. Fallers, pull-ups and other non-finishers have no time.
- Only races in Great Britain and Ireland with two or more runners and a known distance are graded.
- There is no cap on beaten distance, so horses tailed off by a long way usually land on the 80 floor.
- A provisional grade is written when results first come in, using the unadjusted par if the adjusted one is not ready yet. It is replaced once the daily adjustment has run.
Speed Grade as form: rolling figures
On horse, jockey, trainer and trainer-and-jockey profiles, Speed Grade is shown as form over a period: the last 6 months or 1 year for horses, and the last 4 weeks, 8 weeks, 12 weeks, 6 months or 1 year for jockeys and trainers.
How the rolling figure works
- Each day’s graded runs are added up per horse, jockey or trainer: the total of their grades, and how many graded runs they had.
- For a race on a given date, we take every day in the window before that date. The race day itself is never included, so a historical figure shows exactly what was known going into the race.
- The rolling Speed Grade is:
rolling SG = total of all grades in the window / number of graded runs in the window
Only runs that actually have a Speed Grade count. A run in a race that was not graded (abroad, for example) is simply ignored rather than counted as zero. If an entity has no graded runs in the window, the rolling Speed Grade is left blank rather than shown as a low number.
The rolling figure is kept between 80 and 120 and shown to 2 decimal places.
Best, worst and trend
Alongside the rolling figure you may see:
- Best SG: the highest rolling figure the entity has had at any point during the window.
- Worst SG: the lowest rolling figure during the window.
- Trend: the current rolling figure minus the average rolling figure over the window. Positive means their speed form is improving.
Best and worst are peaks and troughs in their form line, not single runs.
Why jockeys and trainers bunch together
A horse runs perhaps once a fortnight, so its rolling figure moves noticeably with each run, and most horses sit roughly between 98 and 102. A jockey might ride hundreds of times in the same window. All those good and bad rides average out, so most jockeys and trainers sit in a narrow band, often around 98-99. For a jockey, a rolling figure of 100 is exceptional, roughly top 1%.
That is why the normalised score in the next section is often more useful than the raw rolling figure for jockeys and trainers.
Normalised Speed Grade and race rankings
Normalised Speed Grade (0 to 100)
Raw rolling grades are hard to compare at a glance, especially when most jockeys sit between 98 and 99. The normalised Speed Grade converts the rolling figure to a percentile:
What percentage of all rolling Speed Grades (for this type of entity and this window length) is this figure better than?
For example, for jockeys over 12 weeks:
- 90 means this jockey’s rolling SG is higher than about 90% of all jockey 12-week rolling figures on record.
- 30 means it is higher than only about 30% of them.
The comparison is against everyone of the same type, across all dates, not against the entity’s own history. Horses are compared with horses, and jockeys with jockeys, each at the same window length.
The percentile scale runs from a rolling figure of 95 to 105. Anything below 95 is worse than everything on the scale, so its normalised score is 0. Anything above 105 is better than everything on the scale, so it scores 100. This only affects the normalised score. The rolling figure itself is still shown as it is.
Because jockey figures are so tightly bunched, small raw differences become large normalised ones. A jockey at 98.5 might be around the 30th percentile, and one at 99.5 around the 90th.
Race rankings
On race cards, runners are also ranked against each other on normalised Speed Grade:
- Rank: 1 is the best in the field, and tied runners share a rank.
- Gap: for the top-ranked runner, how far ahead of the second it is. For everyone else, how far behind the top runner they are.
The gap helps when two runners rank 1st and 2nd but are effectively level, or when the top runner is well clear.
Why it's built this way
| Design choice | Reason |
|---|---|
| Seconds per furlong rather than raw times | Lets races of slightly different distances share evidence. |
| Last year’s data for the par | Courses change (drainage, re-laying, rail positions), so recent evidence is more relevant than a long-term average. Using only completed years also means a par never uses the race it is rating. |
| Three-level blend with a 100-race budget | Small samples are noisy. Course-specific evidence is used when there is enough of it, and broader averages fill the gap when there is not. |
| Machine learning predicts a correction, not the whole par | The historical blend already carries most of the signal. A cautious model nudging it is more stable than one learning pars from scratch, and less likely to overreact to quirks. |
| Daily variant with two parts | Separates effects that apply to every race from effects that grow with distance, which is how ground and conditions actually behave. |
| 85% meeting, 15% day | The meeting is the best evidence of how that track rode, and the whole day steadies small meetings. |
| 10% limit on the adjustment | Stops one bad timing or freak result distorting a whole card. |
| Percentage of par, not seconds | Makes a sprint and a staying race comparable on one scale. |
| 80-120 range | Keeps tailed-off runs and timing errors from dominating averages. |
| Rolling figure = total / graded runs | Busy days count in proportion to the number of runs, and ungraded runs do not drag the average down. |
| Window ends before race day | Historical figures show only what was known before the race, so they can be fairly back-tested. |
Reading Speed Grades well
- Use single-run grades to judge one performance.
- Use rolling grades for how fast they usually run.
- Use normalised grades to compare quickly on a 0-100 scale, especially for jockeys and trainers.