{"strategy": "starter 50 bps", "file": "StarterStrategy.sol", "commit": "6b6921f8", "seed_start": 900000, "n": 10000, "mean_edge": 367.916063, "se": 0.589995, "first_edges": [313.044946, 267.440875, 410.867525, 262.784628, 381.157655, 461.968895, 464.140326, 381.800747, 301.375568, 331.929204], "min_edge": {"seed": 904955, "edge": 229.414066}, "max_edge": {"seed": 900544, "edge": 544.611252}, "seconds_per_simulation": 0.156362, "seeding_confirmed": "amm_competition/competition/match.py MatchRunner._build_configs draws retail_mean_size, retail_arrival_rate, gbm_sigma in that order from np.random.default_rng(seed=i) and passes seed=i to amm_sim_rs.SimulationConfig; amm_sim_rs/src/simulation/engine.rs SimulationEngine::run uses that seed for GBMPriceProcess and seed + 1 for RetailTrader, which matches the description. My replica with explicit seeds reproduced MatchRunner.run_match edges for seeds 0..7 exactly.", "notes": "All 10000 seeds 900000..909999 scored, in 20 chunks of 500 via amm_sim_rs.run_batch with 48 workers, 1563.6 s of simulation in total (under the 40-minute cap). seconds_per_simulation counts only run_batch wall time at 48 workers on a 56-CPU machine. It leaves out compile time and reading results back into Python (that took about 60-170 s per chunk because the getter copies per-step data). The simulator was built from source with maturin, with zig cc as the linker because the machine has no system C compiler; solc 0.8.24 came via py-solc-x. amm-match validate contracts/src/StarterStrategy.sol passed (sha256 8f2cea337f6736105f58c6758da6c3ebf002951d34492bcd5b7101bef2d1e7f3). Two batches in one process were OOM-killed (exit 137), so I ran each chunk in its own process. One earlier process died after writing its first chunk; that chunk was kept and nothing was scored twice. Neither the simulator nor the contract was modified. Edge = rust_result.edges['submission'], the value amm-match run averages."}
