Junction 2026 / Bahn Express Spread
One formula prices every car. When play ran short, we built our own world to test ideas in, and ran it on CRACI.
The job
The desk
price = argmaxm P(sale | m, today's shift) × (m × list price − C)
C = typical fee × (1.2 + 0.8 × p × won cars without a driver) + €150 × p
p the chance the order ends late: a logistic fit over 94,000 won orders, from what is known at the quote
P(sale) the win curve, fitted on 50 weeks of random prices and shifted each day by that day's wins and losses
€150 the refund and the dealer's lost trust
0.4 ms a quote: no model on the quote path
What carries the margin
The day's market is one number
Read from the day's wins and losses: €5,609 against €4,627 a week on 10 held-out weeks
Each car's late chance is in its price
Weeks under 90% on time, on the 10 lowest weeks; +€2,854 a week there
Fees stop where drivers stop answering
Drivers book in a gig's first 15 minutes; ahead in 20 of 20 fresh weeks
Rules read every note before the first gig
Failed visits a week, against the kit's starter that learns a note from a failed visit
a week on 120 unseen practice weeks, with no week under 90% on time. Saturday's 15:00 ranking round: place 40 of 62, at 0.81 of tenth place.
The stand-in
Saturday's 15:00 ranking round, a week
at nearly the same margin an order: €41.4 against €41.6
A recorded week can be replayed, but it cannot say how dealers and drivers answer a different price.
Dealers answer by our win curve at each day's level, measured on the played week of the same seed
Drivers book an open gig by a fitted chance a minute: a Poisson regression on 4.6 million slices of 2,771 played weeks
Rules follow Bahn's: fee schedules, stop windows, expiry, direct offers
CRACI as the farm
One CRACI runner: 32 cores, 94 GB, 206 saved seeds0
0:00 of 4:41
Saturday 21:33 the idea, 23:26 a joint search on 16 runners: 1 h 53 min. A stand-in week takes 3 to 6 CPU-seconds, 97% of them in our own desk code, and every week is independent: the work needs cores and nothing else.
Three jobs on the farm
Calibration as a CI matrix
Each design of the world is fitted and scored on its own runner against held-out played weeks, in two rounds
A screen as the merge gate
One dispatch plays any branch's variants against the base on 206 saved seeds
A joint search
17 settings move together: arms in a Latin hypercube, 16 shards on 16 runners, read by a ridge model with pair terms
No secret in the job. The workflows hold no team key. A small broker checks the job's GitHub OIDC token and returns a read-only token for the saved weeks.
263 jobs, 37 runner-hours in the farm's first two and a half hours.
Trust, measured
43 of 46 decided pairs ranked as play ranks them, on seeds its fit never saw
Correlation of its gains with play's
A fee held low, € a week
read backwards
A FAIL is trusted. A PASS is a reason to play a part, not to merge it.
The overnight loop
under 760
760 or more
A tag needs 20 weeks of its own on each side of 760 drivers, none under 90%. Once a minute the loop promotes the next part in the queue, or rolls the head back at any week under 90%. Merge 5 lost a week at 89.4% that merge 4 held at 91.3%, so the head went back to merge 4.1.
What the night added
played against the default on the same unseen weeks estimate: merge 1 plus paired gains on separate seeds Default: €12,376 a week
One formula. A world of our own to test it. Play has the last word.