Fantasy football decision assistant · season 2026

Make the call.Defend it.

XOCP answers the four questions that actually get asked during a season — who do I start, what do I bid, what do I change before kickoff, and who am I drafting — with every number computed under your league’s real scoring rules.

The thesis

One sentence, two clauses. One is proven. One was measured and killed.

Computed under your actual scoring rules

Public rankings assume generic PPR. XOCP re-scores every projection through your league’s own settings — the real touchdown values, the real interception penalty, the real flex shape.

Proven, not asserted. Verified against Yahoo’s own reported points at a maximum delta of 0.000.

Optimize win probability, not raw points

A favorite wants floor; an underdog wants ceiling. Optimizing total projected points gets that backwards. This was the centrepiece.

Cut on evidence, before a line of it was written. Across 4,400 simulated rosters the two objectives disagreed 0 times out of 400, and the largest gain it could ever produce landed inside the band the screen already labels as noise.

Why that cost a feature and not a phase

The lineup screen was built to work with no probability in it, and a gate pins that independence.

Written as the mitigation on 2026-08-24. Tested rather than intended. It held on 2026-08-27.

Measured, and written down

0.000

max scoring delta

v1 — recomputed against Yahoo’s own reported points for 50 players across three 2025 weeks, kickers and defenses included.

62,201

identity crosswalk rows

v1 — Yahoo, Sleeper, nflverse and ESPN ids resolved to one internal id. Exactly one manual override; name matching fails the build.

52

correlations, none significant

v1.5 — the milestone measured its own headline feature and cancelled it four days before it would have shipped.

0 / 400

win-probability disagreements

v1.6 — the centrepiece layer was cut on its own pre-registered trigger, before a line of it was written.

What exists today

Six surfaces, all of them saying what they are not claiming.

Your league’s rules, not generic PPR

Every projection is re-scored through your actual Yahoo settings. Josh Allen is 405.5 here and 361.5 under the defaults — that 44-point gap is the whole product, and it is on screen rather than in a footnote.

proven

A draft board that works with the radio off

Ranked, tiered and cross-positional, precomputed into a committed snapshot with zero live dependencies at render time. A paused database cannot take the board away on draft night.

shipped

Eighteen weeks of schedule behind every row

Opponent, bye, home / away / neutral, and each opponent’s 2025 points allowed at that player’s position — scored through the same oracle, never a generic figure. Surfaced as information, deliberately not as a multiplier.

shipped

One row per roster slot, with the alternative

Not a ranked player list. Each slot carries what you would start instead and what the swap is worth — and the rows worth less than the noise floor say so rather than dressing a coin flip as a decision.

shipped

Depth charts ordered by measured opportunity

All 32 teams by carries plus targets rather than by published rank, with the 2025 room named wherever a player earned his number somewhere else.

shipped

What each defense actually runs

The modal coverage shell as field geometry, placement stated as nominal, and eleven defenses that have no 2025 charted prior getting a real screen instead of a spinner. Reference only — a gate keeps it out of every ranking.

shipped

The signature element

Win probability as field position, because that is the sport’s own vernacular.

Not a percentage bar. 50% is the ball on the 50; 68% is the ball on the opponent’s 32. A lineup change that moves you four points is shown as a four-yard gain, and deltas become legible in a way percentages never are.

10203040504030201064% before+4 yd gained68%

Designed in v1, deferred because it renders a quantity that did not exist — and still waiting, because the probability layer behind it was measured and cut. It ships when there is an honest number to put in it.

What comes next, and what each item is waiting on

The pre-kickoff lock call

An irreversibility decision over the players who lock early — and it is not called “Thursday”, because Thursday is the wrong day in five weeks of eighteen. The league’s lock regime is read, never assumed.

next

A maximum FAB bid, not a bid

What a waiver claim is worth against the specific player he displaces, emitted as a walk-away number. Blocked on Yahoo publishing the budget, the bid unit and whether $0 is legal — all three are null and refused a default.

blocked

Opportunity and regression signals

Target share, air-yards share, WOPR and RACR, then touchdown-rate regression candidates in both directions. The weekly stat ingest that blocked all of them has now shipped.

unblocked

Win probability as field position

50% is the ball on the 50. A lineup change worth four points is four yards, not “+4.2%”. Designed, deferred, and waiting on a probability model honest enough to put in it — the first one was measured and cut.

designed

The part that generalizes

Write the number down. Then disbelieve the next one that disagrees with it.

Roughly twenty measurements in this project were wrong in a way that looked like a finding. Every one was caught because a number contradicted something previously written down — never because anyone read the code and noticed.