The DMX Methodology Whitepaper

DynastyFootballFan · June 2026 · v1.0

Abstract

This is the whole story of how I build DMX (Dynasty MetriX), my pre-draft prospect score, and DPX (Dynasty Performance Index), the in-career score that takes over once a guy starts playing. I'll walk you through the 25-year dataset I train them on, how the score is put together, how I decide what counts as a good career, and the full validation math — all 12 regressions across 4 positions and 3 target metrics, plus decile hit rates on 2,026 completed careers. I'll also be straight with you about where the model comes up short. Three things I keep to myself as trade secrets. Everything else is right here and on the live site, including every number you'd need to check my predictive claims yourself.

1. Pricing rookies before the league does

Dynasty leagues get won and lost at the moment you know the least — rookie drafts and the trades that swirl around them. That's when the market runs hottest on hype. A mock drops, a highlight goes viral, some analyst falls in love, and a guy's price jumps for reasons that have nothing to do with what he'll actually do in the NFL. DMX asks a smaller, harder question than “who's good?” Given only what we knew on draft night, what did prospects who looked just like this one go on to do once they hit the league?

Asking it that way forces two rules on me. One: I score every prospect in every class the exact same way, or the historical hit rates are worthless. Two: I grade the model against how careers actually turned out, and that takes years of waiting. So a model that launched last season can't have a track record yet, no matter how slick its features are. The formula gets all the attention, but the dataset is what the whole thing stands on.

2. The dataset

What I train and test on is 3,150+ offensive prospects across 27 NFL draft classes (2000–2026) and 2,950+ defenders (IDP) going back to 2004. For every one of those guys, I stitch together four kinds of records that public football data does not line up for you on its own:

Most of the real work is in that stitching. Public football data is a mess — duplicate names, guys who share a name, transfers, IDs that don't match from one provider to the next. So I keep a canonical identity spine with alias resolution running underneath everything, which is a fancy way of saying I make sure the same player is the same row in every single table. Build your model on a bad join and it won't blow up in your face. It'll just quietly score the wrong guy's career, and you'll never know. That's worse than a crash.

Where I've got a hole in the data, I leave it showing instead of papering over it. There's just no clean public source for defensive college stats before 2004, so those early IDP classes get lower-confidence scores with the production piece left explicitly blank — I'm not going to zero it out and pretend I know something I don't (see §7).

3. How DMX is built

DMX is one z-score built out of three things we know before a guy is drafted, each measured against other prospects at his position. The three don't overlap much, and that's the point — they each tell you something different:

3.1 Athleticism (ATH)

This is the workout stuff — 40-yard dash, vertical, broad jump, 3-cone, shuttle, bench, and a height-adjusted weight. I z-score each one against his position, roll them into four buckets I publish — Speed (ATH-SPD), Agility (ATH-AGIL), Lower-body Power (ATH-LP), and Strength (ATH-STR) — and then boil those down to a single ATH number.

3.2 Draft Position (DPOS)

Where the NFL drafted him, turned into a z-score for his position, with undrafted guys parked at pick 300. Think of DPOS as all 32 front offices' scouting boiled down to one number, and it's the single strongest thing I've got at every position. Ignore draft capital in a prospect model and you're throwing out your best tool. But lean on it alone and you're leaving real accuracy on the table too, because the full DMX blend beats draft-capital-only at every position (see §5).

3.3 Age-Weighted Production (AWP)

His final college season, per game, adjusted for how young he was when he did it. Underneath that I'm looking at his share of his team's yards, his age against the rest of his class, an early-declare “phenom” flag, and dominator-style shares of the offense. I don't adjust for strength of schedule inside AWP — draft capital already handles that, since the NFL is pricing in where a guy really belongs when it decides where to draft him. For IDP prospects, AWP becomes havoc share: his cut of everything disruptive his defense did (sacks + TFL + forced fumbles + INT + passes defensed). That number carries from one scheme to the next a lot better than raw counting stats do.

3.4 Composite assembly and deciles

Then I weight the three pieces by position and blend them into the DMX score. Those weights aren't a guess — I fit them by maximum likelihood against 25 years of actual career outcomes, and refit them every three years or so as more careers finish. I keep the exact values to myself (§8). Once every prospect has a score, I sort each class into the D1–D10 buckets you see — NTILE(10) OVER (PARTITION BY position, draft_year ORDER BY dmx DESC) — so a decile always means “relative to this year's class.” When you're comparing across years, use the raw score, not the decile.

A few things I leave out of DMX on purpose. Landing spot, because I lock the score at the draft before any team context exists. Injury history as its own input, because NFL scouts can already see it, so it's baked into where a guy gets drafted (DPOS). And the character and interview stuff, because in my experience it's a lot of noise for very little signal.

4. Defining career outcomes

You can't test a prospect model unless you decide what “success” means before you go looking at what it predicted. So I nail that down three different ways:

Labeling a career means waiting on it. A guy drafted in 2021 didn't have his 5-year window close until after the 2025 season. That's why the validation cohorts below stop at 2020–2023 even though I'm scoring all the way through the 2026 class — the recent guys simply haven't finished cooking yet.

5. Validation

5.1 The complete regression table

Here's the whole thing — all 12 regressions of DMX against career outcomes, 4 positions × 3 targets, run on every prospect whose career window has closed. I'm not cherry-picking the pretty ones. Every active regression in the database is right here, and you can pull the same numbers yourself, live, on the Model Transparency page.

PositionTargetInterceptSlopeNCohort
QB5-yr VBD18.439.50.1883142000–2020
RB5-yr VBD49.385.70.2076922000–2020
TE5-yr VBD25.053.00.1605092000–2020
WR5-yr VBD37.670.30.16410762001–2020
QBPeak 3-yr VBD avg8.916.20.1261622000–2020
RBPeak 3-yr VBD avg18.926.00.1603742001–2020
TEPeak 3-yr VBD avg9.020.90.1842692001–2020
WRPeak 3-yr VBD avg18.521.10.1015352001–2020
QBCareer tier (ordinal)1.60.90.3462312000–2020
RBCareer tier (ordinal)2.00.80.3065542001–2020
TECareer tier (ordinal)1.81.00.4174092001–2020
WRCareer tier (ordinal)1.80.80.2788322001–2020

predicted_outcome = intercept + slope × DMX. Active regressions from dmx_model_coefficients, refit August 2026.

Two things to take from this, and I'll be straight about both. First, an R² in the 10–42% range is exactly what honest pre-draft prediction looks like. The coach a guy lands with, whether the scheme fits, injuries, who's already ahead of him on the depth chart — none of that exists on draft night, and it puts a hard ceiling on what any model can know. The part DMX doesn't explain isn't the model coming up empty. It's a measurement of how much draft day just can't tell you. Second, the tier regressions come in at roughly 2× the R² of the straight VBD ones. Careers fall into archetypes a lot more cleanly than they line up along exact point totals, and honestly, “what kind of player is this going to be” is both the easier question to learn and the more useful one when you're setting a roster.

5.2 Decile hit rates

Most folks read DMX as deciles, so let's look at it that way. Here's what every offensive prospect from the 2001–2020 classes with a finished career window actually turned into:

DecileProspectsStar %Star or Starter %Bust %
D123252.2%80.2%4.7%
D223832.8%59.7%16.0%
D322122.6%47.5%26.2%
D421915.1%35.2%36.5%
D51995.5%22.6%49.7%
D61836.6%14.2%66.7%
D71836.6%12.6%74.3%
D81922.6%14.1%68.2%
D91744.0%12.1%69.0%
D101853.2%7.6%77.3%

n = 2,026 offensive prospects, draft classes 2001–2020, career tier labeled.

Read the slope, and it goes the right way the whole way down — the top decile turns into a Star or long-term Starter at roughly 7× the rate of the bottom three. Here's the same story cut by position, top two deciles against the bottom two:

PositionD1–D2 hit ratenD9–D10 hit raten
QB67.8%590.0%26
RB77.6%13414.5%110
TE73.9%924.8%83
WR62.7%18510.7%140

Hit = career tier of Star or Starter. Same 2001–2020 labeled cohort.

5.3 Calibration and residuals

Ranking guys correctly is one thing. I also check whether the model is calibrated — that is, whether the outcomes it predicts actually match what happened, on average, inside each bucket. The per-position calibration plots (every finished-career prospect, predicted vs. actual) live on the Model Transparency page, and the ranked over- and under-performer residual boards are on the Analytics page. I don't hide the misses. The guys the model got wrong, and which way it got them wrong, are exactly what the next refit learns from.

6. DPX, the in-career model

DMX freezes at the draft on purpose. The second a guy plays his first NFL snap, I hand him over to DPX — a separate model that tracks his dynasty value on three things I can actually watch happen, each a z-score updated from real game data. Volume is his touches, targets, and snap share. Scoring is his fantasy points per game (half-PPR and PPR both), and I weight it the heaviest, because in the end dynasty value compounds off of scoring. Efficiency is what he does per opportunity. On top of all that sits a dynasty modifier for contract status and draft-capital decay, which is what pulls dynasty value apart from plain redraft value.

For every player-season, DPX puts out two deciles: DPX-Next, my read on next season, and DPX-Long, my read three years out. I keep thirteen NFL seasons of these scores going, with roughly 350 active players graded each year. If you want the plain-English version with a worked example and how to read it, that's over at What is DPX?.

7. Known limitations

8. What I don't publish, and why

There are three things I keep to myself: (1) the DMX position weights, (2) the IDP DMX position weights, and (3) the DPX layer weights and dynasty-modifier coefficients. Those are 25 years of grinding on a dataset I built by hand, and they're the one thing that actually sets this apart. Anybody can average three z-scores. Figuring out which blend actually predicts NFL production is the hard part, and it's the part I don't give away.

My rule on this is simple. The outputs are all yours; the internals stay locked. Every score, decile, sub-component, regression coefficient, and hit rate in this paper you can read straight off the live database. Every weight that produces them sits behind row-level security with anonymous access shut off.

9. Reproducibility

You don't have to take my word for anything in §5. The DMX scores for finished-career cohorts are public. You can work out career VBD and tiers yourself from public play-by-play data like nflverse, run OLS on those pairs, and you should land within rounding of the coefficients up above. If you don't, that's a bug I want to hear about — just reply to the newsletter and tell me.

Want the plain-English intros to both scores? Start with What is DMX? and What is DPX?. Want the live, clickable version of every table in this paper? That's Model Transparency.