A walkthrough of the SmartStake Odds Screen: how the grid groups prices, how each book gets its own main line, and why the best column needs reading twice.

The Odds Screen at /app/odds-screen is the read-only grid that puts every sportsbook's price on the same bet side by side. It is the fastest way to compare sportsbook odds in SmartStake, and it is also the only surface in the product that hands you no recommendation at all. It shows you the board and gets out of the way.
That makes it the one screen where reading skill matters. The grid is not a feed of prices. It is a computed summary of a feed, and the two columns most people read first, Best and Average, are the two doing the most computing.
Drag BetMGM's price and watch two things: which line each book gets shown at, and what the Best column does about it. The widget runs the Odds Screen's own grouping code, so the row below is assembled exactly the way the real grid assembles one.
| Selection | Best | Average | DraftKings | FanDuel | BetMGM |
|---|---|---|---|---|---|
| over | +105BetMGM 46.5 | −106 | −11045.5 | −11545.5 | +10546.5 |
| under | −105FanDuel 45.5 | −113 | −11045.5 | −10545.5 | −12546.5 |
Which line each book is shown at
The screen picks each book's main line by devigging every pair it posts and keeping the one closest to a coin flip. Nothing in the feed flags it.
Drag the price up past +119 and BetMGM stops appearing in the row at all. A one sided price that generous is exactly what an unbalanced pair looks like, so 46.5 stops being the line the screen treats as BetMGM's main one.
Illustrative example prices on a made up game, not live odds and not a recommendation. Every figure is computed from the prices beside it by the same grouping code the Odds Screen runs on, and every expected result is a long run average rather than a prediction. Any single bet can win or lose.
Every price on this page, in the widget and in the prose, is a made up example on a made up game rather than a live board. Every figure derived from them is computed from the prices printed beside it and is a long run average rather than a prediction about any one bet. Any bet can win or lose.
Rows nest from the outside in. An event opens into its markets, player prop markets open into a row per player, and each row is one selection with one cell per sportsbook. In front of the book columns sit two derived cells: Best, the highest price any book is offering on that selection, and Average, the mean of every posted price on it.
Three practical properties of that grid:
The rest of this guide is about the two derived cells, because they are where a fast read goes wrong.
A sportsbook posts a whole ladder of numbers on one market: a total of 44.5, 45.5, 46.5, each with its own pair of prices. One of them is the main line and the rest are alternates, and here is the thing that surprises people, nothing in the odds feed says which is which. There is no flag to read. So the screen works it out.
For each book, it takes every two-sided pair that book posts on that market, strips the vig out of the pair, and keeps whichever line comes out closest to a coin flip. Stripping the vig from a two-way pair is one line of arithmetic:
That is the multiplicative devig, the same method behind the devigging calculator and the one the devigging guide walks through in full. The screen then scores each line by how far that number sits from 50%, and the lowest score wins. A book's main line is the pair it is least sure about.
Two edge cases fall out of the same rule. A book quoting only one line on a market has that line as its main line by default, with no scoring involved. And a market with more than two selections never gets a score at all, because the balance test is defined on a pair, so a three-way market falls back to the first line the feed returns.
The widget above prints the scoring. On its default prices, DraftKings devigs to exactly 50.00% on the over at 45.5 and 41.70% at 46.5, so 45.5 is its main line by a distance. FanDuel lands at 51.08% and 42.55%, same verdict. BetMGM comes out at 54.91% on 45.5 and 46.75% on 46.5, so BetMGM's main line is 46.5 while the other two books are on 45.5. That row is now comparing three books across two different totals, and the grid tells you so in the small grey number beside each price.
The Best column does one thing: it takes the highest decimal price among the cells on that row. That is a correct ranking whenever the cells are prices on the same bet, and no ranking at all when they are not.
On the default row, the best over price is +105 at BetMGM. It is genuinely the longest price in the row. It is also a bet on over 46.5 while the other two cells are bets on over 45.5, which is a different bet with a different chance of landing.
There is a structural version of this worth carrying around. A book whose number sits a point above the field is offering a longer price on the over and a shorter price on the under, because a higher total makes the over harder and the under easier. So an out-of-step book will take the Best cell on exactly one side of the market and can never take it on the other. Check it in the widget: BetMGM wins the over, and the best under is −105 at FanDuel, back on 45.5.
The size of the gap comes off the row itself. Moving from −110 to +105 takes the implied probability you are paying from 52.38% down to 48.78%, so the longer price buys you 3.60 points. What does the extra point of total cost? The two books that price both lines answer that: DraftKings puts it at 8.30 points of win probability, FanDuel at 8.53, an average of 8.41. The trade is 3.60 for 8.41, a net 4.81 points against you.
In money, on illustrative prices: those two books devig over 46.5 to a consensus 42.13%, so $100 at +105 has an expected result of −$13.64, against −$3.51 for $100 at −110 on over 45.5. Both are negative, because both carry the book's margin, which is what sportsbook hold is. The point is the ten dollar gap between them, and that the Best column was never asked to notice it.
The grid is not hiding this. Every price in a collapsed row carries its own line as a small grey number, and the Best cell carries the line it belongs to. Reading that number before the price is the whole skill.
Now push BetMGM's over price up in the widget. At +118 it still tops the Best column. At +120 the row changes shape: BetMGM's 46.5 disappears from the collapsed row entirely and the book shows up at 45.5 instead. The flip sits at about +119.
A book left the summary because its price got better. That reads like a bug and is not one. The collapsed row shows each book once, at its most balanced pair, and a generously one-sided price is precisely what an unbalanced pair looks like. Past +119 the 46.5 pair is further from a coin flip than BetMGM's own 45.5 pair, so 46.5 stops being the line the screen treats as its main one.
Read the right way round, that is the summary doing its job. It is choosing, for each book, the pair that book is most neutral about, which is the pair most comparable to the other books' numbers. A one-sided outlier is exactly the price a summary row should not be built on.
It also means the collapsed row is a starting point rather than an answer. One click expands it, and the alt lines drawer pulls the full ladder for that market, every line every book posts. If you are hunting a specific number, a middle, or a bought half point on a run line or a total, that drawer is where you go, not the summary.
Average is the arithmetic mean of the posted decimal prices. That is not the same as the price implied by the average opinion, and the two always lean the same way: the mean of the prices implies a lower probability than the mean of the probabilities does. The gap runs about the variance of the posted prices over the cube of their mean.
Three cases, computed on illustrative price sets:
| Posted prices (decimal) | Average column | Implied by it | Mean of the books' probabilities | Gap |
|---|---|---|---|---|
| 1.87, 1.91, 1.95, 2.00 | −107 | 51.75% | 51.78% | 0.03 pts |
| 2.80, 3.00, 3.20 | +200 | 33.33% | 33.43% | 0.10 pts |
| 4.00, 5.00, 8.00 | +467 | 17.65% | 19.17% | 1.52 pts |
On a tight two-way market the bias is a rounding error. On a long price where books disagree it is a point and a half, which is large enough to matter. So the Average column is a good consensus eyeball and a bad input to anything. When you want a fair number, devig a specific pair from a specific book, which is what no-vig fair odds are and what the devigging calculator is for.
The screen's default query is not "everything". It keeps main lines priced between roughly −303 and +200, alternates between −250 and +200, and lets any selection whose number sits within a point of zero through at any price.
That band is the reason the Average column behaves. Every price on the default grid sits inside the range where the bias in the table above stays around a tenth of a point. Open the alt lines drawer and you leave the band, and the further out you go the more the Average column drifts long.
It is also the answer to "where did that price go". A heavy favourite shorter than about −303 is not missing because no book posts it. It is outside the window, and the drawer has it.
The grid stays empty until it has enough to query on. It needs a market, either a specific event or a timeframe, and at least one sportsbook selected. Pick a league, then a market, then a timeframe, and rows appear. A blank screen is almost always a missing market or timeframe rather than missing data.
From there:
The Odds Screen shows the board. It does not tell you the board is wrong, and that boundary is deliberate.
The moment you want an opinion rather than a comparison, you are in a different tool. Positive EV prices a soft book against a sharp reference and surfaces the ones sitting above fair value. The Arbitrage Finder hunts the pairs whose combined implied probability comes in under 100%, which is what an arbitrage opportunity is. The tracker and its performance dashboard tell you afterwards whether any of it worked, and closing line value tells you sooner than profit does.
What the Odds Screen is for is the habit underneath all of them. Line shopping is placing every bet at the best price available, and a grid of every price at once is how you do that without opening eight tabs. Just read the small number first.
What is the SmartStake Odds Screen? The SmartStake Odds Screen is a read-only grid that puts every sportsbook's price on the same selection side by side, one row per selection and one column per book, with a Best and an Average column in front. It recommends nothing and takes no bets. It refreshes every 30 seconds while the tab is in front and every price links straight to that book's slip.
Why do two sportsbooks show different numbers on the same row? Because the screen picks each book's main line separately. It devigs every pair a book posts on that market and keeps the one closest to a coin flip, so a book pricing a game a point higher than the field is shown at its own number. The small grey figure beside a price is that book's line, and it is the number to read before comparing prices.
Is the best price in a row always the best bet? No. The Best column ranks by price alone, which only ranks bets that are identical. In a collapsed row a book sitting on a different number can take the Best cell on one side of the market while offering a harder bet. Expand the row, or open the alt lines drawer, and the comparison becomes like for like.
How is the Average column calculated? It is the arithmetic mean of the posted decimal prices for that selection, so it averages prices rather than opinions. Inside the screen's default price window the difference is under a tenth of a percentage point, but on a long price it drifts noticeably long, so read it as a quick consensus eyeball and never as a devig input.
Why is my Odds Screen empty? The grid only queries once you have chosen a market and either a specific event or a timeframe, and once at least one sportsbook is selected. Pick a league, then a market, then a timeframe or an event, and the rows appear.
Can I bet directly from the Odds Screen? Not from the grid itself. Every price is a link into that book's slip, so a click takes you to the book with the selection loaded, but SmartStake records nothing at that moment. If you want the wager tracked, log it in the bet tracker after you place it.
The Odds Screen is a comparison, and a comparison is only worth what its two sides have in common. Most of the grid's work goes into making the sides comparable: it infers each book's main line by devigging, shows each book once at that line, and prints the line beside the price so you can see when a book is out of step.
The Best column ranks the cells by price and nothing else, so it is exactly right when every cell is the same bet and silent when they are not. The Average column averages prices rather than opinions, which is close enough to read at a glance inside the default window and not close enough to calculate with.
Both are fine once you know what they compute. Read the small grey number, expand the row when it disagrees with its neighbours, and the grid does the rest. No screen, however wide, makes a bet safe, and any bet can still lose.
Practical betting guides, new tools, and product updates from the SmartStake team. Unsubscribe in one click, any time.
By providing your email, you are consenting to receive communications from SmartStake. Visit our Privacy Policy for more info

A practical guide to line shopping: what it is, why a better price is free expected value, how it ties into closing line value, and how to find the best odds across books without checking them by hand. Results vary and are never guaranteed.
Jul 21, 2026 · 9 min read

A free tool and guide to converting Kalshi event contract prices into traditional betting odds formats. Learn how Kalshi pricing works, why it is CFTC-regulated, and how to compare value across prediction markets and sportsbooks.
Jul 1, 2025 · 8 min read

A free tool and guide to converting Polymarket prediction market prices into traditional betting odds formats. Learn how Polymarket pricing works and how to compare value across prediction markets and sportsbooks.
Jul 1, 2025 · 8 min read