DEV Community

Ahnhyeongkyu
Ahnhyeongkyu

Posted on

Sealing sports predictions with SHA-256 before kickoff — a tamper-proof track record (with an honest 6.77% backtest)

I got tired of sports-prediction content where you can never tell if a "70% confidence" call was actually made before the game or dressed up after the fact. So I built a small pipeline that hashes every prediction (MLB, MLS, WNBA) with SHA-256 the moment it's generated — before kickoff — and publishes the hash publicly. Nothing can be edited afterwards without the hash changing.

The problem: post-hoc track records

Most "70% win rate" claims are unfalsifiable. The prediction content ecosystem has a trust problem that's structural: records are self-reported, editable, and survivorship-biased. Losses quietly disappear; wins get amplified.

The sealing pattern

The pipeline is simple:

  1. Model generates a prediction (favorite, confidence, factor breakdown)
  2. The full prediction JSON is hashed with SHA-256 at generation time, before kickoff
  3. The hash is published immediately; the prediction is revealed and settled after the game from official results
  4. Every prediction gets settled and disclosed — wins and losses both

If I edited any prediction after the fact, the hash wouldn't match. That's the whole trick: it turns "trust me" into "verify it."

The honest numbers

Current ledger: 152 predictions sealed before kickoff, 140 graded from official results, 56.4% settled hit rate (79/140) — live and updated daily.

And the number most prediction sites won't show you: on a 1,350-game EPL walk-forward backtest, the model's value-bet ROI is −6.77% (n=1,198). It does not beat the closing odds, and the site says so publicly. I'm not selling picks; this is a track-record/transparency experiment — closer to "here's a verifiable log" than "here's an edge."

Under the hood

It's a log-odds decomposition of about a dozen factors (Pythagorean expectation, sabermetric inputs, home/road splits, etc.) plus an LLM-based news signal that's constrained against asserting anything not present in the source text — every claim in an explanation must trace back to actual data.

Does this generalize?

I think the sealing approach is a general pattern for "prove you didn't cherry-pick after the fact": ML model claims, forecast newsletters, analyst calls, even A/B test pre-registration. Anywhere someone claims predictive skill, a hash-before-outcome log makes the claim falsifiable.

Live track record: https://sealedslate.com/track — full methodology (including the negative backtest): https://sealedslate.com/methodology

Curious what you'd attack about this design — what's the easiest way to game a seal-before-kickoff log?

Top comments (0)