How the price moves.
One deterministic step per tick. No discretionary pricing step exists anywhere in the process below.
Committed before use
The seed stays secret until the epoch closes. The commitment is public from the first tick, so a seed cannot be chosen to fit a price path that already happened.
commitment = SHA-256(server_seed), published at epoch start
The per-tick draw
The digest depends only on the seed, the instrument, and the tick index , never on who is asking or what they have staked.
digest = HMAC-SHA256(seed, "tick:{instrument}:{index}")
u = int(first 13 hex chars of digest, base 16) ⁄ 2⁵²
The price step
The −σ²/2 term is the Itô correction. Without it the process drifts upward on average, breaking the martingale property every multiplier assumes.
ln S(n+1) = ln S(n) + σ_tick · Z(n) − σ_tick² ⁄ 2
True win probability
Not 0.5. The gap from 0.5 widens with duration T, so each side is priced against its own true probability rather than a flat guess.
p(Rise) = Φ(−σ√T⁄2) p(Fall) = Φ(+σ√T⁄2)
The payout multiplier
A zero-edge multiplier would be exactly 1/p. h is the disclosed house edge , it changes the multiplier and nothing else about how a contract prices or settles.
m = (1 − h) ⁄ p
A worked example, computed live.
The actual figures the pricing engine returns for SYNTH_10 at a 60-tick duration:
| Side | True p | Edge h | Multiplier m |
|---|---|---|---|
| Rise | 0.499972 | 0.0500 | 1.90 |
| Fall | 0.500028 | 0.0500 | 1.89 |
Expected value, every contract
−5.00%
Because m < 1/p whenever h > 0, expected value is negative by exactly h on every contract , a property of the formula, not of any outcome.