Nate Seluga
CS junior at Harvey Mudd College ('27). I build full-stack web apps, statistical and ML models, and AI workflow tooling. Recent work: a scipy house-odds engine for social betting (Patio), multi-model MLB pitcher injury prediction (Injury Risk+), batting average skill isolation (BAA), and NBA shot-value research.
Selected Work
Pitcher Injury-Risk Model
The best honest model I built predicts MLB pitcher injury at walk-forward AUC 0.574, barely above chance, and that number is the most important finding. Across 3,249 pitchers and 205,911 pitcher-game rows (Statcast 2015–2024, 82 features), I mapped where the domain ceiling sits and which signals stay useful below it: calibrated probabilities, a season-stable Injury Risk+ score, and a validated velocity dose-response.
Patio
Solo-built full-stack social betting app for backyard games (Caps, Pong, Beerball) with virtual caps currency. The centerpiece is a scipy house-odds engine (~760 LOC) built around harmonic-mean team strength, recency-weighted player means, and normal-percentile line biasing to embed a ~4% house edge. Stack: React 19 + Flask + psycopg2 + Supabase Postgres. ~6,150 LOC, 20 API routes, 6 pages. Pre-launch MVP; React Native/Expo pivot in progress.
Batting Average Ability (BAA)
A same-season decomposition that splits each hitter's batting average into a skill component and a luck component, then measures how much is skill: an ICC of 24.7%, built with mixed-effects modeling over 4,374 MLB player-seasons.
Explore by Section
Software Engineering
Patio (React 19 + Flask + Supabase, scipy odds engine) and a personal Claude Code OS with 48 skills and structured project memory.
View all →Sports Analytics
Pitcher Injury Risk+ (survival models, walk-forward AUC 0.571), BAA skill isolation (R² 0.457), and NBA shot-value estimation (XGBoost AUC 0.6365).
View all →