dataphil lab

Working notes · models · results that didn't go the way I wanted

Where the models get tested before anyone trusts them

The product lives at dataphil.com. This is the other half: the forecasting work behind it, written up honestly — including, so far, mostly the parts that failed. Every result here comes with the raw data and code to recompute it.

Projects

Oct 2026 · 180,542 rows · SQLite → Snowflake, dbt

Seven tables moved, rebuilt as a star schema, and checked against the original: 26 of 26 reconciliation checks pass.

I moved part of the warehouse behind the MLB model from SQLite into Snowflake and rebuilt it with dbt, then reconciled row counts, keys, column totals and per-season batting lines on both ends before trusting any of it.

The checks turned up a full 2025 season of game results that had never been pulled, 2,730 completed games, which I backfilled before re-running everything. The dbt tests also caught a franchise rename the team table can’t represent, and All-Star and exhibition games mixed into regular-season batting lines.

The MLB shadow test

Not deployed

Jun–Aug 2026 · 10,928 out-of-sample predictions · Python, Monte Carlo, 7.8M pitches

The model forecast well and bet badly. Where it disagreed most with the market, it predicted 64.7% and delivered 54.0%.

A Monte Carlo simulator that prices MLB hitter props from pitch-level Statcast data. I wrote a pass/fail gate into the methodology document two days before the first prediction, then ran it against live sportsbook prices for 87 days without betting a dollar.

It failed. A head-to-head regression against the market price showed why: the model carries genuine information the closing line doesn't (β = 0.231, z = 2.20) but earns only about a quarter of the weight the edge formula was giving it. The decision rule was wrong, not the model — and neither was good enough to ship.

Still accruing

Two more sub-models off the same simulator are collecting evidence and aren't ready to claim anything: a game-totals model, which runs the opposite direction from the hitter model on a sample far too small to trust yet, and a pitcher strikeout model whose variance is knowingly understated. Both are logging predictions daily under the same discipline. They'll show up here when there's something honest to say about them.