Signals & Surfaces

Fitted implied probability surfaces derived from multi-strike order books. Updated every 5 minutes. Three types: survival, density, and barrier.

GET/surfaces
sdkclient.signals.surfaces(**params)

Latest surface for each (series, event) pair.

Parameters
underlyingstr
Filter by underlying (e.g., "BTC").
surface_typestr
"survival", "density", or "barrier".
limitint= 100
Results per page.

Surface types: survival — P(X > strike), monotonically decreasing. density — P(lower < X < upper), probability density across buckets. barrier — P(X hits strike before expiry).

surfaces = client.signals.surfaces( underlying="BTC", surface_type="survival", ) for s in surfaces: print(s.series_id, s.event_id, s.n_strikes)
jsonResponse
{ "data": [{ "series_id": "btc-multi-strikes-weekly", "event_id": "252326", "surface_type": "survival", "underlying": "BTC", "computed_at": 1710400200000, "implied_mean": "84250.00", "implied_cv": "0.032", "implied_skew": "-0.18", "n_strikes": 162 }], "meta": { "cursor": "...", "has_more": true } }
GET/surfaces/{series_id}/{event_id}
sdkclient.signals.surface(series_id, event_id)

Get the latest fitted surface for a specific series and event.

surface = client.signals.surface( "btc-multi-strikes-weekly", "252326" ) print(surface.implied_mean, surface.implied_cv)
jsonResponse
{ "data": { "series_id": "btc-multi-strikes-weekly", "event_id": "252326", "surface_type": "survival", "underlying": "BTC", "computed_at": 1710400200000, "implied_mean": "84250.00", "implied_cv": "0.032", "implied_skew": "-0.18", "n_strikes": 162, "strikes": [ { "strike": "80000", "raw_prob": "0.9120", "fitted_prob": "0.9085" }, { "strike": "84000", "raw_prob": "0.5810", "fitted_prob": "0.5775" }, { "strike": "88000", "raw_prob": "0.0890", "fitted_prob": "0.0862" } ] } }
GET/surfaces/{series_id}/{event_id}/history
sdkclient.signals.history(series_id, event_id, **params)

Historical surface snapshots, ordered by computation time.

Parameters
afterint
Surfaces computed after this timestamp (ms).
beforeint
Surfaces computed before this timestamp (ms).
orderstr= "desc"
Sort order.
history = client.signals.history( "btc-multi-strikes-weekly", "252326", after="2024-03-10", ) for surface in history: print(surface.computed_at, surface.implied_mean)
jsonResponse
{ "data": [{ "series_id": "btc-multi-strikes-weekly", "event_id": "252326", "surface_type": "survival", "underlying": "BTC", "computed_at": 1710400200000, "implied_mean": "84250.00", "implied_cv": "0.032", "implied_skew": "-0.18", "n_strikes": 162, "strikes": [ { "strike": "80000", "raw_prob": "0.9120", "fitted_prob": "0.9085" }, { "strike": "84000", "raw_prob": "0.5810", "fitted_prob": "0.5775" }, { "strike": "88000", "raw_prob": "0.0890", "fitted_prob": "0.0862" } ] }], "meta": { "cursor": "eyJ0IjoxNzEwNDAwMjAwfQ", "has_more": true } }