10 Commits
Author SHA1 Message Date
zephyr cf00bb54c5 zenno/doc/fans: margin is displayed margin
ci/woodpecker/push/horsebot Pipeline was successful
ci/woodpecker/push/zenno Pipeline failed
2026-10-17 21:17:42 -04:00
zephyr cdda88181f zenno/doc/fans: missed placement base fan permilles
ci/woodpecker/push/horsebot Pipeline was successful
ci/woodpecker/push/zenno Pipeline failed
2026-10-17 14:40:55 -04:00
zephyr 57a967978b zenno: link up doc/fans
ci/woodpecker/push/horsebot Pipeline was successful
ci/woodpecker/push/zenno Pipeline failed
2026-10-17 14:32:05 -04:00
zephyr 939012b511 doc/fans: new article for career fan gain formula
ci/woodpecker/push/horsebot Pipeline was successful
ci/woodpecker/push/zenno Pipeline was successful
2026-10-17 14:25:57 -04:00
zephyr 888a6dbf3c zenno: format 2026-10-16 23:17:29 -04:00
zephyr fb27817038 zenno: fix course tests 2026-10-16 19:06:08 -04:00
zephyr f27b9dcaa5 mdb: fix duplicated carnival bonus skill 2026-10-16 17:53:09 -04:00
zephyr 645abb2f66 mdb: exclude all unused race courses 2026-10-12 16:49:55 -04:00
zephyr cf301745f1 zenno: use a real last spurt phase 2026-10-10 13:37:12 -04:00
zephyr 3a39794312 horse: use straight front type in racecourse api 2026-10-10 13:37:12 -04:00
15 changed files with 666 additions and 477 deletions
+3 -4
View File
@@ -139,9 +139,8 @@ func spansslopes(id horse.RacecourseID, evts []courseEvent, length float32) ([]h
} }
// Start of the straight. // Start of the straight.
span = horse.RacecourseSpan{ span = horse.RacecourseSpan{
Start: evt.Distance, Start: evt.Distance,
Straight: true, Straight: int8(evt.Values[1]),
FarStraight: evt.Values[1] == 2,
} }
// Continue out of the switch. // Continue out of the switch.
} }
@@ -154,7 +153,7 @@ func spansslopes(id horse.RacecourseID, evts []courseEvent, length float32) ([]h
// Longchamp 1000 (which doesn't appear to actually be used but w/e) // Longchamp 1000 (which doesn't appear to actually be used but w/e)
// defines straights by their start positions only, so check for the // defines straights by their start positions only, so check for the
// previous event being a straight with no end. // previous event being a straight with no end.
if prev.Straight && prev.End == 0 { if prev.Straight != 0 && prev.End == 0 {
spans[len(spans)-1].End = span.Start spans[len(spans)-1].End = span.Start
} else { } else {
// Otherwise, insert a new span which is neither straight nor corner. // Otherwise, insert a new span which is neither straight nor corner.
+20 -66
View File
@@ -35,7 +35,7 @@ func TestRacecourses(t *testing.T) {
{ {
Start: 0, Start: 0,
End: 649.9000244140625, End: 649.9000244140625,
Straight: true, Straight: 1,
}, },
{ {
Start: 649.9000244140625, Start: 649.9000244140625,
@@ -44,7 +44,7 @@ func TestRacecourses(t *testing.T) {
{ {
Start: 650, Start: 650,
End: 1000, End: 1000,
Straight: true, Straight: 1,
}, },
}, },
Slopes: []horse.Slope{}, Slopes: []horse.Slope{},
@@ -64,10 +64,9 @@ func TestRacecourses(t *testing.T) {
LaneStart: [18]horse.TenThousandths{0, 555, 1111, 1666, 2222, 2777, 3333, 3888, 4444, 5333, 5888, 6444, 7000, 7555, 8111, 8666, 9222, 9777}, LaneStart: [18]horse.TenThousandths{0, 555, 1111, 1666, 2222, 2777, 3333, 3888, 4444, 5333, 5888, 6444, 7000, 7555, 8111, 8666, 9222, 9777},
Spans: []horse.RacecourseSpan{ Spans: []horse.RacecourseSpan{
{ {
Start: 0, Start: 0,
End: 458, End: 458,
Straight: true, Straight: 2,
FarStraight: true,
}, },
{ {
Start: 458, Start: 458,
@@ -82,7 +81,7 @@ func TestRacecourses(t *testing.T) {
{ {
Start: 958, Start: 958,
End: 1450, End: 1450,
Straight: true, Straight: 1,
}, },
{ {
Start: 1450, Start: 1450,
@@ -95,10 +94,9 @@ func TestRacecourses(t *testing.T) {
Corner: 2, Corner: 2,
}, },
{ {
Start: 1850, Start: 1850,
End: 2300, End: 2300,
Straight: true, Straight: 2,
FarStraight: true,
}, },
{ {
Start: 2300, Start: 2300,
@@ -113,7 +111,7 @@ func TestRacecourses(t *testing.T) {
{ {
Start: 2797, Start: 2797,
End: 3200, End: 3200,
Straight: true, Straight: 1,
}, },
}, },
Slopes: []horse.Slope{ Slopes: []horse.Slope{
@@ -166,7 +164,7 @@ func TestRacecourses(t *testing.T) {
{ {
Start: 0, Start: 0,
End: 500, End: 500,
Straight: true, Straight: 1,
}, },
{ {
Start: 500, Start: 500,
@@ -179,10 +177,9 @@ func TestRacecourses(t *testing.T) {
Corner: 2, Corner: 2,
}, },
{ {
Start: 800, Start: 800,
End: 1300, End: 1300,
Straight: true, Straight: 2,
FarStraight: true,
}, },
{ {
Start: 1300, Start: 1300,
@@ -197,54 +194,12 @@ func TestRacecourses(t *testing.T) {
{ {
Start: 1614, Start: 1614,
End: 2000, End: 2000,
Straight: true, Straight: 1,
}, },
}, },
Slopes: []horse.Slope{}, Slopes: []horse.Slope{},
MoveLanePoint: 500, MoveLanePoint: 500,
}, },
{
ID: 11203,
TrackID: 10201,
TrackName: "Longchamp",
Distance: 2400,
Ground: 1,
InOut: 1,
Turn: 1,
LaneMax: 12000,
Threshold1: 3,
Threshold2: 0,
LaneStart: [18]horse.TenThousandths{0, 555, 1111, 1666, 2222, 2777, 3333, 3888, 4444, 5000, 5555, 6111, 6666, 7222, 8811, 9366, 9922, 10477},
Spans: []horse.RacecourseSpan{
{
Start: 0,
End: 798,
Straight: true,
FarStraight: true,
},
{
Start: 798,
End: 800,
},
{
Start: 800,
End: 1200,
Corner: 3,
},
{
Start: 1200,
End: 1600,
Corner: 4,
},
{
Start: 1600,
End: 2400,
Straight: true,
},
},
Slopes: []horse.Slope{},
MoveLanePoint: 800,
},
{ {
ID: 11504, ID: 11504,
TrackID: 10105, TrackID: 10105,
@@ -265,7 +220,7 @@ func TestRacecourses(t *testing.T) {
{ {
Start: 100, Start: 100,
End: 500, End: 500,
Straight: true, Straight: 1,
}, },
{ {
Start: 500, Start: 500,
@@ -278,10 +233,9 @@ func TestRacecourses(t *testing.T) {
Corner: 2, Corner: 2,
}, },
{ {
Start: 900, Start: 900,
End: 1300, End: 1300,
Straight: true, Straight: 2,
FarStraight: true,
}, },
{ {
Start: 1300, Start: 1300,
@@ -296,7 +250,7 @@ func TestRacecourses(t *testing.T) {
{ {
Start: 1700, Start: 1700,
End: 2000, End: 2000,
Straight: true, Straight: 1,
}, },
}, },
Slopes: []horse.Slope{ Slopes: []horse.Slope{
+3 -2
View File
@@ -17,6 +17,7 @@ FROM race_course_set c
JOIN track ON c.race_track_id = track.id JOIN track ON c.race_track_id = track.id
JOIN race_track t ON c.race_track_id = t.id JOIN race_track t ON c.race_track_id = t.id
LEFT JOIN race_course_set_status ss ON c.course_set_status_id = ss.course_set_status_id LEFT JOIN race_course_set_status ss ON c.course_set_status_id = ss.course_set_status_id
-- Exclude unused Longchamp courses with busted data. -- Only include courses that can be selected for room matches.
WHERE c.id NOT IN (11201, 11202) -- Some other courses exist in the game files but have busted data.
WHERE c.id IN (SELECT course_set FROM race WHERE "group" = 12)
ORDER BY c.id ORDER BY c.id
+1 -1
View File
@@ -6,7 +6,7 @@ WITH skill_names AS (
FROM text_data n FROM text_data n
JOIN text_data d ON n."index" = d."index" AND n."category" = 47 AND d."category" = 48 JOIN text_data d ON n."index" = d."index" AND n."category" = 47 AND d."category" = 48
), skill_groups AS ( ), skill_groups AS (
SELECT SELECT DISTINCT
group_id, group_id,
name name
FROM skill_data d FROM skill_data d
+61
View File
@@ -40,3 +40,64 @@ INSERT INTO race_track (id, initial_lane_type, enable_half_gate, horse_num_gate_
INSERT INTO race_track (id, initial_lane_type, enable_half_gate, horse_num_gate_variation, turf_vision_type, footsmoke_color_type, area, flag_type, gate_panel_type, gate_lamp_type, board_condition_type, result_board_type) VALUES (10101, 2, 0, 1, 2, 2, 2, 1, 1, 1, 3, 0); INSERT INTO race_track (id, initial_lane_type, enable_half_gate, horse_num_gate_variation, turf_vision_type, footsmoke_color_type, area, flag_type, gate_panel_type, gate_lamp_type, board_condition_type, result_board_type) VALUES (10101, 2, 0, 1, 2, 2, 2, 1, 1, 1, 3, 0);
INSERT INTO race_track (id, initial_lane_type, enable_half_gate, horse_num_gate_variation, turf_vision_type, footsmoke_color_type, area, flag_type, gate_panel_type, gate_lamp_type, board_condition_type, result_board_type) VALUES (10105, 4, 1, 0, 2, 2, 1, 1, 1, 1, 4, 0); INSERT INTO race_track (id, initial_lane_type, enable_half_gate, horse_num_gate_variation, turf_vision_type, footsmoke_color_type, area, flag_type, gate_panel_type, gate_lamp_type, board_condition_type, result_board_type) VALUES (10105, 4, 1, 0, 2, 2, 1, 1, 1, 1, 4, 0);
INSERT INTO race_track (id, initial_lane_type, enable_half_gate, horse_num_gate_variation, turf_vision_type, footsmoke_color_type, area, flag_type, gate_panel_type, gate_lamp_type, board_condition_type, result_board_type) VALUES (10201, 3, 1, 0, 1, 1, 5, 0, 2, 2, 1, 0); INSERT INTO race_track (id, initial_lane_type, enable_half_gate, horse_num_gate_variation, turf_vision_type, footsmoke_color_type, area, flag_type, gate_panel_type, gate_lamp_type, board_condition_type, result_board_type) VALUES (10201, 3, 1, 0, 1, 1, 5, 0, 2, 2, 1, 0);
CREATE TABLE IF NOT EXISTS 'race' ('id' INTEGER NOT NULL, 'group' INTEGER NOT NULL, 'grade' INTEGER NOT NULL, 'course_set' INTEGER NOT NULL, 'thumbnail_id' INTEGER NOT NULL, 'ff_cue_name' TEXT NOT NULL, 'ff_cuesheet_name' TEXT NOT NULL, 'real_ff_cue_name' TEXT NOT NULL, 'real_ff_cuesheet_name' TEXT NOT NULL, 'ff_anim' INTEGER NOT NULL, 'ff_camera' INTEGER NOT NULL, 'ff_camera_sub' INTEGER NOT NULL, 'ff_sub' INTEGER NOT NULL, 'start_gate' INTEGER NOT NULL, 'start_gate_panel' INTEGER NOT NULL, 'goal_gate' INTEGER NOT NULL, 'goal_flower' INTEGER NOT NULL, 'result_podium' INTEGER NOT NULL, 'audience_group_id' INTEGER NOT NULL, 'paddock_bg_id' INTEGER NOT NULL, 'audience' INTEGER NOT NULL, 'entry_num' INTEGER NOT NULL, 'change_full_gate' INTEGER NOT NULL, 'is_dirtgrade' INTEGER NOT NULL, 'start_date' INTEGER NOT NULL, PRIMARY KEY('id'));
-- SELECT * FROM race WHERE course_set IN (10301, 10811, 11103, 11203, 11504);
INSERT INTO race VALUES(3042,1,300,10301,3042,'snd_mfx_1007_CL','snd_mfx_1007_CL','snd_mfx_r_1007_CL','snd_mfx_r_1007_CL',3042,207,0,0,0,0,0,0,-1,0,0,0,18,0,0,1498870800);
INSERT INTO race VALUES(4055,1,400,10301,4055,'snd_mfx_1012_CL','snd_mfx_1012_CL','snd_mfx_r_1012_CL','snd_mfx_r_1012_CL',4055,312,0,0,0,0,0,0,-1,0,0,0,18,0,0,1498870800);
INSERT INTO race VALUES(4101,1,400,10301,4101,'snd_mfx_1012_CL','snd_mfx_1012_CL','snd_mfx_r_1012_CL','snd_mfx_r_1012_CL',4101,312,0,0,0,0,0,0,-1,0,0,0,18,0,0,1498870800);
INSERT INTO race VALUES(5032,6,900,10301,5002,'snd_mfx_2009_CL','snd_mfx_2009_CL','','',5002,312,0,0,0,0,0,0,-1,0,0,1,18,0,0,1636977600);
INSERT INTO race VALUES(5226,12,999,10301,5200,'snd_mfx_2008_CL','snd_mfx_2008_CL','','',5200,121,0,0,0,0,0,0,-1,0,0,0,18,0,0,1627560000);
INSERT INTO race VALUES(6136,9,100,10301,6100,'snd_mfx_2004_CL','snd_mfx_2004_CL','','',6100,121,0,0,0,0,0,0,-1,0,0,0,12,0,0,1498870800);
INSERT INTO race VALUES(6137,9,100,10301,6101,'snd_mfx_2004_CL','snd_mfx_2004_CL','','',6101,121,0,0,0,0,0,0,-1,0,0,0,12,0,0,1498870800);
INSERT INTO race VALUES(6138,9,100,10301,6102,'snd_mfx_2004_CL','snd_mfx_2004_CL','','',6102,121,0,0,0,0,0,0,-1,0,0,0,12,0,0,1498870800);
INSERT INTO race VALUES(9307,7,800,10301,9005,'snd_mfx_1012_CL','snd_mfx_1012_CL','snd_mfx_r_1012_CL','snd_mfx_r_1012_CL',9005,312,0,0,0,0,0,0,-1,0,0,0,9,0,0,1498870800);
INSERT INTO race VALUES(9323,7,800,10301,9003,'snd_mfx_1012_CL','snd_mfx_1012_CL','snd_mfx_r_1012_CL','snd_mfx_r_1012_CL',9003,312,0,0,0,0,0,0,-1,0,0,0,9,0,0,1498870800);
INSERT INTO race VALUES(1006,1,100,10811,1006,'snd_mfx_1002_CL','snd_mfx_1002_CL','snd_mfx_r_1002_CL','snd_mfx_r_1002_CL',1006,102,0,0,0,0,1,1,-1,0,0,0,18,0,0,1498870800);
INSERT INTO race VALUES(4905,61,100,10811,1006,'snd_mfx_1002_CL','snd_mfx_1002_CL','','',1006,102,0,0,0,0,1,1,-1,0,0,0,18,0,0,1498870800);
INSERT INTO race VALUES(5070,6,900,10811,5002,'snd_mfx_2009_CL','snd_mfx_2009_CL','','',5002,313,0,0,0,0,0,0,-1,0,0,1,18,0,0,1636977600);
INSERT INTO race VALUES(5113,6,100,10811,1006,'snd_mfx_2009_CL','snd_mfx_2009_CL','','',1006,313,0,0,0,0,1,1,-1,0,0,1,18,0,0,1636977600);
INSERT INTO race VALUES(5257,12,999,10811,5200,'snd_mfx_2008_CL','snd_mfx_2008_CL','','',5200,121,0,0,0,0,0,0,-1,0,0,0,18,0,0,1627560000);
INSERT INTO race VALUES(5930,8,100,10811,5930,'snd_mfx_2003_CL','snd_mfx_2003_CL','','',5930,102,0,0,0,0,1,1,-1,0,0,0,18,0,0,1623931200);
INSERT INTO race VALUES(5931,8,100,10811,5930,'snd_mfx_2003_CL','snd_mfx_2003_CL','','',5930,102,0,0,0,0,1,1,-1,0,0,0,18,0,0,1623931200);
INSERT INTO race VALUES(5932,8,100,10811,5930,'snd_mfx_2003_CL','snd_mfx_2003_CL','','',5930,102,0,0,0,0,1,1,-1,0,0,0,18,0,0,1623931200);
INSERT INTO race VALUES(5933,8,100,10811,5930,'snd_mfx_2003_CL','snd_mfx_2003_CL','','',5930,102,0,0,0,0,1,1,-1,0,0,0,18,0,0,1623931200);
INSERT INTO race VALUES(6006,11,100,10811,6006,'snd_mfx_2005_CL','snd_mfx_2005_CL','','',6006,122,0,0,0,0,0,0,-1,0,0,0,9,0,0,1623326400);
INSERT INTO race VALUES(6018,11,100,10811,6006,'snd_mfx_2006_CL','snd_mfx_2006_CL','','',6006,123,0,0,0,0,0,0,-1,0,0,0,9,0,0,1623326400);
INSERT INTO race VALUES(6283,9,100,10811,6100,'snd_mfx_2004_CL','snd_mfx_2004_CL','','',6100,121,0,0,0,0,0,0,-1,0,0,0,12,0,0,1498870800);
INSERT INTO race VALUES(6284,9,100,10811,6101,'snd_mfx_2004_CL','snd_mfx_2004_CL','','',6101,121,0,0,0,0,0,0,-1,0,0,0,12,0,0,1498870800);
INSERT INTO race VALUES(6285,9,100,10811,6102,'snd_mfx_2004_CL','snd_mfx_2004_CL','','',6102,121,0,0,0,0,0,0,-1,0,0,0,12,0,0,1498870800);
INSERT INTO race VALUES(7004,4,0,10811,7004,'snd_mfx_1013_CL','snd_mfx_1013_CL','','',7004,313,0,0,0,0,0,0,-1,0,0,0,18,0,0,1498870800);
INSERT INTO race VALUES(7018,4,0,10811,7018,'snd_mfx_1013_CL','snd_mfx_1013_CL','','',7018,313,0,0,0,0,0,0,-1,0,0,0,12,0,0,1647777600);
INSERT INTO race VALUES(9530,7,100,10811,9020,'snd_mfx_3002_CL','snd_mfx_3002_CL','','',9020,208,0,0,0,0,302,0,-1,0,0,0,18,0,0,1498870800);
INSERT INTO race VALUES(9630,7,100,10811,9010,'snd_mfx_3002_CL','snd_mfx_3002_CL','','',9010,208,0,0,0,0,303,0,-1,0,0,0,18,0,0,1498870800);
INSERT INTO race VALUES(9730,7,100,10811,9001,'snd_mfx_3001_CL','snd_mfx_3001_CL','','',9001,119,0,0,0,0,301,0,-1,0,0,0,18,0,0,1498870800);
INSERT INTO race VALUES(9826,7,100,10811,9031,'snd_mfx_3005_CL','snd_mfx_3005_CL','','',9030,119,0,0,0,0,304,0,-1,0,0,0,16,0,0,1645704000);
INSERT INTO race VALUES(9867,7,100,10811,9032,'snd_mfx_3005_CL','snd_mfx_3005_CL','','',9030,119,0,0,0,0,304,0,-1,0,0,0,16,0,0,1645704000);
INSERT INTO race VALUES(9908,7,100,10811,9033,'snd_mfx_3005_CL','snd_mfx_3005_CL','','',9030,119,0,0,0,0,304,0,-1,0,0,0,16,0,0,1645704000);
INSERT INTO race VALUES(10165,12,100,10811,1006,'snd_mfx_1002_CL','snd_mfx_1002_CL','snd_mfx_r_1002_CL','snd_mfx_r_1002_CL',1006,102,0,0,0,0,1,1,-1,0,0,0,18,0,0,1623326400);
INSERT INTO race VALUES(12000,8,100,10811,5930,'snd_mfx_2003_CL','snd_mfx_2003_CL','','',5930,102,0,0,0,0,1,1,-1,0,0,0,18,0,0,1652184000);
INSERT INTO race VALUES(16305,10,1000,10811,6101,'snd_mfx_3003_CL','snd_mfx_3003_CL','','',6100,121,0,0,0,0,0,0,-1,0,0,3,12,0,0,1783029600);
INSERT INTO race VALUES(1101,1,100,11103,1101,'snd_mfx_1015_CL','snd_mfx_1015_CL','snd_mfx_r_1015_CL','snd_mfx_r_1015_CL',1101,313,0,0,100,0,1,0,-1,0,0,0,16,0,1,1498870800);
INSERT INTO race VALUES(1102,1,100,11103,1102,'snd_mfx_1015_CL','snd_mfx_1015_CL','snd_mfx_r_1015_CL','snd_mfx_r_1015_CL',1102,313,0,0,100,0,2,0,-1,0,0,0,16,0,1,1498870800);
INSERT INTO race VALUES(1105,1,100,11103,1105,'snd_mfx_1015_CL','snd_mfx_1015_CL','snd_mfx_r_1015_CL','snd_mfx_r_1015_CL',1105,313,0,0,100,0,5,0,-1,0,0,0,16,0,1,1498870800);
INSERT INTO race VALUES(1106,1,100,11103,1106,'snd_mfx_1014_CL','snd_mfx_1014_CL','snd_mfx_r_1014_CL','snd_mfx_r_1014_CL',1106,313,0,0,100,0,6,0,-1,0,0,0,16,0,1,1498870800);
INSERT INTO race VALUES(4924,61,100,11103,1101,'snd_mfx_1015_CL','snd_mfx_1015_CL','','',1101,313,0,0,100,0,1,0,-1,0,0,0,16,0,1,1498870800);
INSERT INTO race VALUES(4925,61,100,11103,1102,'snd_mfx_1015_CL','snd_mfx_1015_CL','','',1102,313,0,0,100,0,2,0,-1,0,0,0,16,0,1,1498870800);
INSERT INTO race VALUES(4928,61,100,11103,1105,'snd_mfx_1015_CL','snd_mfx_1015_CL','','',1105,313,0,0,100,0,5,0,-1,0,0,0,16,0,1,1498870800);
INSERT INTO race VALUES(4929,61,100,11103,1106,'snd_mfx_1014_CL','snd_mfx_1014_CL','','',1106,313,0,0,100,0,6,0,-1,0,0,0,16,0,1,1498870800);
INSERT INTO race VALUES(5105,6,900,11103,5002,'snd_mfx_2009_CL','snd_mfx_2009_CL','','',5002,315,0,0,100,0,0,0,-1,0,0,1,16,0,1,1636977600);
INSERT INTO race VALUES(5132,6,100,11103,1101,'snd_mfx_2009_CL','snd_mfx_2009_CL','','',1101,315,0,0,100,0,1,0,-1,0,0,1,16,0,1,1636977600);
INSERT INTO race VALUES(5133,6,100,11103,1102,'snd_mfx_2009_CL','snd_mfx_2009_CL','','',1102,315,0,0,100,0,2,0,-1,0,0,1,16,0,1,1636977600);
INSERT INTO race VALUES(5136,6,100,11103,1105,'snd_mfx_2009_CL','snd_mfx_2009_CL','','',1105,315,0,0,100,0,5,0,-1,0,0,1,16,0,1,1636977600);
INSERT INTO race VALUES(5137,6,100,11103,1106,'snd_mfx_2009_CL','snd_mfx_2009_CL','','',1106,315,0,0,100,0,6,0,-1,0,0,1,16,0,1,1636977600);
INSERT INTO race VALUES(5290,12,999,11103,5200,'snd_mfx_2008_CL','snd_mfx_2008_CL','','',5200,121,0,0,100,0,0,0,-1,0,0,0,16,0,1,1627560000);
INSERT INTO race VALUES(10184,12,100,11103,1101,'snd_mfx_1015_CL','snd_mfx_1015_CL','snd_mfx_r_1015_CL','snd_mfx_r_1015_CL',1101,313,0,0,100,0,1,0,-1,0,0,0,16,0,1,1623326400);
INSERT INTO race VALUES(10185,12,100,11103,1102,'snd_mfx_1015_CL','snd_mfx_1015_CL','snd_mfx_r_1015_CL','snd_mfx_r_1015_CL',1102,313,0,0,100,0,2,0,-1,0,0,0,16,0,1,1623326400);
INSERT INTO race VALUES(10188,12,100,11103,1105,'snd_mfx_1015_CL','snd_mfx_1015_CL','snd_mfx_r_1015_CL','snd_mfx_r_1015_CL',1105,313,0,0,100,0,5,0,-1,0,0,0,16,0,1,1623326400);
INSERT INTO race VALUES(10189,12,100,11103,1106,'snd_mfx_1014_CL','snd_mfx_1014_CL','snd_mfx_r_1014_CL','snd_mfx_r_1014_CL',1106,313,0,0,100,0,6,0,-1,0,0,0,16,0,1,1623326400);
INSERT INTO race VALUES(1201,1,100,11203,1023,'snd_mfx_1001_CL','snd_mfx_1001_CL','','',1023,101,0,0,201,101,1,1,-1,0,0,0,18,0,0,1498870800);
INSERT INTO race VALUES(1119,1,100,11504,1105,'snd_mfx_1018_CL','snd_mfx_1018_CL','snd_mfx_r_1018_CL','snd_mfx_r_1018_CL',1119,133,0,0,105,0,2,0,-1,0,0,0,16,0,1,1660910400);
INSERT INTO race VALUES(3076,1,300,11504,3076,'snd_mfx_1019_CL','snd_mfx_1019_CL','snd_mfx_r_1019_CL','snd_mfx_r_1019_CL',3076,234,0,0,105,0,0,0,-1,0,0,0,14,0,1,1660910400);
INSERT INTO race VALUES(5149,6,900,11504,5002,'snd_mfx_2009_CL','snd_mfx_2009_CL','','',5002,234,0,0,105,0,0,0,-1,0,0,1,16,0,1,1660910400);
INSERT INTO race VALUES(5300,12,999,11504,5200,'snd_mfx_2008_CL','snd_mfx_2008_CL','','',5200,121,0,0,105,0,0,0,-1,0,0,0,16,0,1,1660910400);
+3 -5
View File
@@ -46,11 +46,9 @@ type RacecourseSpan struct {
Start float32 `json:"start"` Start float32 `json:"start"`
// End is the distance in meters along the track at which the span ends. // End is the distance in meters along the track at which the span ends.
End float32 `json:"end"` End float32 `json:"end"`
// Straight is whether the span is formally a straight. // Straight is the straight type if the span is formally a straight.
Straight bool `json:"straight,omitzero"` // 1 indicates the front stretch and 2 the backstretch.
// FarStraight is whether the span is the backstretch. Straight int8 `json:"straight,omitzero"`
// If true, then Straight is also true.
FarStraight bool `json:"far_straight,omitzero"`
// Corner is the corner number of the span, or zero if not a corner. // Corner is the corner number of the span, or zero if not a corner.
Corner int8 `json:"corner,omitzero"` Corner int8 `json:"corner,omitzero"`
} }
+5
View File
@@ -106,6 +106,11 @@ export const PAGES = {
name: 'Tagged Skills Explorer', name: 'Tagged Skills Explorer',
description: 'View skills matching the tags internal to the game.', description: 'View skills matching the tags internal to the game.',
}, },
{
route: resolve('/doc/fans'),
name: 'Career Fan Gain Is Solved',
description: 'The exact formula for fan gain from career races – nothing "random" about it.'
},
] satisfies Page[], ] satisfies Page[],
} as const; } as const;
File diff suppressed because it is too large Load Diff
+23 -23
View File
@@ -76,36 +76,36 @@ export interface SectionInfo {
section: number; section: number;
phase: Phase; phase: Phase;
endRate: number; endRate: number;
posKeep: boolean; posKeep?: boolean;
rush: boolean; rush?: boolean;
spotStruggleEnter: boolean; spotStruggleEnter?: boolean;
} }
export const SECTIONS: ReadonlyArray<SectionInfo> = [ export const SECTIONS: ReadonlyArray<SectionInfo> = [
{ section: 1, phase: Phase.EarlyRace, endRate: 1 / 24, posKeep: true, rush: false, spotStruggleEnter: false }, { section: 1, phase: Phase.EarlyRace, endRate: 1 / 24, posKeep: true },
{ section: 2, phase: Phase.EarlyRace, endRate: 2 / 24, posKeep: true, rush: true, spotStruggleEnter: true }, { section: 2, phase: Phase.EarlyRace, endRate: 2 / 24, posKeep: true, rush: true, spotStruggleEnter: true },
{ section: 3, phase: Phase.EarlyRace, endRate: 3 / 24, posKeep: true, rush: true, spotStruggleEnter: true }, { section: 3, phase: Phase.EarlyRace, endRate: 3 / 24, posKeep: true, rush: true, spotStruggleEnter: true },
{ section: 4, phase: Phase.EarlyRace, endRate: 4 / 24, posKeep: true, rush: true, spotStruggleEnter: true }, { section: 4, phase: Phase.EarlyRace, endRate: 4 / 24, posKeep: true, rush: true, spotStruggleEnter: true },
{ section: 5, phase: Phase.MidRace, endRate: 5 / 24, posKeep: true, rush: true, spotStruggleEnter: true }, { section: 5, phase: Phase.MidRace, endRate: 5 / 24, posKeep: true, rush: true, spotStruggleEnter: true },
{ section: 6, phase: Phase.MidRace, endRate: 6 / 24, posKeep: true, rush: true, spotStruggleEnter: false }, { section: 6, phase: Phase.MidRace, endRate: 6 / 24, posKeep: true, rush: true },
{ section: 7, phase: Phase.MidRace, endRate: 7 / 24, posKeep: true, rush: true, spotStruggleEnter: false }, { section: 7, phase: Phase.MidRace, endRate: 7 / 24, posKeep: true, rush: true },
{ section: 8, phase: Phase.MidRace, endRate: 8 / 24, posKeep: true, rush: true, spotStruggleEnter: false }, { section: 8, phase: Phase.MidRace, endRate: 8 / 24, posKeep: true, rush: true },
{ section: 9, phase: Phase.MidRace, endRate: 9 / 24, posKeep: true, rush: true, spotStruggleEnter: false }, { section: 9, phase: Phase.MidRace, endRate: 9 / 24, posKeep: true, rush: true },
{ section: 10, phase: Phase.MidRace, endRate: 10 / 24, posKeep: true, rush: false, spotStruggleEnter: false }, { section: 10, phase: Phase.MidRace, endRate: 10 / 24, posKeep: true },
{ section: 11, phase: Phase.MidRace, endRate: 11 / 24, posKeep: false, rush: false, spotStruggleEnter: false }, { section: 11, phase: Phase.MidRace, endRate: 11 / 24 },
{ section: 12, phase: Phase.MidRace, endRate: 12 / 24, posKeep: false, rush: false, spotStruggleEnter: false }, { section: 12, phase: Phase.MidRace, endRate: 12 / 24 },
{ section: 13, phase: Phase.MidRace, endRate: 13 / 24, posKeep: false, rush: false, spotStruggleEnter: false }, { section: 13, phase: Phase.MidRace, endRate: 13 / 24 },
{ section: 14, phase: Phase.MidRace, endRate: 14 / 24, posKeep: false, rush: false, spotStruggleEnter: false }, { section: 14, phase: Phase.MidRace, endRate: 14 / 24 },
{ section: 15, phase: Phase.MidRace, endRate: 15 / 24, posKeep: false, rush: false, spotStruggleEnter: false }, { section: 15, phase: Phase.MidRace, endRate: 15 / 24 },
{ section: 16, phase: Phase.MidRace, endRate: 16 / 24, posKeep: false, rush: false, spotStruggleEnter: false }, { section: 16, phase: Phase.MidRace, endRate: 16 / 24 },
{ section: 17, phase: Phase.LateRace, endRate: 17 / 24, posKeep: false, rush: false, spotStruggleEnter: false }, { section: 17, phase: Phase.LateRace, endRate: 17 / 24 },
{ section: 18, phase: Phase.LateRace, endRate: 18 / 24, posKeep: false, rush: false, spotStruggleEnter: false }, { section: 18, phase: Phase.LateRace, endRate: 18 / 24 },
{ section: 19, phase: Phase.LateRace, endRate: 19 / 24, posKeep: false, rush: false, spotStruggleEnter: false }, { section: 19, phase: Phase.LateRace, endRate: 19 / 24 },
{ section: 20, phase: Phase.LateRace, endRate: 20 / 24, posKeep: false, rush: false, spotStruggleEnter: false }, { section: 20, phase: Phase.LateRace, endRate: 20 / 24 },
{ section: 21, phase: Phase.LateRace, endRate: 21 / 24, posKeep: false, rush: false, spotStruggleEnter: false }, { section: 21, phase: Phase.LastSpurt, endRate: 21 / 24 },
{ section: 22, phase: Phase.LateRace, endRate: 22 / 24, posKeep: false, rush: false, spotStruggleEnter: false }, { section: 22, phase: Phase.LastSpurt, endRate: 22 / 24 },
{ section: 23, phase: Phase.LateRace, endRate: 23 / 24, posKeep: false, rush: false, spotStruggleEnter: false }, { section: 23, phase: Phase.LastSpurt, endRate: 23 / 24 },
{ section: 24, phase: Phase.LateRace, endRate: 24 / 24, posKeep: false, rush: false, spotStruggleEnter: false }, { section: 24, phase: Phase.LastSpurt, endRate: 24 / 24 },
]; ];
export interface SectionSlopeSegment extends SectionInfo { export interface SectionSlopeSegment extends SectionInfo {
+42 -38
View File
@@ -8,11 +8,11 @@ import { binomPMF } from './prob';
* Fundamental stats of umas. * Fundamental stats of umas.
*/ */
export enum Stat { export enum Stat {
Speed, Speed = 1,
Stamina, Stamina = 2,
Power, Power = 3,
Guts, Guts = 4,
Wit, Wit = 5,
} }
/** /**
@@ -118,14 +118,15 @@ export function distance(raceLen: number): Distance {
/** /**
* Get the distances at which each phase of a race ends. * Get the distances at which each phase of a race ends.
* @param raceLen Length of the race in meters * @param raceLen Length of the race in meters
* @returns Ends of each phase in meters * @returns Ends of each phase in meters, including separate late and spurt phases
*/ */
export function phases(raceLen: number) { export function phases(raceLen: number) {
const sixth = raceLen / 6; const sixth = raceLen / 6;
return { return {
[Phase.EarlyRace]: sixth, [Phase.EarlyRace]: sixth,
[Phase.MidRace]: 4 * sixth, [Phase.MidRace]: 4 * sixth,
[Phase.LateRace]: raceLen, [Phase.LateRace]: 5 * sixth,
[Phase.LastSpurt]: raceLen,
}; };
} }
@@ -133,18 +134,18 @@ export function phases(raceLen: number) {
* Race surfaces. * Race surfaces.
*/ */
export enum Surface { export enum Surface {
Turf, Turf = 1,
Dirt, Dirt = 2,
} }
/** /**
* Race ground condition types. * Race ground condition types.
*/ */
export enum GroundConditions { export enum GroundConditions {
Firm, Firm = 1,
Good, Good = 2,
Soft, Soft = 3,
Heavy, Heavy = 4,
} }
/** /**
@@ -327,12 +328,12 @@ export const RUNNING_STYLES = [
/** /**
* Race phases. * Race phases.
* While last spurt phase is also a phase, it is not distinguished here.
*/ */
export enum Phase { export enum Phase {
EarlyRace, EarlyRace = 0,
MidRace, MidRace = 1,
LateRace, LateRace = 2,
LastSpurt = 3,
} }
const hpStrategyCoeff = { const hpStrategyCoeff = {
@@ -407,7 +408,7 @@ export function hpPerSecond(
const pdmMod = pdm ? 0.6 : 1; const pdmMod = pdm ? 0.6 : 1;
const damMod = dam ? 0.4 : 1; const damMod = dam ? 0.4 : 1;
const groundMod = groundHPRateMod[surface][conditions]; const groundMod = groundHPRateMod[surface][conditions];
const gutsMod = phase === Phase.LateRace ? 1 + 200 / (math.sqrt(600 * gutsStat) as number) : 1; const gutsMod = phase >= Phase.LateRace ? 1 + 200 / (math.sqrt(600 * gutsStat) as number) : 1;
const sp = currentSpeed - baseSpeed(raceLen) + 12; const sp = currentSpeed - baseSpeed(raceLen) + 12;
return (20 / 144) * sp * sp * rushedMod * pdmMod * damMod * groundMod * gutsMod; return (20 / 144) * sp * sp * rushedMod * pdmMod * damMod * groundMod * gutsMod;
} }
@@ -447,11 +448,11 @@ export function baseSpeed(raceLen: number): number {
} }
const speedStrategyPhaseCoeff = [ const speedStrategyPhaseCoeff = [
[1.0, 0.98, 0.962], [1.0, 0.98, 0.962, 0.962],
[0.978, 0.991, 0.975], [0.978, 0.991, 0.975, 0.975],
[0.938, 0.998, 0.994], [0.938, 0.998, 0.994, 0.994],
[0.931, 1.0, 1.0], [0.931, 1.0, 1.0, 1.0],
[1.063, 0.962, 0.95], [1.063, 0.962, 0.95, 0.95],
] as const; ] as const;
const distanceProficiencyMod: Readonly<Record<AptitudeLevel, number>> = { const distanceProficiencyMod: Readonly<Record<AptitudeLevel, number>> = {
@@ -471,7 +472,11 @@ const distanceProficiencyMod: Readonly<Record<AptitudeLevel, number>> = {
* @param style Horse's running style * @param style Horse's running style
* @param phase Phase to calculate for * @param phase Phase to calculate for
*/ */
export function baseTargetSpeed(raceLen: number, style: RunningStyle, phase: Exclude<Phase, Phase.LateRace>): number; export function baseTargetSpeed(
raceLen: number,
style: RunningStyle,
phase: Exclude<Phase, Phase.LateRace | Phase.LastSpurt>,
): number;
/** /**
* Get a horse's base target speed when not spurting during late race. * Get a horse's base target speed when not spurting during late race.
* @param raceLen Length of the race in meters * @param raceLen Length of the race in meters
@@ -483,7 +488,7 @@ export function baseTargetSpeed(raceLen: number, style: RunningStyle, phase: Exc
export function baseTargetSpeed( export function baseTargetSpeed(
raceLen: number, raceLen: number,
style: RunningStyle, style: RunningStyle,
phase: Phase.LateRace, phase: Phase.LateRace | Phase.LastSpurt,
speedStat: number, speedStat: number,
distanceApt: AptitudeLevel, distanceApt: AptitudeLevel,
): number; ): number;
@@ -497,7 +502,7 @@ export function baseTargetSpeed(
const base = baseSpeed(raceLen); const base = baseSpeed(raceLen);
const baseTarget = base * speedStrategyPhaseCoeff[style][phase]; const baseTarget = base * speedStrategyPhaseCoeff[style][phase];
const late = const late =
phase === Phase.LateRace ? (math.sqrt(500 * speedStat!) as number) * distanceProficiencyMod[distanceApt!] * 0.002 : 0; phase >= Phase.LateRace ? (math.sqrt(500 * speedStat!) as number) * distanceProficiencyMod[distanceApt!] * 0.002 : 0;
return baseTarget + late; return baseTarget + late;
} }
@@ -512,7 +517,7 @@ export function sectionSpeed(
raceLen: number, raceLen: number,
witStat: number, witStat: number,
style: RunningStyle, style: RunningStyle,
phase: Exclude<Phase, Phase.LateRace>, phase: Exclude<Phase, Phase.LateRace | Phase.LastSpurt>,
): [number, number]; ): [number, number];
/** /**
* Calculate the range of section speed values for a horse not spurting during late race. * Calculate the range of section speed values for a horse not spurting during late race.
@@ -529,7 +534,7 @@ export function sectionSpeed(
witStat: number, witStat: number,
style: RunningStyle, style: RunningStyle,
distance: AptitudeLevel, distance: AptitudeLevel,
phase: Phase.LateRace, phase: Phase.LateRace | Phase.LastSpurt,
): [number, number]; ): [number, number];
export function sectionSpeed( export function sectionSpeed(
raceLen: number, raceLen: number,
@@ -537,7 +542,7 @@ export function sectionSpeed(
witStatOrStyle: number | RunningStyle, witStatOrStyle: number | RunningStyle,
styleOrPhase: RunningStyle | Phase, styleOrPhase: RunningStyle | Phase,
distance?: AptitudeLevel, distance?: AptitudeLevel,
lateRace?: Phase.LateRace, lateRace?: Phase.LateRace | Phase.LastSpurt,
): [number, number] { ): [number, number] {
const speedStat = lateRace !== undefined ? speedStatOrWitStat : 0; const speedStat = lateRace !== undefined ? speedStatOrWitStat : 0;
const witStat = lateRace !== undefined ? witStatOrStyle : speedStatOrWitStat; const witStat = lateRace !== undefined ? witStatOrStyle : speedStatOrWitStat;
@@ -546,7 +551,7 @@ export function sectionSpeed(
const base = baseSpeed(raceLen); const base = baseSpeed(raceLen);
const baseTarget = base * speedStrategyPhaseCoeff[style][phase]; const baseTarget = base * speedStrategyPhaseCoeff[style][phase];
const late = const late =
phase === Phase.LateRace phase >= Phase.LateRace
? (math.sqrt(500 * speedStat) as number) * distanceProficiencyMod[distance ?? AptitudeLevel.A] * 0.002 ? (math.sqrt(500 * speedStat) as number) * distanceProficiencyMod[distance ?? AptitudeLevel.A] * 0.002
: 0; : 0;
const u = (witStat / 550000) * math.log10(witStat * 0.1); const u = (witStat / 550000) * math.log10(witStat * 0.1);
@@ -620,11 +625,11 @@ export const COURSE_WIDTH = 11.25;
export const LANE_WIDTH = COURSE_WIDTH / 18; export const LANE_WIDTH = COURSE_WIDTH / 18;
const accelStrategyPhaseCoeff = { const accelStrategyPhaseCoeff = {
[RunningStyle.FrontRunner]: [1.0, 1.0, 0.996], [RunningStyle.FrontRunner]: [1.0, 1.0, 0.996, 0.996],
[RunningStyle.PaceChaser]: [0.985, 1.0, 0.996], [RunningStyle.PaceChaser]: [0.985, 1.0, 0.996, 0.996],
[RunningStyle.LateSurger]: [0.975, 1.0, 1.0], [RunningStyle.LateSurger]: [0.975, 1.0, 1.0, 1.0],
[RunningStyle.EndCloser]: [0.945, 1.0, 0.997], [RunningStyle.EndCloser]: [0.945, 1.0, 0.997, 0.997],
[RunningStyle.Runaway]: [1.17, 0.94, 0.956], [RunningStyle.Runaway]: [1.17, 0.94, 0.956, 0.956],
} as const; } as const;
const surfaceProficiencyMod: Readonly<Record<AptitudeLevel, number>> = { const surfaceProficiencyMod: Readonly<Record<AptitudeLevel, number>> = {
@@ -681,6 +686,7 @@ const phaseDecel = {
[Phase.EarlyRace]: -1.2, [Phase.EarlyRace]: -1.2,
[Phase.MidRace]: -0.8, [Phase.MidRace]: -0.8,
[Phase.LateRace]: -1.0, [Phase.LateRace]: -1.0,
[Phase.LastSpurt]: -1.0,
} as const; } as const;
/** /**
@@ -695,9 +701,7 @@ export function deceleration(phase: Phase, pdm?: boolean, dead?: boolean): numbe
return -1.2; return -1.2;
} }
if (pdm) { if (pdm) {
// This isn't until 1.5anni. return -0.5;
// return -0.5;
return phaseDecel[phase];
} }
return phaseDecel[phase]; return phaseDecel[phase];
} }
+223
View File
@@ -0,0 +1,223 @@
<script lang="ts">
import { asset, resolve } from '$app/paths';
import CalcInfo from '../../race/CalcInfo.svelte';
import Article from '../Article.svelte';
import Sec from '../Sec.svelte';
import * as fans from './fans';
let baseFans = $state(700);
let fanBonus = $state(0);
let finishOrder = $state(1);
let margin = $state(0);
let skills = $state(0);
let glowsticks = $state(false);
const marginFans = $derived(fans.marginFans(baseFans, finishOrder, margin));
const skillFans = $derived(fans.skillFans(baseFans, skills));
const glowstickBonus = $derived(glowsticks ? 50 : 0);
const gainedFans = $derived(fans.gained(baseFans, marginFans, skillFans, fanBonus, glowstickBonus));
const marginType = $derived(finishOrder === 1 ? 'Win Margin' : 'Margin vs. Winner');
const orderPct = [
[1, 100],
[2, 40],
[3, 25],
[4, 15],
[5, 10],
[6, 9],
[7, 8],
[8, 7],
[9, 6],
[10, 5],
[11, 4],
[12, 3],
[13, 2.5],
[14, 2],
[15, 1.5],
[16, 1],
[17, 1],
[18, 1],
] as const;
const marginBonus = [
['Nose – 3/4 L', 0, 9],
['1 L – 2.5 L', 2, 6],
['3 L – 4 L', 4, 4],
['5 L – 6 L', 6, 2],
['7L – distance', 9, 0],
] as const;
const skillBonus = [
['0', 0],
['1-3', 2],
['4-6', 3],
['7-9', 5],
['10+', 8],
] as const;
</script>
<Article>
{#snippet head()}
<Sec h={1} id="top" class="text-center pointer-coarse:mb-8">Career Fan Gain Is Solved</Sec>
<p>
Thanks to work by Moxa and Werseter on the Hakuraku Discord, a precise formula for fans gained from career races has been
found.
</p>
<p>
There is no random component to fan gain, except insofar as the race itself is random. It is now known to be entirely
determined by five factors:
</p>
<ul class="mb-4 list-disc pl-4">
<li>Base fans, according to the race and finish placement.</li>
<li>Fan bonus from support cards.</li>
<li>Margin of the win, or margin behind the winner if the player's trainee did not win.</li>
<li>Number of skills the trainee activated during the race.</li>
<li>In Trackblazer/MANT, use of glowsticks.</li>
</ul>
<p>
The identified formula perfectly fits hundreds of recorded career race gains, including losses. Some questions remain, but
the results so far have important implications both for fan runs and for low fan bonus decks for which debut can fall short
of fan requirements for early career goals.
</p>
{/snippet}
<Sec h={2} id="calc-fans">Calculate Fans</Sec>
<p>This tool will calculate your exact fan gain from a race.</p>
<form class="mx-auto mb-4 grid grid-cols-1 gap-2 rounded-md p-4 text-center shadow-md ring md:max-w-2xl md:grid-cols-3">
<div>
<label for="calc-base-fans">Base Fans</label>
<input id="calc-base-fans" class="max-w-32" type="number" min="0" max="30000" step="100" bind:value={baseFans} />
</div>
<div>
<label for="calc-fan-bonus">Fan Bonus</label>
<input id="calc-fan-bonus" class="max-w-32" type="number" min="0" max="150" step="5" bind:value={fanBonus} />
</div>
<div>
<label for="calc-finish-order">Finish Order</label>
<input id="calc-finish-order" class="max-w-32" type="number" min="1" max="18" step="1" bind:value={finishOrder} />
</div>
<div>
<label for="calc-margin">{marginType} (L)</label>
<input id="calc-margin" class="max-w-32" type="number" min="0" step="0.25" bind:value={margin} />
</div>
<div>
<label for="calc-skills">Activated Skills</label>
<input id="calc-skills" class="max-w-32" type="number" min="0" step="1" bind:value={skills} />
</div>
<div class="my-auto">
<input id="calc-glowsticks" class="min-h-6 min-w-6 align-middle" type="checkbox" bind:checked={glowsticks} />
<label for="calc-glowsticks">Glowsticks</label>
</div>
</form>
<div class="grid grid-cols-1 md:grid-cols-12">
<CalcInfo title="Fans from Margin" class="md:col-span-4 md:col-start-3">{marginFans}</CalcInfo>
<CalcInfo title="Fans from Skills" class="md:col-span-4">{skillFans}</CalcInfo>
<CalcInfo title="Fans Gained" class="md:col-span-4 md:col-start-5">{gainedFans}</CalcInfo>
</div>
<Sec h={2} id="base-fans">Base Fans</Sec>
<p>
Base fans is a parameter per race and finish placement, defined in <a href={resolve('/doc/mdb')}>master data</a>. The number
shown in the career race selection menu is the base fans for first place. While it is defined separately for each race and
finish order, every race currently follows the same curve for all placements.
</p>
<table class="mx-auto mb-4 border text-center">
<thead>
<tr>
<th scope="col" class="px-2">Placement</th>
<th scope="col" class="px-2">Fan Ratio</th>
</tr>
</thead>
<tbody>
{#each orderPct as [o, p] (o)}
<tr class="even:bg-mist-300 dark:even:bg-mist-900">
<td>{o}</td>
<td>{p}%</td>
</tr>
{/each}
</tbody>
</table>
<Sec h={2} id="margin">Fans from Margin</Sec>
<p>
When the trainee places in the top three (top five?), she receives a bonus percentage of base fans according to the finish
margin.
</p>
<p>
The bonus depends on whether the trainee won the race. If so, it is calculated by her margin versus second place. Otherwise,
her total margin behind the winner is used. If she did not place in the top three (top five?), then she gains no fans from
margin.
</p>
<table class="mx-auto mb-4 border text-center">
<thead>
<tr>
<th scope="col" class="px-2">Actual<br />Margin Within</th>
<th scope="col" class="px-2">Bonus for Winner</th>
<th scope="col" class="px-2">Bonus for Podium</th>
</tr>
</thead>
<tbody>
{#each marginBonus as [m, w, l] (m)}
<tr class="even:bg-mist-300 dark:even:bg-mist-900">
<td>{m}</td>
<td>{w}%</td>
<td>{l}%</td>
</tr>
{/each}
</tbody>
</table>
<Sec h={2} id="skills">Fans from Skill Activations</Sec>
<p>The trainee receives a bonus percentage of base fans according to the number of skills she activated during the race.</p>
<table class="mx-auto mb-4 border text-center">
<thead>
<tr>
<th scope="col" class="px-2">Activated Skills</th>
<th scope="col" class="px-2">Bonus</th>
</tr>
</thead>
<tbody>
{#each skillBonus as [n, b] (n)}
<tr class="even:bg-mist-300 dark:even:bg-mist-900">
<td>{n}</td>
<td>{b}%</td>
</tr>
{/each}
</tbody>
</table>
<Sec h={2} id="rounding">Calculation Order and Rounding</Sec>
<p>The calculation is perfomed as if in the following order.</p>
<ol class="mb-4 list-decimal pl-4">
<li>Calculate fans from win margin and round down.</li>
<li>Calculate fans from skill activation count and round down.</li>
<li>Calculate the sum of base fans, win margin fans, and skill activation fans.</li>
<li>Apply fan bonus to the sum and round to the nearest integer with halfway cases away from zero.</li>
<li>(Trackblazer/MANT) If glowsticks were used for the race, apply their multiplier and round down.</li>
</ol>
<Sec h={2} id="data">Data and Limitations</Sec>
<p>
The data for this research comes from 193 races and fan results dumped using <a
href="https://werseter.github.io/umadump/"
target="_blank"
rel="noopener noreferrer">Umadump</a
>. The races come from sixteen careers run between 19 Aug and 11 Oct 2026. These careers include five different values of race
bonus ranging from 55 to 105. The identified formula predicts the actual fan gain perfectly for all of the races. You can
<a
href="https://docs.google.com/spreadsheets/d/1_jtOv6qk9dP4jJTagJqG53Pvj48IVd6gl2zKpyT6Kvs/edit?gid=463816108#gid=463816108"
target="_blank"
rel="noopener noreferrer">view the data</a
>.
</p>
<p>
There are some gaps in the data. No collected race had a finish placement of 4th or 5th, nor lower than 6th, so the exact
details of the win margin fan bonus remain open. Similarly, no race featured a trainee who activated more than ten skills, so
it is unknown whether there are further tiers of skill activation count fan bonus.
</p>
<p>
Once these edge cases are covered, this article will be updated. If you'd like to contribute, please contact me
(@zephyrtronium) via Discord on the Hakuraku, uma.moe, GameTora, or EoG servers.
</p>
</Article>
+58
View File
@@ -0,0 +1,58 @@
const margins = [
[0.75, 0.0, 0.09],
[2.5, 0.02, 0.06],
[4, 0.04, 0.04],
[6, 0.06, 0.02],
[Infinity, 0.09, 0.0],
] as const;
/**
* Calculate fans gained from a career race due to the margin of the finish.
* @param baseFans Base fans from the race and finish order
* @param finishOrder Placement of the trainee
* @param margin Margin in lengths between the trainee and second if a win, or the winner and trainee if a loss
* @returns Fans gained due to finish margin
*/
export function marginFans(baseFans: number, finishOrder: number, margin: number): number {
if (finishOrder > 3) {
return 0;
}
const [, wb, lb] = margins.find(([m]) => margin < m)!;
const b = finishOrder === 1 ? wb : lb;
return Math.floor(baseFans * b);
}
const skills = [
[0, 0.0],
[3, 0.02],
[6, 0.03],
[9, 0.05],
[Infinity, 0.08],
] as const;
/**
* Calculate the fans gained from a career race due to skills activated.
* @param baseFans Base fans from the race and finish order
* @param skillsActivated Number of skills the trainee activated during the race
* @returns Fans gained due to skill activations
*/
export function skillFans(baseFans: number, skillsActivated: number): number {
const [, b] = skills.find(([n]) => skillsActivated <= n)!;
return Math.floor(baseFans * b);
}
/**
* Calculate fan gain from a career race.
* @param baseFans Base fans from the race and finish order
* @param marginFans Fans gained due to finish margin
* @param skillFans Fans gained due to skill activations
* @param fanBonus Total fan bonus from support cards
* @param itemBonus Fan bonus from items (MANT glowsticks)
* @returns Total fans gained
*/
export function gained(baseFans: number, marginFans: number, skillFans: number, fanBonus: number, itemBonus?: number): number {
const f = baseFans + marginFans + skillFans;
const d = Math.round(f * (1 + fanBonus / 100));
const b = itemBonus ?? 0;
return Math.floor(d * (1 + b / 100));
}
+2 -2
View File
@@ -99,8 +99,8 @@
const distance = $derived([last(seggs[0]).end.x, last(seggs[1]).end.x] as const); const distance = $derived([last(seggs[0]).end.x, last(seggs[1]).end.x] as const);
const time = $derived([last(seggs[0]).end.t, last(seggs[1]).end.t] as const); const time = $derived([last(seggs[0]).end.t, last(seggs[1]).end.t] as const);
const finishTime = $derived([ const finishTime = $derived([
time[0] + (phases[race.Phase.LateRace] - distance[0]) / spurtSpeed, time[0] + (raceLen - distance[0]) / spurtSpeed,
time[1] + (phases[race.Phase.LateRace] - distance[1]) / spurtSpeed, time[1] + (raceLen - distance[1]) / spurtSpeed,
] as const); ] as const);
function gainLengths(fast: accel.Instant, slow: accel.Instant): number { function gainLengths(fast: accel.Instant, slow: accel.Instant): number {
const m = fast.v * (slow.t - fast.t) + fast.x - slow.x; const m = fast.v * (slow.t - fast.t) + fast.x - slow.x;
+4
View File
@@ -103,6 +103,10 @@
race.spurtSpeed(stats[race.Stat.Speed], stats[race.Stat.Guts], style, distanceApt, raceLen), race.spurtSpeed(stats[race.Stat.Speed], stats[race.Stat.Guts], style, distanceApt, raceLen),
race.spurtSpeed(stats[race.Stat.Speed], stats[race.Stat.Guts], style, distanceApt, raceLen), race.spurtSpeed(stats[race.Stat.Speed], stats[race.Stat.Guts], style, distanceApt, raceLen),
] as [number, number], ] as [number, number],
[race.Phase.LastSpurt]: [
race.spurtSpeed(stats[race.Stat.Speed], stats[race.Stat.Guts], style, distanceApt, raceLen),
race.spurtSpeed(stats[race.Stat.Speed], stats[race.Stat.Guts], style, distanceApt, raceLen),
] as [number, number],
}); });
// const isFront = $derived(style === race.RunningStyle.FrontRunner || style === race.RunningStyle.Runaway); // const isFront = $derived(style === race.RunningStyle.FrontRunner || style === race.RunningStyle.Runaway);
@@ -0,0 +1,194 @@
career,turn,scenario,character,race,program_id,place,base_fans,deck_bonus_pct,margin_lengths,skill_activations,margin_bonus_pct,skill_bonus_pct,item_bonus_pct,deck_only_fans,actual_fans,extra_fans,extra_pct,predicted_fans,residual_fans
2026-08-19 20:37:27,12,3,[Ashen Miracle] Oguri Cap,Junior Make Debut,1070,1,700,55,4.4727,0,6,0,0,1085.0,1150,65.0,5.9908,1150,0
2026-08-19 20:37:27,23,3,[Ashen Miracle] Oguri Cap,Hanshin Juvenile Fillies,623,6,585,55,1.2941,0,0,0,0,906.75,906,-0.75,-0.0827,906,0
2026-08-19 20:37:27,24,3,[Ashen Miracle] Oguri Cap,Hopeful Stakes,625,1,7000,55,1.1495,0,2,0,0,10850.0,11067,217.0,2.0,11067,0
2026-08-19 20:37:27,33,3,[Ashen Miracle] Oguri Cap,NHK Mile Cup,164,1,10500,55,1.6165,0,2,0,0,16275.0,16601,326.0,2.0031,16601,0
2026-08-19 20:37:27,46,3,[Ashen Miracle] Oguri Cap,Mile Championship,78,1,11000,55,5.3966,5,6,3,0,17050.0,18585,1535.0,9.0029,18585,0
2026-08-19 20:37:27,48,3,[Ashen Miracle] Oguri Cap,Arima Kinen,81,1,30000,55,8.8065,6,9,3,0,46500.0,52080,5580.0,12.0,52080,0
2026-08-19 20:37:27,54,3,[Ashen Miracle] Oguri Cap,Osaka Hai,3,1,13500,55,3.3853,4,4,3,0,20925.0,22390,1465.0,7.0012,22390,0
2026-08-19 20:37:27,57,3,[Ashen Miracle] Oguri Cap,Victoria Mile,5,1,10500,55,4.8613,2,6,2,0,16275.0,17577,1302.0,8.0,17577,0
2026-08-19 20:37:27,68,3,[Ashen Miracle] Oguri Cap,Tenno Sho (Autumn),76,1,15000,55,14.0515,6,9,3,0,23250.0,26040,2790.0,12.0,26040,0
2026-08-19 20:37:27,72,3,[Ashen Miracle] Oguri Cap,Arima Kinen,81,1,30000,55,10.5066,7,9,5,0,46500.0,53010,6510.0,14.0,53010,0
2026-08-19 20:37:27,74,3,[Ashen Miracle] Oguri Cap,URA Finale Qualifier,2015,1,7000,55,6.1557,6,9,3,0,10850.0,12152,1302.0,12.0,12152,0
2026-08-19 20:37:27,76,3,[Ashen Miracle] Oguri Cap,URA Finale Semifinal,2112,1,10000,55,6.906,7,9,5,0,15500.0,17670,2170.0,14.0,17670,0
2026-08-19 20:37:27,78,3,[Ashen Miracle] Oguri Cap,URA Finale Finals,2213,1,30000,55,7.8077,8,9,5,0,46500.0,53010,6510.0,14.0,53010,0
2026-09-08 21:05:53,12,3,[Ashen Miracle] Oguri Cap,Junior Make Debut,1070,1,700,70,2.4747,0,2,0,0,1190.0,1213,23.0,1.9328,1213,0
2026-09-08 21:05:53,23,3,[Ashen Miracle] Oguri Cap,Hanshin Juvenile Fillies,623,3,1625,70,2.5458,0,4,0,0,2762.5,2873,110.5,4.0,2873,0
2026-09-08 21:05:53,32,3,[Ashen Miracle] Oguri Cap,Flora Stakes,173,1,5200,70,0.166,0,0,0,0,8840.0,8840,0.0,0.0,8840,0
2026-09-08 21:05:53,33,3,[Ashen Miracle] Oguri Cap,NHK Mile Cup,164,1,10500,70,0.6636,0,0,0,0,17850.0,17850,0.0,0.0,17850,0
2026-09-08 21:05:53,46,3,[Ashen Miracle] Oguri Cap,Mile Championship,78,1,11000,70,0.3634,0,0,0,0,18700.0,18700,0.0,0.0,18700,0
2026-09-08 21:05:53,48,3,[Ashen Miracle] Oguri Cap,Arima Kinen,81,1,30000,70,3.9924,0,4,0,0,51000.0,53040,2040.0,4.0,53040,0
2026-09-08 21:05:53,54,3,[Ashen Miracle] Oguri Cap,Osaka Hai,3,1,13500,70,3.7863,0,4,0,0,22950.0,23868,918.0,4.0,23868,0
2026-09-08 21:05:53,57,3,[Ashen Miracle] Oguri Cap,Victoria Mile,5,1,10500,70,1.4385,0,2,0,0,17850.0,18207,357.0,2.0,18207,0
2026-09-08 21:05:53,68,3,[Ashen Miracle] Oguri Cap,Tenno Sho (Autumn),76,1,15000,70,3.9784,0,4,0,0,25500.0,26520,1020.0,4.0,26520,0
2026-09-08 21:05:53,72,3,[Ashen Miracle] Oguri Cap,Arima Kinen,81,1,30000,70,7.8092,0,9,0,0,51000.0,55590,4590.0,9.0,55590,0
2026-09-08 21:05:53,74,3,[Ashen Miracle] Oguri Cap,URA Finale Qualifier,2011,1,7000,70,4.2694,0,6,0,0,11900.0,12614,714.0,6.0,12614,0
2026-09-08 21:05:53,76,3,[Ashen Miracle] Oguri Cap,URA Finale Semifinal,2108,1,10000,70,1.7312,0,2,0,0,17000.0,17340,340.0,2.0,17340,0
2026-09-08 21:05:53,78,3,[Ashen Miracle] Oguri Cap,URA Finale Finals,2209,1,30000,70,2.9177,0,4,0,0,51000.0,53040,2040.0,4.0,53040,0
2026-09-16 13:24:41,12,3,[Ashen Miracle] Oguri Cap,Junior Make Debut,1070,1,700,70,6.3564,0,9,0,0,1190.0,1297,107.0,8.9916,1297,0
2026-09-16 13:24:41,23,3,[Ashen Miracle] Oguri Cap,Hanshin Juvenile Fillies,623,1,6500,70,0.5447,0,0,0,0,11050.0,11050,0.0,0.0,11050,0
2026-09-16 13:24:41,33,3,[Ashen Miracle] Oguri Cap,NHK Mile Cup,164,1,10500,70,1.2208,0,2,0,0,17850.0,18207,357.0,2.0,18207,0
2026-09-16 13:24:41,46,3,[Ashen Miracle] Oguri Cap,Mile Championship,78,1,11000,70,1.8764,0,2,0,0,18700.0,19074,374.0,2.0,19074,0
2026-09-16 13:24:41,48,3,[Ashen Miracle] Oguri Cap,Arima Kinen,81,1,30000,70,7.2065,0,9,0,0,51000.0,55590,4590.0,9.0,55590,0
2026-09-16 13:24:41,54,3,[Ashen Miracle] Oguri Cap,Osaka Hai,3,1,13500,70,9.1057,0,9,0,0,22950.0,25016,2066.0,9.0022,25016,0
2026-09-16 13:24:41,59,3,[Ashen Miracle] Oguri Cap,Yasuda Kinen,73,1,13000,70,4.3705,0,6,0,0,22100.0,23426,1326.0,6.0,23426,0
2026-09-16 13:24:41,68,3,[Ashen Miracle] Oguri Cap,Tenno Sho (Autumn),76,1,15000,70,7.933,0,9,0,0,25500.0,27795,2295.0,9.0,27795,0
2026-09-16 13:24:41,72,3,[Ashen Miracle] Oguri Cap,Arima Kinen,81,1,30000,70,5.7931,0,6,0,0,51000.0,54060,3060.0,6.0,54060,0
2026-09-16 13:24:41,74,3,[Ashen Miracle] Oguri Cap,URA Finale Qualifier,2010,1,7000,70,5.7824,0,6,0,0,11900.0,12614,714.0,6.0,12614,0
2026-09-16 13:24:41,76,3,[Ashen Miracle] Oguri Cap,URA Finale Semifinal,2112,1,10000,70,2.7856,0,4,0,0,17000.0,17680,680.0,4.0,17680,0
2026-09-16 13:24:41,78,3,[Ashen Miracle] Oguri Cap,URA Finale Finals,2208,1,30000,70,5.4409,0,6,0,0,51000.0,54060,3060.0,6.0,54060,0
2026-09-17 20:23:11,12,3,[Ashen Miracle] Oguri Cap,Junior Make Debut,1070,1,700,70,5.3797,0,6,0,0,1190.0,1261,71.0,5.9664,1261,0
2026-09-17 20:23:11,24,3,[Ashen Miracle] Oguri Cap,Hopeful Stakes,625,1,7000,70,4.8411,2,6,2,0,11900.0,12852,952.0,8.0,12852,0
2026-09-17 20:23:11,33,3,[Ashen Miracle] Oguri Cap,NHK Mile Cup,164,1,10500,70,3.0921,1,4,2,0,17850.0,18921,1071.0,6.0,18921,0
2026-09-17 20:23:11,46,3,[Ashen Miracle] Oguri Cap,Mile Championship,78,1,11000,70,3.4861,1,4,2,0,18700.0,19822,1122.0,6.0,19822,0
2026-09-17 20:23:11,48,3,[Ashen Miracle] Oguri Cap,Arima Kinen,81,1,30000,70,8.0058,1,9,2,0,51000.0,56610,5610.0,11.0,56610,0
2026-09-17 20:23:11,51,3,[Ashen Miracle] Oguri Cap,Kawasaki Kinen,1106,1,6000,70,5.6972,1,6,2,0,10200.0,11016,816.0,8.0,11016,0
2026-09-17 20:23:11,52,3,[Ashen Miracle] Oguri Cap,February Stakes,1,1,10000,70,0.5589,1,0,2,0,17000.0,17340,340.0,2.0,17340,0
2026-09-17 20:23:11,68,3,[Ashen Miracle] Oguri Cap,Tenno Sho (Autumn),76,1,15000,70,4.6895,2,6,2,0,25500.0,27540,2040.0,8.0,27540,0
2026-09-17 20:23:11,72,3,[Ashen Miracle] Oguri Cap,Arima Kinen,81,1,30000,70,9.0895,1,9,2,0,51000.0,56610,5610.0,11.0,56610,0
2026-09-17 20:23:11,74,3,[Ashen Miracle] Oguri Cap,URA Finale Qualifier,2014,1,7000,70,6.1828,1,9,2,0,11900.0,13209,1309.0,11.0,13209,0
2026-09-17 20:23:11,76,3,[Ashen Miracle] Oguri Cap,URA Finale Semifinal,2111,1,10000,70,2.8136,1,4,2,0,17000.0,18020,1020.0,6.0,18020,0
2026-09-17 20:23:11,78,3,[Ashen Miracle] Oguri Cap,URA Finale Finals,2212,1,30000,70,1.061,1,2,2,0,51000.0,53040,2040.0,4.0,53040,0
2026-09-17 22:45:31,12,3,[Ashen Miracle] Oguri Cap,Junior Make Debut,1070,1,700,70,2.2776,1,2,2,0,1190.0,1237,47.0,3.9496,1237,0
2026-09-17 22:45:31,23,3,[Ashen Miracle] Oguri Cap,Hanshin Juvenile Fillies,623,2,2600,70,0.0231,0,9,0,0,4420.0,4817,397.0,8.9819,4817,0
2026-09-17 22:45:31,33,3,[Ashen Miracle] Oguri Cap,NHK Mile Cup,164,1,10500,70,2.7073,2,4,2,0,17850.0,18921,1071.0,6.0,18921,0
2026-09-17 22:45:31,46,3,[Ashen Miracle] Oguri Cap,Mile Championship,78,1,11000,70,1.9154,2,2,2,0,18700.0,19448,748.0,4.0,19448,0
2026-09-17 22:45:31,48,3,[Ashen Miracle] Oguri Cap,Arima Kinen,81,1,30000,70,4.8206,2,6,2,0,51000.0,55080,4080.0,8.0,55080,0
2026-09-17 22:45:31,56,3,[Ashen Miracle] Oguri Cap,Tenno Sho (Spring),4,1,15000,70,14.398,5,9,3,0,25500.0,28560,3060.0,12.0,28560,0
2026-09-17 22:45:31,57,3,[Ashen Miracle] Oguri Cap,Victoria Mile,5,1,10500,70,2.1273,3,2,2,0,17850.0,18564,714.0,4.0,18564,0
2026-09-17 22:45:31,68,3,[Ashen Miracle] Oguri Cap,Tenno Sho (Autumn),76,1,15000,70,7.6906,5,9,3,0,25500.0,28560,3060.0,12.0,28560,0
2026-09-17 22:45:31,72,3,[Ashen Miracle] Oguri Cap,Arima Kinen,81,1,30000,70,7.549,6,9,3,0,51000.0,57120,6120.0,12.0,57120,0
2026-09-17 22:45:31,74,3,[Ashen Miracle] Oguri Cap,URA Finale Qualifier,2014,1,7000,70,6.4801,3,9,2,0,11900.0,13209,1309.0,11.0,13209,0
2026-09-17 22:45:31,76,3,[Ashen Miracle] Oguri Cap,URA Finale Semifinal,2109,1,10000,70,5.9469,7,6,5,0,17000.0,18870,1870.0,11.0,18870,0
2026-09-17 22:45:31,78,3,[Ashen Miracle] Oguri Cap,URA Finale Finals,2212,1,30000,70,7.2892,5,9,3,0,51000.0,57120,6120.0,12.0,57120,0
2026-09-19 20:01:05,12,3,[Ashen Miracle] Oguri Cap,Junior Make Debut,1070,1,700,70,6.6525,0,9,0,0,1190.0,1297,107.0,8.9916,1297,0
2026-09-19 20:01:05,23,3,[Ashen Miracle] Oguri Cap,Asahi Hai Futurity Stakes,624,3,1750,70,1.5022,0,6,0,0,2975.0,3153,178.0,5.9832,3153,0
2026-09-19 20:01:05,24,3,[Ashen Miracle] Oguri Cap,Hopeful Stakes,625,1,7000,70,5.6931,0,6,0,0,11900.0,12614,714.0,6.0,12614,0
2026-09-19 20:01:05,33,3,[Ashen Miracle] Oguri Cap,NHK Mile Cup,164,1,10500,70,1.488,0,2,0,0,17850.0,18207,357.0,2.0,18207,0
2026-09-19 20:01:05,46,3,[Ashen Miracle] Oguri Cap,Mile Championship,78,1,11000,70,3.8134,0,4,0,0,18700.0,19448,748.0,4.0,19448,0
2026-09-19 20:01:05,48,3,[Ashen Miracle] Oguri Cap,Arima Kinen,81,1,30000,70,2.6633,0,4,0,0,51000.0,53040,2040.0,4.0,53040,0
2026-09-19 20:01:05,52,3,[Ashen Miracle] Oguri Cap,February Stakes,1,1,10000,70,0.6637,0,0,0,0,17000.0,17000,0.0,0.0,17000,0
2026-09-19 20:01:05,59,3,[Ashen Miracle] Oguri Cap,Yasuda Kinen,73,1,13000,70,5.9364,0,6,0,0,22100.0,23426,1326.0,6.0,23426,0
2026-09-19 20:01:05,68,3,[Ashen Miracle] Oguri Cap,Tenno Sho (Autumn),76,1,15000,70,6.0564,0,9,0,0,25500.0,27795,2295.0,9.0,27795,0
2026-09-19 20:01:05,72,3,[Ashen Miracle] Oguri Cap,Arima Kinen,81,1,30000,70,7.8703,0,9,0,0,51000.0,55590,4590.0,9.0,55590,0
2026-09-19 20:01:05,74,3,[Ashen Miracle] Oguri Cap,URA Finale Qualifier,2015,1,7000,70,5.8192,0,6,0,0,11900.0,12614,714.0,6.0,12614,0
2026-09-19 20:01:05,76,3,[Ashen Miracle] Oguri Cap,URA Finale Semifinal,2111,1,10000,70,5.2726,0,6,0,0,17000.0,18020,1020.0,6.0,18020,0
2026-09-19 20:01:05,78,3,[Ashen Miracle] Oguri Cap,URA Finale Finals,2213,1,30000,70,5.6513,0,6,0,0,51000.0,54060,3060.0,6.0,54060,0
2026-09-19 21:45:59,12,2,[Blossom in Learning] Sakura Bakushin O,Junior Make Debut,676,1,700,65,1.7631,0,2,0,0,1155.0,1178,23.0,1.9913,1178,0
2026-09-19 21:45:59,21,2,[Blossom in Learning] Sakura Bakushin O,Keio Hai Junior Stakes,626,1,3800,65,0.917,0,2,0,0,6270.0,6395,125.0,1.9936,6395,0
2026-09-19 21:45:59,30,2,[Blossom in Learning] Sakura Bakushin O,Spring Stakes,171,2,2160,65,0.7907,1,6,2,0,3564.0,3847,283.0,7.9405,3847,0
2026-09-19 21:45:59,34,2,[Blossom in Learning] Sakura Bakushin O,Aoi Stakes,210,2,1520,65,1.5851,0,6,0,0,2508.0,2658,150.0,5.9809,2658,0
2026-09-19 21:45:59,35,2,[Blossom in Learning] Sakura Bakushin O,Epsom Cup,95,1,4100,65,1.3364,1,2,2,0,6765.0,7035,270.0,3.9911,7035,0
2026-09-19 21:45:59,42,2,[Blossom in Learning] Sakura Bakushin O,Sprinters Stakes,75,3,3250,65,0.8705,0,6,0,0,5362.5,5684,321.5,5.9953,5684,0
2026-09-19 21:45:59,54,2,[Blossom in Learning] Sakura Bakushin O,Takamatsunomiya Kinen,2,2,5200,65,0.451,0,9,0,0,8580.0,9352,772.0,8.9977,9352,0
2026-09-19 21:45:59,60,2,[Blossom in Learning] Sakura Bakushin O,Hakodate Sprint Stakes,96,1,3900,65,0.9971,0,2,0,0,6435.0,6563,128.0,1.9891,6563,0
2026-09-19 21:45:59,61,2,[Blossom in Learning] Sakura Bakushin O,CBC Sho,97,1,3900,65,2.3483,0,2,0,0,6435.0,6563,128.0,1.9891,6563,0
2026-09-19 21:45:59,65,2,[Blossom in Learning] Sakura Bakushin O,Centaur Stakes,83,1,5900,65,1.5096,0,2,0,0,9735.0,9929,194.0,1.9928,9929,0
2026-09-19 21:45:59,66,2,[Blossom in Learning] Sakura Bakushin O,Sprinters Stakes,75,6,1170,65,2.5098,1,0,2,0,1930.5,1968,37.5,1.9425,1968,0
2026-09-23 23:41:07,12,1,[Blossom in Learning] Sakura Bakushin O,Junior Make Debut,676,1,700,65,2.7319,0,4,0,0,1155.0,1201,46.0,3.9827,1201,0
2026-09-23 23:41:07,21,1,[Blossom in Learning] Sakura Bakushin O,Keio Hai Junior Stakes,626,1,3800,65,0.5164,0,0,0,0,6270.0,6270,0.0,0.0,6270,0
2026-09-23 23:41:07,30,1,[Blossom in Learning] Sakura Bakushin O,Spring Stakes,171,1,5400,65,2.4521,1,2,2,0,8910.0,9266,356.0,3.9955,9266,0
2026-09-23 23:41:07,34,1,[Blossom in Learning] Sakura Bakushin O,Aoi Stakes,210,1,3800,65,0.4297,0,0,0,0,6270.0,6270,0.0,0.0,6270,0
2026-09-23 23:41:07,42,1,[Blossom in Learning] Sakura Bakushin O,Sprinters Stakes,75,6,1170,65,3.8513,0,0,0,0,1930.5,1930,-0.5,-0.0259,1930,0
2026-09-28 14:22:08,12,1,[Hot☆Summer Night] Maruzensky,Junior Make Debut,676,1,700,65,0.2547,0,0,0,0,1155.0,1155,0.0,0.0,1155,0
2026-10-01 09:39:24,12,2,[Wild Frontier] Taiki Shuttle,Junior Make Debut,846,1,700,80,2.9274,1,4,2,0,1260.0,1335,75.0,5.9524,1335,0
2026-10-01 09:39:24,25,2,[Wild Frontier] Taiki Shuttle,Shinzan Kinen,178,1,3800,80,3.297,0,4,0,0,6840.0,7113,273.0,3.9912,7113,0
2026-10-01 09:39:24,33,2,[Wild Frontier] Taiki Shuttle,NHK Mile Cup,164,1,10500,80,1.5041,0,2,0,0,18900.0,19278,378.0,2.0,19278,0
2026-10-01 09:39:24,36,2,[Wild Frontier] Taiki Shuttle,Unicorn Stakes,189,1,3500,80,0.0829,0,0,0,0,6300.0,6300,0.0,0.0,6300,0
2026-10-01 09:39:24,46,2,[Wild Frontier] Taiki Shuttle,Mile Championship,78,1,11000,80,1.3511,1,2,2,0,19800.0,20592,792.0,4.0,20592,0
2026-10-01 09:39:24,59,2,[Wild Frontier] Taiki Shuttle,Yasuda Kinen,73,1,13000,80,4.4812,0,6,0,0,23400.0,24804,1404.0,6.0,24804,0
2026-10-01 09:39:24,66,2,[Wild Frontier] Taiki Shuttle,Sprinters Stakes,75,1,13000,80,3.6966,1,4,2,0,23400.0,24804,1404.0,6.0,24804,0
2026-10-01 09:39:24,70,2,[Wild Frontier] Taiki Shuttle,Mile Championship,78,1,11000,80,3.6774,0,4,0,0,19800.0,20592,792.0,4.0,20592,0
2026-10-01 09:39:24,74,2,[Wild Frontier] Taiki Shuttle,URA Finale Qualifier,2013,1,7000,80,4.0671,0,6,0,0,12600.0,13356,756.0,6.0,13356,0
2026-10-01 09:39:24,76,2,[Wild Frontier] Taiki Shuttle,URA Finale Semifinal,2109,1,10000,80,4.9632,1,6,2,0,18000.0,19440,1440.0,8.0,19440,0
2026-10-01 09:39:24,78,2,[Wild Frontier] Taiki Shuttle,URA Finale Finals,2214,1,30000,80,1.1329,0,2,0,0,54000.0,55080,1080.0,2.0,55080,0
2026-10-04 14:36:48,12,4,[Wild Frontier] Taiki Shuttle,Junior Make Debut,846,1,700,105,2.6127,1,4,2,0,1435.0,1521,86.0,5.993,1521,0
2026-10-04 14:36:48,14,4,[Wild Frontier] Taiki Shuttle,Hakodate Junior Stakes,628,1,3100,105,4.3676,0,6,0,0,6355.0,6736,381.0,5.9953,6736,0
2026-10-04 14:36:48,16,4,[Wild Frontier] Taiki Shuttle,Niigata Junior Stakes,629,1,3100,105,2.8947,0,4,0,0,6355.0,6609,254.0,3.9969,6609,0
2026-10-04 14:36:48,17,4,[Wild Frontier] Taiki Shuttle,Sapporo Junior Stakes,630,1,3100,105,2.2675,1,2,2,0,6355.0,6609,254.0,3.9969,6609,0
2026-10-04 14:36:48,21,4,[Wild Frontier] Taiki Shuttle,Keio Hai Junior Stakes,626,1,3800,105,1.8215,1,2,2,0,7790.0,8101,311.0,3.9923,8101,0
2026-10-04 14:36:48,22,4,[Wild Frontier] Taiki Shuttle,Tokyo Sports Hai Junior Stakes,635,1,3300,105,4.1972,0,6,0,0,6765.0,7170,405.0,5.9867,7170,0
2026-10-04 14:36:48,23,4,[Wild Frontier] Taiki Shuttle,Hanshin Juvenile Fillies,623,1,6500,105,4.4133,1,6,2,0,13325.0,14391,1066.0,8.0,14391,0
2026-10-04 14:36:48,24,4,[Wild Frontier] Taiki Shuttle,Zen-Nippon Junior Yushun,1107,2,1680,105,0.6647,1,9,2,0,3444.0,3821,377.0,10.9466,3821,0
2026-10-04 14:36:48,27,4,[Wild Frontier] Taiki Shuttle,Kyodo News Hai,183,1,3800,105,3.9819,1,4,2,0,7790.0,8257,467.0,5.9949,8257,0
2026-10-04 14:36:48,29,4,[Wild Frontier] Taiki Shuttle,Fillies' Revue,170,2,2080,105,0.056,1,9,2,0,4264.0,4731,467.0,10.9522,4731,0
2026-10-04 14:36:48,30,4,[Wild Frontier] Taiki Shuttle,Spring Stakes,171,1,5400,105,1.5715,1,2,2,0,11070.0,11513,443.0,4.0018,11513,0
2026-10-04 14:36:48,31,4,[Wild Frontier] Taiki Shuttle,Oka Sho,162,1,10500,105,2.0067,0,2,0,0,21525.0,21956,431.0,2.0023,21956,0
2026-10-04 14:36:48,33,4,[Wild Frontier] Taiki Shuttle,NHK Mile Cup,164,1,10500,105,1.3928,0,2,0,0,21525.0,21956,431.0,2.0023,21956,0
2026-10-04 14:36:48,35,4,[Wild Frontier] Taiki Shuttle,Yasuda Kinen,73,1,13000,105,1.2662,1,2,2,0,26650.0,27716,1066.0,4.0,27716,0
2026-10-04 14:36:48,39,4,[Wild Frontier] Taiki Shuttle,Sekiya Kinen,105,1,3900,105,3.8619,0,4,0,0,7995.0,8314,319.0,3.99,8314,0
2026-10-04 14:36:48,41,4,[Wild Frontier] Taiki Shuttle,Rose Stakes,176,1,5200,105,3.3191,1,4,2,0,10660.0,11300,640.0,6.0038,11300,0
2026-10-04 14:36:48,42,4,[Wild Frontier] Taiki Shuttle,Sprinters Stakes,75,1,13000,105,3.2007,1,4,2,0,26650.0,28249,1599.0,6.0,28249,0
2026-10-04 14:36:48,43,4,[Wild Frontier] Taiki Shuttle,M.C. Nambu Hai,1109,1,6000,105,2.7546,0,4,0,0,12300.0,12792,492.0,4.0,12792,0
2026-10-04 14:36:48,45,4,[Wild Frontier] Taiki Shuttle,JBC Sprint,1111,1,6000,105,1.5294,1,2,2,0,12300.0,12792,492.0,4.0,12792,0
2026-10-04 14:36:48,46,4,[Wild Frontier] Taiki Shuttle,Mile Championship,78,1,11000,105,2.2484,0,2,0,0,22550.0,23001,451.0,2.0,23001,0
2026-10-04 14:36:48,47,4,[Wild Frontier] Taiki Shuttle,Champions Cup,80,1,10000,105,2.5859,0,4,0,0,20500.0,21320,820.0,4.0,21320,0
2026-10-04 14:36:48,50,4,[Wild Frontier] Taiki Shuttle,Negishi Stakes,22,2,1520,105,1.4117,0,6,0,0,3116.0,3302,186.0,5.9692,3302,0
2026-10-04 14:36:48,52,4,[Wild Frontier] Taiki Shuttle,February Stakes,1,1,10000,105,0.0968,0,0,0,0,20500.0,20500,0.0,0.0,20500,0
2026-10-04 14:36:48,54,4,[Wild Frontier] Taiki Shuttle,Takamatsunomiya Kinen,2,1,13000,105,3.2402,0,4,0,0,26650.0,27716,1066.0,4.0,27716,0
2026-10-04 14:36:48,55,4,[Wild Frontier] Taiki Shuttle,Marine Cup,1128,1,2500,105,2.6992,0,4,0,0,5125.0,5330,205.0,4.0,5330,0
2026-10-04 14:36:48,57,4,[Wild Frontier] Taiki Shuttle,Victoria Mile,5,1,10500,105,1.5024,0,2,0,0,21525.0,21956,431.0,2.0023,21956,0
2026-10-04 14:36:48,58,4,[Wild Frontier] Taiki Shuttle,Keyaki Stakes,71,1,2200,105,3.8244,1,4,2,0,4510.0,4780,270.0,5.9867,4780,0
2026-10-04 14:36:48,59,4,[Wild Frontier] Taiki Shuttle,Yasuda Kinen,73,1,13000,105,1.4361,1,2,2,0,26650.0,27716,1066.0,4.0,27716,0
2026-10-04 14:36:48,62,4,[Wild Frontier] Taiki Shuttle,Queen Stakes,103,1,3600,105,5.0515,0,6,0,0,7380.0,7822,442.0,5.9892,7822,0
2026-10-04 14:36:48,65,4,[Wild Frontier] Taiki Shuttle,Keisei Hai Autumn Handicap,110,1,3900,105,5.633,0,6,0,0,7995.0,8474,479.0,5.9912,8474,0
2026-10-04 14:36:48,66,4,[Wild Frontier] Taiki Shuttle,Sprinters Stakes,75,1,13000,105,2.6328,0,4,0,0,26650.0,27716,1066.0,4.0,27716,0
2026-10-04 14:36:48,67,4,[Wild Frontier] Taiki Shuttle,M.C. Nambu Hai,1109,1,6000,105,4.184,0,6,0,0,12300.0,13038,738.0,6.0,13038,0
2026-10-04 14:36:48,69,4,[Wild Frontier] Taiki Shuttle,JBC Sprint,1025,1,6000,105,2.1263,1,2,2,0,12300.0,12792,492.0,4.0,12792,0
2026-10-04 14:36:48,70,4,[Wild Frontier] Taiki Shuttle,Mile Championship,78,1,11000,105,2.1798,0,2,0,0,22550.0,23001,451.0,2.0,23001,0
2026-10-04 14:36:48,71,4,[Wild Frontier] Taiki Shuttle,Champions Cup,80,1,10000,105,0.8076,1,2,2,0,20500.0,21320,820.0,4.0,21320,0
2026-10-04 14:36:48,74,4,[Wild Frontier] Taiki Shuttle,Twinkle Star Climax Race 1,2313,1,7000,105,4.0466,1,6,2,0,14350.0,15498,1148.0,8.0,15498,0
2026-10-04 14:36:48,76,4,[Wild Frontier] Taiki Shuttle,Twinkle Star Climax Race 2,2410,1,10000,105,1.8345,1,2,2,0,20500.0,21320,820.0,4.0,21320,0
2026-10-04 14:36:48,78,4,[Wild Frontier] Taiki Shuttle,Twinkle Star Climax Race 3,2515,1,30000,105,5.1406,1,6,2,50,61500.0,99630,38130.0,62.0,99630,0
2026-10-08 10:00:27,12,3,[CODE: ICING] Mihono Bourbon,Junior Make Debut,1075,1,700,70,3.126,1,4,2,0,1190.0,1261,71.0,5.9664,1261,0
2026-10-08 10:00:27,23,3,[CODE: ICING] Mihono Bourbon,Asahi Hai Futurity Stakes,624,1,7000,70,3.0099,2,4,2,0,11900.0,12614,714.0,6.0,12614,0
2026-10-08 10:00:27,30,3,[CODE: ICING] Mihono Bourbon,Spring Stakes,171,1,5400,70,1.4594,1,2,2,0,9180.0,9547,367.0,3.9978,9547,0
2026-10-08 10:00:27,31,3,[CODE: ICING] Mihono Bourbon,Satsuki Sho,163,1,11000,70,6.1843,2,9,2,0,18700.0,20757,2057.0,11.0,20757,0
2026-10-08 10:00:27,34,3,[CODE: ICING] Mihono Bourbon,Tokyo Yushun (Japanese Derby),166,1,20000,70,4.682,2,6,2,0,34000.0,36720,2720.0,8.0,36720,0
2026-10-08 10:00:27,44,3,[CODE: ICING] Mihono Bourbon,Kikuka Sho,168,1,12000,70,3.5273,1,4,2,0,20400.0,21624,1224.0,6.0,21624,0
2026-10-08 10:00:27,56,3,[CODE: ICING] Mihono Bourbon,Tenno Sho (Spring),4,1,15000,70,10.0374,2,9,2,0,25500.0,28305,2805.0,11.0,28305,0
2026-10-08 10:00:27,70,3,[CODE: ICING] Mihono Bourbon,Japan Cup,79,1,30000,70,10.1623,2,9,2,0,51000.0,56610,5610.0,11.0,56610,0
2026-10-08 10:00:27,72,3,[CODE: ICING] Mihono Bourbon,Arima Kinen,81,1,30000,70,10.4669,3,9,2,0,51000.0,56610,5610.0,11.0,56610,0
2026-10-08 10:00:27,74,3,[CODE: ICING] Mihono Bourbon,URA Finale Qualifier,2010,1,7000,70,5.7274,3,6,2,0,11900.0,12852,952.0,8.0,12852,0
2026-10-08 10:00:27,76,3,[CODE: ICING] Mihono Bourbon,URA Finale Semifinal,2113,1,10000,70,3.7223,3,4,2,0,17000.0,18020,1020.0,6.0,18020,0
2026-10-08 10:00:27,78,3,[CODE: ICING] Mihono Bourbon,URA Finale Finals,2209,1,30000,70,3.873,3,4,2,0,51000.0,54060,3060.0,6.0,54060,0
2026-10-10 03:12:29,12,3,[Soirée des Chatons] Seiun Sky,Junior Make Debut,689,1,700,70,3.0303,1,4,2,0,1190.0,1261,71.0,5.9664,1261,0
2026-10-10 03:12:29,24,3,[Soirée des Chatons] Seiun Sky,Hopeful Stakes,625,1,7000,70,2.1576,1,2,2,0,11900.0,12376,476.0,4.0,12376,0
2026-10-10 03:12:29,31,3,[Soirée des Chatons] Seiun Sky,Satsuki Sho,163,1,11000,70,2.5681,2,4,2,0,18700.0,19822,1122.0,6.0,19822,0
2026-10-10 03:12:29,34,3,[Soirée des Chatons] Seiun Sky,Tokyo Yushun (Japanese Derby),166,1,20000,70,2.4678,2,2,2,0,34000.0,35360,1360.0,4.0,35360,0
2026-10-10 03:12:29,44,3,[Soirée des Chatons] Seiun Sky,Kikuka Sho,168,1,12000,70,0.6938,2,0,2,0,20400.0,20808,408.0,2.0,20808,0
2026-10-10 03:12:29,48,3,[Soirée des Chatons] Seiun Sky,Arima Kinen,81,1,30000,70,3.3828,2,4,2,0,51000.0,54060,3060.0,6.0,54060,0
2026-10-10 03:12:29,56,3,[Soirée des Chatons] Seiun Sky,Tenno Sho (Spring),4,1,15000,70,20.5803,10,9,8,0,25500.0,29835,4335.0,17.0,29835,0
2026-10-10 03:12:29,60,3,[Soirée des Chatons] Seiun Sky,Takarazuka Kinen,74,1,15000,70,6.4095,10,9,8,0,25500.0,29835,4335.0,17.0,29835,0
2026-10-10 03:12:29,68,3,[Soirée des Chatons] Seiun Sky,Tenno Sho (Autumn),76,1,15000,70,9.3985,9,9,5,0,25500.0,29070,3570.0,14.0,29070,0
2026-10-10 03:12:29,72,3,[Soirée des Chatons] Seiun Sky,Arima Kinen,81,1,30000,70,11.7606,10,9,8,0,51000.0,59670,8670.0,17.0,59670,0
2026-10-10 03:12:29,74,3,[Soirée des Chatons] Seiun Sky,URA Finale Qualifier,2018,1,7000,70,11.2054,9,9,5,0,11900.0,13566,1666.0,14.0,13566,0
2026-10-10 03:12:29,76,3,[Soirée des Chatons] Seiun Sky,URA Finale Semifinal,2123,1,10000,70,8.0601,7,9,5,0,17000.0,19380,2380.0,14.0,19380,0
2026-10-10 03:12:29,78,3,[Soirée des Chatons] Seiun Sky,URA Finale Finals,2222,1,30000,70,5.7947,8,6,5,0,51000.0,56610,5610.0,11.0,56610,0
2026-10-10 15:53:30,12,3,[Soirée des Chatons] Seiun Sky,Junior Make Debut,689,1,700,70,3.7946,2,4,2,0,1190.0,1261,71.0,5.9664,1261,0
2026-10-10 15:53:30,24,3,[Soirée des Chatons] Seiun Sky,Hopeful Stakes,625,1,7000,70,5.3394,1,6,2,0,11900.0,12852,952.0,8.0,12852,0
2026-10-10 15:53:30,31,3,[Soirée des Chatons] Seiun Sky,Satsuki Sho,163,1,11000,70,7.5947,2,9,2,0,18700.0,20757,2057.0,11.0,20757,0
2026-10-10 15:53:30,34,3,[Soirée des Chatons] Seiun Sky,Tokyo Yushun (Japanese Derby),166,1,20000,70,2.1677,4,2,3,0,34000.0,35700,1700.0,5.0,35700,0
2026-10-10 15:53:30,44,3,[Soirée des Chatons] Seiun Sky,Kikuka Sho,168,3,3000,70,3.8191,4,4,3,0,5100.0,5457,357.0,7.0,5457,0
2026-10-10 15:53:30,48,3,[Soirée des Chatons] Seiun Sky,Arima Kinen,81,1,30000,70,12.6422,3,9,2,0,51000.0,56610,5610.0,11.0,56610,0
2026-10-10 15:53:30,56,3,[Soirée des Chatons] Seiun Sky,Tenno Sho (Spring),4,1,15000,70,1.11,7,2,5,0,25500.0,27285,1785.0,7.0,27285,0
2026-10-10 15:53:30,60,3,[Soirée des Chatons] Seiun Sky,Takarazuka Kinen,74,1,15000,70,13.7279,7,9,5,0,25500.0,29070,3570.0,14.0,29070,0
2026-10-10 15:53:30,68,3,[Soirée des Chatons] Seiun Sky,Tenno Sho (Autumn),76,1,15000,70,3.6698,6,4,3,0,25500.0,27285,1785.0,7.0,27285,0
2026-10-10 15:53:30,72,3,[Soirée des Chatons] Seiun Sky,Arima Kinen,81,1,30000,70,13.5919,8,9,5,0,51000.0,58140,7140.0,14.0,58140,0
2026-10-10 15:53:30,74,3,[Soirée des Chatons] Seiun Sky,URA Finale Qualifier,2025,1,7000,70,13.045,7,9,5,0,11900.0,13566,1666.0,14.0,13566,0
2026-10-10 15:53:30,76,3,[Soirée des Chatons] Seiun Sky,URA Finale Semifinal,2122,1,10000,70,12.4002,7,9,5,0,17000.0,19380,2380.0,14.0,19380,0
2026-10-10 15:53:30,78,3,[Soirée des Chatons] Seiun Sky,URA Finale Finals,2217,1,30000,70,12.3247,7,9,5,0,51000.0,58140,7140.0,14.0,58140,0
2026-10-11 18:47:03,12,3,[Soirée des Chatons] Seiun Sky,Junior Make Debut,689,1,700,80,3.2149,2,4,2,0,1260.0,1335,75.0,5.9524,1335,0
2026-10-11 18:47:03,24,3,[Soirée des Chatons] Seiun Sky,Hopeful Stakes,625,1,7000,80,2.4816,2,2,2,0,12600.0,13104,504.0,4.0,13104,0
2026-10-11 19:13:35,12,3,[Soirée des Chatons] Seiun Sky,Junior Make Debut,689,1,700,80,4.1512,1,6,2,0,1260.0,1360,100.0,7.9365,1360,0
2026-10-11 19:13:35,24,3,[Soirée des Chatons] Seiun Sky,Hopeful Stakes,625,1,7000,80,2.8651,2,4,2,0,12600.0,13356,756.0,6.0,13356,0
2026-10-11 19:13:35,31,3,[Soirée des Chatons] Seiun Sky,Satsuki Sho,163,1,11000,80,4.6012,2,6,2,0,19800.0,21384,1584.0,8.0,21384,0
2026-10-11 19:13:35,34,3,[Soirée des Chatons] Seiun Sky,Tokyo Yushun (Japanese Derby),166,1,20000,80,4.1483,2,6,2,0,36000.0,38880,2880.0,8.0,38880,0
2026-10-11 19:13:35,44,3,[Soirée des Chatons] Seiun Sky,Kikuka Sho,168,2,4800,80,4.218,2,2,2,0,8640.0,8985,345.0,3.9931,8985,0
2026-10-11 19:13:35,48,3,[Soirée des Chatons] Seiun Sky,Arima Kinen,81,1,30000,80,10.0709,3,9,2,0,54000.0,59940,5940.0,11.0,59940,0
2026-10-11 19:13:35,56,3,[Soirée des Chatons] Seiun Sky,Tenno Sho (Spring),4,1,15000,80,6.5113,8,9,5,0,27000.0,30780,3780.0,14.0,30780,0
2026-10-11 19:13:35,60,3,[Soirée des Chatons] Seiun Sky,Takarazuka Kinen,74,1,15000,80,6.7601,6,9,3,0,27000.0,30240,3240.0,12.0,30240,0
2026-10-11 19:13:35,72,3,[Soirée des Chatons] Seiun Sky,Arima Kinen,81,1,30000,80,14.0565,7,9,5,0,54000.0,61560,7560.0,14.0,61560,0
2026-10-11 19:13:35,74,3,[Soirée des Chatons] Seiun Sky,URA Finale Qualifier,2018,1,7000,80,10.2344,7,9,5,0,12600.0,14364,1764.0,14.0,14364,0
2026-10-11 19:13:35,76,3,[Soirée des Chatons] Seiun Sky,URA Finale Semifinal,2121,1,10000,80,5.3797,5,6,3,0,18000.0,19620,1620.0,9.0,19620,0
2026-10-11 19:13:35,78,3,[Soirée des Chatons] Seiun Sky,URA Finale Finals,2222,1,30000,80,7.7281,7,9,5,0,54000.0,61560,7560.0,14.0,61560,0
1 career turn scenario character race program_id place base_fans deck_bonus_pct margin_lengths skill_activations margin_bonus_pct skill_bonus_pct item_bonus_pct deck_only_fans actual_fans extra_fans extra_pct predicted_fans residual_fans
2 2026-08-19 20:37:27 12 3 [Ashen Miracle] Oguri Cap Junior Make Debut 1070 1 700 55 4.4727 0 6 0 0 1085.0 1150 65.0 5.9908 1150 0
3 2026-08-19 20:37:27 23 3 [Ashen Miracle] Oguri Cap Hanshin Juvenile Fillies 623 6 585 55 1.2941 0 0 0 0 906.75 906 -0.75 -0.0827 906 0
4 2026-08-19 20:37:27 24 3 [Ashen Miracle] Oguri Cap Hopeful Stakes 625 1 7000 55 1.1495 0 2 0 0 10850.0 11067 217.0 2.0 11067 0
5 2026-08-19 20:37:27 33 3 [Ashen Miracle] Oguri Cap NHK Mile Cup 164 1 10500 55 1.6165 0 2 0 0 16275.0 16601 326.0 2.0031 16601 0
6 2026-08-19 20:37:27 46 3 [Ashen Miracle] Oguri Cap Mile Championship 78 1 11000 55 5.3966 5 6 3 0 17050.0 18585 1535.0 9.0029 18585 0
7 2026-08-19 20:37:27 48 3 [Ashen Miracle] Oguri Cap Arima Kinen 81 1 30000 55 8.8065 6 9 3 0 46500.0 52080 5580.0 12.0 52080 0
8 2026-08-19 20:37:27 54 3 [Ashen Miracle] Oguri Cap Osaka Hai 3 1 13500 55 3.3853 4 4 3 0 20925.0 22390 1465.0 7.0012 22390 0
9 2026-08-19 20:37:27 57 3 [Ashen Miracle] Oguri Cap Victoria Mile 5 1 10500 55 4.8613 2 6 2 0 16275.0 17577 1302.0 8.0 17577 0
10 2026-08-19 20:37:27 68 3 [Ashen Miracle] Oguri Cap Tenno Sho (Autumn) 76 1 15000 55 14.0515 6 9 3 0 23250.0 26040 2790.0 12.0 26040 0
11 2026-08-19 20:37:27 72 3 [Ashen Miracle] Oguri Cap Arima Kinen 81 1 30000 55 10.5066 7 9 5 0 46500.0 53010 6510.0 14.0 53010 0
12 2026-08-19 20:37:27 74 3 [Ashen Miracle] Oguri Cap URA Finale Qualifier 2015 1 7000 55 6.1557 6 9 3 0 10850.0 12152 1302.0 12.0 12152 0
13 2026-08-19 20:37:27 76 3 [Ashen Miracle] Oguri Cap URA Finale Semifinal 2112 1 10000 55 6.906 7 9 5 0 15500.0 17670 2170.0 14.0 17670 0
14 2026-08-19 20:37:27 78 3 [Ashen Miracle] Oguri Cap URA Finale Finals 2213 1 30000 55 7.8077 8 9 5 0 46500.0 53010 6510.0 14.0 53010 0
15 2026-09-08 21:05:53 12 3 [Ashen Miracle] Oguri Cap Junior Make Debut 1070 1 700 70 2.4747 0 2 0 0 1190.0 1213 23.0 1.9328 1213 0
16 2026-09-08 21:05:53 23 3 [Ashen Miracle] Oguri Cap Hanshin Juvenile Fillies 623 3 1625 70 2.5458 0 4 0 0 2762.5 2873 110.5 4.0 2873 0
17 2026-09-08 21:05:53 32 3 [Ashen Miracle] Oguri Cap Flora Stakes 173 1 5200 70 0.166 0 0 0 0 8840.0 8840 0.0 0.0 8840 0
18 2026-09-08 21:05:53 33 3 [Ashen Miracle] Oguri Cap NHK Mile Cup 164 1 10500 70 0.6636 0 0 0 0 17850.0 17850 0.0 0.0 17850 0
19 2026-09-08 21:05:53 46 3 [Ashen Miracle] Oguri Cap Mile Championship 78 1 11000 70 0.3634 0 0 0 0 18700.0 18700 0.0 0.0 18700 0
20 2026-09-08 21:05:53 48 3 [Ashen Miracle] Oguri Cap Arima Kinen 81 1 30000 70 3.9924 0 4 0 0 51000.0 53040 2040.0 4.0 53040 0
21 2026-09-08 21:05:53 54 3 [Ashen Miracle] Oguri Cap Osaka Hai 3 1 13500 70 3.7863 0 4 0 0 22950.0 23868 918.0 4.0 23868 0
22 2026-09-08 21:05:53 57 3 [Ashen Miracle] Oguri Cap Victoria Mile 5 1 10500 70 1.4385 0 2 0 0 17850.0 18207 357.0 2.0 18207 0
23 2026-09-08 21:05:53 68 3 [Ashen Miracle] Oguri Cap Tenno Sho (Autumn) 76 1 15000 70 3.9784 0 4 0 0 25500.0 26520 1020.0 4.0 26520 0
24 2026-09-08 21:05:53 72 3 [Ashen Miracle] Oguri Cap Arima Kinen 81 1 30000 70 7.8092 0 9 0 0 51000.0 55590 4590.0 9.0 55590 0
25 2026-09-08 21:05:53 74 3 [Ashen Miracle] Oguri Cap URA Finale Qualifier 2011 1 7000 70 4.2694 0 6 0 0 11900.0 12614 714.0 6.0 12614 0
26 2026-09-08 21:05:53 76 3 [Ashen Miracle] Oguri Cap URA Finale Semifinal 2108 1 10000 70 1.7312 0 2 0 0 17000.0 17340 340.0 2.0 17340 0
27 2026-09-08 21:05:53 78 3 [Ashen Miracle] Oguri Cap URA Finale Finals 2209 1 30000 70 2.9177 0 4 0 0 51000.0 53040 2040.0 4.0 53040 0
28 2026-09-16 13:24:41 12 3 [Ashen Miracle] Oguri Cap Junior Make Debut 1070 1 700 70 6.3564 0 9 0 0 1190.0 1297 107.0 8.9916 1297 0
29 2026-09-16 13:24:41 23 3 [Ashen Miracle] Oguri Cap Hanshin Juvenile Fillies 623 1 6500 70 0.5447 0 0 0 0 11050.0 11050 0.0 0.0 11050 0
30 2026-09-16 13:24:41 33 3 [Ashen Miracle] Oguri Cap NHK Mile Cup 164 1 10500 70 1.2208 0 2 0 0 17850.0 18207 357.0 2.0 18207 0
31 2026-09-16 13:24:41 46 3 [Ashen Miracle] Oguri Cap Mile Championship 78 1 11000 70 1.8764 0 2 0 0 18700.0 19074 374.0 2.0 19074 0
32 2026-09-16 13:24:41 48 3 [Ashen Miracle] Oguri Cap Arima Kinen 81 1 30000 70 7.2065 0 9 0 0 51000.0 55590 4590.0 9.0 55590 0
33 2026-09-16 13:24:41 54 3 [Ashen Miracle] Oguri Cap Osaka Hai 3 1 13500 70 9.1057 0 9 0 0 22950.0 25016 2066.0 9.0022 25016 0
34 2026-09-16 13:24:41 59 3 [Ashen Miracle] Oguri Cap Yasuda Kinen 73 1 13000 70 4.3705 0 6 0 0 22100.0 23426 1326.0 6.0 23426 0
35 2026-09-16 13:24:41 68 3 [Ashen Miracle] Oguri Cap Tenno Sho (Autumn) 76 1 15000 70 7.933 0 9 0 0 25500.0 27795 2295.0 9.0 27795 0
36 2026-09-16 13:24:41 72 3 [Ashen Miracle] Oguri Cap Arima Kinen 81 1 30000 70 5.7931 0 6 0 0 51000.0 54060 3060.0 6.0 54060 0
37 2026-09-16 13:24:41 74 3 [Ashen Miracle] Oguri Cap URA Finale Qualifier 2010 1 7000 70 5.7824 0 6 0 0 11900.0 12614 714.0 6.0 12614 0
38 2026-09-16 13:24:41 76 3 [Ashen Miracle] Oguri Cap URA Finale Semifinal 2112 1 10000 70 2.7856 0 4 0 0 17000.0 17680 680.0 4.0 17680 0
39 2026-09-16 13:24:41 78 3 [Ashen Miracle] Oguri Cap URA Finale Finals 2208 1 30000 70 5.4409 0 6 0 0 51000.0 54060 3060.0 6.0 54060 0
40 2026-09-17 20:23:11 12 3 [Ashen Miracle] Oguri Cap Junior Make Debut 1070 1 700 70 5.3797 0 6 0 0 1190.0 1261 71.0 5.9664 1261 0
41 2026-09-17 20:23:11 24 3 [Ashen Miracle] Oguri Cap Hopeful Stakes 625 1 7000 70 4.8411 2 6 2 0 11900.0 12852 952.0 8.0 12852 0
42 2026-09-17 20:23:11 33 3 [Ashen Miracle] Oguri Cap NHK Mile Cup 164 1 10500 70 3.0921 1 4 2 0 17850.0 18921 1071.0 6.0 18921 0
43 2026-09-17 20:23:11 46 3 [Ashen Miracle] Oguri Cap Mile Championship 78 1 11000 70 3.4861 1 4 2 0 18700.0 19822 1122.0 6.0 19822 0
44 2026-09-17 20:23:11 48 3 [Ashen Miracle] Oguri Cap Arima Kinen 81 1 30000 70 8.0058 1 9 2 0 51000.0 56610 5610.0 11.0 56610 0
45 2026-09-17 20:23:11 51 3 [Ashen Miracle] Oguri Cap Kawasaki Kinen 1106 1 6000 70 5.6972 1 6 2 0 10200.0 11016 816.0 8.0 11016 0
46 2026-09-17 20:23:11 52 3 [Ashen Miracle] Oguri Cap February Stakes 1 1 10000 70 0.5589 1 0 2 0 17000.0 17340 340.0 2.0 17340 0
47 2026-09-17 20:23:11 68 3 [Ashen Miracle] Oguri Cap Tenno Sho (Autumn) 76 1 15000 70 4.6895 2 6 2 0 25500.0 27540 2040.0 8.0 27540 0
48 2026-09-17 20:23:11 72 3 [Ashen Miracle] Oguri Cap Arima Kinen 81 1 30000 70 9.0895 1 9 2 0 51000.0 56610 5610.0 11.0 56610 0
49 2026-09-17 20:23:11 74 3 [Ashen Miracle] Oguri Cap URA Finale Qualifier 2014 1 7000 70 6.1828 1 9 2 0 11900.0 13209 1309.0 11.0 13209 0
50 2026-09-17 20:23:11 76 3 [Ashen Miracle] Oguri Cap URA Finale Semifinal 2111 1 10000 70 2.8136 1 4 2 0 17000.0 18020 1020.0 6.0 18020 0
51 2026-09-17 20:23:11 78 3 [Ashen Miracle] Oguri Cap URA Finale Finals 2212 1 30000 70 1.061 1 2 2 0 51000.0 53040 2040.0 4.0 53040 0
52 2026-09-17 22:45:31 12 3 [Ashen Miracle] Oguri Cap Junior Make Debut 1070 1 700 70 2.2776 1 2 2 0 1190.0 1237 47.0 3.9496 1237 0
53 2026-09-17 22:45:31 23 3 [Ashen Miracle] Oguri Cap Hanshin Juvenile Fillies 623 2 2600 70 0.0231 0 9 0 0 4420.0 4817 397.0 8.9819 4817 0
54 2026-09-17 22:45:31 33 3 [Ashen Miracle] Oguri Cap NHK Mile Cup 164 1 10500 70 2.7073 2 4 2 0 17850.0 18921 1071.0 6.0 18921 0
55 2026-09-17 22:45:31 46 3 [Ashen Miracle] Oguri Cap Mile Championship 78 1 11000 70 1.9154 2 2 2 0 18700.0 19448 748.0 4.0 19448 0
56 2026-09-17 22:45:31 48 3 [Ashen Miracle] Oguri Cap Arima Kinen 81 1 30000 70 4.8206 2 6 2 0 51000.0 55080 4080.0 8.0 55080 0
57 2026-09-17 22:45:31 56 3 [Ashen Miracle] Oguri Cap Tenno Sho (Spring) 4 1 15000 70 14.398 5 9 3 0 25500.0 28560 3060.0 12.0 28560 0
58 2026-09-17 22:45:31 57 3 [Ashen Miracle] Oguri Cap Victoria Mile 5 1 10500 70 2.1273 3 2 2 0 17850.0 18564 714.0 4.0 18564 0
59 2026-09-17 22:45:31 68 3 [Ashen Miracle] Oguri Cap Tenno Sho (Autumn) 76 1 15000 70 7.6906 5 9 3 0 25500.0 28560 3060.0 12.0 28560 0
60 2026-09-17 22:45:31 72 3 [Ashen Miracle] Oguri Cap Arima Kinen 81 1 30000 70 7.549 6 9 3 0 51000.0 57120 6120.0 12.0 57120 0
61 2026-09-17 22:45:31 74 3 [Ashen Miracle] Oguri Cap URA Finale Qualifier 2014 1 7000 70 6.4801 3 9 2 0 11900.0 13209 1309.0 11.0 13209 0
62 2026-09-17 22:45:31 76 3 [Ashen Miracle] Oguri Cap URA Finale Semifinal 2109 1 10000 70 5.9469 7 6 5 0 17000.0 18870 1870.0 11.0 18870 0
63 2026-09-17 22:45:31 78 3 [Ashen Miracle] Oguri Cap URA Finale Finals 2212 1 30000 70 7.2892 5 9 3 0 51000.0 57120 6120.0 12.0 57120 0
64 2026-09-19 20:01:05 12 3 [Ashen Miracle] Oguri Cap Junior Make Debut 1070 1 700 70 6.6525 0 9 0 0 1190.0 1297 107.0 8.9916 1297 0
65 2026-09-19 20:01:05 23 3 [Ashen Miracle] Oguri Cap Asahi Hai Futurity Stakes 624 3 1750 70 1.5022 0 6 0 0 2975.0 3153 178.0 5.9832 3153 0
66 2026-09-19 20:01:05 24 3 [Ashen Miracle] Oguri Cap Hopeful Stakes 625 1 7000 70 5.6931 0 6 0 0 11900.0 12614 714.0 6.0 12614 0
67 2026-09-19 20:01:05 33 3 [Ashen Miracle] Oguri Cap NHK Mile Cup 164 1 10500 70 1.488 0 2 0 0 17850.0 18207 357.0 2.0 18207 0
68 2026-09-19 20:01:05 46 3 [Ashen Miracle] Oguri Cap Mile Championship 78 1 11000 70 3.8134 0 4 0 0 18700.0 19448 748.0 4.0 19448 0
69 2026-09-19 20:01:05 48 3 [Ashen Miracle] Oguri Cap Arima Kinen 81 1 30000 70 2.6633 0 4 0 0 51000.0 53040 2040.0 4.0 53040 0
70 2026-09-19 20:01:05 52 3 [Ashen Miracle] Oguri Cap February Stakes 1 1 10000 70 0.6637 0 0 0 0 17000.0 17000 0.0 0.0 17000 0
71 2026-09-19 20:01:05 59 3 [Ashen Miracle] Oguri Cap Yasuda Kinen 73 1 13000 70 5.9364 0 6 0 0 22100.0 23426 1326.0 6.0 23426 0
72 2026-09-19 20:01:05 68 3 [Ashen Miracle] Oguri Cap Tenno Sho (Autumn) 76 1 15000 70 6.0564 0 9 0 0 25500.0 27795 2295.0 9.0 27795 0
73 2026-09-19 20:01:05 72 3 [Ashen Miracle] Oguri Cap Arima Kinen 81 1 30000 70 7.8703 0 9 0 0 51000.0 55590 4590.0 9.0 55590 0
74 2026-09-19 20:01:05 74 3 [Ashen Miracle] Oguri Cap URA Finale Qualifier 2015 1 7000 70 5.8192 0 6 0 0 11900.0 12614 714.0 6.0 12614 0
75 2026-09-19 20:01:05 76 3 [Ashen Miracle] Oguri Cap URA Finale Semifinal 2111 1 10000 70 5.2726 0 6 0 0 17000.0 18020 1020.0 6.0 18020 0
76 2026-09-19 20:01:05 78 3 [Ashen Miracle] Oguri Cap URA Finale Finals 2213 1 30000 70 5.6513 0 6 0 0 51000.0 54060 3060.0 6.0 54060 0
77 2026-09-19 21:45:59 12 2 [Blossom in Learning] Sakura Bakushin O Junior Make Debut 676 1 700 65 1.7631 0 2 0 0 1155.0 1178 23.0 1.9913 1178 0
78 2026-09-19 21:45:59 21 2 [Blossom in Learning] Sakura Bakushin O Keio Hai Junior Stakes 626 1 3800 65 0.917 0 2 0 0 6270.0 6395 125.0 1.9936 6395 0
79 2026-09-19 21:45:59 30 2 [Blossom in Learning] Sakura Bakushin O Spring Stakes 171 2 2160 65 0.7907 1 6 2 0 3564.0 3847 283.0 7.9405 3847 0
80 2026-09-19 21:45:59 34 2 [Blossom in Learning] Sakura Bakushin O Aoi Stakes 210 2 1520 65 1.5851 0 6 0 0 2508.0 2658 150.0 5.9809 2658 0
81 2026-09-19 21:45:59 35 2 [Blossom in Learning] Sakura Bakushin O Epsom Cup 95 1 4100 65 1.3364 1 2 2 0 6765.0 7035 270.0 3.9911 7035 0
82 2026-09-19 21:45:59 42 2 [Blossom in Learning] Sakura Bakushin O Sprinters Stakes 75 3 3250 65 0.8705 0 6 0 0 5362.5 5684 321.5 5.9953 5684 0
83 2026-09-19 21:45:59 54 2 [Blossom in Learning] Sakura Bakushin O Takamatsunomiya Kinen 2 2 5200 65 0.451 0 9 0 0 8580.0 9352 772.0 8.9977 9352 0
84 2026-09-19 21:45:59 60 2 [Blossom in Learning] Sakura Bakushin O Hakodate Sprint Stakes 96 1 3900 65 0.9971 0 2 0 0 6435.0 6563 128.0 1.9891 6563 0
85 2026-09-19 21:45:59 61 2 [Blossom in Learning] Sakura Bakushin O CBC Sho 97 1 3900 65 2.3483 0 2 0 0 6435.0 6563 128.0 1.9891 6563 0
86 2026-09-19 21:45:59 65 2 [Blossom in Learning] Sakura Bakushin O Centaur Stakes 83 1 5900 65 1.5096 0 2 0 0 9735.0 9929 194.0 1.9928 9929 0
87 2026-09-19 21:45:59 66 2 [Blossom in Learning] Sakura Bakushin O Sprinters Stakes 75 6 1170 65 2.5098 1 0 2 0 1930.5 1968 37.5 1.9425 1968 0
88 2026-09-23 23:41:07 12 1 [Blossom in Learning] Sakura Bakushin O Junior Make Debut 676 1 700 65 2.7319 0 4 0 0 1155.0 1201 46.0 3.9827 1201 0
89 2026-09-23 23:41:07 21 1 [Blossom in Learning] Sakura Bakushin O Keio Hai Junior Stakes 626 1 3800 65 0.5164 0 0 0 0 6270.0 6270 0.0 0.0 6270 0
90 2026-09-23 23:41:07 30 1 [Blossom in Learning] Sakura Bakushin O Spring Stakes 171 1 5400 65 2.4521 1 2 2 0 8910.0 9266 356.0 3.9955 9266 0
91 2026-09-23 23:41:07 34 1 [Blossom in Learning] Sakura Bakushin O Aoi Stakes 210 1 3800 65 0.4297 0 0 0 0 6270.0 6270 0.0 0.0 6270 0
92 2026-09-23 23:41:07 42 1 [Blossom in Learning] Sakura Bakushin O Sprinters Stakes 75 6 1170 65 3.8513 0 0 0 0 1930.5 1930 -0.5 -0.0259 1930 0
93 2026-09-28 14:22:08 12 1 [Hot☆Summer Night] Maruzensky Junior Make Debut 676 1 700 65 0.2547 0 0 0 0 1155.0 1155 0.0 0.0 1155 0
94 2026-10-01 09:39:24 12 2 [Wild Frontier] Taiki Shuttle Junior Make Debut 846 1 700 80 2.9274 1 4 2 0 1260.0 1335 75.0 5.9524 1335 0
95 2026-10-01 09:39:24 25 2 [Wild Frontier] Taiki Shuttle Shinzan Kinen 178 1 3800 80 3.297 0 4 0 0 6840.0 7113 273.0 3.9912 7113 0
96 2026-10-01 09:39:24 33 2 [Wild Frontier] Taiki Shuttle NHK Mile Cup 164 1 10500 80 1.5041 0 2 0 0 18900.0 19278 378.0 2.0 19278 0
97 2026-10-01 09:39:24 36 2 [Wild Frontier] Taiki Shuttle Unicorn Stakes 189 1 3500 80 0.0829 0 0 0 0 6300.0 6300 0.0 0.0 6300 0
98 2026-10-01 09:39:24 46 2 [Wild Frontier] Taiki Shuttle Mile Championship 78 1 11000 80 1.3511 1 2 2 0 19800.0 20592 792.0 4.0 20592 0
99 2026-10-01 09:39:24 59 2 [Wild Frontier] Taiki Shuttle Yasuda Kinen 73 1 13000 80 4.4812 0 6 0 0 23400.0 24804 1404.0 6.0 24804 0
100 2026-10-01 09:39:24 66 2 [Wild Frontier] Taiki Shuttle Sprinters Stakes 75 1 13000 80 3.6966 1 4 2 0 23400.0 24804 1404.0 6.0 24804 0
101 2026-10-01 09:39:24 70 2 [Wild Frontier] Taiki Shuttle Mile Championship 78 1 11000 80 3.6774 0 4 0 0 19800.0 20592 792.0 4.0 20592 0
102 2026-10-01 09:39:24 74 2 [Wild Frontier] Taiki Shuttle URA Finale Qualifier 2013 1 7000 80 4.0671 0 6 0 0 12600.0 13356 756.0 6.0 13356 0
103 2026-10-01 09:39:24 76 2 [Wild Frontier] Taiki Shuttle URA Finale Semifinal 2109 1 10000 80 4.9632 1 6 2 0 18000.0 19440 1440.0 8.0 19440 0
104 2026-10-01 09:39:24 78 2 [Wild Frontier] Taiki Shuttle URA Finale Finals 2214 1 30000 80 1.1329 0 2 0 0 54000.0 55080 1080.0 2.0 55080 0
105 2026-10-04 14:36:48 12 4 [Wild Frontier] Taiki Shuttle Junior Make Debut 846 1 700 105 2.6127 1 4 2 0 1435.0 1521 86.0 5.993 1521 0
106 2026-10-04 14:36:48 14 4 [Wild Frontier] Taiki Shuttle Hakodate Junior Stakes 628 1 3100 105 4.3676 0 6 0 0 6355.0 6736 381.0 5.9953 6736 0
107 2026-10-04 14:36:48 16 4 [Wild Frontier] Taiki Shuttle Niigata Junior Stakes 629 1 3100 105 2.8947 0 4 0 0 6355.0 6609 254.0 3.9969 6609 0
108 2026-10-04 14:36:48 17 4 [Wild Frontier] Taiki Shuttle Sapporo Junior Stakes 630 1 3100 105 2.2675 1 2 2 0 6355.0 6609 254.0 3.9969 6609 0
109 2026-10-04 14:36:48 21 4 [Wild Frontier] Taiki Shuttle Keio Hai Junior Stakes 626 1 3800 105 1.8215 1 2 2 0 7790.0 8101 311.0 3.9923 8101 0
110 2026-10-04 14:36:48 22 4 [Wild Frontier] Taiki Shuttle Tokyo Sports Hai Junior Stakes 635 1 3300 105 4.1972 0 6 0 0 6765.0 7170 405.0 5.9867 7170 0
111 2026-10-04 14:36:48 23 4 [Wild Frontier] Taiki Shuttle Hanshin Juvenile Fillies 623 1 6500 105 4.4133 1 6 2 0 13325.0 14391 1066.0 8.0 14391 0
112 2026-10-04 14:36:48 24 4 [Wild Frontier] Taiki Shuttle Zen-Nippon Junior Yushun 1107 2 1680 105 0.6647 1 9 2 0 3444.0 3821 377.0 10.9466 3821 0
113 2026-10-04 14:36:48 27 4 [Wild Frontier] Taiki Shuttle Kyodo News Hai 183 1 3800 105 3.9819 1 4 2 0 7790.0 8257 467.0 5.9949 8257 0
114 2026-10-04 14:36:48 29 4 [Wild Frontier] Taiki Shuttle Fillies' Revue 170 2 2080 105 0.056 1 9 2 0 4264.0 4731 467.0 10.9522 4731 0
115 2026-10-04 14:36:48 30 4 [Wild Frontier] Taiki Shuttle Spring Stakes 171 1 5400 105 1.5715 1 2 2 0 11070.0 11513 443.0 4.0018 11513 0
116 2026-10-04 14:36:48 31 4 [Wild Frontier] Taiki Shuttle Oka Sho 162 1 10500 105 2.0067 0 2 0 0 21525.0 21956 431.0 2.0023 21956 0
117 2026-10-04 14:36:48 33 4 [Wild Frontier] Taiki Shuttle NHK Mile Cup 164 1 10500 105 1.3928 0 2 0 0 21525.0 21956 431.0 2.0023 21956 0
118 2026-10-04 14:36:48 35 4 [Wild Frontier] Taiki Shuttle Yasuda Kinen 73 1 13000 105 1.2662 1 2 2 0 26650.0 27716 1066.0 4.0 27716 0
119 2026-10-04 14:36:48 39 4 [Wild Frontier] Taiki Shuttle Sekiya Kinen 105 1 3900 105 3.8619 0 4 0 0 7995.0 8314 319.0 3.99 8314 0
120 2026-10-04 14:36:48 41 4 [Wild Frontier] Taiki Shuttle Rose Stakes 176 1 5200 105 3.3191 1 4 2 0 10660.0 11300 640.0 6.0038 11300 0
121 2026-10-04 14:36:48 42 4 [Wild Frontier] Taiki Shuttle Sprinters Stakes 75 1 13000 105 3.2007 1 4 2 0 26650.0 28249 1599.0 6.0 28249 0
122 2026-10-04 14:36:48 43 4 [Wild Frontier] Taiki Shuttle M.C. Nambu Hai 1109 1 6000 105 2.7546 0 4 0 0 12300.0 12792 492.0 4.0 12792 0
123 2026-10-04 14:36:48 45 4 [Wild Frontier] Taiki Shuttle JBC Sprint 1111 1 6000 105 1.5294 1 2 2 0 12300.0 12792 492.0 4.0 12792 0
124 2026-10-04 14:36:48 46 4 [Wild Frontier] Taiki Shuttle Mile Championship 78 1 11000 105 2.2484 0 2 0 0 22550.0 23001 451.0 2.0 23001 0
125 2026-10-04 14:36:48 47 4 [Wild Frontier] Taiki Shuttle Champions Cup 80 1 10000 105 2.5859 0 4 0 0 20500.0 21320 820.0 4.0 21320 0
126 2026-10-04 14:36:48 50 4 [Wild Frontier] Taiki Shuttle Negishi Stakes 22 2 1520 105 1.4117 0 6 0 0 3116.0 3302 186.0 5.9692 3302 0
127 2026-10-04 14:36:48 52 4 [Wild Frontier] Taiki Shuttle February Stakes 1 1 10000 105 0.0968 0 0 0 0 20500.0 20500 0.0 0.0 20500 0
128 2026-10-04 14:36:48 54 4 [Wild Frontier] Taiki Shuttle Takamatsunomiya Kinen 2 1 13000 105 3.2402 0 4 0 0 26650.0 27716 1066.0 4.0 27716 0
129 2026-10-04 14:36:48 55 4 [Wild Frontier] Taiki Shuttle Marine Cup 1128 1 2500 105 2.6992 0 4 0 0 5125.0 5330 205.0 4.0 5330 0
130 2026-10-04 14:36:48 57 4 [Wild Frontier] Taiki Shuttle Victoria Mile 5 1 10500 105 1.5024 0 2 0 0 21525.0 21956 431.0 2.0023 21956 0
131 2026-10-04 14:36:48 58 4 [Wild Frontier] Taiki Shuttle Keyaki Stakes 71 1 2200 105 3.8244 1 4 2 0 4510.0 4780 270.0 5.9867 4780 0
132 2026-10-04 14:36:48 59 4 [Wild Frontier] Taiki Shuttle Yasuda Kinen 73 1 13000 105 1.4361 1 2 2 0 26650.0 27716 1066.0 4.0 27716 0
133 2026-10-04 14:36:48 62 4 [Wild Frontier] Taiki Shuttle Queen Stakes 103 1 3600 105 5.0515 0 6 0 0 7380.0 7822 442.0 5.9892 7822 0
134 2026-10-04 14:36:48 65 4 [Wild Frontier] Taiki Shuttle Keisei Hai Autumn Handicap 110 1 3900 105 5.633 0 6 0 0 7995.0 8474 479.0 5.9912 8474 0
135 2026-10-04 14:36:48 66 4 [Wild Frontier] Taiki Shuttle Sprinters Stakes 75 1 13000 105 2.6328 0 4 0 0 26650.0 27716 1066.0 4.0 27716 0
136 2026-10-04 14:36:48 67 4 [Wild Frontier] Taiki Shuttle M.C. Nambu Hai 1109 1 6000 105 4.184 0 6 0 0 12300.0 13038 738.0 6.0 13038 0
137 2026-10-04 14:36:48 69 4 [Wild Frontier] Taiki Shuttle JBC Sprint 1025 1 6000 105 2.1263 1 2 2 0 12300.0 12792 492.0 4.0 12792 0
138 2026-10-04 14:36:48 70 4 [Wild Frontier] Taiki Shuttle Mile Championship 78 1 11000 105 2.1798 0 2 0 0 22550.0 23001 451.0 2.0 23001 0
139 2026-10-04 14:36:48 71 4 [Wild Frontier] Taiki Shuttle Champions Cup 80 1 10000 105 0.8076 1 2 2 0 20500.0 21320 820.0 4.0 21320 0
140 2026-10-04 14:36:48 74 4 [Wild Frontier] Taiki Shuttle Twinkle Star Climax Race 1 2313 1 7000 105 4.0466 1 6 2 0 14350.0 15498 1148.0 8.0 15498 0
141 2026-10-04 14:36:48 76 4 [Wild Frontier] Taiki Shuttle Twinkle Star Climax Race 2 2410 1 10000 105 1.8345 1 2 2 0 20500.0 21320 820.0 4.0 21320 0
142 2026-10-04 14:36:48 78 4 [Wild Frontier] Taiki Shuttle Twinkle Star Climax Race 3 2515 1 30000 105 5.1406 1 6 2 50 61500.0 99630 38130.0 62.0 99630 0
143 2026-10-08 10:00:27 12 3 [CODE: ICING] Mihono Bourbon Junior Make Debut 1075 1 700 70 3.126 1 4 2 0 1190.0 1261 71.0 5.9664 1261 0
144 2026-10-08 10:00:27 23 3 [CODE: ICING] Mihono Bourbon Asahi Hai Futurity Stakes 624 1 7000 70 3.0099 2 4 2 0 11900.0 12614 714.0 6.0 12614 0
145 2026-10-08 10:00:27 30 3 [CODE: ICING] Mihono Bourbon Spring Stakes 171 1 5400 70 1.4594 1 2 2 0 9180.0 9547 367.0 3.9978 9547 0
146 2026-10-08 10:00:27 31 3 [CODE: ICING] Mihono Bourbon Satsuki Sho 163 1 11000 70 6.1843 2 9 2 0 18700.0 20757 2057.0 11.0 20757 0
147 2026-10-08 10:00:27 34 3 [CODE: ICING] Mihono Bourbon Tokyo Yushun (Japanese Derby) 166 1 20000 70 4.682 2 6 2 0 34000.0 36720 2720.0 8.0 36720 0
148 2026-10-08 10:00:27 44 3 [CODE: ICING] Mihono Bourbon Kikuka Sho 168 1 12000 70 3.5273 1 4 2 0 20400.0 21624 1224.0 6.0 21624 0
149 2026-10-08 10:00:27 56 3 [CODE: ICING] Mihono Bourbon Tenno Sho (Spring) 4 1 15000 70 10.0374 2 9 2 0 25500.0 28305 2805.0 11.0 28305 0
150 2026-10-08 10:00:27 70 3 [CODE: ICING] Mihono Bourbon Japan Cup 79 1 30000 70 10.1623 2 9 2 0 51000.0 56610 5610.0 11.0 56610 0
151 2026-10-08 10:00:27 72 3 [CODE: ICING] Mihono Bourbon Arima Kinen 81 1 30000 70 10.4669 3 9 2 0 51000.0 56610 5610.0 11.0 56610 0
152 2026-10-08 10:00:27 74 3 [CODE: ICING] Mihono Bourbon URA Finale Qualifier 2010 1 7000 70 5.7274 3 6 2 0 11900.0 12852 952.0 8.0 12852 0
153 2026-10-08 10:00:27 76 3 [CODE: ICING] Mihono Bourbon URA Finale Semifinal 2113 1 10000 70 3.7223 3 4 2 0 17000.0 18020 1020.0 6.0 18020 0
154 2026-10-08 10:00:27 78 3 [CODE: ICING] Mihono Bourbon URA Finale Finals 2209 1 30000 70 3.873 3 4 2 0 51000.0 54060 3060.0 6.0 54060 0
155 2026-10-10 03:12:29 12 3 [Soirée des Chatons] Seiun Sky Junior Make Debut 689 1 700 70 3.0303 1 4 2 0 1190.0 1261 71.0 5.9664 1261 0
156 2026-10-10 03:12:29 24 3 [Soirée des Chatons] Seiun Sky Hopeful Stakes 625 1 7000 70 2.1576 1 2 2 0 11900.0 12376 476.0 4.0 12376 0
157 2026-10-10 03:12:29 31 3 [Soirée des Chatons] Seiun Sky Satsuki Sho 163 1 11000 70 2.5681 2 4 2 0 18700.0 19822 1122.0 6.0 19822 0
158 2026-10-10 03:12:29 34 3 [Soirée des Chatons] Seiun Sky Tokyo Yushun (Japanese Derby) 166 1 20000 70 2.4678 2 2 2 0 34000.0 35360 1360.0 4.0 35360 0
159 2026-10-10 03:12:29 44 3 [Soirée des Chatons] Seiun Sky Kikuka Sho 168 1 12000 70 0.6938 2 0 2 0 20400.0 20808 408.0 2.0 20808 0
160 2026-10-10 03:12:29 48 3 [Soirée des Chatons] Seiun Sky Arima Kinen 81 1 30000 70 3.3828 2 4 2 0 51000.0 54060 3060.0 6.0 54060 0
161 2026-10-10 03:12:29 56 3 [Soirée des Chatons] Seiun Sky Tenno Sho (Spring) 4 1 15000 70 20.5803 10 9 8 0 25500.0 29835 4335.0 17.0 29835 0
162 2026-10-10 03:12:29 60 3 [Soirée des Chatons] Seiun Sky Takarazuka Kinen 74 1 15000 70 6.4095 10 9 8 0 25500.0 29835 4335.0 17.0 29835 0
163 2026-10-10 03:12:29 68 3 [Soirée des Chatons] Seiun Sky Tenno Sho (Autumn) 76 1 15000 70 9.3985 9 9 5 0 25500.0 29070 3570.0 14.0 29070 0
164 2026-10-10 03:12:29 72 3 [Soirée des Chatons] Seiun Sky Arima Kinen 81 1 30000 70 11.7606 10 9 8 0 51000.0 59670 8670.0 17.0 59670 0
165 2026-10-10 03:12:29 74 3 [Soirée des Chatons] Seiun Sky URA Finale Qualifier 2018 1 7000 70 11.2054 9 9 5 0 11900.0 13566 1666.0 14.0 13566 0
166 2026-10-10 03:12:29 76 3 [Soirée des Chatons] Seiun Sky URA Finale Semifinal 2123 1 10000 70 8.0601 7 9 5 0 17000.0 19380 2380.0 14.0 19380 0
167 2026-10-10 03:12:29 78 3 [Soirée des Chatons] Seiun Sky URA Finale Finals 2222 1 30000 70 5.7947 8 6 5 0 51000.0 56610 5610.0 11.0 56610 0
168 2026-10-10 15:53:30 12 3 [Soirée des Chatons] Seiun Sky Junior Make Debut 689 1 700 70 3.7946 2 4 2 0 1190.0 1261 71.0 5.9664 1261 0
169 2026-10-10 15:53:30 24 3 [Soirée des Chatons] Seiun Sky Hopeful Stakes 625 1 7000 70 5.3394 1 6 2 0 11900.0 12852 952.0 8.0 12852 0
170 2026-10-10 15:53:30 31 3 [Soirée des Chatons] Seiun Sky Satsuki Sho 163 1 11000 70 7.5947 2 9 2 0 18700.0 20757 2057.0 11.0 20757 0
171 2026-10-10 15:53:30 34 3 [Soirée des Chatons] Seiun Sky Tokyo Yushun (Japanese Derby) 166 1 20000 70 2.1677 4 2 3 0 34000.0 35700 1700.0 5.0 35700 0
172 2026-10-10 15:53:30 44 3 [Soirée des Chatons] Seiun Sky Kikuka Sho 168 3 3000 70 3.8191 4 4 3 0 5100.0 5457 357.0 7.0 5457 0
173 2026-10-10 15:53:30 48 3 [Soirée des Chatons] Seiun Sky Arima Kinen 81 1 30000 70 12.6422 3 9 2 0 51000.0 56610 5610.0 11.0 56610 0
174 2026-10-10 15:53:30 56 3 [Soirée des Chatons] Seiun Sky Tenno Sho (Spring) 4 1 15000 70 1.11 7 2 5 0 25500.0 27285 1785.0 7.0 27285 0
175 2026-10-10 15:53:30 60 3 [Soirée des Chatons] Seiun Sky Takarazuka Kinen 74 1 15000 70 13.7279 7 9 5 0 25500.0 29070 3570.0 14.0 29070 0
176 2026-10-10 15:53:30 68 3 [Soirée des Chatons] Seiun Sky Tenno Sho (Autumn) 76 1 15000 70 3.6698 6 4 3 0 25500.0 27285 1785.0 7.0 27285 0
177 2026-10-10 15:53:30 72 3 [Soirée des Chatons] Seiun Sky Arima Kinen 81 1 30000 70 13.5919 8 9 5 0 51000.0 58140 7140.0 14.0 58140 0
178 2026-10-10 15:53:30 74 3 [Soirée des Chatons] Seiun Sky URA Finale Qualifier 2025 1 7000 70 13.045 7 9 5 0 11900.0 13566 1666.0 14.0 13566 0
179 2026-10-10 15:53:30 76 3 [Soirée des Chatons] Seiun Sky URA Finale Semifinal 2122 1 10000 70 12.4002 7 9 5 0 17000.0 19380 2380.0 14.0 19380 0
180 2026-10-10 15:53:30 78 3 [Soirée des Chatons] Seiun Sky URA Finale Finals 2217 1 30000 70 12.3247 7 9 5 0 51000.0 58140 7140.0 14.0 58140 0
181 2026-10-11 18:47:03 12 3 [Soirée des Chatons] Seiun Sky Junior Make Debut 689 1 700 80 3.2149 2 4 2 0 1260.0 1335 75.0 5.9524 1335 0
182 2026-10-11 18:47:03 24 3 [Soirée des Chatons] Seiun Sky Hopeful Stakes 625 1 7000 80 2.4816 2 2 2 0 12600.0 13104 504.0 4.0 13104 0
183 2026-10-11 19:13:35 12 3 [Soirée des Chatons] Seiun Sky Junior Make Debut 689 1 700 80 4.1512 1 6 2 0 1260.0 1360 100.0 7.9365 1360 0
184 2026-10-11 19:13:35 24 3 [Soirée des Chatons] Seiun Sky Hopeful Stakes 625 1 7000 80 2.8651 2 4 2 0 12600.0 13356 756.0 6.0 13356 0
185 2026-10-11 19:13:35 31 3 [Soirée des Chatons] Seiun Sky Satsuki Sho 163 1 11000 80 4.6012 2 6 2 0 19800.0 21384 1584.0 8.0 21384 0
186 2026-10-11 19:13:35 34 3 [Soirée des Chatons] Seiun Sky Tokyo Yushun (Japanese Derby) 166 1 20000 80 4.1483 2 6 2 0 36000.0 38880 2880.0 8.0 38880 0
187 2026-10-11 19:13:35 44 3 [Soirée des Chatons] Seiun Sky Kikuka Sho 168 2 4800 80 4.218 2 2 2 0 8640.0 8985 345.0 3.9931 8985 0
188 2026-10-11 19:13:35 48 3 [Soirée des Chatons] Seiun Sky Arima Kinen 81 1 30000 80 10.0709 3 9 2 0 54000.0 59940 5940.0 11.0 59940 0
189 2026-10-11 19:13:35 56 3 [Soirée des Chatons] Seiun Sky Tenno Sho (Spring) 4 1 15000 80 6.5113 8 9 5 0 27000.0 30780 3780.0 14.0 30780 0
190 2026-10-11 19:13:35 60 3 [Soirée des Chatons] Seiun Sky Takarazuka Kinen 74 1 15000 80 6.7601 6 9 3 0 27000.0 30240 3240.0 12.0 30240 0
191 2026-10-11 19:13:35 72 3 [Soirée des Chatons] Seiun Sky Arima Kinen 81 1 30000 80 14.0565 7 9 5 0 54000.0 61560 7560.0 14.0 61560 0
192 2026-10-11 19:13:35 74 3 [Soirée des Chatons] Seiun Sky URA Finale Qualifier 2018 1 7000 80 10.2344 7 9 5 0 12600.0 14364 1764.0 14.0 14364 0
193 2026-10-11 19:13:35 76 3 [Soirée des Chatons] Seiun Sky URA Finale Semifinal 2121 1 10000 80 5.3797 5 6 3 0 18000.0 19620 1620.0 9.0 19620 0
194 2026-10-11 19:13:35 78 3 [Soirée des Chatons] Seiun Sky URA Finale Finals 2222 1 30000 80 7.7281 7 9 5 0 54000.0 61560 7560.0 14.0 61560 0