Why Use Pinnacle Odds as Fair Value (And When Not To)

Why use Pinnacle odds as fair value: the structural reason devigged Pinnacle lines work as true probability, how to devig properly, and where the method breaks.
The short definition
Strip the margin off a Pinnacle two-way market and the number you get behaves like an unbiased estimate of the true probability of that outcome. That is the entire premise: devig Pinnacle, compare every other book's price to the result, bet the gaps. Nothing about it is mystical — it's a consequence of how Pinnacle runs its book.
Three properties have to hold at the same time before a book's devigged line is usable as fair value.
Low margin. The thinner the vig, the less your devig method matters and the tighter your error bars. Pinnacle runs thin, particularly on major-league sides and totals.
High limits. A price you can only get $20 into is advertising. A price that absorbs real stake has been defended by someone with money on the line being right. Pinnacle publishes a max stake per line, and pinnodds passes it through as limit.
No winner-limiting. This is the one people skip, and it's the one that actually does the work. Pinnacle's model is volume at a thin margin, so it accepts action from bettors who beat it and lets that action move the line. A book that bans winners never learns from them; its line ends up as a summary of its remaining customers' opinions rather than of reality.
Most books satisfy the first two and fail the third. That's the whole answer to why use Pinnacle odds as fair value rather than any other book's number: information is allowed to flow into the price.
Devigging is not the same as removing the overround
These two phrases get used interchangeably and they are not the same thing.
Removing the overround is arithmetic. Convert prices to implied probabilities, sum them, divide each by the sum. That is the multiplicative method, and it's what most people mean when they say devig.
Devigging properly is a claim about where the margin sits. Multiplicative assumes the book taxes both sides in proportion. That's demonstrably wrong on lopsided markets — devig a -2000/+900 favourite multiplicatively and the longshot ends up with too much probability, because books in practice load more margin onto the longshot. The alternatives:
- Additive / power. Subtract the margin evenly, or raise each probability to a power and normalise. Power is the pragmatic default for two-way markets away from even money.
- Shin. Models the vig as protection against informed bettors. Theoretically the most satisfying, the most annoying to implement, and the differences shrink into noise once the margin is already small.
The practical point: on a 2% two-way market the methods disagree by fractions of a percentage point and you should not care. On a 7% three-way soccer market they disagree enough to flip an edge from +1.5% to −0.5%. Method choice matters most exactly where the market is worst — which is another reason to benchmark against the thinnest book you can get your hands on.
A worked example, because this is where people fool themselves
Take a prematch soccer total priced Over 2.75 at 1.95, Under 2.75 at 1.98.
Raw implied probabilities: 0.5128 and 0.5051. They sum to 1.0179, so the market carries about 1.8% margin.
Multiplicative devig: 0.5128 / 1.0179 = 0.5038 for the over. Power devig with the exponent solved by bisection lands at roughly 0.5039. One basis point apart. On a market this thin, arguing about method is procrastination.
Now take a 1X2 market at 1.20 / 6.50 / 13.00. Raw sum is 0.8333 + 0.1538 + 0.0769 = 1.0641, roughly 6.4% margin. Multiplicative hands the home side 0.7832. Power devig, which shaves proportionally more off the long prices, puts the home side nearer 0.79 and pulls a point off the draw and the away side. If your model says the home team is 0.785, multiplicative says you have a small edge on the favourite and power says you don't. Same data, opposite conclusion, and you cannot resolve it by looking harder at the odds.
That's the case for doing this on the thinnest markets available and treating wide three-way devigs as soft.
Why closing line value is the only feedback loop that works fast
You cannot evaluate a betting model on profit. Variance is brutal; separating a 2% edge from noise takes thousands of settled bets.
What you can evaluate is Pinnacle closing line value. Did you get a better price than the devigged Pinnacle number at kickoff? CLV converges far faster than P&L because every bet produces a signal instead of a binary outcome. Beat the Pinnacle close consistently and the money follows. Fail to, and no amount of "I'm running bad" rescues the model.
The discipline that matters: log the Pinnacle line at your bet time and again at close, on the same market and the same line. Not the closest total — the same total. A 2.5 close is not a benchmark for a 2.75 bet. This is why quarter-line coverage is non-negotiable for a CLV pipeline. Every line Pinnacle prices comes through pinnodds, quarter lines included: soccer totals at 1.75 / 2.25 / 2.75 / 3.25, quarter-ball handicaps at −0.75 / −1.25 / −1.75 / −2.25. If your data source rounds those into halves, you are silently comparing different bets and calling the difference edge.
The honest caveats
I've watched a lot of people build this pipeline and hurt themselves in the same five ways.
A devigged Pinnacle line is not truth. It's the best available estimate. It carries error, it can sit stale for minutes on obscure leagues, and it can be wrong in the same direction as everybody else. Treat it as ground truth and you will never find edge in the places where Pinnacle itself is soft — deep props, minor leagues, competitions nobody at the book has time for. Those places are real.
Pinnacle is beatable on low-limit markets. The limit field earns its keep here. A market with a small max stake has had less sharp money through it and is priced with less conviction. Weight your confidence in the fair value by the limit, not merely by the logo on it.
Three-way soccer is the hard case, for the reason the worked example above shows. If your entire edge evaporates when you switch from multiplicative to power, you never had an edge. You had a devig artefact.
Your own bet contaminates the benchmark. If you're betting into Pinnacle and moving it, part of your measured CLV is your own market impact. Useful for validating that a signal is real; misleading for projecting profit.
And the limit of this feed specifically: pinnodds is Pinnacle only. We serve real-time live and prematch Pinnacle odds, pushed. There is no historical odds archive — if you want three seasons of closing lines to backtest, you have to start recording them today. We also don't carry other books, so we can't compute the "you got +140, Pinnacle closed −105" half of the comparison for you. You supply the soft book; we supply the benchmark. If you need forty books in one call, use an aggregator. If you need the sharp reference clean and fast, that's what this is.
Doing it in code
Two ingredients: the current Pinnacle price on the exact line, and a devig you trust.
npm install pinnodds
# or
pip install pinnodds
A minimal fair-value pass over prematch 2.75 totals with power devig:
from pinnodds import Client
c = Client(api_key="YOUR_KEY")
def power_devig(prices, tol=1e-9):
"""prices: decimal odds for a complete market. Returns fair probs."""
raw = [1.0 / p for p in prices]
lo, hi = 0.5, 2.0
while hi - lo > tol:
k = (lo + hi) / 2
if sum(r ** k for r in raw) > 1.0:
lo = k
else:
hi = k
k = (lo + hi) / 2
return [r ** k for r in raw]
markets = c.prematch_markets(sport="soccer")
for m in markets:
if m["type"] != "total" or m.get("points") != 2.75:
continue
fair = power_devig([m["over"], m["under"]])
print(m["event_id"], m["points"], fair, "limit:", m.get("limit"))
Note that the bisection runs on the exponent, not on the probabilities. That's the whole trick to power devig, it's about eight lines, and it means there's no excuse for shipping multiplicative-only.
There's also a shortcut worth knowing. For odds-drop alerts you often don't need to devig at all, because the no-vig price is already in the payload. An SSE alert from /odds-drop names the market in sect, the moving selection in outcome, the prices in from_price and to_price, the event in id, and carries both limit and nvp — the no-vig fair price. Use nvp as your no vig Pinnacle line as true probability input and skip a step.
What the SSE payload does not carry is a drop percentage. If you want that precomputed, hit GET /api/drops?mode=prematch, where the enriched row gives you market, designation, from, to, event_id and drop_pct. Field-by-field breakdown lives in the docs.
curl -N "https://pinnodds.com/odds-drop-prematch?key=YOUR_KEY"
Where the price came from matters more than when you saw it
A quiet failure mode: benchmarking against a Pinnacle price you polled ninety seconds ago, then wondering why your CLV numbers look like static. On a live market that price is archaeology.
This is why the feed pushes instead of waiting to be polled. The raw WebSocket passthrough at /ws/feed hands you every update as it happens, sub-second. The SSE streams at /odds-drop and /odds-drop-prematch give you the filtered view — markets whose price is falling against their own recent history. For fair-value work, run the WebSocket and hold your own in-memory book state; for signal hunting, the SSE drop stream is the cheaper subscription. Push access and rate limits are what separate the plans. Line depth is identical on all of them, free trial key included — see /#pricing.
Props, futures and the specials problem
Fair value on player props is where devigging pays best, because soft-book prop margins are enormous and Pinnacle's are not. It's also where a naive devig is riskiest: two-way props are roughly the only prop shape where multiplicative is defensible, and the market can be thin enough that limit should temper your confidence.
Specials are off by default in the API because they swamp the payload — soccer prematch is roughly 1,500 events without the flag and roughly 12,400 with it. Pass include_specials=1 and player/team props, exact scores, futures and outrights arrive as their own event rows carrying special, special_category, special_markets and a parent_id back to the parent fixture. Join on parent_id when you want to condition a prop's fair value on the match line.
Be careful with exact scores and outrights. Those are many-way, the margin is wide, and method choice will dominate your answer the way it did in the 1X2 example. I'd treat devigged fair values there as directional, not actionable. The endpoint surface for all of this is documented at /docs.
Takeaway
Devig Pinnacle, weight your confidence by limit, and use power rather than multiplicative anywhere the market isn't close to even money — the code is eight lines and the difference decides whether marginal three-way edges are real. Then judge yourself on closing line value against the same line you actually bet, quarter lines and all, because that's the only feedback loop that returns a usable signal before your bankroll does. The nvp field on the drop streams saves you the arithmetic on the alerts that move fastest; everything else you compute yourself from /kit/v1/markets. Start recording closes today — nobody sells you last season's.
Frequently asked questions
Why do bettors use Pinnacle odds as fair value instead of another book?
Because Pinnacle runs thin margins, posts high limits and doesn't ban winning bettors, so sharp money is allowed to move its line. That combination means a devigged Pinnacle price reflects information rather than the opinions of a filtered customer base.
Is there still a public Pinnacle API?
No. Pinnacle closed its own public API in July 2025. pinnodds is an independent service that carries the same live and prematch market data over a pushed WebSocket feed plus REST endpoints.
What is the best way to devig Pinnacle odds?
Power devig for anything away from even money, solved by bisection on the exponent. On very thin two-way markets multiplicative and power agree to within fractions of a percent, but on wide three-way markets the choice can flip an apparent edge to negative.
Does pinnodds give me a no-vig Pinnacle price directly?
Yes, on the odds-drop streams. An SSE alert from /odds-drop carries nvp (the no-vig fair price) alongside limit, sect, outcome, from_price and to_price, so you can skip the devig step for those alerts.
Does pinnodds provide historical Pinnacle closing lines for backtesting?
No. There is no historical odds archive — the feed is real-time live and prematch only. If you need closing-line history for CLV backtests, you have to start recording it yourself from the feed.
Do quarter lines like 2.75 totals come through the API?
Yes. Every line Pinnacle prices is included, so soccer totals at 1.75 / 2.25 / 2.75 / 3.25 and quarter-ball handicaps at -0.75 / -1.25 / -1.75 / -2.25 are all there, on every plan including the free trial.
Get real-time Pinnacle odds in your code
Live & prematch markets with instant odds-drop alerts over SSE and WebSocket. Free trial key in seconds — no card.
Start free trial