uforia — What It Does & How to Use It

WHAT IT DOES & HOW TO USE IT

# uforia

A system that watches options, perpetuals, and order books across 3 exchanges — and tells you what's happening, what's mispriced, and what's dangerous.

BTC & ETH Deribit / Binance / Bybit 5 signal families Always-on, real-time

Navigate: arrow keys · Overview: press O · Vertical slides: down arrow within sections

THE BIG PICTURE

## What problem does this solve?

Options data

Vol surfaces, skew, carry, gamma — tells you how expensive protection is and where traders are hedging

Normally siloed from perps

Perps data

Funding rates, liquidations, order flow, depth — tells you where leverage is building and when it might snap

Normally has no vol context

Microstructure

Order book shape, trade flow, ML predictions — tells you what's likely to happen in the next 30 seconds to 5 minutes

Normally disconnected from both

uforia connects all three. Options tell you the price of risk. Perps tell you where leverage sits. Microstructure tells you what's about to happen. Together, they answer: Is this a good trade?
SIGNAL FAMILIES

## Five families, one question each

### 1. VVIX

Vol-of-vol · 2 signals

"How nervous is the market about volatility itself?" When VVIX is high, even the vol market is uncertain — regime shifts happen.

### 2. Razor

Variance risk premium · 2 signals

"Are option sellers making or losing money right now?" Tracks a synthetic straddle in real-time.

### 3. Options

12 dashboards · 8 composite scores

"What's the options market telling us about risk and positioning?" Surfaces, carry, skew, gamma, regimes.

### 4. Perps

8 dashboards · 5 scores · 6 regimes

"Where is leverage building and is it about to blow up?" Funding, cascades, toxicity, depth.

### 5. Microstructure

ML model · 8 signals (4 horizons × 2 assets)

"What is the order book saying price will do next?" ML fusion model with cost-awareness and regime gating.

FAMILY 1 / VVIX

## "How scared is the market about volatility itself?"

Volatility measures how much price moves. VVIX measures how much volatility moves. When VVIX spikes, even the people pricing risk are uncertain.

rVVIX — What actually happened

How much DVOL has been swinging around over 7/14/30 days.

High rVVIX = big swings in implied vol
Low rVVIX = vol has been stable
qVVIX — What's priced in

EWMA-weighted variance. Reacts faster to recent moves.

qVVIX rising = forward vol-of-vol risk increasing
Divergence from rVVIX = expectations shifting
FAMILY 1 / VVIX — HOW TO USE

## Practical signals

Low VVIX environment

Vol is stable, options priced consistently. Good conditions for selling vol (straddles, strangles).

Supports short-vol trades

High / expanding VVIX

Vol is unstable, the market doesn't trust its own pricing. Regime change likely. Reduce size or buy protection.

Warns against short-vol positions

VVIX feeds into two downstream composite scores: cross_asset_vol_score (compares BTC vs ETH vol stress) and funding_vol_context_score (combines vol stress with funding rate pressure).
btc_vvix eth_vvix
FAMILY 2 / RAZOR

## "Are option sellers making money right now?"

Razor simulates a real trade: a delta-hedged 7-day ATM straddle, rolled every hour. Tracks whether premium collected exceeds actual moves — in real-time.

razor_pnl — Actual trade P&L

Cumulative P&L of a synthetic straddle. Option reval + hedge cost + roll cost.

Positive = sellers collecting more than they pay out
Negative = actual moves exceeded premiums
razor_vrp — Variance risk premium

Cumulative IV² minus RV² in basis points.

Growing = VRP is real, sellers earn carry
Flat/negative = no carry, sellers losing
FAMILY 2 / RAZOR — TRADE BANDS

## How to read the signal

Razor z-scores the cumulative VRP over 30 days and classifies into trade bands:

DOUBLE_BUY z-score ≥ +0.5

VRP is abnormally positive. Options are overpriced relative to history. Sell vol — straddle sellers are getting paid well.

NEUTRAL -0.5 < z < +0.5

VRP is near its average. No clear edge for either side. No directional vol trade.

DOUBLE_SELL z-score ≤ -0.5

VRP is abnormally negative. Realized vol is exceeding implied. Buy vol — straddle buyers are profiting.

btc_razor eth_razor
FAMILY 3 / OPTIONS

## What the options market is telling us

12 dashboards, each answering a different question. Metrics roll up into 8 composite scores you can trade on.

Dashboard | The question it answers
--- | ---
vol_surface | How expensive are options at each strike and maturity?
carry_vrp | Are option sellers getting paid enough for the risk?
skew_crash_premium | How much is the market paying for downside crash protection?
surface_dislocation | Are any specific options mispriced vs the smooth fitted surface?
cross_asset_rv | Is BTC or ETH vol cheap relative to the other?
positioning_flow | Where are traders actually positioned? What strikes are crowded?
vol_cone | Is today's vol level high or low compared to history?
term_structure_momentum | Is near-term vol getting more or less expensive vs long-term?
gamma_exposure | How will dealer hedging mechanically push price?
funding_context | How does perps funding align with vol stress?
straddle_breakeven | Is the market pricing moves correctly vs what actually happens?
vol_regime_transitions | Is the vol regime about to shift?

OPTIONS / VOL SURFACE

## "How expensive are options at each strike?"

SSVI model fitted to all Deribit options at target tenors: 7d, 14d, 30d, 60d.

ATM IV

Market's best guess for how much price will move.

60% = expects ~7% move in 7d · 25% = expects ~3% move

Risk Reversal (RR 25Δ)

Call vol minus put vol at 25-delta. Measures directional fear.

Negative = puts expensive (crash fear) · Positive = calls expensive (upside bid)

Butterfly (BF 25Δ)

Wing vol minus ATM vol. Tail protection cost.

High BF = wings expensive (hedging demand) · Low BF = tails cheap

OPTIONS / CARRY & VRP

## "Are option sellers getting paid enough?"

Carry = implied vol minus realized vol. When IV exceeds RV, sellers collect the difference as profit.

carry_spread

IV(7d) minus RV(7d). The premium sellers are earning now.

Positive = options overpriced, sellers earn the gap
Negative = actual moves bigger than premiums
carry_zscore

Is current carry rich or cheap vs last 30 days?

z > +1 (rich) = abnormally high, sell vol
z < -1 (cheap) = compressed, consider buying vol
Regime: rich / neutral / cheap

Shift from "neutral" to "rich" = highest expected return for vol sellers.

OPTIONS / SKEW & CRASH PREMIUM

## "How much fear is priced in?"

Skew measures how much more expensive puts are than calls. When everyone is buying downside protection, skew goes extreme — that's the "crash premium."

rr_25_7d

25-delta risk reversal, 7-day tenor. The most liquid measure of directional fear.

RR = -3% = puts are 3 vol points more expensive than calls. Heavy crash hedging demand.
RR = +1% = calls are expensive. Market is bidding for upside.
skew_zscore

Is current crash premium extreme vs history?

z < -1.5 (panic) = crash fears are overdone. Puts are extremely expensive. Historically a good time to sell puts.
z > +1.5 (unwind) = crash fears have evaporated. Puts are cheap. Historically a good time to buy protection.
Regime: panic / neutral / unwind

Extreme panic = puts are rich (fade it). Unwind = complacency (buy protection while it's cheap).

OPTIONS / SURFACE DISLOCATION

## "Are any options mispriced vs the curve?"

We fit a smooth SSVI surface to all options. Dislocation measures how far actual market prices deviate from this theoretical fit. Big residuals = mispricing.

What the metrics mean

atm_residual | How far ATM options deviate from the fit
wing_residual | How far OTM puts/calls deviate
dispersion_score | Overall surface stress across all tenors

Why it matters

High dislocation = market stress or illiquidity. Specific strikes are trading away from fair value.

This can signal arbitrage opportunities (buy cheap legs, sell expensive ones) or warn you that the options market is dislocated and you should widen your execution tolerance.
OPTIONS / CROSS-ASSET RELATIVE VALUE

## "Is BTC or ETH vol cheap relative to the other?"

Compares BTC and ETH option markets across multiple dimensions to find relative value opportunities.

What's compared

ATM IV spread | Which asset's options are more expensive
Skew spread | Which asset has higher crash premium
VVIX spread | Which asset's vol is more unstable
Carry spread | Which asset's VRP is richer
Funding spread | Which asset's perps have more leverage

How to use it

When one spread is extreme, it reverts. If BTC vol is abnormally rich vs ETH, you can sell BTC vol and buy ETH vol as a pairs trade — capturing the convergence.

Regime: btc_rich / eth_rich / neutral
OPTIONS / POSITIONING, VOL CONE, TERM MOMENTUM

## Context signals

Positioning Flow

Where are traders positioned?

OI by expiry and moneyness bucket. ATM pinning concentration — how crowded the at-the-money strike is.

High ATM concentration = price will be "pinned" to that strike by gamma hedging. Wings filling up = market expects a breakout.
Vol Cone

Is today's vol high or low vs history?

Ranks current IV and RV as percentiles over trailing windows.

90th percentile = vol is near recent highs, likely to compress.
10th percentile = vol is near lows, likely to expand.
Term Structure Momentum

Is near-term vol rising faster than far-term?

Tracks the slope between 7d and 30d IV and its rate of change.

Steepening = near-term stress building (front-end fear).
Flattening = stress abating, curve normalizing.
OPTIONS / GAMMA, FUNDING CONTEXT, BREAKEVEN

## Mechanical and structural signals

Gamma Exposure

How will dealer hedging push price?

GEX = |gamma| × OI × spot² by strike and expiry.

Positive gamma = dealers long gamma, they buy dips and sell rallies. Market is mean-reverting.
Negative gamma = dealers short gamma, forced to sell into dips and buy into rallies. Market trends harder.
Funding Context

Is perps leverage aligned with vol stress?

Joins perpetual funding rate z-scores with VVIX to detect dangerous combinations.

High funding + high VVIX = max danger. Leverage is building while volatility is unstable.
Straddle Breakeven

Is the market pricing moves correctly?

breakeven = ATM_IV × √(7/365). Compares to actual realized move.

Gap positive = realized exceeded breakeven. Straddle buyers won.
Gap negative = realized fell short. Straddle sellers won.
OPTIONS / VOL REGIME TRANSITIONS

## "Is the vol regime about to shift?"

A Markov chain model that tracks which vol state we're in and estimates the probability of transitioning to the next state.

vol_stable

Quiet regime. Realized vol low, IV steady. Good for short-vol strategies.

vol_expanding

Vol is rising. Realized is outpacing implied. Mean-reversion strategies break down.

vol_contracting

Vol is compressing after a spike. Premium is still elevated but actual moves are shrinking. Best environment for vol sellers.

Each state has a transition probability and median duration. If you're in "vol_stable" and the model says 60% chance of "vol_expanding", that's an early warning to reduce short-vol exposure.
OPTIONS / THE 8 COMPOSITE SCORES

## Signals you can actually trade on

Each score distills a dashboard into a single number. Positive = one direction, negative = the other.

Score | What it tells you | How to act on it
--- | --- | ---
vol_carry_score | Is carry rich or cheap? | > +1: sell vol · < -1: buy vol
skew_stress_score | Is crash premium overdone? | > +1: sell puts · < -1: buy puts
surface_dislocation_score | Are there surface arbitrage opportunities? | > 2: look for specific-strike arbs
cross_asset_vol_score | Is BTC or ETH vol rich relative to the other? | Extreme = pairs trade opportunity
vol_regime_score | Long vol or short vol environment? | Positive: short vol bias · Negative: long vol bias
funding_vol_context_score | Is funding + vol stress aligned? | > 2: cascade risk from vol-funding feedback
breakeven_gap_score | Are straddles mispriced vs realized? | Positive: realized > implied, buy gamma
term_structure_momentum_score | Is near-term stress building? | Steepening = front-end pressure building

FAMILY 4 / PERPS

## Where is leverage, and is it about to snap?

Perpetual futures are the most leveraged instrument in crypto. 8 dashboards monitor: funding, cascades, toxicity, depth, positioning. When these break, prices move violently.

Dashboard | The question it answers
--- | ---
funding_basis_carry | How much are longs paying to hold leverage? Is it profitable to arb?
liquidation_cascade | Are liquidations concentrated? Is a chain reaction building?
order_flow_toxicity | Are informed traders front-running? Is flow toxic to market makers?
oi_price_divergence | Is leverage growing in a direction that disagrees with price?
cross_venue_price_discovery | Which exchange is leading? Are there cross-venue arb opportunities?
depth_resilience | Can the order book absorb large orders without slippage?
vol_microstructure | Is high-frequency vol signal or just noise?
cum_delta_momentum | Is buying or selling pressure accelerating?

PERPS / FUNDING BASIS CARRY

## "How desperate are longs to hold leverage?"

Every 8h, perps settle a funding rate: longs pay shorts (or vice versa). High funding = longs paying through the nose. Both an income opportunity and warning sign.

Key metrics

basis_bps | Perp price vs spot, in basis points. Positive = perp is expensive.
funding_rate | 8h funding rate. Positive = longs paying shorts.
carry_annualized | What you'd earn annualized from just collecting funding.
carry_zscore | Is current carry rich or cheap vs recent history?

How to use it
carry_zscore > +1.5 = funding is abnormally high. Longs are desperate. Either collect carry (short perp + long spot) or brace for a liquidation cascade — overcrowded longs blow up.
carry_zscore < -1.5 = funding is abnormally negative. Shorts are paying. Rare — often means a short squeeze is brewing.
PERPS / LIQUIDATION CASCADE

## "Is a chain reaction of liquidations building?"

Forced sells push price further, triggering more liquidations. Cascade = domino effect. Detected in real-time.

Key metrics

liq_intensity_zscore | Liquidation volume abnormal? z > 2 = cascade active
liq_asymmetry | One-sided? ±0.7 = cascade direction locked
cascade_risk_score | 0.5×crowding + 0.3×liq + 0.2×carry pressure

Action levels
score < 1

Normal. Trade freely.

score 1–2

Elevated. Reduce position size.

score > 2

Critical. Hedge or exit.

PERPS / ORDER FLOW TOXICITY

## "Are informed traders front-running?"

Toxic flow means one side has better information. When VPIN (volume-synchronized probability of informed trading) spikes, someone knows something you don't — and you're on the wrong side of the trade.

Key metrics

vpin_50 | |buy_vol - sell_vol| / total_vol, smoothed. High = one-sided flow.
toxic_flow_zscore | Is current toxicity extreme vs 4h/24h baseline?
large_trade_ratio | Proportion of volume from large orders. High = whale activity.

How to read it
toxic_flow_zscore > 1.5 = informed traders are likely active. Spreads will widen, slippage increases. Avoid trading or only take positions aligned with the toxic flow direction.
toxic_flow_zscore < 0.5 = balanced flow, healthy market. Good conditions for execution.
PERPS / OI-PRICE DIVERGENCE

## "Is leverage growing without price confirming it?"

Open interest (OI) measures total leverage in the system. When OI rises but price doesn't follow, someone is building a large position that hasn't moved the market yet — and it will.

The four scenarios

OI up + price up | Healthy. New longs entering, price confirming. Trend is supported.
OI up + price flat | Warning. Leverage building but price isn't moving. One side will break.
OI up + price down | Bearish. New shorts entering and winning. Or longs trapped.
OI down + price up | Short squeeze. Shorts covering, pushing price up. Bounce is fragile.

oi_acceleration

Second derivative: is leverage buildup accelerating? Accelerating OI = approaching a breakpoint. When it stops accelerating, the move starts.

PERPS / VENUE, DEPTH, VOL STRUCTURE, DELTA

## Market plumbing signals

Cross-Venue Price Discovery

Which exchange leads price?

venue_dislocation_bps — venues disagree by >10bps = arb opportunity

convergence_half_life — how fast the arb closes

Depth Resilience

Can the book absorb a big order?

depth_recovery_speed — slow recovery = fragile. spread_zscore — wide = crisis

Regime: tight / normal / wide / stress

Vol Microstructure

Is the volatility real or just noise?

vol_signature_ratio = RV_5s / RV_5m. High = noise (mean-revert), low = real trends (follow)

Cumulative Delta

Is buying pressure accelerating?

cum_delta_acceleration — peaks precede reversals. absorption_ratio — low = volatility spike coming

PERPS / THE 5 COMPOSITE SCORES

## Risk signals you can act on

Score | What it tells you | How to act on it
--- | --- | ---
carry_score | Is funding/basis carry rich or cheap? | > +1: collect carry · > +2: but beware, longs are crowded
cascade_risk_score | How likely is a liquidation cascade? | < 1: safe · 1-2: reduce size · > 2: hedge or exit
toxicity_score | Is the market safe to trade in? | < 0.8: healthy, execute freely · > 1.5: toxic, avoid
positioning_score | Is leverage excessive for the price move? | > 1: fragile, expect mean reversion
fragility_score | Is the order book fragile? | < 0.5: resilient · > 1.5: one big order breaks the market

6 Regime Families — Markov chains with transition probabilities and duration estimates
cascade_regime toxicity_regime leverage_regime spread_regime rv_regime delta_regime
FAMILY 5 / MICROSTRUCTURE

## "What is the order book saying price will do next?"

An ML model that reads the order book, trade flow, and cross-market context to predict price direction — at 30s, 1m, 2m, and 5m horizons. For both BTC and ETH.

What it reads (inputs)

- Book shape — imbalance between bids and asks, microprice tilt, spread, depth
- Trade flow — order flow imbalance, cumulative buying vs selling pressure
- Price action — recent returns, realized volatility
- Cross-venue — basis between exchanges, spread divergence
- Options context — ATM IV, skew, IV-RV gap, funding rate

What it outputs

- prob_up / prob_flat / prob_down — calibrated probability for each outcome
- expected_edge_bps — expected profit after trading costs (3bps round-trip)
- tradability_score — confidence × edge clipped. "Is this worth trading?"
- blocked_reason — why the signal was gated (if it was)

MICROSTRUCTURE / WHY THIS MODEL IS DIFFERENT

## Cost-aware, gated, regime-filtered

Cost-aware labels

The model doesn't predict raw direction. It predicts: "will the move be big enough to cover trading costs?"

Labels are: forward_return ± 3bps round-trip cost. If price moves 2bps, that's "flat" — because you can't profit after costs.

This means the model only fires when there's actual edge, not just a directional lean.
Signal gating stack

Every prediction passes through 4 gates before becoming a signal:

1. Prediction quality — is the model confident enough?
2. Cost filter — does expected edge exceed trading costs?
3. Regime support — does the current regime support this prediction?
4. Book health — is the order book intact? Any feed issues?
Regime detection

The model knows what regime it's in and only fires when the regime matches:

calm_mean_reversion | Low vol, low flow — fade the book imbalance
calm_trend | Low vol, normal flow — follow momentum
vol_expansion | High vol — signals are less reliable, wider gating
thin_liquidity_stressed | Book stressed — signals blocked, too risky

MICROSTRUCTURE / READING THE OUTPUT

## What the numbers mean

Example output

prob_up | 0.52
prob_flat | 0.31
prob_down | 0.17
expected_edge_bps | +0.6
tradability_score | 0.45
confidence_bucket | medium
blocked_reason | None

expected_edge_bps > 0 = there's money after costs. Zero or negative = skip.
blocked_reason set = signal failed a gate. Do not trade.
btc_microstructure_30s btc_microstructure_1m btc_microstructure_2m btc_microstructure_5m eth_microstructure_30s eth_microstructure_1m eth_microstructure_2m eth_microstructure_5m
QUALITY

## Every signal has a quality flag

You never have to ask "can I trust this?" — the system tells you. Quality flags gate downstream consumption.

ok

Good fit, sufficient data. Trust and use.

initializing

Building baseline. No historical context yet.

insufficient_data

Below threshold. Don't use.

bad_fit

Optimizer failed. Data unreliable.

low_coverage

< 25% strikes covered. Extrapolating.

calendar_violation

Maturity ordering broken. Arb-free violated.

PUTTING IT TOGETHER

## Example: Should I sell vol right now?

Walk through the signals step by step. Each one is a checkpoint.

1. vol_carry_score — Is carry rich?

score > +1 = sellers are getting paid well

2. btc_vvix / eth_vvix — Vol-of-vol low?

Low VVIX = stable environment for selling

3. skew_stress_score — Crash premium contained?

Not in "panic" regime = puts aren't screaming danger

4. breakeven_gap_score — Realized < implied?

Negative gap = straddle sellers winning

5. cascade_risk_score — Market stable?

score < 1 = no liquidation cascade building

6. vol_regime_score — Short-vol regime?

Positive score = yes

PUTTING IT TOGETHER

## Example: Should I buy gamma?

1. breakeven_gap_score positive

Realized moves exceeding what options priced. Straddle buyers winning.

2. VVIX rising

Vol-of-vol expanding = uncertainty growing, more vol ahead.

3. term_structure steepening

Near-term vol rising faster than far-term. Front-end pressure.

4. gamma_exposure negative

Dealers short gamma — they amplify moves, trends will run.

PUTTING IT TOGETHER

## Example: When to cut risk

cascade_risk_score > 2

Liquidations concentrating. Chain reaction building.

toxicity_score > 1.5

Informed traders active. You're on the wrong side.

fragility_score > 1.5

Book can't absorb pressure. Depth thin, recovery slow.

funding_vol_context > 2

High leverage + unstable vol = maximum danger.

When these align: reduce exposure immediately. Don't wait for price to confirm.
THE DASHBOARD

## Where to find it all

Pages

Overview | All signal families at a glance — what's hot, what's safe
Signals | VVIX + Razor signals with time series charts
Options | 12 options dashboards, 8 composite scores
Perps | 8 perps dashboards, 5 composite scores, regimes
Microstructure | ML predictions, features, regime state, calibration
Datasets | Browse any of the 36 raw datasets
Runs | When each pipeline last ran, status, errors
Engines | Rust live engine status, book quality

Real-time streaming

WebSocket feed pushes updates as they happen. No refresh needed — the dashboard updates live.

Every number on the dashboard links back to a time series. Click any metric to see its history, z-score evolution, and regime transitions.
Stack

Next.js 15, React 19, TypeScript, Recharts. Terminal aesthetic — monospace, flat panels, keyboard navigation.

API

## Programmatic access

Everything in the dashboard is also available via REST API and WebSocket streaming.

Signals

/api/v1/signals

/api/v1/signals/{id}/latest

/api/v1/signals/{id}/series

Options

/api/v1/options/dashboards

/api/v1/options/{id}/latest

/api/v1/options/{id}/series

/api/v1/options/signals

Perps

/api/v1/perps/dashboards

/api/v1/perps/{id}/latest

/api/v1/perps/{id}/series

/api/v1/perps/signals

Microstructure

/api/v1/microstructure/signals

/api/v1/microstructure/features/{asset}

/api/v1/microstructure/regime/{asset}

Data

/api/v1/datasets

/api/v1/datasets/{id}/rows

/api/v1/runs

/api/v1/prices

System

/api/v1/system/health

/api/v1/engines

WS /api/v1/stream

CHEAT SHEET

## Quick reference: what to check for what

If you want to... | Check these | Look for
--- | --- | ---
Sell vol (straddles/strangles) | vol_carry_score, VVIX, skew_stress_score, breakeven_gap_score, vol_regime_score | Carry rich, VVIX low, skew contained, gap negative, short-vol regime
Buy gamma (long straddles) | breakeven_gap_score, VVIX, term_structure_momentum_score, gamma_exposure | Gap positive, VVIX rising, steepening, negative gamma
Trade BTC vs ETH vol | cross_asset_vol_score, relative_value spreads | Extreme spread = sell the rich asset's vol, buy the cheap one
Collect funding/basis carry | carry_score, carry_zscore, cascade_risk_score | High carry but low cascade risk
Scalp microstructure | microstructure signals, tradability_score, blocked_reason | expected_edge > 0, not blocked, confidence medium+
Reduce risk / cut positions | cascade_risk_score, toxicity_score, fragility_score, funding_vol_context_score | Any score > 2 = get out
Understand current regime | vol_regime_transitions, regime families, VVIX trend | Transition probabilities + median duration

SUMMARY

## uforia gives you answers, not data

Not just metrics

Every signal has a z-score, a regime, a quality flag, and a clear interpretation. You don't need to do the math — the system tells you what's normal and what's not.

Not just one market

Options, perps, and microstructure are connected. Funding pressure shows up in vol carry. Cascade risk shows up in skew. The system sees across all three.

Gated, not raw

Signals pass through quality flags, cost filters, confidence gates, and regime checks before they reach you. If a signal says "trade", it passed all the checks.

Always on

Real-time data from 3 exchanges. Rust live engine for order books. Python analytics for signals. Next.js dashboard for visualization. 24/7.

25 signal IDs 13 composite scores 6 regime families 20 dashboards 36 datasets