How props are scored

This page is loading and it needs JavaScript. The written page below is served without it.

  • The board hits 50.9% where 52.4% breaks even at −110.
  • In testing, the model did not clear the book’s margin.
  • A hit rate counts how often one exact line cleared.
  • Grades band the hit rate; A needs 80% or more.

Every number on this site is built the same way: a player’s official game log is counted against a specific line, shrunk toward the market in proportion to how little history stands behind it, and compared to the price a sportsbook is posting. This page walks that pipeline end to end, and states plainly what it is measured to be unable to do.

What the measurement showed

Across 96,155 graded props the model tracked the de-vigged consensus of five books to within the margin those books charge. Historical testing showed that calibration alone is not enough to overcome sportsbook pricing, and no configuration tested cleared that margin, which is why this product is built on price, context, sample quality and transparency rather than a claim to finish ahead of the closing line.

The board hits about 50.9% where 52.4% is break-even at −110, against a measured margin of 3.49 points per side. Nothing here promises a win.

The same replay measured what the work did buy. Shrinkage and eligibility filtering materially improved calibration in the historical replay, though meaningful calibration error remains. Expected calibration error fell from 0.2319 to 0.0552, and the Brier score from 0.3217 to 0.2527. Calibration is accuracy about a probability, not a lead over a price. So what these figures support is numbers you can check, not a way ahead of the market.

The readings, in one line each

Hit rate
How often a player has cleared one exact line in the games behind it, counted from the official game log. A record of past games, not a forecast of the next one.
Sample
How many games stand behind a hit rate, and which ones, such as the last 10 or the season. A short sample swings a long way on one game, which is why the count is printed beside every rate. A rate quoted without its count should be ignored, however high it is.
Letter grade
A band of the hit rate and the sample it rests on, so a reader can scan a board quickly. It describes history. It is not a probability that the prop hits tonight, not a pick, and not a ranking of which bet is most likely to win.
Price and break-even
The sportsbook’s odds, and the hit rate those odds need to pay off. A hit rate above break-even means the history beat the price, not that the book has made a mistake.
Price age
How long since that book last changed the price. An older price may already have moved, so check the book before placing anything.
Parlay Health
On a ticket, the checks that matter for a parlay: legs that move together, the weakest leg, and a ticket priced worse than its legs multiplied.

Glossary

Version 1.6, updated 9 November 2026. Each definition is read from the one place the product states it, and each term carries the date its meaning last changed.

Hit rate
How often a player has cleared one exact line in the games behind it, counted from the official game log. It is counted at the whole number the bet settles on, so Over 24.5 needs 25 or more, and only over games the player actually played. A record of past games, not a forecast of the next one. Changed .
Sample window
How many games stand behind a hit rate, and which ones, such as the last 10 or the season. A short sample swings a long way on one game, which is why the count is printed beside every rate. Where a player has played fewer games than the window asks for, the count shows the games there actually were, not the size of the window. Under 10 games is a thin sample and is never suggested; 20 or more is a settled one. Printed as “Sample” beside a rate. Changed .
Grade
A band of the measured hit rate: A 80%+ · B 70 to 79% · C 55 to 69% · D 50 to 54% · F under 50%. The sample caps the letter: under 10 games it can be no higher than C, and under 15 games no higher than B. An A also needs at least 15 games and recent games that back the rate up; where recent games are not on hand, only 90% or better is an A. A line that has not cleared more often than its own price needs to break even is held at B or lower. A hit rate less than 1 point above its band's floor, with consistency short of Elite (steadier than 90% of the league in that stat) and a trend running against its side (falling on an Over, rising on an Under), reads one letter lower. These checks can only hold a letter down, never raise it. Below 22% at +150 or longer it reads Longshot instead of F. Changed .
Rank
A prop’s place in the board’s own order. Ranked by hit rate, weighted by sample: 55% over 200 games ranks above 58% over 12, because a long record is harder to fluke than a short one. A prop with no measured sample sinks to the bottom rather than being scored zero. The rank describes games already played; it is not a forecast. Changed .
Default sort
The order the board opens in before you pick a column: the rank, with the bettable prices leading. Prices from −300 to +250, the range most readers can actually take, sort above the longer and shorter ones, which stay on the board below them. Nothing is filtered and no count changes. Picking another column replaces it with the order you asked for, which is not the board’s own ranking. Changed .
Shrunk estimate
The model’s chance for one leg: its hit rate, pulled toward the price when the record is short. An estimate, not a record of past games. Printed as “Model estimate” on a ticket. Changed .
Combined chance
Every leg’s model estimate multiplied together, with the legs treated as independent. Legs from one game move together, so on a same-game ticket the estimate allows for those legs instead. The builder lists it under Slip checks, not on the ticket face. Neither is a forecast of this ticket. Changed .
Market fair probability
Market fair is what the sportsbooks’ own prices imply once their built-in margin is removed. Each book that quotes both sides of the line is de-vigged, and we show the median across them. It is the market’s number, not a Parlay Builder projection, and it is not a claim to beat the book. It needs at least two books quoting both sides, so on many props there is no figure to show at all. Printed as “market fair” beside a price. Changed .
Parlay Health
Parlay Health reads how this slip is built: the form behind each leg, the history under it, price against that history, book agreement, overlap and price age. It is a measure of construction, not a chance of winning. Each check is scored out of 100 and averaged with equal weight, because nothing here is fitted to results. A check with no input is left out, not scored. Changed .
Forward record
Every pick logged before its game starts, at the line and price it was published at, and graded afterwards against the final box score. A push or a player who did not play is void, not a loss. It records picks that were actually published, which is what separates it from a replay of old games against today’s lines. Changed .

The pipeline, end to end

  1. Ingestion

    Scheduled jobs pull prices from seven sportsbooks and final box scores from each league’s own feed, then stage both into one database.

    Everything downstream is a comparison between a price and a game log, so both halves have to arrive on a schedule and land in the same place. Prices for near-term games refresh every two minutes; the day’s events are rebuilt hourly; box scores load four times a day once games are final.

  2. Normalization

    Every book’s own spelling of a market, a player and a side is mapped onto one internal vocabulary, so one prop is one row rather than five.

    One book calls it "Player Points", another "points"; the same player appears with and without a suffix. Without a single vocabulary the same prop would be scored five times as five different props, and a game log would never join to the line it belongs to.

  3. Historical game logs

    Each player’s per-game statistics are stored exactly as the official box score recorded them.

    A hit rate is only as trustworthy as what it counted. These are settled, official numbers: not projections, not live in-game feeds, and not anybody’s estimate of what a player was on pace for.

  4. Hit-rate calculation

    For a given line, we count the games in which the player actually cleared it, and publish that count over the number of games.

    A bet does not settle at the line, it settles one whole unit past it: Over 0.5 needs at least 1, not at least 0. Joining a game log at the line rather than at the settling threshold is how a routine prop comes out at a 100% hit rate, sitting enormously and falsely ahead of its price. The count is always shown with the denominator behind it, because a percentage without a sample is the same defect in a different font.

  5. Sample-size adjustment

    Two floors decide whether a number may be computed at all and whether it may be shown as a suggestion, and a third reading reports how much history is behind it.

    A rate over three games can only take four values, so a player who went 3-for-3 in a fortnight reads as a certainty. Rather than one blunt cutoff, the floors rise with the strength of the claim being made: a probability may not be computed below 5 games, and may not be recommended below 10. Above that the sample is reported rather than enforced: it sets a confidence reading shown beside the letter grade, because how much evidence exists and how often the line has been cleared are two separate questions and answering both with one letter charges a prop twice for one fact.

  6. Bayesian shrinkage

    The raw hit rate is pulled toward the market’s own probability, by an amount set by how little evidence sits behind it.

    This is the single most important correction in the pipeline. The estimate is a blend of what the player has done and what the book thinks, weighted by sample: at k = 20, a player with 20 games of history is weighted half history and half market. Regressing toward the market rather than toward a coin flip is deliberate: the book has priced the starting pitcher, the injury report and the rest day, none of which a game log can see. Unshrunk, the same board’s hit rates sat an average of 26 points ahead of their prices and topped out near 95 points ahead off two or three games.

  7. Sportsbook implied probability

    The posted American odds are converted into the probability that price implies.

    A price and a probability are the same statement in different units, and you cannot compare an estimate to a price until both are in the same units. An unusable or missing price returns nothing at all rather than a neutral 50%: a fabricated coin flip does not read downstream as missing data, it reads as analysis.

  8. Vig normalization

    The two sides of a market imply more than 100% between them; the excess is the book’s margin, and removing it is what turns a price into a fair probability.

    At −110 each way both sides imply 52.38%, summing to 104.76%. The 4.76 points of surplus are the book’s margin; removing them leaves a fair probability, and the book’s hold on that market is 4.76/104.76, or about 4.5%. This correction is now computed and published: every book quoting BOTH sides of a line is de-vigged and the median across them is shown on the card as the market’s fair price, beside the posted one. It is a reading on the card, not what the board is ordered on: the order is set out under Model ranking below. It needs at least two books on both sides, so it is present on a majority of the board and simply absent on the rest rather than filled in with a single book’s opinion. What it deliberately does NOT do is feed the hit rate vs price reading: that comparison is still measured against the raw, margin-inclusive price, which charges the model the book’s full cut on the side being valued. The letter grade uses neither price: it is a band of the hit rate alone. Two numbers with two authors, kept apart on purpose: see the limitation below.

  9. Hit rate vs price

    Hit rate vs price is the shrunk estimate minus the break-even probability the price implies, in percentage points. A short record is pulled toward the price before the subtraction, not toward a league average.

    This number is printed beside the letter; it does not set it: since 12 October 2026 the letter is a band of the hit rate alone. It is a description, not a verdict: it says how measured history compares to what is being charged for it. Positive does not mean the book is wrong. It is published to four decimal places under a stated rounding rule, because two implementations that round differently disagree about props sitting exactly on a boundary.

  10. Model ranking

    Rows that cannot support a recommendation are removed, and what survives is ordered on measured history: not on a Parlay Builder forecast, and not on the market’s fair price. Ranked by hit rate, weighted by sample: 55% over 200 games ranks above 58% over 12, because a long record is harder to fluke than a short one. 9 or 10 of the last 10, or 7 straight, ranks a little higher, as does a matchup that favors the side. Prices from −300 to +250, the range most readers can actually take, sort above the longer and shorter ones, which stay on the board below them.

    Only props with 10 or more logged games and a hit rate of 55% or better, and a recent price the book still posts, are ranked. A plausibility cap also applies: past about 20 points ahead of the price, a stale price or a bad line join is a likelier explanation than an opportunity, so those rows are treated as data artifacts instead of being ranked. What orders the survivors has changed more than once. It used to be the hit rate vs price reading above, which put a Parlay Builder reading at the top of the page, and later the market’s own de-vigged fair price. It is now the hit rate itself, pulled toward a coin flip by how few games stand behind it, so a long record outranks a short hot one, with the prices most readers can take leading. A prop with no measured sample sinks to the bottom rather than being scored zero, because "not measured" and "the worst on the board" are different statements. The order describes games already played; it is not a forecast. The grade is not the rank. The table opens in this order until you pick a column to sort by. A column sort is your control over rows already chosen and ranked; it changes what is on top of your screen, not the rank.

  11. Correlation handling

    Legs from the same game are limited, and any combined probability quoted from multiplying legs is labelled as assuming independence.

    Multiplying leg probabilities assumes they are independent, and legs from one game rarely are. A three-leg slip built from a single game is one game’s worth of risk sold as three, and its advertised hit probability is simply wrong. So the builder caps legs per game and per player, and where a correlation-adjusted figure exists it is shown beside the independent one rather than replacing it silently.

  12. Final scoring

    The letter is a band of the measured past hit rate at this exact line: A 80%+ · B 70 to 79% · C 55 to 69% · D 50 to 54% · F under 50%. The sample caps the letter: under 10 games it can be no higher than C, and under 15 games no higher than B. An A also needs at least 15 games and recent games that back the rate up; where recent games are not on hand, only 90% or better is an A. A line that has not cleared more often than its own price needs to break even is held at B or lower. A hit rate less than 1 point above its band's floor, with consistency short of Elite (steadier than 90% of the league in that stat) and a trend running against its side (falling on an Over, rising on an Under), reads one letter lower. These checks can only hold a letter down, never raise it. Below 22% at +150 or longer it reads Longshot instead of F. The letter describes history and is not a forecast. The count of agreeing form signals is reported beside the letter without moving it.

    A hit rate on six games is not the same evidence as a hit rate on sixty, so the sample caps the letter instead of only sitting beside it. The thresholds are absolute rather than a curve, so a weak slate is supposed to grade badly. Form is counted rather than applied because, measured across the board, the form composite anti-correlates with how far the hit rate sits ahead of the price. When an earlier set of these bands was tested against results, history ranked forward outcomes at about chance, which is why the letter is labelled as history and never as a probability.

  13. Historical grading

    Every prop the app surfaces is logged with its line, price and model numbers frozen at the moment it was shown, then settled later against the final box score.

    This is what makes the track record a record rather than a replay. Grading against the numbers as they were served is the only version that cannot flatter itself; a backtest run against today’s lines is a projection, and is labelled as one wherever it appears. A line that lands exactly on the number is a push, and a player who did not play is void: neither is counted as a loss.

A worked example

One prop, all the way through

A real player, a real market, and the games the number is counted from. This is the same board every other page reads. Nothing here is an illustration.

Collin Sexton

NBA · Los Angeles Lakers

Collin Sexton cleared 9.5 points in 6 of the last 10 games. That threshold comes from this player’s own distribution, not from a sportsbook.

The games behind it

10.5 average · through November 11, 2026

Collin Sexton’s last 10 games in Points, newest first
DateOpponentPointsResult
Nov 11@ Milwaukee Bucks10cleared
Nov 9@ Atlanta Hawks18cleared
Nov 8@ Detroit Pistons17cleared
Nov 6vs Portland Trail Blazers0missed
Nov 4@ Sacramento Kings10cleared
Nov 2vs Miami Heat6missed
Nov 1vs Toronto Raptors14cleared
Oct 30@ Golden State Warriors0missed
Oct 28@ LA Clippers21cleared
Oct 27vs Portland Trail Blazers9missed

Every prop on the board carries this same record: the games, the dates and the misses, not a summary of them.

Measured from official box scores. Past performance ≠ future results.

Where this falls short

Calibration does not put the board ahead of the closing line, and we measured that rather than assumed it
In testing, the model did not clear the book’s margin. The replay covered 96,155 graded props, and every configuration tested landed inside the de-vigged five-book consensus rather than ahead of it: the board hits about 50.9% where 52.4% is break-even at −110, against a measured margin of 3.49 points per side. That is the ceiling this product is built to, and it is why what we sell is calibration, coverage, speed and the workings behind every number: not a lead over the market.
A grade is a record of past games, not a prediction about tonight
A high grade is history, not a forecast: it means this line has been cleared often in the games on file. The letter is a band of the measured hit rate. A short sample can only hold it down; the form agreement and the hit rate vs price reading are printed beside it and never move it. It is also not a ranking of bet quality, and it has not been shown to beat the market: when the earlier price-gap ordering was tested against outcomes, no band of it came out ahead, and the largest claimed gaps over the price were the ones that fell furthest short of their own estimate, the same result the replay above reports from the other direction. An A can lose and an F can win, and neither outcome says the grade was wrong. Nothing on the board promises a win or claims the book has made a mistake.
Hit rate vs price is measured against the margin-inclusive price
Two different numbers on a prop card are computed against two different prices, and the difference is deliberate. The market’s fair price IS de-vigged: that is the whole of what it is, and it is printed on the card beside the posted price. The hit rate vs price reading is not: it compares our shrunk estimate to the raw posted price, which charges the model the book’s full cut on the side being valued. That makes every such reading on the board look worse than a fair-probability comparison would, and it is the main reason most of the board is negative. The letter grade reads neither price; it is a band of the hit rate alone, and none of the three sets the board’s order. It is not that the correction is unavailable (the feed now carries both sides on a majority of served rows); it is that moving that reading onto a fair price would restate every published threshold built on it and every measured result on this page at once, so it is a versioned change to the scoring contract rather than an edit.
The price a prop is SCORED against comes from one book
Seven books are collected and line-shopped, but the price that hit rate vs price is computed against, and that decides a Longshot from an F: is one book’s price rather than a median across all seven. A single book’s price is that book’s opinion, so calling it consensus would overstate what is behind the number. The market fair price shown beside it IS a consensus and is the one figure on the card that is: a median across the books quoting both sides, which is why it is missing wherever fewer than two of them do.
A pulled market can sit on the board for up to six hours
Nothing in the feed marks a market as suspended. A market nobody is pricing any more simply stops refreshing and ages out on a six-hour staleness rule. That window matters because a market is most likely to be pulled exactly when it has become mispriced (an injury scratch, a late lineup change) so check the news before acting on anything here.
Whole-number lines are valued without a push term
Settlement handles pushes correctly, but the valuation maths treats every market as two-outcome. On player props this currently costs nothing, because the lines all end in .5 and a push is impossible. On whole-number spreads and totals it is a real distortion, and those figures should be read as approximate.
The two feeds do not always spell a player the same way
Prices and box scores arrive from different upstreams with different name conventions. Where the two spellings fail to join, a player can carry a hit rate assembled from the wrong games or no history at all. Accented names are the known weak point. This is a data-quality defect with a fix in progress, not an intended behaviour.
This is research tooling, and it is not advice
Parlay Builder does not take bets, hold money or settle anything. Nothing on this site is a recommendation to place a wager, and no output should be treated as financial advice. If betting has stopped being entertainment, help is available at 1-800-GAMBLER (1-800-426-2537).

How the chat answers, and where a model is involved

The chat is not a language model with a database bolted to it. At most two calls to a model are made in a turn, both named below, and between them sits ordinary code: choosing what to look up, running the query, ranking the rows and writing the sentence are all functions, reading the same materialised views the rest of this site reads. That is why a number in an answer can be traced to the row it came from: there is no generation step between the table and the text.

The two model calls, in full

Working out what you asked for: claude-haiku-4-5-20251001 · AGENT_USE_LLM_ROUTER · 3s

One call reads your message and returns a label from a fixed list of intents, plus any names it picked out: a player, a market, a league, a number of legs.

What comes back is checked against that list and discarded if it is not on it, and the names are sanitised before they are allowed near a query. So this call chooses which piece of code runs next and what that code searches for; it does not produce a hit rate, a price or a sentence. If it is switched off, answers slower than three seconds, or comes back below the confidence floor, a keyword classifier takes over and the turn is answered the same way: the chat works end to end with no model call at all.

Reading a bet slip you upload: claude-opus-5 · AGENT_VISION_MODEL · 45s

If you attach a screenshot of a slip, one call transcribes it (the players, markets, lines and prices visible in the image) into structured fields.

This is the one place a figure in the conversation is produced by a model rather than read from a row, and it is worth being plain about: it is a transcription of your own screenshot, not a number we publish. Where the transcription is unsure of a load-bearing field it stops and asks rather than guessing, and what it returns is then treated as data: looked up against the same tables a typed question would hit, with anything instruction-shaped inside it classified rather than followed.

Every figure in an answer was read out of a row
A hit rate the chat quotes was counted from final official box scores in the same materialised views the board reads. A price came from the same odds feed the prop cards use. The chat runs the same queries the pages run (it is a different way in, not a second data set) so a figure it prints and the same figure on a prop card cannot disagree.
The sentences are written by code, not generated
Each kind of answer is a function that formats its own result, so the same question against the same board comes back in the same words every time. That is what makes the chat testable at all: an answer can be asserted character for character, which is not something a generated reply supports.
It is tested against the real function, not a description of it
A suite loads the actual deployed chat function, points it at fixed board fixtures with the router switched off, and asserts what comes back. It has caught bugs users found first: a ranking that answered "nobody" in every league, a query against a table that never existed in production, and prop cards whose add-to-slip button was disabled by an eligibility check reading a field the feed does not send.
The claims an answer may not make are checked before release
An answer may never promise a win, never say a prop cannot lose, and never say it beats the books. Those patterns are run over every answer the suite produces and a match fails the build. The rule is scoped to assertions rather than to words, so copy that names one of those claims in order to refuse it still passes. To be exact about what this is: a gate on the code that writes the answers, run before release, not a filter inspecting live traffic.
An empty board is said out loud, not filled in
When there is nothing priced (an off-season league, a slate not yet posted) the answer says so and offers somewhere to go. It does not reach for an older number or describe a game nobody is pricing, and every case in the suite is checked for exactly that: a reply, never a dead end, and never a prop that is not on the board.

Traceability is the claim this design supports, and it is a precise one rather than a grand one: an answer can be no better than the row behind it, and every row is one you can go and check. Everything listed above under what falls short reaches the chat exactly as it reaches the board: hit rate vs price is still measured against a margin-inclusive price, a prop is still scored off one book, a pulled market can still sit there for hours, and a player whose two feeds spell him differently still carries the wrong history.

Questions about the grades

What does an A grade on a prop mean?

That the measured hit rate on this exact line is 80% or higher, on enough games to hold it. An A also needs at least 15 games and recent games that back the rate up; where recent games are not on hand, only 90% or better is an A. The full scale is A 80%+ · B 70 to 79% · C 55 to 69% · D 50 to 54% · F under 50%. The sample caps the letter: under 10 games it can be no higher than C, and under 15 games no higher than B. A line that has not cleared more often than its own price needs to break even is held at B or lower. These checks can only hold a letter down, never raise it. Below 22% at +150 or longer it reads Longshot instead of F. Read an A as a statement about the record, not about the bet or the price: it is not a forecast, and when the ranking was tested against results no version of it beat the market.

Why do most props grade C or below?

Because most posted lines are cleared in fewer than 70% of games on file, and the grade starts from the hit rate: anything under 70% is a C or below before the sample or the price is even read. Past the break-even cap, the price is a separate reading. A two-way prop priced at −110 on both sides carries roughly a 4.5% hold for the book. That is the book’s cut on the market, not a per-side share of it, and it is why the hit rate vs price figure for most of the board reads near zero or below, whatever the letter. The thresholds are absolute rather than a curve: a weak slate is supposed to grade badly, and a percentile scale would mint the same number of A’s every night no matter what was on offer.

Is the grade the same as the signal score?

No, and they can disagree. The signal score measures how strongly a prop’s supporting signals agree: consistency, trend, streak, rest, matchup. The grade is set by the measured hit rate, held down by a thin sample or a price the record has not cleared. The two are built from different things, and measured across the board the signal score also ran against the price: props with the highest signal scores had, on average, the worst prices. So a green A above an amber signal score is not a contradiction; it says the line has been cleared often over the record on file while the supporting form is thin.

Can a grade tell me a bet will win?

No. A grade describes how often the line has been cleared in measured history, and history is not a forecast. An A can lose and an F can win. The price beside it tells you what you are paying for the chance; neither tells you what the chance will do.

What is Bayesian shrinkage and why is it applied to a hit rate?

It pulls a raw hit rate toward the probability the market is already implying, by an amount set by how few games stand behind it. At k=20 a player with 20 games of history is weighted half history and half market price. Without it a player who cleared a line in three of three games reads as a certainty and appears enormously ahead of the price. Unshrunk, the same board’s hit rate vs price averaged +26 points and peaked near +95 off two or three games.

Where do the hit rates and the odds actually come from?

Hit rates are counted from final official box scores, the same settled numbers a league publishes, never projections or in-game estimates. Odds are the prices actually posted at DraftKings, FanDuel, BetMGM, Caesars, BetRivers, theScore Bet and Hard Rock Bet, refreshed every two minutes for games starting soon. A prop is joined to its game log at the settling threshold, so an Over 0.5 line is counted against games with at least one, not at least zero.

Can the AI chat make up a statistic?

No figure it prints about a player, a prop or a price is generated by a language model. Each one is read out of a row in the same materialised views the board reads. Retrieval, scoring and phrasing are all deterministic code, so there is no generation step between the table and the sentence, and the same question against the same board comes back in the same words. The one carve-out is stated plainly on this page: if you upload a screenshot of a bet slip, a model transcribes it, and those numbers are a reading of your own image rather than anything published here.

How much of the AI chat is actually a language model?

Two calls in a turn at most. One classifies your message into a fixed list of intents and picks out the names in it, which decides what gets looked up; it is capped at three seconds and can be switched off entirely, and a keyword classifier answers the turn the same way when it is. The other runs only when you upload a screenshot, and transcribes it. Everything else (the queries, the ranking, the wording) is ordinary code, which is what lets the chat be tested against fixed board fixtures before release rather than sampled after it.

Does the model remove the sportsbook’s margin before comparing a hit rate with the price?

Not for that comparison, and that is now a deliberate split rather than a missing capability. The de-vig itself is live: wherever at least two sportsbooks quote both sides of a line, each book’s pair has its margin stripped out and the median across those books is published on the card as the market’s fair price, beside the posted one. It is present on a majority of the board and simply absent where fewer than two books quote both sides, rather than being filled in from one book’s opinion. The hit rate vs price reading is still measured against the raw posted price with the margin left in, which charges the model the book’s full cut on the side being valued; that is why most of the board still reads negative. The letter grade does not use the price at all. It is a band of the hit rate, except that a rate under 22% reads Longshot rather than F at +150 or longer. Moving the comparison onto the fair price would restate every published minimum and every measured result on this page at once, so it is a versioned change to the scoring contract rather than a copy edit. Neither figure sets the board’s order. Ranked by hit rate, weighted by sample: 55% over 200 games ranks above 58% over 12.

Odds and lines come from licensed data feeds and refresh on a schedule; hit rates and grades are Parlay Builder’s own calculations.