vig-adjusted-ev draft
EV computed against a devigged fair line vs. EV computed against the raw vigged book line, and why the distinction matters
- Tags
- ev vig devig edge probit
- Vocabulary
- vig_adjusted_ev
- EV computed using the devigged fair probability as the win-probability input. The meaningful number for sharp pricing.
- raw_line_ev
- EV computed using the price's own implied probability (vigged) as the win-probability input. Always zero by construction; not actually informative.
- vf_target
- Kairos shorthand for the devigged fair price on a given side — the American odds equivalent of the fair probability after probit devigging.
EV is only as meaningful as the probability you feed it. A common confusion is which probability is "fair": the one implied by the price you're betting against, or the one implied by the devigged market belief. They differ by the vig, and the EV numbers they produce mean very different things.
The point of vig-adjusted EV is to ask the right question: "am I beating the market's underlying belief about this outcome?" That's the question that determines whether a bet is actually profitable long-run. Computing EV against the price's own raw implied probability instead answers the meaningless question "am I beating the price including the book's margin?" — and the answer to that, by construction, is always zero.
The mechanics
To compute vig-adjusted EV on a binary market:
- Take the book's two-sided posted line (e.g. +150 / −180).
- Devig both sides per
devigging— Mimir's canonical method is probit, binary markets only — to get fair probabilitiesp_A_fair,p_B_fairthat sum to 1.0. - For the side you're considering (say Side A), use
p_A_fairas your win probability and the raw posted decimal odds for Side A as your payout. - Apply the EV formula from
expected-value-basic:EV = p_A_fair × decimal_A − 1.
The asymmetry is the whole game: the probability comes from the devigged consensus (the market's true belief), while the payout comes from the vigged posted price (what the book actually pays you). The mismatch is where the edge lives — when it exists at all.
Kairos implements this directly in kairos/core/ev_edge.py::ev_pct_vs_vf_target:
p_fair = implied_prob_from_american(vf_target) # devigged-side American odds
dec = decimal_odds_from_american(am) # raw posted price
return (p_fair * dec - 1.0) * 100.0
vf_target is the devigged American odds for the side under consideration (Kairos's "vig-free target"). am is what the book is actually quoting. The returned percentage is the per-dollar ROI under the assumption that the devigged consensus is correctly capturing fair probability.
Why this matters: the same bet, two EV numbers
A retail bettor sees a price of +150 and thinks "if my model says this wins 41% of the time, that's 0.41 × 2.50 − 1 = 2.5% edge." That's correct given their model. But what does it mean? It means they're claiming their 41% belief is enough to beat a price whose vigged-implied probability is 40%. That's a 1-percentage-point gap. After accounting for the vig embedded in the posted line, the gap may not actually clear.
Vig-adjusted EV asks instead: take the devigged market belief — say it's 0.378 after probit on both sides — and compute against that benchmark. Now the same +150 price, viewed against p = 0.378, gives 0.378 × 2.50 − 1 = −5.5%. The bet is negative EV against the market's underlying belief.
These two numbers describe different positions:
- EV vs. raw line ≈ +2.5%: "Compared to the price including margin, my 41% belief is slightly better."
- EV vs. devigged fair line ≈ −5.5%: "Compared to the market's actual belief about this outcome, 41% is worse, and the price isn't generous enough to overcome that."
A sharp player only acts on the second. The first is only meaningful if you can actually act as the bookmaker — i.e. if you can collect the vig yourself. Most bettors can't, so vig-adjusted EV is the relevant quantity.
Worked example
Take the binary moneyline from book-vig-overround and devigging: Side A at +150, Side B at −180.
Step 1: Compute raw implied probabilities.
- A:
1 / 2.50 = 0.4000 - B:
1 / 1.5556 ≈ 0.6429 - Sum: 1.0429 → 4.29% overround
Step 2: Devig (probit, binary, per devigging).
From the worked example in devigging:
- p_A_fair ≈ 0.378
- p_B_fair ≈ 0.622
- Sum: 1.000 (vig stripped)
Step 3: Compute EV on Side A two ways.
You're considering taking Side A at the posted +150 (decimal 2.50).
- EV against raw implied probability (treating the price's own 0.4000 as truth):
0.4000 × 2.50 − 1 = 1.0000 − 1 = 0.0000→ 0.0% (breakeven)-
This is always zero. The price-implied probability and the price are by construction in lockstep — that's what implied probability is. It's not an informative number.
-
EV against the devigged fair probability (Kairos's
ev_pct_vs_vf_target): 0.378 × 2.50 − 1 = 0.945 − 1 = −0.055→ −5.5%- This is informative. It says: the market's underlying belief about A is only 37.8%, so taking +150 (which pays as if A wins 40% of the time) is a money-loser by 5.5% per dollar staked over a long run.
The vig has been redistributed onto Side A: the posted price overpays you (looks like 40%) relative to the true belief (37.8%), but not enough to compensate for the asymmetry of the bet. You're taking the worse half of a vigged market.
Step 4: Look at Side B for comparison.
Side B is posted at −180 (decimal 1.5556).
- EV vs. devigged:
0.622 × 1.5556 − 1 ≈ 0.9676 − 1 = −0.0324→ −3.2%
Side B is also negative EV against the devigged line, just less negative — that's the asymmetric vig at work. Books often price the favorite's side with slightly lower vig than the underdog's. Neither side is profitable; the book's margin (~4% overround) ensures both sides lose money in expectation against the consensus belief.
For either side to be vig-adjusted +EV, the book's price would need to drift from the consensus — either the price stays put while the consensus moves, or your p_fair comes from a different (and you believe better) source than this book's own devigged line.
Gotchas
- EV against the raw vigged line is structurally zero on every market. Computing it is a category error: you've used the price to define the probability, then "tested" the price against it. The number isn't a 0% edge in any informative sense — it's a tautology. Always devig first.
- Vigged-EV consistently overstates true edge by approximately the vig. A trader using their own model and computing EV against the raw line is implicitly claiming they can beat the book including the book's margin. Subtracting the vig (which is roughly what devigging accomplishes) deflates the apparent edge to its real magnitude. If the apparent edge against the raw line is smaller than the vig, the bet is actually negative EV.
- Devig method choice changes the fair probability — and thus the EV number. Mimir's canonical method is probit, applied consistently. Mixing methods (say, devigging the favorite with multiplicative and the underdog with probit) produces incoherent fair probabilities that don't sum to 1.0 and a meaningless EV. See
devigging. - Cross-book consistency matters. If you're computing vig-adjusted EV against a multi-book consensus (
consensus-fair-line), every included book must be devigged the same way before aggregation. Inconsistent devigging across books bakes methodological noise into the consensus and corrupts every downstream EV. - The fair probability you use defines the question you're answering. Kairos's
vf_targetcomes from devigging the same book's two-sided line — so the question is "is this book mispriced relative to its own underlying belief?" That's almost never true; books don't accidentally misprice their own market against themselves. The interesting question is usually "is this book's line off the cross-book consensus", which requires plugging in the consensus's fair probability rather than this book's. The mechanism is the same; the input changes. - Devigging assumes binary. Mimir's canonical scope is two-sided markets. Multi-way markets (3+ outcomes — soccer 1X2, futures, prop multi-options) are out of scope for v1; computing vig-adjusted EV on those requires a multi-way devig method that Mimir doesn't yet endorse.
Open questions
- Kairos's
vf_targetis computed from the local book's own two-sided line (cross-side flip viaopp_side_price). That makes Kairos's vig-adjusted EV inherently a within-book calculation. Mimir's downstream consumers may want vig-adjusted EV against a cross-book consensus fair line, not the local book's devigged self. Whether Mimir documents the within-book version as canonical (matching Kairos) or the cross-book version as canonical (matching what most sharp pricing actually does) is a choice for the user. - The relationship between vig-adjusted EV and "Kelly fraction" / sizing is real and load-bearing. Kelly takes EV (per dollar) and variance to produce a stake fraction. Mimir doesn't yet have an entry on this; whether the Kelly write-up belongs in EV land or in a separate sizing concept is open.
- Pushes (refunded stakes on spreads/totals at the exact number) require three-way EV:
p_win × (d − 1) + p_push × 0 − p_loss × 1. Vig-adjusted EV with pushes is well-defined but Mimir doesn't currently treat it. Whether to add a dedicated "push-aware EV" entry is open.