🏇 Racing Trainer

DESKTOP MODEL BUILDER · v3.3 · 09 Jun 2026
1

Step 1

Choose surface, then load your historical race data (raceform.csv or merged CSV)

2

Step 2

Train the prediction model on your historical race data

3

Step 3

Export racing_model.json → load into phone predictor app

📂 Load Race History
Surface:
Date Range:
to
— more recent = more relevant, fewer rows = faster training
Origin:
Turf mode: Loads all flat turf races (non-AW). Accepts all courses in the CSV — no horses are excluded by course name. Load raceform.csv or flat_turf_trainer.csv.
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
📄 Click to browse or drag & drop

Accepts .csv or .xlsx — raceform.csv or your merged CSV

⚙ Train Model

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.

Waiting for data…
⇓ Export Model
✓ Model trained successfully!

Try the download button first. If nothing happens, use the Save via Notepad method below.

📋 If the download doesn't work — Save via Notepad:

1. Click Select All Text below — the box will highlight
2. Press Ctrl + C to copy
3. Open Notepad (search it in the Start menu)
4. Press Ctrl + V to paste
5. Click File → Save As
6. Set Save as type to All Files
7. Name the file racing_model.json and save

If the box above shows green text starting with { — it's ready to copy.