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. |
options_state_changed | integer | pro | How many options actually repositioned this cycle. See detail ↓ |
options_flow_changed | integer | pro | How many options changed flow bucket. See detail ↓ |
options_added | integer | pro | Options in this cycle that were not in the previous one. See detail ↓ |
options_removed | integer | pro | Options in the previous cycle that are absent from this one. See detail ↓ |
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. SATURATED ON LIQUID COINS, AND ALWAYS HAS BEEN. Two things move it: any option crossing a volume regime, and the SET of options changing, because each fingerprint is prefixed with instrument_name. Both happen on essentially every cycle for an active book. Measured for BTC on 2026-08-09, per 10-minute cycle: 2 to 38 options entered and left the priced set, and 3 to 42 of the survivors changed behaviour. Share of cycles where this hash moved, August 2026: BTC 100%, ETH 100%, SOL 99.9%, XRP 99.9%, TRX 99.1%, AVAX 98.5%. In January 2026 the same figures were BTC 100%, ETH 99.9%, SOL 65.4%, XRP 51.1%, AVAX 30.9%, TRX 19.1%, so this is not a regression: it was never a discriminating signal on BTC or ETH, and the smaller books have since become active enough to behave the same way. A book-level boolean over ~690 options answers "yes" by construction. Read state_hash as an exact fingerprint of book state, useful for deduplication and for detecting replayed or stalled cycles, not 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 moves on 99.8% of cycles averaged across coins, 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. That decline is not a degradation of the signal: all 816 came from the smaller books (SOL 320, XRP 293, AVAX 157, TRX 45, ETH 1, BTC 0), which were quiet enough then for state to hold still, and which have since become active enough to churn every cycle like BTC always did. Treat state_changed as close to always-on. FLOW_CHANGED IS NOT A UNIFORM 58% EITHER: that number is an average across all six coins and it hides the spread. August 2026, share of cycles where flow_hash moved: BTC 99.6%, ETH 95.1%, SOL 69.1%, XRP 46.8%, AVAX 25.2%, TRX 9.5%. On BTC and ETH it is close to always-on as well, so a strategy built on flow_changed alone will select nearly every cycle on exactly the coins most people test first. Use the flow MAGNITUDES rather than the boolean: net_flow_usd, flow_balance_ratio, whale_volume_pct and surge_count all carry size, and size is what thresholds. 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.
options_state_changedintegerprocollapseHow many options actually repositioned this cycle.
Count of options present in BOTH this cycle and the previous one whose full fingerprint differs. THIS IS THE FIELD TO THRESHOLD ON, not state_changed. The boolean is true on essentially every cycle for an active coin, whereas this count varies with how much genuinely moved: measured across the six coins on one cycle it ranged from 0 on TRX and XRP to 26 on BTC. Options that merely re-entered the priced set are excluded, since an option that was not there last cycle did not change, it arrived. NULL before 2026-08-10, when the field was introduced.
options_flow_changedintegerprocollapseHow many options changed flow bucket.
Same construction as options_state_changed, restricted to flow_bucket. Use it with net_flow_usd: the count says how broad the flow shift was, the USD figure says how large. NULL before 2026-08-10.
options_addedintegerprocollapseOptions in this cycle that were not in the previous one.
Mostly call/put pairs re-entering the priced set rather than newly listed contracts: the source table is built from complete pairs, so one leg failing its minimum price removes both for a cycle. Published rather than hidden because it is the denominator that tells you whether a book gained options or merely flickered. NULL before 2026-08-10.
options_removedintegerprocollapseOptions in the previous cycle that are absent from this one.
The counterpart to options_added. On a stable book the two are close to equal, which is the signature of pair churn rather than real listing activity. NULL before 2026-08-10.
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 almost always true on an active book, so FR fires around 10 times a month across all six coins. Do not simply substitute flow_changed: on BTC it is true on 99.6% of cycles and on ETH 95.1%, so it filters almost nothing where it matters most. Build on MAGNITUDE instead of on the booleans. Take cycles where net_flow_usd is meaningfully one-sided relative to its own recent distribution, whale_volume_pct sits above its recent median, and surge_count is elevated against the same window. That isolates what FR was reaching for, capital moving with institutional participation, and it thresholds on quantities that vary rather than on a flag that is nearly always set. 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