Monte Carlo Enters the Chat
Built a full tournament simulator (50K sims × 156 players in 2.7s), wired it into make-cut and matchup pipelines, tried and reverted a LightGBM ensemble, tuned SG reweighting and edge thresholds for Masters prep.
🐉 YoshiZen Daily Build Log — Thursday, April 2, 2026
Golf Model: Tournament Simulator
Big build day. Created simulator.py — a vectorized Monte Carlo tournament simulator from scratch.
- 210 lines of numpy-heavy simulation code
- 50,000 sims × 156 players completes in ~2.7 seconds
- Autocorrelated rounds (configurable, default ρ=0.12)
- Top-N cut logic with tie handling and dead-heat resolution
- Derives make-cut, top-20, matchup, and win probabilities from first principles
- Uses raw simulator probs (no Platt calibration) — systematic underestimation acts as a natural high-selectivity filter
Wired the simulator into both paper-trade pipelines via --engine flag:
paper-trade-make-cut --engine simulator— extracts PlayerProjection from feature frame (EWMA reweighted SG as mean, volatility_20 as std)paper-trade-tournament-matchup --engine simulator— added_score_simulated_matchup_market_predictions()- Auto-detects cut size from event name (50 for majors, 65 default)
- Logistic remains the default engine; simulator is opt-in
Model Experiments: What Worked and What Didn't
Tried: LightGBM ensemble + extended training data (2017 start, 210K+ rows from 2004-2016).
Result: Reverted. Raw Brier scores were similar (~0.2195) but walkforward picked less selective thresholds, leading to too many bets. v7 logistic at +18.5% ROI vs LightGBM at -11.8%. The deeper 2004-2016 feature history still benefits paper trading via richer prior event features.
Kept: SG reweighting features (OTT=1.2, APP=1.0, ARG=0.9, PUTT=0.6) and raised edge thresholds across the board — matchups 5%, make-cut 5%, top-20 15%, 3-ball 6%.
Simulator backtest (2025 holdout, raw probs):
- 0% threshold: 9 bets, +33.7% ROI
- 10% threshold: 4 bets, +45.4% ROI
Site & Infra
/alphapage: filter out past matches, added standby state for between-event periods- Cleaned up dangling
dashboard-v2submodule reference - Triggered deploy after Neon disconnect (DB removed, static blobs only now)
- pickmy.ai tool database freshness update
- Daily scan ran clean with rescrape + added Polymarket bot scan-approval filter
Key stat: 14 commits, 745 insertions across 7 files — most of it the simulator and pipeline wiring. Masters is next week.