The guide
About The Murph
A fantasy football HQ that shows its work. Everything here is explained in layers: the two-minute map, then how to read a prop, then how the model works and what it cannot see, then where the data comes from and the rules the site holds itself to. Read as far as you want.
One rule everywhere: every number comes with how sure we are.
1 The two-minute version
Ten sections. Tap one to go there.
/depth-charts#KC opens a team.
Fresh DozenEggs' twelve superlative categories for the league. Open nominations. No corrections issued, ever.
AboutThis page.
π Every tab, every feature
Where to look, page by page. Open a page to see what is inside it; skip the rest.
Where do I look forβ¦
- Who should I pick up this week?
- Home βΊ The Board β the fastest-rising players by position, 24 hours to 7 days β and The Analyst Desk for the takes.
- Is my player hurt, and will he play?
- Injuries βΊ Status Board for the designation; The Injury Desk for what it means.
- Who is the backup if he's out?
- Depth Charts, by team and position.
- Which game will be high-scoring?
- Matchups βΊ The Slate: implied team totals from the spread and total.
- Which defense is soft against tight ends?
- Matchups βΊ Defense vs Position.
- Will this game be fast or slow? Who's out, and did the line move on it?
- The game page (from Matchups): How these teams play reads pace and pass rate as an over/under; Who's out lists the designations with the spread since each was posted.
- Is this team's pass rate / pace / passing efficiency real, or two games of noise?
- The game page (from Matchups) βΊ Matchup board: each stat is labelled by how predictive it is as displayed that week.
- Has the line moved? What's the weather? Who's on short rest?
- Matchups βΊ The Slate, tap the game: its game page has the market read, movement since the open, rest, venue and the kickoff-hour forecast.
- Is this prop line good?
- Props βΊ Games, pick the game, find the row β then Open in the Prop Lab for the whole picture.
- Does this player clear a number I've been offered?
- Props βΊ Prop Lab: type the player, the market and your line.
- Does "home dogs in the wind" actually work?
- Props βΊ Research: test the angle on 5,000 real games.
- Season stats for a player?
- Players, in your scoring format.
Home this week's strip Β· The Analyst Desk Β· The Board
- This-week strip β three chips at the top: the slate (games, first kickoff), a link to the props, and how many skill players are out. Each links to its page.
- The Analyst Desk β the weekly write-up on the players the add/drop feed moved hardest, each tagged BUY / HOLD / SELL / WATCH with the real add/drop count. An Archive picker opens earlier weeks.
- The Board β risers and fallers, every position side by side. 24h / 48h / 7d sets the window; Show sets how many per column. The bar behind each row scales to the biggest mover in that column.
- Status strip β the NFL week and when the player data was captured; turns amber if it is out of date.
League The Murph Dynasty, one page per team
- Index β every team as a card: record, points, a one-word read on where it stands (contender, rebuilding, all in, stuck) with the reason, and one fact worth knowing. Standings beneath, with Max PF: what the roster could have scored with hindsight lineups.
- Team page β the roster by position with age, experience and points per game in this league's scoring; a season-by-season history with playoff and title marks; how old the team is at every position against the league; every rookie pick graded against the average pick of its round in that draft, with the best and worst called out; every trade scored by what each side has produced since the deal; the waiver wire's best pickup and the one that got away; points left on the bench each week; and the records β high, low, biggest win, worst loss, closest game, and head-to-head against every rival, all time.
- What it will not do β no dynasty value rankings from anywhere else. Every grade is what happened, in our own points. A rookie two weeks into his career is marked "too early", not scored.
Power Rankings the weekly list, written by hand
- The list β every team in the league, ranked by the author, with a title and a paragraph each. The record beside each team is real; the order is not. First wears a crown; last is ranked with love.
- Movement β when an older week exists, each card shows how far the team moved since it, and a picker offers the past weeks.
- Where the words live β one file,
assets/data/power-rankings.js, with the rules written at the top. Publishing a week means editing that file and nothing else — or, for the site's editor, filling in the form at/admin, which writes that file for him. A test refuses a week that leaves a team out, repeats a rank, or still says "Replace with".
Props Games Β· Prop Lab Β· Research
- Read this first β one sentence on why there are no picks; "Why βΈ" expands the reasoning.
- Games β every game on the slate as a card (kickoff, line, implied totals). Pick one: the top box says in words what the market expects; below it, every posted prop, alphabetical. A row shows the line, the model's projection, his usage trend and any role flag β no call, by design. Tap a row for his history against that number; Open in the Prop Lab for the full page.
- Prop Lab (tab) β the way in: type a name (matches appear as you type; "posted" marks players with a line this week), pick a market, optionally type your own line, go. Below: every player with a posted line, game by game, and the week's biggest line moves from the first line recorded to now.
- Research β the Backtest Lab: choose a bet (home ATS, over, underβ¦), a price, spread and total ranges, venue, division, wind and temperature; Run backtest gives the win rate with its interval, ROI, units, the break-even rate, the sample it would take to prove the edge, and an out-of-sample split (fit years vs held-out years). It also counts how many angles you have tried, because that decides whether a good number means anything. Below it, the Reality Check: the research the page is built on.
- A second opinion β every prop that maps to one shows Rotowire's projection (served by Sleeper) beside ours, with a toggle for either or both. Where the two agree the estimate is probably about right; where they split by more than half the market's typical error the card says so, and says which way. Neither is the market, and the page never picks between them.
The Prop Lab one prop, in full
- Top bar β the model's projection, his average over his last ten, and his usage with share of the team.
- Market tabs β his other posted props, each with his last-ten hit rate.
- The top block β the line (and where it opened), the statement that no lean is shown and why, the projection sentence as research context, and What's different this week: teammates out, gone, back or new, each marked as something the model flags or does not. If the quarterback has changed, it says so β the model does not see that.
- Context chips β spread, total, implied points, kickoff, the QB's status (with ESPN's note), designated teammates, line movement.
- Game log β Outcome: his games as bars against the line (green over, red under), the opponent's rank that week above each, a purple average line, a diamond for this week's projection; Full game / Q1βQ4 / halves switch the period. Hatched bars are a different role. Usage: targets or carries, share of the team, snap share, aDOT, YAC, red-zone looks, and the QB, per game.
- Hit-rate windows β last season, this season, vs this opponent, last 5 / 10 / 20, each with its interval; tap one to chart those games. Current role / All games when part of his log is another role.
- Right panel β Opponent: what this defense allows to his position, by role, in one hue; Model: the reasons, the forward-test status, the version; Usage: the per-game table.
- Try a different line β the same page against your number.
Matchups The Slate Β· Offense Rankings Β· Defense vs Position Β· Team Efficiency
- Week picker and the slate at a glance: the highest and lowest implied team totals, the average game total, the game count, and every team's implied points on one scale.
- The Slate β every game in kickoff order: spread, total, the no-vig win probabilities and the book's hold, each side's implied points, and how the opposing defense ranks against all four positions. Tap a team or Game page to open the game.
- Game page β one game in full. The market read: one sentence on what the market expects (a rough score and a win probability, both from the same numbers), the spread, total and moneyline with their prices, and how each has moved since the book opened it. Game environment: each side's rest days, division game, venue, roof and surface, and the forecast for the kickoff hour β temperature, wind, precipitation β stamped with when it was issued and marked early when it is more than three days out. Nothing in that section is coloured good or bad: the market already prices all of it. How these teams play: pace, pass rate over expected and plays per game for both offenses, read as an over/under β two slow offenses lean a total lower, two fast ones higher β with where the game's total sits on the week's slate. Who's out: every starter and key defender with a designation, and what the spread did after each was posted (the news is already in the line; the question is whether the market moved on it). Matchup board: how well each team has played, from play-by-play with garbage time removed, blended with last season early in the year (the weight is printed). Every stat carries a measured label β sticky, moderate or mostly noise β for how much that number, shown that week, says about the rest of the season (hover for the correlation and its interval; a borderline case takes the lower label). Noise-tier stats sit in a collapsed section as small numbers. The board is not adjusted for opponents faced, and it says so. A "biggest mismatch" line appears only when both sides of it are measured moderate or better. Links to both depth charts at the bottom.
- Offense Rankings β every team on the slate by implied total, best environment first.
- Defense vs Position β what each defense allows to QBs, RBs, WRs and TEs, ranked.
- Team Efficiency β EPA per play, offense against defense, every team plotted. Filters: EPA or success rate, all plays / pass / run, downs, quarters, week range, win-probability range, and Drop garbage time. Show the numbers opens the table.
Players the database
- Search, a Team filter and position chips (QB / RB / WR / TE / K / DEF).
- Scoring format β standard, half-PPR or PPR; the choice is remembered on your device.
- A sortable table: points per game, position rank, usage, age, depth-chart slot, status. Click a row for the full profile.
Injuries The Injury Desk Β· Newswire Β· Status Board
- The Injury Desk β every meaningful designation read for lineups: what the injury is, the expected time missed, and what it means for the players around him.
- Newswire β the latest reports, newest first, with the player each concerns.
- Status Board β every designation on every roster, most severe first, with search and a team filter.
Depth Charts the opportunity map
- A Team picker; every position's order for that team, with injury designations marked. The last team you looked at is remembered.
- Deep-linkable:
/depth-charts#KCopens a team directly.
Fresh Dozen the ballot
- Twelve categories, the nominees in each. Filed by Eggs. Crack one open.
About this guide
- Five layers, top to bottom: what each section is for, this feature map, how to read a prop, how the model works, where the data comes from, the rules.
- The ? in the header reopens the welcome sheet on any page.
2 How to read a prop
If you have never bet before, read this bit
A sportsbook does not offer you an even-money coin flip. The standard price is β110, which means you risk $110 to win $100. Because of that, you do not need to win half your bets to break even β you need to win 52.4%. Everything on the Props page is measured against that number, because it is the only bar that matters.
The three words you will see everywhere
- The line
- The number you are betting over or under β 232.5 passing yards, or a team favoured by 6.5 points. Books set it where they expect roughly half the money on each side.
- The vig (or hold)
- The book's cut, built into the price. On a typical game it is 4β5%. It is why a coin-flip bet is a losing bet, and why "I went 50β50 this week" means you lost money.
- Hit rate
- How often something has actually happened. "Cleared it 8 of 12" is a hit rate of 67%. The catch is in the next section.
Why we never show a hit rate on its own
If a player has gone over his receiving-yards line in 8 of his last 12 games, that is 67% β which looks like a big edge. But 12 games is tiny. Flip a fair coin 12 times and it will come up heads 8 times about one run in six. The honest statement is "somewhere between 39% and 86%", and that range includes the 52.4% you need. So every rate here comes with that range.
Why no calls are shown: the record on real lines
The model used to print a lean ("Lean over", "Too close to call", "No lean") beside every prop. In September 2026 it was tested against real sportsbook lines from the 2023, 2024 and 2025 seasons, with the test written down before it was run. It did not beat the market. Its probabilities scored worse than the de-vigged consensus of regulated books at every snapshot, and its disagreement with the posted line had no relationship to what happened. Simulated bets on its leans and simple line shopping showed no edge either. So no lean, side or probability is shown anywhere on the site; the projection stays as research context. The full pre-registered test and its aggregate results are in MARKET_TESTS_PREREGISTRATION.md. The forward test keeps recording the model's leans every week, so 2026's live games can confirm or contradict that result.
What the flags mean
- Role flag β his role is changing (a usage jump, a teammate out or back); the model is measurably worse on those players, and the flag says so. It is context, not a call.
- Override β a human note that the feeds are missing something, shown with its reason, source and expiry.
What the row shows
- Line β the number the book posted (from ESPN; check yours, a half-point matters).
- Projected β the model's central estimate, as research context. The market's line has been the better predictor.
- Usage β his recent volume (targets, carries or attempts) against his earlier baseline. Volume is what moves first when a role changes.
- Typical error β how far the projection usually misses. A gap to the line smaller than that is noise.
- The Prop Lab (tap a row, then "Open in the Prop Lab") β his game log against the line, how his volume is earned, what the opponent allows, and what changed this week that the model does not see.
How to actually use it
- Open Props and pick the game you care about.
- Read the top box β it says in words what the market thinks will happen.
- Scroll the board: every posted prop, alphabetical, with the projection and any role flag beside it.
- Tap any prop for his history against this number; open the Prop Lab for the full picture.
- Check the number against your book.
None of this is a recommendation to place a bet. It is a calculator and a history book. If you are not enjoying it, stop.
3 How the model works β and what it can't see
Plain language. The technical record lives in the repository's MODEL_STATUS.md.
The projection
A player's recent usage (targets, carries, pass attempts), weighted toward the last few games, multiplied by his efficiency (yards per target or carry), shrunk toward a positional average when his sample is small. A new season or a new team counts for less. A small opponent adjustment (a quarter of the defense's deviation from average) is applied β and it is unproven: in testing its benefit could not be told apart from zero, which is why the opponent panel is never coloured good or bad.
Calibration: turning a projection into a call
The gap between projection and line is read through the model's own past errors β a measured distribution, not an assumption β so "lean" means the same thing on 20 carries as on 250 passing yards. Counts (carries, targets, receptions) use a distribution that respects whole numbers.
Why nothing above 70% is shown as a number
Checked against real results, the model's most confident calls are its least reliable: what it calls 80% lands far closer to a coin flip. Two known reasons, both being worked on. Its biggest disagreements with a line are partly its own noise. And for high-volume players β the lead back, the WR1 β its sense of how much a yardage total can swing is too narrow. So above 70% you see a tier and a warning, never a number, until a forward test earns it back.
What "withheld" protects you from
The guardrail withholds a lean when a player's role is visibly changing: his usage jumped last game, or a same-position teammate who carried real volume is out β or back. On those players the model is measurably worse. A human override can also withhold or widen a call when the feeds miss something (a late scratch, a reported role change); every override is shown on the row with its reason, source and expiry. An override can never set a number.
What the model does not see
The quarterback. Teammates at other positions. Weather. Game script. A trade. The Prop Lab shows the QB who threw each of his games and this week's expected starter, and lists who is out, gone, back or new on his team, each marked as something the model flags or does not β so you can see the gap rather than guess at it. The market prices these things; the model does not read the line yet.
How we know any of this: the forward test
Every week, before kickoff, every projection is frozen and recorded. After the games, the record is scored. Nothing frozen after a kickoff counts β that is enforced twice, in the freeze and in the scorer. Shadow models run beside production every week, each differing from it in exactly one thing, so their records answer one question each. Model changes are pre-registered: the pass/fail criteria are committed before the test is run, and a check reads the commit history to prove it. The forward record started in week 3 of 2026; until it holds around 150 scored rows, nothing on this site claims a track record.
What has been tried and failed
A pool-and-share model for backfields (two attempts, both failed their gates, stopped by rule). A volume-dependent yardage spread (two attempts; the second fixed prop-volume coverage but broke low-volume cells, stopped by rule; it runs in shadow with a promotion rule). A blend toward the player's own median (passed on accuracy, failed on coverage). Return-from-injury widening (its pass was borrowed from a miscalibrated base). Each is recorded with its criteria and result; none was quietly tuned until it passed.
The Research tab
Sides and totals were tested too: 72 angles against nearly 5,000 games of real closing lines since 2007. Nine beat break-even; none survived correction for how many were tried; of the eight best from 2007β2018, one was still above water afterwards. The Research tab lets you run any angle yourself, with the same out-of-sample split and the same honesty about how many things you have tried.
4 Where the data comes from, and how fresh it is
- Game logs and play-by-play β nflverse, rebuilt weekly after the games. The quarter splits in the Prop Lab are rebuilt from plays and checked against the official box score; a game that does not add up is marked, not shown.
- Lines and props β ESPN, captured on a schedule: hourly, and in clusters before every kickoff window. Every posted line is recorded as it moves, which is how the Prop Lab shows "opened 4.5, now 5.5".
- Injuries and rosters β ESPN's injury feed hourly, Sleeper's player list daily (at Sleeper's request). When the two disagree the newer claim wins, and "out" wins a tie.
- Add/drop trends β Sleeper, across public leagues.
- Matchup board stats β nflverse play-by-play, rebuilt weekly; the predictiveness labels were measured once on 2015β2025 and are frozen with the code (
assets/data/matchup-stats.json). - Schedule, rest and venues β nflverse's schedule, rebuilt weekly; stadium coordinates and roofs from a hand-kept table.
- Kickoff weather β Open-Meteo (CC BY 4.0), fetched hourly for the upcoming slate in UTC and matched to each kickoff's hour. Every forecast carries when it was issued.
The pages never call those services themselves. A scheduled job fetches everything and commits it, and every file carries the time it was captured. The status strip shows that time, and if anything you are looking at is more than two refreshes old, an "out of date" banner says so at the top of the page. That banner is the alarm: if the schedule ever stops, you will see it before we do.
5 The rules the site holds itself to
- No picks, and since September 2026 no leans. The model's leans were tested against real sportsbook lines and did not beat the market, so none are shown. Nothing here is a recommendation to bet.
- Every number comes with how sure we are. A hit rate has its range; a projection has its typical error; above 70% there is no number at all.
- Criteria before results. A model change states its pass/fail test before the test is run. The commit history proves the order.
- The forward test is the only track record. Frozen before kickoff, scored after, never rewritten. A projection frozen after a kickoff does not count.
- One difference at a time. Every shadow model differs from production in exactly one thing, verified weekly.
- Nothing hidden. Every override is shown with its reason, source and expiry. What the model cannot see is said on the page.
- Comprehension ships with the feature. Every section has a line in the welcome sheet and a place on this page; adding one without the explanation fails the build.
- One source of truth. The board, the Prop Lab and the forward test run the same code on the same data, cut at the same moment.
Betting should stay entertainment. If it stops being fun, call or text 1-800-GAMBLER (U.S.).