Past Performances Exported File Format

This document specifies the PTD Comma-Delimited File Standard (revision 1.20) as of August 1, 2024. It defines five comma-delimited files that comprise a racing card at any racetrack.

Critical Programming Notes

String Field Handling

  • Embedded quotation marks are converted to percent characters (%) during export
  • Empty strings may be space-filled or appear as empty quotes; trim functions recommended
  • Do not assume fixed-width padding for empty fields

File Processing

  • No assumptions about entrant ordering (may be post position, saddle cloth, or other)
  • Advance notification provided for format changes
  • Do not hardcode version checking; convert to number and verify version ≥ required number

Pacelines

Do not assume that there will be only up to ten pacelines per horse. Field 7 of the ENT file indicates actual count.

Date Format Migration

FormatPatternLength
OldMM/DD/YY8 characters
NewMM/DD/YYYY10 characters

Determine format by checking field length.

File Naming Convention

ETTTMMDD.RYY where:

ComponentDescription
EConstant prefix
TTTTrack code (2-3 characters; underscore used if 2 characters)
MM/DDMonth/day
YYTwo-digit year

File extensions:

ExtensionContent
.RxxRaces
.CxxClass
.ExxEntries
.WxxWorkouts
.HxxHorses/Pacelines

FILE 1: Race Records (.Rxx)

FieldTypeDescription
1string(4)Schema version (currently "1.20")
2dateRace date (MM/dd/yy)
3string(3)Track ID
4numberRace number
5string(3)Simulcast track ID or blank
6numberSimulcast race number or 0
7numberRace distance in feet
8numberInner track: 0=No, 1=Yes
9numberTurf: 0=No, 1=Yes
10numberAbout distance: 0=No, 1=Yes
11numberRace class (0-5: Maiden Claiming through Handicap)
12numberMaximum claiming price
13numberMinimum claiming price
14numberPurse
15string(3)Age restrictions
16numberSex (0=Male, 1=Female, 2=Mixed)
17numberStatebred: 0=No, 1=Yes
18numberRestricted: 0=No, 1=Yes
19numberGraded Stakes (0=Not graded, 1-3=Grade levels)
20string(21)Short class description
21string(5)Local post time (h:mm)
22string(1)Time zone (E/C/M/P)
23string(5)UTC adjustment
24string(25)Track name
25numberTrack record in seconds
26string(5)24-hour post time (HH:mm)
27stringReserved
28numberCourse type (0-97 values)
29numberReserved

FILE 2: Class Strings (.Cxx)

FieldTypeDescription
1dateRace date (MM/dd/yy)
2string(3)Track ID
3numberRace number
4string(4100)Full race description and wagers (contains carriage return separating description from wagers)

Unique key: Fields 1-3 (one-to-one relationship with .RAC file)


FILE 3: Entry Records (.Exx)

FieldTypeDescription
1dateRace date (MM/dd/yy)
2string(3)Track ID
3numberRace number
4string(22)Runner's name
5string(4)Saddlecloth/Program number
6string(5)Morning line odds
7numberNumber of pacelines
8string(1)Entry letter (blank if not coupled)
9numberScratched: 0=No, 1=Yes
10numberCurrent year displayed
11numberStarts (current year)
12numberWins (current year)
13numberPlaces (current year)
14numberShows (current year)
15numberEarnings (current year)
16numberPrevious year displayed
17numberStarts (previous year)
18numberWins (previous year)
19numberPlaces (previous year)
20numberShows (previous year)
21numberEarnings (previous year)
22string(40)Owner's name
23string(5)Color
24numberYear foaled
25numberMonth foaled
26string(5)Breeding location
27numberAge
28string(1)Sex (c/h/g/r/f/m/b)
29string(22)Sire's name
30string(22)Sire's sire name
31string(22)Dam's name
32string(22)Dam's sire name
33string(22)Trainer's name
34string(58)Breeder's name
35numberTrainer starts (current meet)
36numberTrainer wins (current meet)
37numberTrainer places (current meet)
38numberTrainer shows (current meet)
39numberTrainer win percentage
40numberLasix: 0=No, 1=Yes
41numberBute: 0=No, 1=Yes
42numberAssigned weight
43numberApprentice allowance
44string(22)Jockey's name
45numberJockey starts (current meet)
46numberJockey wins (current meet)
47numberJockey places (current meet)
48numberJockey shows (current meet)
49numberJockey win percentage
50numberClaiming price
51numberLifetime starts
52numberLifetime wins
53numberLifetime places
54numberLifetime shows
55numberLifetime earnings
56numberToday's track starts
57numberToday's track wins
58numberToday's track places
59numberToday's track shows
60numberToday's track earnings
61numberTurf starts
62numberTurf wins
63numberTurf places
64numberTurf shows
65numberTurf earnings
66numberWet track starts
67numberWet track wins
68numberWet track places
69numberWet track shows
70numberWet track earnings
71numberToday's distance starts
72numberToday's distance wins
73numberToday's distance places
74numberToday's distance shows
75numberToday's distance earnings
76numberAlso-eligible: 0=No, 1=Yes
77numberPart-of-field: 0=No, 1=Yes
78numberBlinkers (0=No change, 1=On, 2=Off)
79numberBandages: 0=No, 1=Yes
80string(40)Jockey stats string (YTD)
81string(40)Trainer stats string (YTD)
82dateDate of sex change
83string(1)Previous sex before change
84numberPost position
85numberOff-track breeding rating
86numberTurf breeding rating
87numberFirst-time Lasix: 0=No, 1=Yes

Unique key: Fields 1-4 (one-to-many relationship with .HOR file)

Unused fields: 76, 77, 79


FILE 4: Workout Records (.Wxx)

FieldTypeDescription
1dateToday's race date (MM/dd/yy)
2string(3)Today's track ID
3numberToday's race number
4string(22)Runner's name
5dateWorkout date (MM/dd/yy)
6string(3)Workout track ID
7numberWorkout distance in feet
8numberInner track: 0=No, 1=Yes
9numberTurf: 0=No, 1=Yes
10numberTraining track: 0=No, 1=Yes
11string(3)Track condition (e.g., "fst", "fm")
12numberWorkout time in seconds
13numberBreezing: 0=No, 1=Yes
14numberHandily: 0=No, 1=Yes
15numberBullet workout: 0=No, 1=Yes
16numberDogs up: 0=No, 1=Yes
17numberGate workout: 0=No, 1=Yes
18numberWorkout rank
19numberTotal workouts at distance/course type
20stringReserved
21stringReserved
22numberCourse type (0-97 values)
23numberReserved

Unique key: Fields 1-5

Note: Currently up to 12 workouts; future increases possible.


FILE 5: Paceline Records (.Hxx)

FieldTypeDescription
1dateToday's race date (MM/dd/yy)
2string(3)Today's track ID
3numberToday's race number
4string(22)Runner's name
5datePaceline date (MM/dd/yy)
6string(3)Paceline track ID
7numberPaceline race number
8numberDistance in feet
9numberInner track: 0=No, 1=Yes
10numberTurf: 0=No, 1=Yes
11numberAbout distance: 0=No, 1=Yes
12numberOff-the-turf: 0=No, 1=Yes
13string(3)Track condition
14numberThree-and-up: 0=No, 1=Yes
15numberFemales-only: 0=No, 1=Yes
16numberStatebreds-only: 0=No, 1=Yes
17numberRestricted: 0=No, 1=Yes
18string(3)Age restrictions
19numberSex restrictions (0=Male, 1=Female, 2=Mixed)
20string(21)Short class description
21string(45)Extended class info
22numberPurse
23numberClaiming price (entry price)
24numberRace class (0-5)
25numberGraded Stakes (0=Not graded, 1-3)
26numberClaimed: 0=No, 1=Yes
27numberFirst call time (seconds)
28numberSecond call time (seconds)
29numberFinal time (seconds)
30numberAdditional fractional time (seconds)
31numberPost position
32numberStart call position
33numberFirst call position
34numberSecond call position
35numberStretch call position
36numberFinish position
37numberFirst call beaten/leading lengths
38numberSecond call beaten/leading lengths
39numberStretch call beaten/leading lengths
40numberFinish beaten/leading lengths
41string(22)Jockey's name
42numberLasix: 0=No, 1=Yes
43numberBute: 0=No, 1=Yes
44numberWeight carried
45numberBlinkers: 0=No, 1=Yes
46numberFront wraps: 0=No, 1=Yes
47numberFavorite: 0=No, 1=Yes
48numberTote odds
49numberOdds ranking
50numberCoupled: 0=No, 1=Yes
51numberDead heat: 0=No, 1=Yes
52numberDisqualified: 0=No, 1=Yes
53numberOfficial position
54numberSpeed rating
55numberTrack variant
56numberAdvanced Speed Figure (ASF)
57numberPTD Early Pace Rating
58numberPTD Late Pace Rating
59numberPTD True Pace Rating
60numberPTD Speed Rating
61numberPTD Early Pace Variant (1st fraction)
62numberPTD Early Pace Variant (2nd fraction)
63numberPTD Final Time Variant (1st fraction)
64numberPTD Additional Fraction Variant (1st fraction)
65string(22)Winning horse's name
66numberWinning horse's weight
67numberWinning margin over next runner (lengths)
68string(22)Second-place horse's name
69numberSecond-place weight
70numberSecond-place margin (lengths)
71string(22)Third-place horse's name
72numberThird-place weight
73numberThird-place margin (lengths)
74string(22)Trouble line details
75numberNumber of runners in race
76string(22)Original trainer name (if claimed)
77string(35)Original owner name (if claimed)
78string(72)Extended trouble line details
79string(10)Disqualification comments
80stringForeign track description
81stringForeign track direction
82stringTrainer's name
83stringOwner's name
84numberRace type (0=Thoroughbred, 4=Foreign)
85numberApprentice allowance
86numberCourse type (0-97 values)
87numberReserved

Unique key: Fields 1-5

Unused fields: 21, 60-64, 80-81


Fractional Time Specifications

Sprint Distances

Short sprints (≤4.5f):

FieldContent
firstCallTime (field 27)2f time
secondCallTime (field 28)4f time
finalTime (field 29)Final time
additionalFractionalTime (field 30)Stretch call time

Sprints 5.5f-6f:

  • additionalFractionalTime: 5/8 time

Sprints 6.5f-7.5f:

  • additionalFractionalTime: 6f time

Route Distances

All routes:

FieldContent
firstCallTime (field 27)4f time
secondCallTime (field 28)6f time
finalTime (field 29)Final time

Routes 8f-8.5f:

  • additionalFractionalTime: 2f time

Routes >8.5f:

  • additionalFractionalTime: 8f time

Note: Zero values indicate unavailable/unrecorded times at particular distances.


Position Call and Beaten Lengths Rules

  • All beaten lengths expressed in decimals (3.25 = 3-1/4, 0.15 = head, 0.20 = neck, 0.10 = nose)
  • Zero in beaten lengths field: Indicates missing data; never valid for non-lead horses
  • 99.75 or higher: Horse was eased (check for ≥99)
  • Positive values for leading horses: Represent margin of lead at that position
  • Position call of zero with beaten lengths zero: No data available (e.g., foreign horse internals)

Advanced Speed Figure (ASF) Values

ValueMeaning
-1Insufficient information (foreign paceline)
998Otherwise negative figure (displays as "-0" in PPs)
999Incalculable figure (displays as "-" in PPs)

Course Type Classification

CodeDescription
0Dirt
1Turf
2Inner Dirt
3Inner Turf
5Outer Turf
7Downhill Turf
8All Weather
33Hurdle
65Steeplechase
97Jumps (or, other)

Unused/Reserved Fields

FileUnused Fields
RACNone
CLSNone
ENT76, 77, 79
WORNone (up to 12 workouts expected in future)
HOR21, 60, 61-64, 80, 81 (some hoped to return shortly)

Important Developer Notes

  1. PLEASE MAKE SURE that your program can handle space filled strings and empty strings
  2. Do not hardcode version numbers; programmatically verify minimum required version
  3. Trim all string fields before checking length
  4. Always reference field position (e.g., field 7 of ENT) rather than assuming fixed counts
  5. Advance notice provided before breaking changes

Last updated: August 1, 2024

Copyright 2025 by Scratchsoft, Inc.