No-vig calculator in Excel or Google Sheets
Answer: to remove the margin proportionally, turn each decimal price into an implied probability (=1/B2), divide each by the sum of all implied probabilities in that market, and invert to get the fair price. In a sheet with prices in B2:B4 (1X2) the fair probability of row 2 is =(1/B2)/SUMPRODUCT(1/$B$2:$B$4) and the fair price is =1/C2. PinnFeed already returns fair, fairProb and margin on every outcome, computed exactly this way, so you can also skip the formulas.
Formulas#
| Cell | Formula | Meaning |
|---|---|---|
B2:B4 | prices, e.g. 2.10 / 3.45 / 3.60 | decimal odds of one market |
D2 | =SUMPRODUCT(1/B2:B4)-1 | margin (overround), e.g. 0.0438 = 4.38% for the prices above |
C2 | =(1/B2)/(1+$D$2) | fair probability |
E2 | =1/C2 | fair (no-vig) decimal price |
Two-way markets (over/under, moneyline without draw) use the same formulas over two rows. This is the proportional method; other methods (power, Shin) give slightly different numbers for longshots. To check one market without a spreadsheet, use the in-browser no-vig calculator.
Pull live Pinnacle prices into the sheet#
Google Sheets (Apps Script, key kept in Script properties as PINNFEED_KEY):
function pinnacleFair() {
const key = PropertiesService.getScriptProperties().getProperty('PINNFEED_KEY'); // ps_live_...
const url = 'https://pinnfeed.io/v1/odds?sport=soccer&market=moneyline&main=true&limit=20';
const data = JSON.parse(UrlFetchApp.fetch(url, { headers: { 'x-api-key': key } }).getContentText());
const rows = [['Event', 'Outcome', 'Price', 'Fair', 'FairProb', 'Margin', 'MaxStake']];
data.events.forEach(e => e.markets.forEach(m => m.outcomes.forEach(o =>
rows.push([e.home + ' v ' + e.away, o.name, o.decimal, o.fair, o.fairProb, m.margin, m.maxStake]))));
const sh = SpreadsheetApp.getActive().getSheetByName('Pinnacle') || SpreadsheetApp.getActive().insertSheet('Pinnacle');
sh.clearContents().getRange(1, 1, rows.length, rows[0].length).setValues(rows);
}
Run it from a time-driven trigger: Sheets refresh trigger. Do not put the key in an IMPORTDATA cell; anyone with view access can read it (why). Excel: Power Query.
Compare a price you were offered#
With your book's price in F2 and the fair probability in C2, expected value per unit is =F2*C2-1. A positive number means the offered price is above Pinnacle's no-vig price; it is an estimate, not a promise. Sizing: Kelly with fair odds.
Plans#
fair, fairProb and margin are on every plan. Free is 30 s delayed (2 sports, 1,000 requests/day); Hobby (€29/mo) is real-time REST; Builder (€99/mo) adds WebSocket push. 3-day trial; a card is required and it is charged after day 3 unless you cancel.
Educational content for adults (18+). No tips, no guaranteed profit.
Related: Pinnacle margin calculator.
Questions people ask#
Why use Pinnacle prices for no-vig?#
Pinnacle's low margins make its no-vig line a common reference. It is still an estimate of the true probability.
Does the formula work for 3-way markets?#
Yes. Sum the implied probabilities of all three outcomes, as in the table.
Can I get fair odds without any formula?#
Yes. Each PinnFeed outcome has fair and fairProb: no-vig fair odds API.