Data
Signals & Surfaces
Fitted implied probability surfaces derived from multi-strike order books. Updated every 5 minutes. Three types: survival, density, and barrier.
GET
/surfacessdk
client.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}sdk
client.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}/historysdk
client.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 }
}