ORIA
Activity snapshots
One row per coin per cycle: a full census of the options book, plus triple-hash change detection over it. Every option is fingerprinted (see /v1/oria/fingerprints), then three independent hashes are computed over the whole book: state (what each option is doing), flow (where capital is moving) and structure (how concentrated the cohorts are). Comparing each hash to the previous cycle turns "something changed" into a field, and which combination changed tells you what kind of change it was. Six rows per cycle, so the entire history is cheap to pull. Source: deribit_options_oria_activity_snapshots, ORIA Layer 5.
/v1/oria/snapshotscoreproalphaQuery Parameters
coinstringrequiredUnderlying asset. Required.
BTCETHSOLpatternstringoptionalFilter by change_pattern, e.g. FR for stealth accumulation. Alpha, since it filters on the change-detection layer.
FRSFRSFchanged_onlybooleanoptionalOnly cycles where at least one hash changed. Note this currently keeps 99.9% of cycles: see change_pattern for why. Kept because it will discriminate again if the hash sensitivity is retuned.
truefromstringoptionalStart UTC (ISO 8601). Default: latest snapshot.
2026-08-01T00:00:00ZtostringoptionalEnd UTC (ISO 8601). Default: now.
2026-08-07T00:00:00ZlimitintegeroptionalMax rows returned. Default 500. The effective ceiling is your tier row limit, see Tiers and Limits.
1000Response Schema
Fields marked pro require a Pro subscription. Fields marked alpha require Alpha.
| Field | Type | Tier | Description |
|---|---|---|---|
timestamp | datetime | core | ORIA cycle timestamp in UTC, aligned to a 10-minute boundary. |
coin | string | core | Underlying asset. One row per coin per cycle. |
total_options | integer | core | Options tracked this cycle. |
active_options | integer | core | Options with any volume this cycle. |
call_options | integer | core | Calls tracked. |
put_options | integer | core | Puts tracked. |
no_trades_options | integer | core | Options with no executed trades this cycle. |
whale_volume_options | integer | core | Options in the WHALE volume bucket. |
high_volume_options | integer | core | Options in the HIGH volume bucket. |
medium_volume_options | integer | core | Options in the MEDIUM volume bucket. |
low_volume_options | integer | core | Options in the LOW volume bucket. |
total_volume_usd | float | core | Total traded volume across the book, USD. |
call_volume_usd | float | core | Call volume, USD. |
put_volume_usd | float | core | Put volume, USD. |
buy_volume_usd | float | core | Buy-aggressor volume, USD. |
sell_volume_usd | float | core | Sell-aggressor volume, USD. |
total_whale_volume_usd | float | core | Volume from trades at or above $250K, USD. |
gross_inflow_usd | float | core | Sum of positive volume changes across options, USD. |
gross_outflow_usd | float | core | Sum of negative volume changes, USD, as a positive number. |
call_inflow_usd | float | core | Gross inflow into calls, USD. |
call_outflow_usd | float | core | Gross outflow from calls, USD. |
put_inflow_usd | float | core | Gross inflow into puts, USD. |
put_outflow_usd | float | core | Gross outflow from puts, USD. |
flow_options_count | integer | core | Options whose volume changed enough to be classified into a flow bucket. |
total_cohorts | integer | core | Cohorts in the 7 moneyness x 4 expiry grid carrying data this cycle. |
call_put_ratio | float | pro | Call volume against put volume See detail ↓ |
net_flow_usd | float | pro | Net capital direction this cycle See detail ↓ |
flow_balance_ratio | float | pro | How one-sided was the flow? See detail ↓ |
whale_volume_pct | float | pro | How much of the tape was institutional? See detail ↓ |
bullish_volume_pct | float | pro | Share of volume in bullish positioning See detail ↓ |
bearish_volume_pct | float | pro | Share of volume in bearish positioning See detail ↓ |
overall_positioning | string | pro | Where is the book leaning? See detail ↓ |
overall_flow_direction | string | pro | Which way is capital moving? See detail ↓ |
overall_execution_skew | string | pro | Which side was aggressing? See detail ↓ |
aggressive_buying_options | integer | core | Options classified AGGRESSIVE_BUYING. |
moderate_buying_options | integer | core | Options classified MODERATE_BUYING. |
neutral_pressure_options | integer | core | Options with balanced aggressor flow. |
moderate_selling_options | integer | core | Options classified MODERATE_SELLING. |
aggressive_selling_options | integer | core | Options classified AGGRESSIVE_SELLING. |
high_whale_options | integer | core | Options with heavy whale participation. |
moderate_whale_options | integer | core | Options with moderate whale participation. |
surge_count | integer | core | Options in the SURGE flow bucket. |
inflow_count | integer | core | Options in the INFLOW flow bucket. |
outflow_count | integer | core | Options in the OUTFLOW flow bucket. |
dump_count | integer | core | Options in the DUMP flow bucket. |
highly_concentrated_cohorts | integer | core | Cohorts where volume sits in very few instruments, by HHI. |
moderately_concentrated_cohorts | integer | core | Cohorts with moderate HHI concentration. |
competitive_cohorts | integer | core | Cohorts with volume spread across many instruments. |
dispersed_cohorts | integer | core | Cohorts with no concentration at all. |
monopoly_cohorts | integer | core | Cohorts where a single instrument dominates. |
oligopoly_cohorts | integer | core | Cohorts dominated by a handful of instruments. |
balanced_cohorts | integer | core | Cohorts with balanced instrument participation. |
fragmented_cohorts | integer | core | Cohorts with highly fragmented participation. |
extreme_bullish_cohorts | integer | core | Cohorts positioned extremely bullish. |
bullish_cohorts | integer | core | Cohorts positioned bullish. |
neutral_cohorts | integer | core | Cohorts with no directional lean. |
bearish_cohorts | integer | core | Cohorts positioned bearish. |
extreme_bearish_cohorts | integer | core | Cohorts positioned extremely bearish. |
strong_inflow_cohorts | integer | core | Cohorts taking strong capital inflow. |
inflow_cohorts | integer | core | Cohorts taking inflow. |
balanced_flow_cohorts | integer | core | Cohorts with balanced flow. |
outflow_cohorts | integer | core | Cohorts losing capital. |
strong_outflow_cohorts | integer | core | Cohorts losing capital strongly. |
strong_buy_cohorts | integer | core | Cohorts with strong buy-side aggression. |
mild_buy_cohorts | integer | core | Cohorts with mild buy-side aggression. |
neutral_trade_cohorts | integer | core | Cohorts with balanced aggression. |
mild_sell_cohorts | integer | core | Cohorts with mild sell-side aggression. |
strong_sell_cohorts | integer | core | Cohorts with strong sell-side aggression. |
no_data_cohorts | integer | core | Cohorts with no executed trades this cycle. |
high_whale_cohorts | integer | core | Cohorts with heavy whale participation. |
moderate_whale_cohorts | integer | core | Cohorts with moderate whale participation. |
low_whale_cohorts | integer | core | Cohorts with light whale participation. |
no_whale_cohorts | integer | core | Cohorts with no whale trades. |
state_hash | string | alpha | What every option is doing, as one value. See detail ↓ |
flow_hash | string | alpha | Where capital is moving, as one value. See detail ↓ |
structure_hash | string | alpha | How concentrated the book is, as one value. See detail ↓ |
previous_state_hash | string | alpha | The previous cycle state_hash, supplied so you do not have to hold state. |
previous_flow_hash | string | alpha | The previous cycle flow_hash. |
previous_structure_hash | string | alpha | The previous cycle structure_hash. |
state_changed | boolean | alpha | state_hash differs from the previous cycle. NULL-safe: two consecutive quiet cycles read as unchanged, not changed. |
flow_changed | boolean | alpha | flow_hash differs from the previous cycle. |
structure_changed | boolean | alpha | structure_hash differs from the previous cycle. |
any_change | boolean | alpha | Any of the three hashes moved. True on 99.9% of cycles as measured over the last six months, because state_hash is saturated. See change_pattern. |
change_pattern | string | alpha | Which combination of hashes moved, and therefore what kind of change it was. See detail ↓ |
changed_cohorts_count | integer | alpha | Cohorts whose classification changed this cycle. |
changed_cohort_names | array | alpha | Which cohorts changed, by name. Turns a count into somewhere to look. |
top_flow_instruments | json | alpha | The instruments carrying the largest flow this cycle, with their USD amounts. The bridge from a coin-level reading to specific options. |
contradictory_cohorts | json | alpha | Where is the book disagreeing with itself? See detail ↓ |
contradictory_count | integer | alpha | How many cohorts are contradictory this cycle. |
positioning_outlier_cohorts | json | alpha | Cohorts whose positioning deviates most from the book. |
positioning_outlier_count | integer | alpha | How many positioning outliers. |
execution_outlier_cohorts | json | alpha | Cohorts whose execution skew deviates most from the book. |
execution_outlier_count | integer | alpha | How many execution outliers. |
whale_outlier_cohorts | json | alpha | Cohorts with anomalous whale concentration. |
whale_outlier_count | integer | alpha | How many whale outliers. |
flow_outlier_cohorts | json | alpha | Cohorts with anomalous flow relative to the book. |
flow_outlier_count | integer | alpha | How many flow outliers. |
max_positioning_deviation | string | alpha | The largest positioning deviation observed this cycle. |
max_positioning_cohort | string | alpha | The cohort carrying that deviation. |
max_whale_volume_pct | float | alpha | The highest whale volume share in any single cohort. |
max_whale_cohort | string | alpha | The cohort carrying that whale share. |
call_flow_bias_7d | float | alpha | Seven-day rolling bias in call flow. Smooths a single cycle into a stance. |
put_flow_bias_7d | float | alpha | Seven-day rolling bias in put flow. |
flow_bias_divergence | float | alpha | Are calls and puts telling the same story over the week? See detail ↓ |
flow_bias_regime | string | alpha | Classification of the 7-day bias divergence into a regime label. |
Derived Fields
call_put_ratiofloatprocollapseCall volume against put volume
Call USD volume divided by put USD volume for the whole book.
Call/put volume ratio
Above 1 is call-heavy.net_flow_usdfloatprocollapseNet capital direction this cycle
Gross inflow minus gross outflow, USD. Positive means capital arrived on net.
flow_balance_ratiofloatprocollapseHow one-sided was the flow?
Inflow as a share of total flow. Near 0.5 the book churned; away from it, capital moved in one direction.
0 to 1.whale_volume_pctfloatprocollapseHow much of the tape was institutional?
Whale volume as a percentage of total volume. The single fastest read on who was trading.
bullish_volume_pctfloatprocollapseShare of volume in bullish positioning
Percentage of volume in cohorts classified bullish.
bearish_volume_pctfloatprocollapseShare of volume in bearish positioning
Percentage of volume in cohorts classified bearish.
overall_positioningstringprocollapseWhere is the book leaning?
Book-level positioning classification, from the bullish and bearish volume shares.
overall_flow_directionstringprocollapseWhich way is capital moving?
Book-level flow classification, from net_flow_usd and flow_balance_ratio.
overall_execution_skewstringprocollapseWhich side was aggressing?
Book-level execution classification, from buy and sell aggressor volume.
state_hashstringalphacollapseWhat every option is doing, as one value.
Hash over the volume-state fingerprint of every option in the book. It moves when any option crosses a volume regime. CURRENTLY SATURATED: with roughly 400 options in the book and volume measured on a rolling window, at least one crosses a bucket boundary on almost every cycle, so this hash changed on 99.8% of cycles over the last six months and produced 427 distinct values across 427 consecutive BTC cycles. It is doing what it was built to do; the book is simply never still enough for the answer to be no. Use flow_hash for a signal that discriminates, and read state_hash as a fingerprint of the exact book state rather than as a change indicator.
flow_hashstringalphacollapseWhere capital is moving, as one value.
Hash over the flow classification of every option. It moves when capital shifts between instruments, including when the instruments involved stay in the same volume bucket. That independence from state_hash is what makes quiet repositioning detectable.
structure_hashstringalphacollapseHow concentrated the book is, as one value.
Hash over per-cohort concentration (HHI). It moves when volume redistributes between instruments inside a cohort, which is invisible in any coin-level aggregate.
change_patternstringalphacollapseWhich combination of hashes moved, and therefore what kind of change it was.
One of NONE, S, F, R, SF, SR, FR, SFR, where S is state, F is flow and R is structure. READ THE MEASURED DISTRIBUTION BEFORE BUILDING ON THIS, because it is not evenly spread. Over the 30 days to 2026-08-07: SFR 56.9%, SR 37.2%, S 5.5%, R 0.1%, NONE 0.1%, FR 0.04% (10 cycles), SF 0.03%, F absent. The reason is that state_hash currently moves on 99.8% of cycles, so any pattern requiring state to be UNCHANGED is rare by construction. That includes FR, the stealth-accumulation shape, which fired 816 times in January 2026 and roughly 15 times a month since. Treat flow_changed as the informative signal here (it moves on about 58% of cycles and has been stable at that level throughout), and treat state_changed as close to always-on. We are documenting this rather than quietly shipping a saturated indicator.
Change pattern encoding
contradictory_cohortsjsonalphacollapseWhere is the book disagreeing with itself?
Cohorts whose positioning and execution point in opposite directions: bullish positioning being sold into, or bearish positioning being bought. Disagreement inside one book is usually where the interesting trade is.
flow_bias_divergencefloatalphacollapseAre calls and puts telling the same story over the week?
Call bias minus put bias. Near zero the two wings agree. A widening divergence means one wing is being accumulated while the other is not, which is a directional stance building over days rather than a single cycle reading.
Suggested Calculations
Not included in the API response. Compute these client-side from the fields above. Formulas and context provided.
flow_only_repositioningobjectclient-sideThe version of the stealth signal that actually fires.expandThe version of the stealth signal that actually fires.
The documented route to stealth accumulation is change_pattern = FR, but that requires state_changed to be false and state is currently almost always true, so FR fires around 10 times a month across all six coins. Build on flow_changed instead: take cycles where flow_changed is true, net_flow_usd is meaningfully one-sided, and whale_volume_pct sits above its own recent median. That selects roughly 58% of cycles before the volume and whale filters, which is a population you can actually work with, and it isolates the same thing FR was reaching for: capital moving with institutional participation. Then read top_flow_instruments to see which options carried it.
flow_changednet_flow_usdwhale_volume_pcttop_flow_instrumentsOr use the pre-computed endpointalpha
Drill into the named instruments at /v1/oria/fingerprints, where whale_activity_changed is per-option and does not suffer the same saturation.
persistent_flowintegerclient-sideConviction, measured as repetition.expandConviction, measured as repetition.
Count consecutive cycles with the same overall_flow_direction and meaningful net_flow_usd. Three or more in a row was the more reliable of the two signals found in validation, ahead of any single-cycle pattern. One cycle is noise; a sequence is somebody working an order.
overall_flow_directionnet_flow_usd