Methodology
How we identify anomalies, quantify edge, and hold ourselves accountable.
The Five Lenses
Multiple models, one game — find where the math disagrees.
Why Multiple Models
No single algorithm solves the NBA. The variables — pace, fatigue, regression, sentiment — are too distinct to fit into one black box. We run five independent methodologies in parallel. The goal isn't consensus; it's to expose the friction points where the market might be mispricing a specific factor.
The Traditionalist
Efficiency MetricsEvaluates teams based on realized efficiency. Offensive and Defensive Ratings adjusted for Pace — what happens if both teams play to their statistical averages. This is the baseline performance expectation.
The Geometer
Pythagorean ExpectationLooks past the win/loss column to identify regression candidates. By analyzing point differentials, it flags teams over-performing due to luck in close games or under-performing due to variance. It separates sustainable skill from statistical noise.
The Physicist
Schedule ConstraintsModels the physical reality of the 82-game grind. Back-to-backs, timezone-crossing travel, density (3 games in 4 nights). This model assumes that even elite talent degrades under physiological stress.
The Narrator
Context & ImpactQuantifies the situational variance that raw stats miss. Bayesian-smoothed injury impact differentials, revenge games, roster shake-ups. It measures the volatility introduced by human context.
The Market
Implied ProbabilityThe consensus opinion of the world's sharpest liquidity. The closing line as the efficient aggregate of all public information — the control group against which all other models are tested.
The Divergence Signal
When all five models align, the edge is usually priced out. The value exists in the divergence. When The Traditionalist sees a blowout but The Physicist predicts a fatigue-induced upset, you've found a specific angle to investigate.
We highlight the conflict, not the consensus. The hunt starts where the models disagree.
The multi-model engine is being built on top of our existing data infrastructure — team ratings, game context taxonomy, injury impact engine, and line movement capture. The data exists. The display layer is next.
How It Works
How our intelligence engine identifies anomalies and quantifies edge.
Hunt vs. Follow
Most analysis follows the herd. Consensus picks, mainstream narratives, surface-level stats. We take a different approach.
Our engine scans every game for anomalies — situations where the context diverges from what the market expects. A key rotation player ruled out two hours before tip. A team on the back end of a road trip facing a rested opponent. A spread bucket where the covering team has historically dominated.
We don't tell you what to bet. We surface the patterns and let you decide if there's edge.
The Signal
Box scores lie. A player averaging 18 points might be doing it in 32 minutes one night and 22 the next. Raw totals hide the truth.
We normalize performance to a level playing field, stripping out minutes variance so a starter coasting in a blowout doesn't skew the data. Every comparison is apples-to-apples.
When a star sits, the ecosystem shifts. Usage redistributes, pace changes, and specific teammates absorb the opportunity. We calculate exactly how each player's production moves when a teammate is absent — not guessing from box scores, but measuring the actual historical shift across every relevant game.
Every impact signal displays the number of games backing it. Higher counts mean a confirmed pattern. Lower counts mean a developing situation with higher volatility. We never generate high-confidence signals from thin evidence.
The Confidence Engine
Small samples are dangerous. A player hitting 3 threes in a single game isn't a shooter — he's lucky. We account for this.
Our engine uses smart smoothing. When evidence is thin, projections anchor to the player's established baseline. As games accumulate, the observed data gradually takes the wheel. This prevents volatile early-season signals from misleading you.
We don't give you a single number. We give you a floor and ceiling — the range of probable outcomes given the volatility of both groups (with the player and without). The width of that range tells you how much uncertainty remains. A tight range is a strong pattern. A wide range means proceed with caution.
Strong evidence, tight range. A pattern the data confirms.
Moderate evidence. The signal is real but the range is wider.
Developing situation. Expect high volatility. Watch, don't chase.
The Terrain
Not all games unfold with the same statistical character. A matchup between two consistent, low-variance teams behaves differently than a collision of volatile, pace-driven squads. Applying the same model to both is like using the same weapon for every terrain — it works until it doesn't.
Our engine classifies each matchup into regimes. A Stable game features teams with tight recent performance clusters — outcomes land near expectations, and projections carry weight. A Volatile game shows wide variance on one or both sides — error bars expand, and standard models lose grip. Knowing which regime you're in changes what questions are worth asking.
Box scores are only one lens. We cross-reference regime signals against line movement consensus from 39 sportsbooks. When the market diverges from what the stats suggest, that's an anomaly worth investigating. Sharp money moving against the expected direction often signals information that hasn't surfaced in the data yet.
Regime classification feeds directly into the Confidence Engine. Volatile matchups widen floor-ceiling ranges and temper confidence badges. A HIGH signal in a Stable game carries more weight than the same signal in a Volatile one. The terrain shapes the hunt.
Track Record
Claims without accountability are noise. Our engine generates assertions — timestamped, machine-generated claims locked before tip-off — and grades every single one against actual box scores the next morning.
The pipeline runs in four stages: Gating filters candidate signals through minimum hit rate and sample size thresholds, ensuring only statistically meaningful patterns become assertions. Assertion records the exact claim, threshold, and market odds at the moment of generation. Grading compares the claim against the official box score after game completion. CLV measures whether we captured value by comparing our odds at assertion time against the closing line.
Hit rates are reported with Wilson score confidence intervals, not raw percentages. With small samples, raw rates mislead — going 7/10 feels like 70%, but the 95% CI is [38%, 90%]. Wilson intervals account for sample size and give you the honest range. As assertions accumulate, the intervals tighten and the true edge becomes visible.
Closing Line Value is the gold standard in professional handicapping. If you consistently beat the closing line, you have edge — regardless of short-term variance in outcomes. We track CLV on every assertion to measure signal quality independent of result luck.
Injury Alerts
NBA teams must submit injury reports by 5:30 PM ET — 90 minutes before tip. Our engine runs at 6:00 PM ET, giving a 30-minute buffer for reports to finalize. When a player's status changes, the pipeline fires within minutes.
Not every status change matters. We filter for alert-worthy transitions: a player ruled OUT, upgraded to QUESTIONABLE from a worse status, or returning to AVAILABLE after missing time. Routine PROBABLE designations are excluded — they generate noise, not signal.
Each alert includes beneficiary impact from our injury intelligence engine. When a star sits, we show exactly which teammates have historically absorbed the usage — with per-36 normalized differentials, Bayesian-smoothed sample sizes, and current prop lines for context. The alert tells you who is affected and by how much, not what to do about it.
Impact baselines use temporal decay weighting (60-day half-life) to prioritize recent form over season averages. Both “with-player” and “without-player” game groups use identical decay, isolating the absence effect from secular trends like player development or rotation changes mid-season.
Alerts are generated from our 6 PM ET scraper run, not real-time. There is an inherent delay between when a team reports a status change and when our engine detects it. For time-sensitive markets, always verify current status through official sources.
Query Receipts
The Lab lets you build custom prop queries and see historical hit rates. But historical performance is only half the story — what matters is whether those patterns hold going forward. Query Receipts close that loop.
When you save a query in The Lab, the system snapshots your parameters, the targeted players, their current prop lines, and the games those lines apply to. After those games complete, the receipt resolvergrades every player against their actual box score to determine if the pattern held.
Resolution follows the same rules as assertion grading: over means the actual stat exceeded the line, under means it fell below, and an exact tie is a push (excluded from hit rate calculations). Players who did not play are voided — they don't count for or against. Resolution runs automatically at 4 AM ET after box scores are finalized.
Over time, your receipt history reveals which query configurations produce forward-looking edge and which were data-mined noise. A query hitting 80% historically but 45% on receipts is a red flag. One hitting 65% historically and 62% on receipts is a confirmed pattern. Receipts are the reality check.