This week's games
Every game's scoring environment and the best matchup spot on each side. Every game is priced against DraftKings, FanDuel, theScore, BetRivers and Hard Rock.
Games
Model card
A small set of high-agreement plays, not the main product. At most six A or B plays, each one clearing every check: both pros on its side, a matchup that doesn't oppose it, our sims within 8 points of the market, no injury or role flag that moves him more than 5%, no one-play risk, and no longest-play props. One per player, two per team and per game, 0.5u each. Research and building happen in the other tabs.
Top 3 · highest conviction
How Top 3 is picked
Drawn from the model card: plays that clear every check and also have a matchup grade on our side, the game-log model (which never sees the market) on our side, no weather against them, a main line priced −200 or better, and a number at or better than the market's. One per game. Not locks; each shows its main risk. The stake box defaults to 0.5u; set your own and it sticks.
Market card · no projections
Columns
How the market card is picked
Picked from book prices alone: each bet is a price that beats the other books at the exact same line. No FTN, no FantasyPros, no sims. No-vig rows compare to the other books' fair price with the vig removed (the cleanest). TD and alt rows compare to the other books' prices minus 2.4 points for their vig, and the book has to pay 5%+ more than the next best. Books mostly post alt lines as overs only, so this card leans over: that's where one book can stand out, not a lean of ours. 0.5u each, tracked against the model card so Monday shows which approach holds up.
Best over and under, every game
Juice zone
Props priced as favorites at the books you pick, graded at that book's own line and price. A prop shows up when it grades C or better there, or when the matchup grade (A/B) is on our side and the EV is positive. By default you only see plays that clear every model-card check; tick Show held plays to see the rest with their reasons. Longest-play props only appear as held plays.
Field goals
Every kicker on the board. The matchup grade uses advanced stats only: his team's scoring outlook (the market's implied points and FTN's DVOA game projection), ETR's kicker points allowed by the defense, how often the defense gives up red-zone touchdowns (fewer TDs means more field goals), his unit's FG/XP special teams DVOA, and roof and wind. Tap a kicker's odds to see over and under 1, 2, 3 and 4+ field goals at every book, with our chance and the EV of each price.
Outliers
Prices where one book is out of line with the others. Each price is checked only against the other books, never against our projections: on a main line, against the other books' no-vig chance at the same line (or a line a step away, moved along the market curve); on an alt line, against the other books' prices at that exact line. Edge is what the price is worth if the rest of the market is right. This is the one edge that doesn't depend on our model being smarter than the books. Main lines are listed first and set off in bold; longest-play props stay here, flagged research only. "Our sims" on the far right is a second opinion and never sets the fair price.
How to read it. Main lines are the cleanest signal: the field price has the vig removed. Alt lines and anytime TDs compare to the other books' own prices with their vig left in. Books shade long-shot overs by different amounts, so a deep alt where one book pays far more can be that book carrying less hold, not a mistake; the edge there is a price gap, not a guarantee. A book that's off alone is usually stale and moves fast, and books limit accounts that only hit these. Check the price at the book before you bet.
Edge finder
Every prop we price, best agreement first: the top 25 by default. The color bar on each row is the grade (green A, blue B, amber C); a green tint means it clears every card check. Rows whose matchup opposes the side are dimmed. Click a row for the research panel.
How this tab works
Best agreement ranks plays that clear the model-card checks (both pros on the side, matchup with it, sims near the market) above raw EV. The Matchup column is the prop-level grade turned to the side of the bet: "Under F, opposes" means the matchup works against the under, which keeps the play off the model card. Longest-play props are hidden unless you include them (More filters). All lines shows main and alternate lines together (alt rows are tagged Alt); Main lines only hides the alternates. To research a prop no book has posted yet, tick "Include props with no book line yet" under More filters and enter a line in the research panel. Columns lets you show or hide the less-used columns.
Columns
Matchup matrix
Every team's QB, backs, receivers, tight end and kicker against this week's opponent, scored only from advanced stats: no projections and no lines. 50 is an average spot for that position this week. Switch the prop to see where a matchup is good for catches but bad for yards. Rushing yards and Longest rush grade QBs on their QB rushing grade. Anytime TD is 45% the yardage grade, 30% the team's scoring outlook and 25% red zone, the same grade the board's TD rows use. K is the field goal matchup grade (the Field goals tab's inputs), ranked among every kicker this week and left out of the team average. The overall grade is for research only; the card's matchup check uses the prop grade.
Bet slip & parlay lab
Add props from anywhere on the site. Straights are graded on their own; for same-game parlays on a priced game we multiply through the actual 10,000 simulated games, so correlation between legs is measured, not assumed.
Legs
+EV combos
Parlays built by default only from prices where one book pays more than the other books at the same line (the same check as the Outliers tab), labeled Book edge. Our projections don't pick those legs, so the pause on model parlays doesn't apply to them. High-agreement model legs is the other mode: only props that clear every model-card check, labeled as such and behind the parlay pause. Set how many combos and how many legs each. Each combo is one ticket at one book, every leg from a different game, so the legs don't affect each other and the payout is the odds multiplied. Each card opens the whole ticket at its book and links the same legs at any other book that posts them so you can compare. "New set" shows the next set.
Parlay builder
Built from the best available legs (Sharpboard): legs that clear every model-card check come first, then A/B plays that miss one check, then C plays with source or matchup agreement, then other +EV or high-hit legs to fill a tier. Each leg shows why it's in. Longest-play props stay out. The model's best parlays at three price points, built from the current board. Refresh shows tickets that share no leg with the ones before when it can. Each tier shows two model picks, one all-overs parlay and one anytime-touchdown parlay; Refresh steps to the next set (no two parlays in a tier share more than one leg). Every leg's chance comes from our 10,000-game sims blended with the market. Legs come from different games where possible, so the price is the legs' odds multiplied together, which is what the books pay. A ticket may hold one same-game pair when it improves the build: our chance then includes the sims' correlation for that pair, and the card says the book will price those two together. Games that have kicked off drop out.
Same-game parlays
Built from the best available legs in the game (Sharpboard): legs that clear every check first, then A/B plays that miss one check, then C plays with source or matchup agreement, then other +EV or high-hit legs. Each leg shows why it's in; longest-play props stay out. The model's best same-game parlays for one game, at the same three price points; you can also start one from a player page or the Matchups detail. Pick a matchup and the book you'll bet it at; every leg uses that book's line and price. Each tier shows two model picks, one all-overs build and one anytime-touchdown build, and Refresh steps to the next set. Legs come from one game, so their outcomes are linked: our chance is the share of the 10,000 sims where every leg hits, scaled by each leg's market blend. Tiers are set by our fair odds, because books price same-game parlays with their own correlation model and extra hold, not by multiplying the legs. Enter the price your book shows on any card to grade it.
Line moves
How every prop's market has moved since we first saw it, pull by pull, biggest moves first. A move of 8+ points against a side also shows as a "Line moved against" flag in the Edge finder and Outliers. Movement is the change in the books' no-vig chance of the over at the opening line, so a half-point move and a juice-only move read on the same scale. Green means the market moved toward our side, red means against it. The read on the right says what that likely means for the bet.
Track record
Closing-line value first: whether the prices we take beat the market's last price before kickoff is the fastest honest read on an edge. The weekly review and the board record (every prop on the last board before kickoff, graded after each game window in three groups) come first; then your tracked bets, saved with the line, price, stake and (from v2 on) the card checks when you tracked them, which you can filter and split by card, longest play, source agreement and matchup. Below is the model's own record: every recommendation is logged when it's published and graded from box scores, and nothing is removed. Pick a week, or All weeks to see each week in its own section.
By grade
By prop
Every pick
How Sharpboard works
Sharpboard is a cleaner front end on the HashMark model. The model card shows only a small set of high-agreement plays; everything else is research and manual building.
Sharpboard: how it differs from Hashmark Props
Same data files, same pricing (hit % = 20% our sims, 80% the market's no-vig price), same grades, same five card checks and the same model card (max 6, A/B only, nothing added to it). Nothing in model/ changed. These presentation rules were relaxed on purpose; each is a display choice, reviewable and reversible:
- Plays that miss the card are on the home screen. Hashmark kept them in research views; Sharpboard's Board lists the plays closest to the card under the model card ("Closest to the card": graded C or better, fewest failed checks first) with + Slip. Each one is labeled research, never a recommendation, and names the check it fails, with the reason in full.
- Grade C plays that clear every check are counted and highlighted: a Board KPI, a green tint in the Edge finder, "N clear" on game tiles. The card still needs A or B.
- The card funnel is shown: main lines priced → graded C+ → clear every check → clear at A/B → card, plus how many graded plays each check blocks (a play can fail more than one). An empty card is framed as the filter working.
- Suggested parlays on the Board come from the +EV combos tab's book-price edges (other books' prices only, never our projections), shortest first, with longest-play legs left out. Model-built parlays stay paused.
- The player page opens his best prop in the research panel and leads with his props ranked by fewest failed checks, grade and EV, which can put a blocked or grade C prop first. Blocked props say so.
- Tighter defaults: the Edge finder shows the top 25 main lines (Table and Show all list everything; All lines adds the alternates; Cards is the default on phones). What changed defaults to material changes (card and injury news, A/B grade changes, line steps of 12%+ or 12+ point swings on the over); All shows every change. The market card shows its top 6 with the rest one click away.
- The floating parlay builder shows our chance, fair price, EV at the best single book and same-game correlation from the slip's own pricing, on every tab.
- Parlays and Same-game parlays build from the best available legs instead of card-clearing legs only. Leg order: legs that clear every check (any grade, EV above −5%), then A/B plays that miss exactly one check, then C plays where the pros agree or the matchup supports the side, then other legs at positive EV or a 58%+ hit (EV above −6%) to fill a tier. Same-game parlays default to every book (each ticket still at one book). Better tiers win ties through a small score penalty per step; each leg shows its reason. Longest-play props, players under 85% to play, weather against the bet, news-check gaps (20+ points) and prices shorter than −400 stay out. Multi-game tickets use different games first and may hold one same-game pair priced through the sims. The pricing is unchanged (each leg's 20% sims / 80% market chance; same-game legs joined through the 10,000 sims), the "paused" notice before the builds still shows, and the model card, Edge finder and every check are untouched.
- Polish pass (display only). The Board opens on one status band (games left, line freshness, model card, plays clearing every check at C, market card, props priced), with Today's plays, the card funnel and the track record above the fold. Panel subtitles are short labels; the longer explanations moved into hover text on the titles. Fewer rows until expanded: 3–4 closest plays, 5 market-card bets, 4 market edges and line moves, 6 changes. On the Board the What changed panel replaces the header bar. Soft shadows instead of hard borders, one accent rule (Today's plays), no boxes inside panels, darker secondary text in light mode and lighter in dark mode for contrast, a short fade when a view opens (off for reduced-motion settings), and long view intros trimmed to two lines until clicked. Nothing about the model, data, filters or layout changed.
- Visual cleanup, second pass (display only). Panels are flat: content sits on the page with a divider and spacing instead of a box, shadow and rounded corners, and nothing is boxed inside them (stat tiles, parlay cards and the slip's ticket became rows with hairlines). Corners are smaller everywhere; floating layers (research panel, slip dock, menus) keep their surface. Secondary text and labels have more contrast. View intros, the model card's explainer and the Top 3 and market-card methods fold into closed "About" lines; the empty model card is one line with the detail on hover. Build tab: the legs always show on the left (the "Show selection details" fold is gone; a new leg arrives with book chips only, "All lines & books" opens the full selector); the right column is the ticket: best or selected book and combined price, every book's price, the grade and stake, our chance, fair, legs multiplied, EV, the price box with bet-to prices and the biggest risk, with the rest of the reasoning in "Why this grade". Every number, filter, check and grade is the same.
- Game log table in the research panel (display only). Under the snap % chart in "Game log vs this line": every game he played this season with snaps, carries, rushing yards, yards per carry, longest run, targets, receptions, receiving yards, longest catch, rushing / receiving / total touchdowns (passing for QBs, field goals for kickers). Same box scores as "Recent games vs defense" (nflverse). The selected prop's column is sorted first, highlighted and colored over or under the line; click any column to sort. The bar chart now draws from these games when the board row has no log, so "No game log" means he hasn't played. The "Recent games vs defense" table sorts the same way. No grade, filter or card check uses any of it.
- The bet slip is a persistent widget (display only). One slip on every tab, like Pikkit: a drawer on the right on wide screens (the page and the research panel make room for it), a floating panel on tablets, and a bar above the tab bar on phones that opens as a bottom sheet. It stays open or closed as you move between tabs (remembered on wide screens). Adding a leg anywhere opens it on wide screens and pulses the count on phones. Each leg is one row: on/off switch, player, bet, chance (with the other legs, when they share a game), EV, price, ×, and a tap on the book shows that bet at every book to move the leg. Under the legs: combined price at the selected or best book, our chance, fair price, EV, the parlay grade and stake, then every book posting all the legs with its combined price and EV (tap to price it there, ↗ opens the book with the legs on its slip). "More" holds the correlation by game, the biggest-risk leg, bet-to prices, a book-price box for same-game tickets, the unit size and tracking. Below 1560px the open slip drops to a pill while the research panel is open; opening it then lays the panel over the page. The Bet slip & parlay lab tab stays as the full view (the widget hides there), and the Games screen and Longest plays tab use the widget instead of their side-column builders. The header Slip button opens and closes the widget. Pricing, grades, sizing, filters and data are unchanged: the widget calls the same slip pricing as the lab (20% sims / 80% market per leg, same-game legs joined through the sims, parlay grade at EV 15 / 8 / 4, A 0.5u and B/C 0.25u).
- Layout and slip changes, Nov 6 (display only). Full width on screens 1024px and wider (28px side margins); phones and tablets keep the old layout. The bet slip shops lines like Pikkit: one leg lists every book's price at your line (best highlighted) and, where a book doesn't have your line, its closest line marked with an orange dot ("29.5 instead of 28.5") and the EV re-figured there; a parlay lists every book's combined price with EV, fair price and the book's hold, best on top, altered lines marked, and a tap shows that book's legs with your line crossed out. Exact lines only / Best available (default) switch at the top; each leg shows its main risk, matchup and source agreement; the player or prop opens the research panel on that line. The Track record summary moved from the Board to the top of the Track record tab. The research panel runs Line & book, Matchup, Game log, Recent games vs the defense, Card checks, Pricing detail, then Opportunity vs results; Projection sources and Chance of going over aren't shown there (Projection sources is still on the player page; nothing behind either was changed). Nothing about the model, grades, checks or data changed.
- Refresh and tracking live here (Nov 6). Sharpboard is the live dashboard. Its Refresh button starts the board rebuild, which republishes this page when it finishes; your tracked bets live in this page's own database (copied over from Hashmark Props on Nov 6, every bet and its history). The weekly grading runs once after Monday night's game and settles them here. Hashmark Props is kept as a frozen reference.
Unchanged: data integrity (every number is the pipeline's), source transparency (FTN, FantasyPros, FanDuel and Pinnacle shown as before), closing-line value and the graded record (Track), longest-play props research only, the 0.5u sizing and the parlay pause.
Why it changed
Grading Weeks 6 and 7 against box scores showed three things. Every projection source, our blend included, missed the box score by more than the closing line did. When our sims disagreed with the market, almost none of that disagreement showed up in results: the fitted weight on it was 0.04, where 1 would mean trust the sims fully. And plays we called about 60% to hit won about 56%. So the market now carries most of the weight, and the model's job is to narrow the board to plays where several independent reads agree, not to outguess the books.
The projection
Each priced game is simulated 10,000 times. Team volume follows the spread and total, and each sim draws a game script, so a team that falls behind throws more and a team that leads runs more. Targets and carries are split among players from their current roles, with ruled-out players' shares handed to the teammates taking their snaps. Player means are calibrated to an even blend of FTN and the FantasyPros consensus (50/50). Our game-log matchup model still runs and shows whether it agrees, but it is out of the blend.
Proj is the median sim result. Receptions, touchdowns, interceptions and field goals show the average instead.
Hit % and the grade
Hit % is 20% our sims and 80% the market: the no-vig price at the consensus line, slid along our distribution to read other lines. Every book's price is graded and the best one shown, so line shopping is built in. Expected value comes from that hit rate at the listed odds.
- A (Strong): EV of 8% or more and a hit rate of 56% or more.
- B (Medium): EV of 5% or more and 54% or more.
- C (Low): EV of 2.5% or more and 52% or more.
- Touchdown props need two more points of EV. Longest-play props (longest reception, longest rush) are capped at C and are research only.
- Sims 10+ points from the market cap a play at C; 20+ is a news check.
With 80% of hit % coming from the market, an A or B mostly means one book's price is well above what the rest of the market says. That is why Outliers and the Edge finder carry most of the useful information.
The model card
At most six plays, A or B only, and every one has to pass every check below. Plays that fail any check stay on every research view with the reason shown as a flag.
- Sources: FTN and FantasyPros, where both exist, are on the bet's side of the line or within 5% of it.
- Matchup: the prop-level matchup grade for that stat (receiving yards, receptions, rushing yards and so on), turned to the bet's side, isn't D or F (A or B against an under counts as opposing it). The player's overall matchup grade is for research only and never keeps a play off the card.
- Sim gap: our sims are within 8 points of the market's chance on that side.
- Injury and role: no doubtful starter whose volume is assumed, no role change from 10%+ of the team's targets being out, no under that both pros don't back, and no injury re-split or defensive-injury adjustment that moved his projection more than 5%.
- Thin risk: one play can't decide it (a 0.5 interception line, 2.5 catches or fewer, a low yardage line, an anytime TD), unless both pros clear the line by 10%+ and the matchup is A or B for the side.
- Longest play: never on the card.
One per player, two per team and per game, 0.5u each inside the weekly cap. An empty card is a normal result. A line that moved 8+ points against a side since the opening pull is flagged but doesn't block.
Research and building
The Edge finder ranks by agreement first and dims plays whose matchup opposes them. Outliers compares each book only with the other books, never with our projections. Juice zone, Parlay builder, Same-game and CVS Receipt use only high-agreement legs; model-built parlays stay paused until our straight bets beat the closing line over about 150 bets. +EV combos default to book-price edges, which don't depend on our projections.
The matchup
The matchup grade uses advanced stats only, no projections and no lines: a standard score for each position slot built 50% from the defense, 30% from the player and 20% from how the two fit, graded A to F against the same slot this week. The fit includes coverage: how often this defense plays man, zone, single-high and two-high, and how many yards it allows in each. Touchdown grades are 45% his yardage grade, 30% his team's scoring outlook and 25% red zone: what the defense allows inside the 20 and at the goal line against his own red-zone role. A separate matchup-only sim adjusts the player's own efficiency for this defense with FTN's advanced data, at reduced strength because the samples are small.
The overall matchup grade (the Matchup matrix's default view) is display-only. Across Weeks 6–8 it showed no relationship with how players did against FTN's projections, so only the prop-level grade feeds the card's matchup check. From Week 9 each weekly review shows what an overall-grade check would have kept off the card and how those plays finished.
Grading and learning
After Thursday's, Sunday's and Monday's games, every prop on the last board before kickoff is graded from box scores, whether or not anyone bet it. Three groups are tracked: all priced lines (longest plays included), best-agreement plays (graded and clearing every check, with the model card as their A/B part) and matchup-agrees props (matchup grade A or B for the side). Each gets hit rate, flat-stake ROI and closing-line value, split longest plays vs everything else, on the Track record tab. After Monday's grading a written review lands there with up to three proposed changes, none of which is applied without your approval.
Tracking
Every tracked bet records its card, whether it was a longest-play prop, whether the sources agreed, whether the matchup opposed it, the sim gap and any blocked reasons. Mondays settle each bet from box scores and record closing-line value: the EV of the price taken if the market's last price before kickoff is right. Calibration reports hit rate and closing-line value for plays that cleared the checks versus plays that didn't, and for longest-play props versus everything else.
Limits
- Two graded weeks is enough to show the old weighting was overconfident, not enough to prove an edge either way.
- Five-game samples are small, and defense-versus-position splits move a lot week to week.
- Players new to their team get no matchup-only sim. A big gap between our number and every book usually means news we haven't priced.
Data
FTN advanced stats and weekly projections, the FantasyPros consensus and injury reports, nflverse play-by-play and schedules, Open-Meteo kickoff forecasts, and sportsbook lines from The Odds API (DraftKings, FanDuel, theScore, BetRivers, Hard Rock), refreshed on each pull.
Leone tab (research only)
Usage vs results, compared with the line, for RB and receiver props (receiving yards and receptions; RB rushing yards and rushing + receiving yards; anytime TD), in two versions behind the Simple / Predictive toggle. Simple: FTN's season-to-date expected stats vs what the player actually did, per game. Producing 10%+ more than his usage leans Under, 10%+ less leans Over (Strong at 20%; anytime TD: one TD above or below expected, Strong at two), unless the prop's matchup grade opposes that side. The line isn't used. Predictive: his recent volume (last six full games, newest counted most) times FTN's expected value per target or carry, with small tilts for recent air yards, red-zone work and this week's team scoring outlook. It leans only when his last three games sit well away from that number (a standard score of 1 or more) and the line also sits on the same side of it: 8% for yards, 0.4 catches, 5 points of chance for a TD. The line is compared with the Leone median, since yards are skewed and books set lines near the median. Both versions need 8 expected PPR points a game (7 for tight ends), like ETR's Buy Leone, and neither adjusts for talent. A Leone number is never a hit chance and never touches the hit %, grades, source agreement, the matchup grade or the card. Both versions are graded every week in the review, side by side.
Tracked sources
Three more sources are shown for comparison and graded every week, but none of them changes the hit %, the blend, a grade or a card check until you approve it. FanDuel's projections are a third projection, next to FTN and FantasyPros in each prop's sources. Pinnacle, the sharpest book, is a benchmark, never a price to bet: each prop shows Pinnacle's line and its over % with the vig removed, and a "Pinnacle vs our sims" flag when our sims are 10+ points away from it. The FantasyPros depth chart (WR1, RB2 and so on) is role context only; the injury report and projections always come from the FantasyPros feed.
Refresh
The Refresh button (top right, owner only) starts a run that drops games that have kicked off, re-checks injuries, re-runs the sims, pulls every book again (about 27 Odds API credits a game) and republishes this page. It takes 10–20 minutes; a bar under the header shows progress and offers to load the new board when it's done. It never changes a model rule.