percentageOdds must land exactly on a step of the odds ladder, or the order is rejected. The
ladder exists to prevent diming — undercutting a resting quote by a meaninglessly small increment.
Read the step size from oddsLadderStepSize on
GET /metadata/obv3.
Units
So with a step size of 125, the valid values are
0.000%, 0.125%, 0.250%, …. 40.125% is on the
ladder, and 40.100% is not.
oddsLadderStepSize is returned as a number from 0 to 1000, which reads as a percentage like this:
The rule
An order’spercentageOdds is accepted when all of the following hold:
0 < percentageOdds < 10^20— strict on both ends.percentageOdds % (oddsLadderStepSize × 10^15) == 0, or the value is one of two hardcoded exceptions.- The two exceptions are exactly 0.1% (
10^17) and exactly 99.9% (999 × 10^17). They are always legal regardless of step size, so the extreme ends of the book stay quotable.
POST /orders-v3 per row:
Checking and rounding
Read the step size once at startup, then keep the arithmetic in integers.Example of turning a probability into a valid price
This is the full path from a model output to a submittable field. Multiply into integer space first, apply your margin in integer space, then snap.40250000000000000000 — 40.250%, one step below the model’s 40.300%.
Do not hardcode the step size
oddsLadderStepSize is 125 today and can change in the future.
STEP from it. See
Exchange metadata for the other values.
Related
Exchange metadata
Where
oddsLadderStepSize comes from.Unit conversions
Implied/decimal/American odds, the 1e20 scale, base units, and time formats in one place.