diff --git a/app/services/simulations/__tests__/darts-simulator.test.ts b/app/services/simulations/__tests__/darts-simulator.test.ts index 9c4deda..cf85093 100644 --- a/app/services/simulations/__tests__/darts-simulator.test.ts +++ b/app/services/simulations/__tests__/darts-simulator.test.ts @@ -40,9 +40,9 @@ describe("setWinProb", () => { expect(setWinProb(1000, 3000)).toBeGreaterThan(0); }); - it("calibration: 100-pt gap → ~56% per set (ELO_DIVISOR=400)", () => { - // 1 / (1 + e^(-100/400)) ≈ 0.5622 - expect(setWinProb(1900, 1800)).toBeCloseTo(0.5622, 2); + it("calibration: 100-pt gap → ~62% per set (ELO_DIVISOR=200)", () => { + // 1 / (1 + e^(-100/200)) ≈ 0.6225 + expect(setWinProb(1900, 1800)).toBeCloseTo(0.6225, 2); }); }); diff --git a/app/services/simulations/darts-simulator.ts b/app/services/simulations/darts-simulator.ts index 79efc8d..b8759e6 100644 --- a/app/services/simulations/darts-simulator.ts +++ b/app/services/simulations/darts-simulator.ts @@ -59,12 +59,15 @@ const NUM_SIMULATIONS = 50000; * Lower = sharper (Elo differences matter more). * * Standard chess uses 400. Snooker (more random than chess) uses 700. - * Darts at the elite level is relatively skill-dominated; 400 gives: - * 100-pt gap → ~56% per set - * 300-pt gap → ~67% per set - * 500-pt gap → ~78% per set + * Darts at the elite level is highly skill-dominated; 200 gives: + * 100-pt gap → ~62% per set + * 200-pt gap → ~73% per set + * 300-pt gap → ~83% per set + * + * With 200, a real PDC field (top players 1800–1970 Elo, unseeded at 1400) + * produces EV ≈ 65–70 for the world #1 (≈2080 Elo) in a 128-player bracket. */ -const ELO_DIVISOR = 400; +const ELO_DIVISOR = 200; /** * Sets needed to win per round, in bracket order (R1 first, Final last).