Choose surface, then load your historical race data (raceform.csv or merged CSV)
Train the prediction model on your historical race data
Export racing_model.json → load into phone predictor app
| Column | Status | What it contains | Example values |
|---|---|---|---|
| date | Required | Race date | 2024-06-18 |
| course | Required | Racecourse name | Ascot, Newmarket, York |
| horse | Required | Horse name (country code stripped automatically) | Charming Prince (IRE) |
| pos | Required | Finishing position. Non-finishers counted as unplaced. | 1, 2, 3, PU, F, BD, DSQ |
| jockey | Required | Jockey's full name | F Dettori, W Buick |
| trainer | Required | Trainer's full name | J Gosden, A P O'Brien |
| dist | Required | Race distance in raceform notation (converted to furlongs internally) | 5f, 1m, 1m2f, 1m6½f, 2m |
| going | Required | Going description at race time | Good To Firm, Good, Soft, Heavy |
| draw | Optional | Stall draw number. Used to build course-specific draw bias tables. | 1, 5, 12 |
| sp | Optional | Starting price in fractional odds. F suffix (favourite) is stripped automatically. | 4/1, 11/4, 7/2F, Evens |
| or | Optional | Official Rating at time of race. Higher = better-rated horse. | 95, 108, 115 |
| rpr | Optional | Racing Post Rating for this run. Used as an additional form signal. | 88, 102, 117 |
| ts | Optional | Topspeed rating for this run. Speed figure on a consistent scale. | 72, 85, 98 |
| age | Optional | Horse age in years at time of race | 2, 3, 4, 5 |
| wgt | Optional | Weight carried in stones-pounds format | 9-2, 8-11, 10-0 |
| ran | Optional | Number of runners in the race. Used to contextualise positions. | 8, 12, 16 |
| class | Optional | Race class/grade | Class 1, Class 4, Group 1 |
| pattern | Optional | Pattern race designation | Group 1, Group 2, Listed |
| race_id | Optional | Unique race identifier. Used to group runners per race more accurately than date+course alone. | 615704, 910939 |
Accepts .csv or .xlsx — raceform.csv or your merged CSV
v3: learns what each signal adds beyond the starting price. Every race is scored using only results from earlier days (no look-ahead), with: horse win and place rate, jockey and trainer win rate, draw by course, going, distance and course record, freshness, Official Rating, the horse's previous RPR and Topspeed, and recent form. The newest 20% of races are held back to test it against the market alone. The app only uses the model if it beat the market on that test.
Try the download button first. If nothing happens, use the Save via Notepad method below.
If the box above shows green text starting with { — it's ready to copy.