Price Candles
/prices-history endpoint — those arrive as {t, p} (single price per
tick, not OHLC), so PolySimulator buckets them server-side into the
requested interval and aggregates open (first tick), high (max),
low (min), close (last tick) per bucket. Volume is sourced from
your internal fills on PolySimulator, not Polymarket’s chain volume.
Each bucket aggregates every tick that falls within it, so candles show
proper OHLC variation whenever the underlying tick stream has it. A bucket
with a single tick reports
O = H = L = C — see the note under
Response.Query Parameters
Available Intervals
Example
Response
If a bucket has only a single tick,
o == h == l == c — that’s correct
behaviour for a slow-moving market, not a bug.
Backtesting Example
Migrating from Polymarket
Polymarket’s CLOB/prices-history returns the raw {t, p} tick stream
without bucketing. If you’re porting a bot that does its own bucketing
client-side, you can either:
- Trust ours — drop your bucketing code and use the
t/o/h/l/c/vshape directly. The interval parameter behaves identically to a pandasresample("1H").agg({"o": "first", "h": "max", ...}). - Keep yours — fetch raw ticks via Polymarket’s Gamma API, since PolySimulator does not (yet) expose the un-bucketed feed. Cross-host strategies that compare the two should bucket identically client-side.
Next Steps
- Batch Prices — Multi-market price lookup
- Order Book — L2 depth for fill-price modelling
- Equity Curve — Track your portfolio over time