How to price a horizon contract: the fair strike, your edge and what a quote costs
A horizon contract's fair strike is the median of the number at expiry. How to read it from prices or buckets, what an edge is worth, and how to size it.
Short answer: The price of a horizon contract is fixed: you pay your size and a win pays 2×. What you price is the strike, and the fair strike is the median of the number at expiry, the level it's as likely to finish above as below. Higher at a strike K is worth 2 × P(X > K) − 1 per $1 of size, and Lower is the negative of that. On a live price over a short horizon, the median is about spot and volatility gives you the win chance; on an event, you read the median from the bucket prices. At a 55% win chance, the expected profit is 10¢ per $1 of size, and the full Kelly fraction is 10%.
A horizon contract pays 2× if a number finishes on your side of a strike, and the order book quotes the strike. This guide is the math behind one: where fair is, what being off fair is worth, and what it costs to trade there.
The payoff in one line
With size s, strike K and the number X at expiry, ignoring pushes:
| Side | Win chance | Expected PnL |
|---|---|---|
| Higher | p = P(X > K) | s × (2p − 1) |
| Lower | 1 − p | s × (1 − 2p) |
So the contract is fair exactly where p = 50%, which is the median of X. A strike below the median favours Higher and a strike above it favours Lower.
On a live feed: the win chance comes from volatility
Over a short horizon, drift is tiny against volatility, so the median of the price at expiry is about spot. If moves are roughly normal with standard deviation σ over the horizon and your fair value is m:
P(X > K) ≈ Φ((m − K) ÷ σ)
Real moves aren't normal, so it's better to measure. For every second from Sep 27 to Oct 26, 2026, we checked where Bitcoin was one minute later, and how often it finished above a strike set some distance from the starting price (full table):
| Strike vs spot ($) | Higher wins (%) | Expected PnL per $1 of size (¢) |
|---|---|---|
| −25 | 83.3 | +66.6 |
| −10 | 68.5 | +37.0 |
| +10 | 30.8 | −38.4 |
| +25 | 16.3 | −67.4 |
Over that month, the 70¢ and 30¢ points sat about $11 either side of spot, which gives a one-sigma move of about $21 a minute.
So a contract's value is very sensitive to where its strike sits against spot. A $10 difference in strike is worth about 37¢ per $1 of size on a one-minute contract. It's why buying at a strike that's already stale is so expensive, and why the books re-quote several times a second.
On an event: the median comes from the buckets
For an election or a rate, there's no feed. But event venues list the whole distribution as buckets, and any ladder of prices gives you the median. Here are Polymarket's Republican House seats on Oct 29, 2026 (midpoints), read as a distribution:
| Republican seats | Mid (¢) | Probability, normalised (%) | Cumulative (%) |
|---|---|---|---|
| Under 190 | 33.5 | 32.73 | 32.73 |
| 190–194 | 13 | 12.70 | 45.43 |
| 195–199 | 14 | 13.68 | 59.11 |
| 200–204 | 13.5 | 13.19 | 72.30 |
| 205–209 | 14 | 13.68 | 85.98 |
| 210–214 | 3.7 | 3.62 | 89.59 |
| 215–219 | 5.95 | 5.81 | 95.41 |
| 220–224 | 3.25 | 3.18 | 98.58 |
| 225–229 | 1.2 | 1.17 | 99.76 |
| 230 or more | 0.25 | 0.24 | 100.00 |
The steps:
- Normalise. The midpoints add up to 102.35¢, so divide each by 1.0235.
- Find the bucket holding 50%. Cumulative probability passes 50% inside 195–199.
- Interpolate. Treat seats as continuous, with the bucket running from 194.5 to 199.5. The median is 194.5 + 5 × (50 − 45.43) ÷ 13.68 = 196.2 seats.
Kalshi's 11 buckets gave 196.1 that same day, a useful cross-check. Spreading each bucket's probability evenly is an assumption, and it only matters inside a bucket. On that distribution:
| Strike (seats) | Higher wins (%) | Higher's expected PnL per $1 (¢) | Lower's expected PnL per $1 (¢) |
|---|---|---|---|
| 194.5 | 54.57 | +9.1 | −9.1 |
| 195.5 | 51.83 | +3.7 | −3.7 |
| 196.5 | 49.10 | −1.8 | +1.8 |
| 197.5 | 46.36 | −7.3 | +7.3 |
So one seat of strike was worth about 5.5¢ per $1 of size in the middle of this market. A date market works the same way, with "by Nov 20" prices as the cumulative column, and the US–Iran post goes through one.
One complication: when a single value holds a lump of probability, the distribution has a jump and may have no strike at 50%. A Fed decision is the clearest case (the December 2026 meeting traded 76.5¢ for a hike). A book on it would have nowhere to trade near 50/50, which is why Rizon lists the rate at the end of 2027 instead, where the distribution is smooth.
The open-source bots implement all this in src/dist.ts: buckets, ladders and point masses all go into one piecewise-linear CDF, and the quotes come from its percentiles.
What an edge is worth
Say your forecast of the median is δ above the market's and the strike sits at the market's median. Your win chance on Higher is about 50% + f × δ, where f is the density at the strike. For a normal distribution, f = 0.399 ÷ σ, so:
| Your edge on the median (σ) | Win chance (%) | Expected PnL per $1 of size (¢) | Sharpe per trade | Full Kelly fraction (%) |
|---|---|---|---|---|
| 0.05 | 52.0 | 4.0 | 0.04 | 4.0 |
| 0.10 | 54.0 | 8.0 | 0.08 | 8.0 |
| 0.20 | 57.9 | 15.9 | 0.16 | 15.9 |
| 0.50 | 69.1 | 38.3 | 0.41 | 38.3 |
This is the argument for trading at the median: the density is highest there, so the same forecast edge is worth more than at any other strike. Why every market on Rizon is 50/50 has the comparison with contracts priced at other levels.
What a quote costs
There's no fee on Rizon, so the only cost is the spread: the distance from the midpoint to where you trade. If you buy, you take the best ask, a strike above the midpoint. What that distance costs depends on its size against σ, the horizon's one-sigma move. It's 1 − 2Φ(−h ÷ σ) per $1 of size, where h is the half-spread, or about 0.8 × h ÷ σ:
| Half-spread ÷ σ | Win chance with no edge (%) | Cost per $1 of size (¢) |
|---|---|---|
| 0.01 | 49.6 | 0.8 |
| 0.02 | 49.2 | 1.6 |
| 0.05 | 48.0 | 4.0 |
| 0.10 | 46.0 | 8.0 |
Every order book has this cost, and it moves with the spread. GET /markets publishes each book's bid, ask and sigma, so you can work it out at any moment.
The same measure works on a cents market. A book 1¢ wide at 50¢ leaves a taker a 49.5% win chance at the ask, a cost of 1¢ per $1 paid. Polymarket and Kalshi then charge takers about 1.75¢ a share at 50¢, about 3.5¢ per $1 paid, on top of that. Rizon charges no fee, so at the same spread it's cheaper by exactly that much.
Resting your own order on the book, rather than taking one, turns the spread in your favour, and the market-making guide covers that.
Sizing it
A horizon contract is an even payoff, so the Kelly fraction is simple: f = 2p − 1 of your bankroll. At 55% that's 10%, and at 52% it's 4%. Most traders use a fraction of Kelly, because your p is an estimate and full Kelly is punishing when it's wrong. Two more things are specific to this contract:
- Overlapping rolling contracts aren't independent. Ten 5-minute positions opened a minute apart share most of their price path, so they add up to one larger position.
- Your size is fully paid. Everything you commit is out of your balance until expiry, so capital is tied up for the horizon. On a fixed market, that can be a long time.
FAQ
What is the fair price of a horizon contract?
The price is fixed at 50/50: you pay your size, and a win pays 2×. What's fair or unfair is the strike, and the fair strike is the median of the number at expiry.
How do you calculate the expected value of a horizon contract?
Multiply your size by 2p − 1, where p is your chance of winning. At $100 and a 55% win chance, that's +$10. Pushes return your size, so they don't count for or against.
How does volatility affect a horizon contract?
It doesn't change the price, which is fixed. It changes what a given distance from the strike is worth: the higher the volatility, the closer to 50% a strike $10 from spot is. Volatility is why a longer horizon has a wider spread in dollars at about the same cost in win chance.
How do you convert an event contract's price into a horizon contract's strike?
If a contract paying above strike K trades at c cents and you have a σ for the number, the 50/50 strike is about K + σ × Φ⁻¹(c). With a whole ladder of prices, use the cumulative method above instead. Strike vs probability goes through the conversion with Bitcoin data.
Does a horizon contract have time decay?
It has no premium to decay, because the price is fixed and there's no selling it back. An open position's value still changes with time: as expiry nears, a contract in the money becomes more likely to win, and its hedged value moves closer to 2×.
Can I price a horizon contract with Black-Scholes?
For a price feed, the Black-Scholes value of a cash-or-nothing call is its discounted risk-neutral chance of finishing above the strike, N(d2), and setting that to 50% gives the fair strike. Over seconds to minutes, that's spot, near enough, and real short-horizon moves are too fat-tailed for the normal curve to give good numbers away from the median. For events, there's no underlying to hedge with, so you work from the distribution directly.