A price history is only half finished while the margin is still in it. To turn a stored series of Pinnacle prices into a fair price series, remove the margin on every snapshot separately, with one method you picked in advance, and only on markets that were complete at that moment. Aggregate first and remove later, and the margin leaks into your results.
Remove the margin per snapshot
The order matters because the margin is not constant in the way the shortcut assumes. Take a two-outcome market priced at 2.00 and 1.8182: the implied probabilities are 0.500 and 0.550, a 5% overround, and proportional removal gives fair prices of 2.10 and 1.9091. Later the same market moves to 1.50 and 2.6087, still a 5% overround, and the fair prices are 1.575 and 2.7391.
Now compare the two ways to summarize that series. Averaging the raw prices of the first outcome gives 1.75, and removing a 5% margin from that average implies a fair price of 1.84. Averaging the two fair probabilities instead gives 55.56%, a fair price of 1.80. Same inputs, different answer, and the shortcut is the one that is wrong. The bias is small in one market and compounds across a dataset.
One method for the whole series
Pick the removal method before you touch the data and apply it to every row. Proportional removal divides each implied probability by their sum; the power method fits an exponent instead, and the two disagree on uneven prices. Either is defensible. Mixing them across timestamps is not, because part of the movement you would measure is the method, not the market.
Write the choice into the pipeline, next to the code that stores the prices, so a chart produced in March stays comparable with one from October.
Complete markets or no row
Margin removal is only defined on a complete market: every mutually exclusive outcome, from the same market, at the same moment. A snapshot that is missing the draw in a soccer match is not a market with a gap in it; for this purpose it is no market at all. Drop the row, log why, and move on.
Two checks catch most bad rows. The implied probabilities should sum to slightly above one; a sum below one is an underround and usually means an incomplete or mismatched set. The outcome count should also match the market definition. The no-vig calculator applies the same checks interactively: it flags an underround rather than normalizing it and accepts up to twelve outcomes, as its page states, checked 2026-09-30.
The close is just the last honest row
A fair closing price is not a special calculation. It is the fair price of the last complete prematch snapshot you recorded before the market shut. That is why the historical data guide insists on writing the cutoff rule before sampling: define the close as a fixed interval before the scheduled start, apply it to every event, and never reach backward for a nicer number.
Gaps in the raw history stay gaps in the fair history. If your recorder was down for an hour, no normalization rule can reconstruct what the margin did while you were away.
Per snapshot, one method, complete markets, honest close. Do those four and the fair series inherits the trust of the raw one.