On-demand metrics
Pull exchange metrics or Polymarket diagnostics only when you need them.
DripMetrics provides on-demand crypto market microstructure metrics and
prediction-market diagnostics for agentic or algorithmic workflows. Query
exchange markets under /metrics/*, portfolio risk under
/metrics/portfolio/var, Hyperliquid candle
metrics under /hyperliquid/*, Polymarket markets under
/polymarket/*, on-chain metrics under
/metrics/onchain/*, BTC option metrics under
/options/*, BTC order-book metrics under
/orderbook/*, or the AI-explained BTC market summary at
/market/summary. Pay per request using x402 instead of buying a
full data platform subscription. Agents can also connect over
MCP at mcp.dripmetrics.ai — discovery is
free, and metric fetches are paid with the same x402 flow.
What You Get
Pull exchange metrics or Polymarket diagnostics only when you need them.
Responses are structured for agents, dashboards, and automation.
Pay for the exact metric calls you use instead of a platform seat.
Use public Polymarket trades and price history without standing up a stream.
Use public Hyperliquid candle snapshots for venue-specific volatility, momentum, and drawdown metrics.
Use public DefiLlama data for stablecoin flow, TVL, fee yield, and DEX efficiency signals.
Submit weighted or quantity-based crypto portfolios and receive VaR, expected shortfall, and component risk.
One call synthesizes the BTC tape and options chain into deterministic signals plus a concise AI-written read of current conditions.
Spread, micro-price, imbalance, depth, concentration, and execution-impact computed fresh from Binance's live BTCUSDT depth.
Payments
Every paid endpoint uses x402: pay per request in USDC on Base, with no account and no API key. Requests are validated before payment is requested — invalid requests return an error before any charge — and settlement only happens when a result can be served.
Call any paid endpoint with no payment attached. It returns HTTP
402 with exact terms: price in USDC, network, and the
pay-to address. Inspecting terms is always free.
Your client signs a USDC transfer authorization (EIP-3009) with a local
wallet key and retries the request with the
PAYMENT-SIGNATURE header. The key never leaves your
process.
The Coinbase CDP facilitator verifies the payment and settles it on Base. The response carries your data plus a settlement receipt header with the transaction hash.
Quick Start
You need a wallet key on Base holding a little USDC. Install the client
packages: npm install @x402/fetch @x402/evm viem
curl -i "https://api.dripmetrics.ai/metrics/vpin?pair=BTCUSDT"
# HTTP 402 — the body lists price, asset, network, and payTo
import { ExactEvmScheme } from "@x402/evm";
import { wrapFetchWithPaymentFromConfig } from "@x402/fetch";
import { privateKeyToAccount } from "viem/accounts";
const account = privateKeyToAccount(process.env.WALLET_KEY as `0x${string}`);
const fetchWithPay = wrapFetchWithPaymentFromConfig(fetch, {
schemes: [{ network: "eip155:*", client: new ExactEvmScheme(account) }],
});
const res = await fetchWithPay(
"https://api.dripmetrics.ai/metrics/vpin?pair=BTCUSDT&window=1h",
);
console.log(await res.json()); // paid $0.05, settled on Base
claude mcp add --transport http dripmetrics https://mcp.dripmetrics.ai/mcp
A complete runnable buyer — free discovery, free quote, then one paid fetch — is at github.com/DripMetricsAI/dripmetrics-mcp.
Support
Contact drip@dripmetrics.ai for support, questions, or product feedback.
If you paid for a metric that failed, email us and we will review it for a refund, including cases where the request targeted a nonexistent market or bad identifier.
Send ideas for new metrics, new venues, workflow improvements, and general API feedback.
Metrics
vpinInformed flow (VPIN) — the volume-synchronized probability that order flow is informed rather than noise.
kyle-lambdaPrice impact per unit of signed order flow.
betaAsset beta versus the exchange benchmark BTC pair.
order-flow-hhiConcentration of signed order flow across short intervals.
historical-volatilityAnnualized realized volatility from log returns.
cvdCumulative signed trade volume.
buy-sell-volume-imbalanceNet buy versus sell volume as a normalized imbalance.
signed-dollar-volumeNet signed notional traded over the window.
trade-intensityTrade arrival rate over the observed window.
average-trade-sizeMean trade size over the observed window.
large-trade-shareShare of activity attributable to the largest trades in the window.
realized-volNon-annualized realized volatility from intrawindow returns.
amihud-illiquidityPrice move per unit of traded dollar volume.
vwapVolume-weighted average price.
vwap-deviationDistance between the latest trade price and VWAP.
momentumWindow return from first observed price to last observed price.
reversalSigned opposite of the window return.
drawdownMaximum peak-to-trough loss observed within the window.
downside-semivolatilityVolatility computed from only negative intrawindow returns.
rolling-correlationCorrelation of returns versus the exchange benchmark BTC pair.
vol-of-volVariability of short rolling volatility within the window.
roll-spreadAbsolute Roll spread proxy inferred from lagged price-change covariance.
Hyperliquid
Annualized realized volatility from 1-minute Hyperliquid candle closes.
Non-annualized realized volatility from 1-minute Hyperliquid candle closes.
Window return from first candle open to last candle close.
Maximum peak-to-trough close loss within the candle path.
Signed opposite of Hyperliquid momentum.
Downside-only volatility from negative 1-minute candle returns.
Variability of short rolling realized volatility within the candle window.
Return sensitivity versus a benchmark market, defaulting to xyz:SP500.
Hyperliquid phase 1 uses public 1m candle snapshots and now
checks that a finite candle-derived metric can be served before x402 payment.
Invalid markets or empty candle responses return before payment. Use
pair as the preferred query parameter; coin is accepted
as a compatibility alias. HIP-3 or dex-prefixed markets can require identifiers
such as xyz:SPCX. beta compares the target against
a benchmark such as xyz:SP500 using overlapping 1-minute candles.
Trade-flow metrics such as cvd,
vwap, vpin, and kyle-lambda are not
currently exposed for Hyperliquid on this branch.
On-chain
Chain-level stablecoin supply growth or contraction.
Chain or protocol TVL growth momentum, with native-token-adjusted fields for chain requests.
Annualized protocol fees relative to average protocol TVL.
Annualized DEX volume turnover relative to average TVL.
On-chain endpoints use DefiLlama as the only v1 source. DripMetrics validates
query parameters and checks that a finite metric can be computed before x402
payment is requested. Invalid requests return 400; insufficient
DefiLlama history returns 422 metric_not_computable.
Portfolio Risk
Portfolio VaR is a POST /metrics/portfolio/var endpoint with a
JSON body. DripMetrics validates the portfolio, fetches and aligns daily
price history, checks data sufficiency, and computes the full response before
requesting x402 payment. Invalid inputs, unsupported assets, price-fetch
failures, or insufficient history return before payment.
Prediction Markets
VPIN-style flow toxicity using equal-notional buckets of inferred YES/NO pressure.
Kyle's Lambda-style price impact per unit of signed notional flow for a selected YES or NO outcome.
Normalized YES-versus-NO trade pressure over the requested window.
How balanced YES-versus-NO trading is over the requested window.
How concentrated recent Polymarket volume is across wallets.
Share of recent flow from wallets not seen in earlier API-visible trades for the same market.
Recent probability move scaled by recent realized volatility.
Information leakage / pre-news movement around an explicit or inferred event anchor.
Polymarket endpoints pull public trades and price history per request. They
check that a numeric diagnostic can be served before x402 payment is requested.
Trade-based endpoints accept slug or conditionId.
Price-based endpoints accept tokenId/assetId or
slug + outcome. Event slugs are supported; if an event contains
multiple markets, add conditionId to disambiguate. In practice,
many Polymarket requests work best when you supply both
slug and conditionId.
BTC Options
Intraday variance risk premium: shortest-dated ATM implied variance minus our annualized trade-level realized variance.
Share of the nearest-expiry ATM straddle's implied move already consumed by the realized move on the BTC trade tape.
25-delta risk-reversal skew minus realized downside-upside semivolatility asymmetry, in annualized vol points.
Strike-level gamma exposure profile, total net GEX, and the gamma flip level across the whole Deribit BTC chain.
Net Black-76 greeks for a submitted multi-leg BTC option spread, plus a spot-and-vol scenario P&L grid.
BTC option metrics combine the public Deribit option chain (mark IVs, open
interest, per-expiry forwards, DVOL-free) with DripMetrics' own trade-level
realized calculations, so they measure the spread between what options are
pricing and what the tape is delivering — not raw IV you can fetch yourself.
Greeks use Black-76 on the per-expiry forward. The full response is computed
before x402 payment is requested: invalid requests return 400,
uncomputable metrics 422, and Deribit or trade-cache outages
503, all before payment.
BTC Orderbook
Best-bid/best-ask gap on the live BTCUSDT book, in basis points of mid price.
Opposite-side-size-weighted mid price — a sharper instantaneous fair-price read than the naive midpoint.
Bid-versus-ask volume imbalance over the top book levels on each side.
Two-sided BTC volume resting within a basis-point band of mid price.
Herfindahl concentration of book volume across the top levels — higher means a thinner, more fragile book.
Walks the live book for a given order size and returns the VWAP fill price and slippage versus top-of-book.
Spread, micro-price, imbalance, depth-at-distance, concentration, and execution-impact from one shared book fetch.
Market Summary
The numbers and categorical signals are computed by the same calculators as
the individual metric endpoints — the AI interprets them, it never invents
them. The prose may note hedged historical tendencies for the observed
configuration, and it never gives price targets or trade recommendations.
Signals are computed before x402 payment is requested; if summary generation
fails after payment, the full deterministic payload is still returned with
summary: null. $0.25 per request; responses are shared for up
to 60 seconds per window.
Coverage
/orderbook/*/hyperliquid/*/polymarket/* using public trades and price history/metrics/onchain/*/metrics/portfolio/var/options/* combining the option chain with the BTC trade tape/market/summary combining the trade tape and options chainEndpoints
GET /GET /healthGET /catalogGET /metrics/:metricNameGET /metrics/onchain/:metricNamePOST /metrics/portfolio/varGET /hyperliquid/:metricName?pair=BTC&window=30mGET /polymarket/:metricNameGET /options/:metricNamePOST /options/spread-greeksGET /orderbook/:metricNameGET /market/summary?window=30mExamples
Hyperliquid endpoints require pair or coin. Examples include
BTC, ETH, HYPE, and HIP-3 markets such as
xyz:SPCX. If omitted, window defaults to 30m.
curl "https://api.dripmetrics.ai/market/summary?window=30m"
curl "https://api.dripmetrics.ai/catalog"
curl "https://api.dripmetrics.ai/orderbook/spread"
curl "https://api.dripmetrics.ai/orderbook/execution-impact?side=buy¬ionalUsd=10000"
curl "https://api.dripmetrics.ai/metrics/kyle-lambda?pair=SOL-USD"
curl "https://api.dripmetrics.ai/metrics/roll-spread?exchange=coinbase&pair=ETH-USD"
curl "https://api.dripmetrics.ai/metrics/vpin?pair=BTCUSDT&window=2h"
curl "https://api.dripmetrics.ai/hyperliquid/historical-volatility?pair=BTC&window=30m"
curl "https://api.dripmetrics.ai/hyperliquid/momentum?coin=ETH&window=1h"
curl "https://api.dripmetrics.ai/hyperliquid/realized-vol?pair=HYPE&window=30m"
curl "https://api.dripmetrics.ai/hyperliquid/reversal?pair=SOL&window=30m"
curl "https://api.dripmetrics.ai/hyperliquid/drawdown?pair=BTC&window=1h"
curl "https://api.dripmetrics.ai/hyperliquid/downside-semivolatility?pair=ETH&window=1h"
curl "https://api.dripmetrics.ai/hyperliquid/vol-of-vol?pair=HYPE&window=30m"
curl "https://api.dripmetrics.ai/hyperliquid/momentum?coin=xyz:SPCX&window=1h"
curl "https://api.dripmetrics.ai/hyperliquid/beta?coin=xyz:SPCX&benchmark=xyz:SP500&window=1h"
curl "https://api.dripmetrics.ai/metrics/onchain/stablecoin-flow?chain=base&window=7d"
curl "https://api.dripmetrics.ai/metrics/onchain/tvl-momentum?chain=base&window=30d"
curl "https://api.dripmetrics.ai/metrics/onchain/protocol-fee-yield?protocol=uniswap&window=30d"
curl "https://api.dripmetrics.ai/metrics/onchain/dex-efficiency?protocol=uniswap&window=30d"
curl -X POST "https://api.dripmetrics.ai/metrics/portfolio/var" \
-H "Content-Type: application/json" \
-d '{
"assets": ["BTC", "ETH", "SOL"],
"weights": [0.5, 0.3, 0.2],
"portfolioValueUsd": 100000,
"window": "180d",
"confidence": 0.95,
"horizon": "1d",
"methods": "both"
}'
curl -X POST "https://api.dripmetrics.ai/metrics/portfolio/var" \
-H "Content-Type: application/json" \
-d '{
"assets": ["BTC", "ETH"],
"quantities": [0.75, 8],
"window": "180d",
"confidence": 0.99,
"horizon": "1d",
"methods": "both"
}'
curl -X POST "https://api.dripmetrics.ai/metrics/portfolio/var" \
-H "Content-Type: application/json" \
-d '{
"assets": ["BTC", "ETH", "SOL"],
"weights": [0.5, 0.3, 0.2],
"portfolioValueUsd": 100000,
"window": "180d",
"confidence": 0.95,
"horizon": "7d",
"methods": "both"
}'
curl "https://api.dripmetrics.ai/polymarket/vpin?slug=fed-decision-in-october&windowMinutes=60&limit=500"
curl "https://api.dripmetrics.ai/polymarket/kyle-lambda?slug=fed-decision-in-october&outcome=YES&windowMinutes=60&limit=500"
curl "https://api.dripmetrics.ai/polymarket/flow-imbalance?slug=fed-decision-in-october&windowMinutes=60&limit=500"
curl "https://api.dripmetrics.ai/polymarket/probability-shock?slug=fed-decision-in-october&outcome=YES&windowMinutes=60&lookbackMinutes=1440"
curl "https://api.dripmetrics.ai/polymarket/leakage-score?slug=fed-decision-in-october&outcome=YES&windowMinutes=60&limit=1000"
curl "https://api.dripmetrics.ai/options/vrp?window=30m"
curl "https://api.dripmetrics.ai/options/expected-move?window=1h"
curl "https://api.dripmetrics.ai/options/crash-premium?window=1h"
curl "https://api.dripmetrics.ai/options/gex"
curl -X POST "https://api.dripmetrics.ai/options/spread-greeks" \
-H "Content-Type: application/json" \
-d '{
"legs": [
{ "instrument": "BTC-25SEP26-120000-C", "qty": 1 },
{ "instrument": "BTC-25SEP26-140000-C", "qty": -1 }
]
}'
Paid endpoints are intended for an x402-aware client that can
satisfy payment requirements and retry with the required payment headers.
Hyperliquid examples expect Hyperliquid coin naming such as BTC
for perps and xyz:SPCX-style names for some HIP-3 or dex-prefixed
markets. Use pair as the preferred argument name; coin
is accepted as an alias. Hyperliquid examples are candle-based only on this branch.
On-chain examples use DefiLlama identifiers such as base and
uniswap; unsupported or sparse DefiLlama history returns before
payment is requested.
Portfolio VaR examples use POST with JSON bodies. Use either
decimal weights plus portfolioValueUsd, or token
quantities. The API validates and computes the VaR response before
requesting payment.
Polymarket example markets may stop trading, resolve, or move over time, so
some sample URLs can go stale and require updated slugs, condition IDs, or
token IDs.
BTC option examples use live Deribit instrument names; the spread-greeks
example legs reference a quarterly expiry and will need a later expiry once
it passes. window on the options endpoints selects the lookback
for the realized (trade tape) leg.
MCP
DripMetrics ships a remote MCP server at
https://mcp.dripmetrics.ai/mcp (Streamable HTTP). Discovery is
free: list_metrics, describe_metric, and
get_payment_requirements cost nothing. Metric fetches
(get_metric, compute_portfolio_var,
compute_spread_greeks) are paid with x402 — the server relays
the API’s own 402 challenge and your agent’s x402 client signs the
payment locally. Your wallet key never leaves your machine and is never sent to
DripMetrics.
claude mcp add --transport http dripmetrics https://mcp.dripmetrics.ai/mcp
{
"mcpServers": {
"dripmetrics": {
"command": "npx",
"args": ["mcp-remote", "https://mcp.dripmetrics.ai/mcp"]
}
}
}
import { Client } from "@modelcontextprotocol/sdk/client/index.js";
import { StreamableHTTPClientTransport } from "@modelcontextprotocol/sdk/client/streamableHttp.js";
import { withX402Client } from "agents/x402";
import { privateKeyToAccount } from "viem/accounts";
const client = new Client({ name: "my-agent", version: "1.0.0" });
await client.connect(new StreamableHTTPClientTransport(new URL("https://mcp.dripmetrics.ai/mcp")));
const paying = withX402Client(client, {
account: privateKeyToAccount(process.env.WALLET_KEY),
network: "eip155:8453",
});
const result = await paying.callTool(null, {
name: "get_metric",
arguments: { id: "metrics/vpin", params: { pair: "BTC-USD", window: "1h" } },
});
Without an x402 client, paid tools return the exact payment requirements
(amount in USDC on Base, receiving address) instead of a result, so any agent
can inspect the price before paying. Vercel’s x402-mcp and
other x402-capable MCP clients use the same convention.
Response Format
Endpoints under /metrics/* share the same top-level JSON
shape. The only metric-specific part of the payload is
components. DripMetrics checks that a finite metric can be
served before requesting x402 payment.
metricMetric name requested, such as vpin or vwap.
pairTrading pair used in the query, such as BTC-USD.
exchangeExchange source for the trades used to compute the metric.
windowAggregation window used for the calculation. Exchange metrics support 30m and 1h; BTC cache-backed metrics also support 2h and 3h when enough live history is retained.
valueThe primary numeric output of the metric.
componentsMetric-specific breakdown fields that help explain or support value.
computedAtISO timestamp showing when the metric response was generated.
tradeCountTotal number of trades used in the computation window.
firstTradeTimeISO timestamp for the earliest trade included in the calculation.
lastTradeTimeISO timestamp for the latest trade included in the calculation.
coverageRequested versus effective trade-window coverage, including whether the exchange fetch was partial and whether the metric was served from a truncated sample.
{
"metric": "vpin",
"pair": "BTC-USD",
"exchange": "coinbase",
"window": "30m",
"value": 0.43218751,
"components": {
"exampleField": 123.45
},
"computedAt": "2026-05-08T14:30:00.000Z",
"tradeCount": 1842,
"firstTradeTime": "2026-05-08T14:00:01.000Z",
"lastTradeTime": "2026-05-08T14:29:59.000Z",
"coverage": {
"requestedWindowMinutes": 30,
"effectiveWindowMinutes": 30,
"coverageRatio": 1,
"partialData": false,
"completeFetch": true,
"errorMessage": null
}
}
This envelope applies to exchange metrics under /metrics/*. If the metric cannot be computed, no x402 payment is requested. If an exchange fetch fails after at least 50 trades have already been collected, DripMetrics serves the metric from that partial sample and reports the actual observed coverage here.
Hyperliquid and Polymarket routes use separate response structures.
Response Format
Endpoints under /hyperliquid/* return a venue-specific JSON
envelope built around the requested market, window, sample size,
upstream source, and observed candle bounds.
metricRequested Hyperliquid metric name.
pairHyperliquid market identifier, such as BTC for a perp.
benchmarkOptional benchmark market identifier returned by hyperliquid/beta.
windowRequested lookback window, currently 30m or 1h.
intervalUnderlying candle interval, currently fixed at 1m for candle-based phase 1 metrics.
valuePrimary numeric output for the selected metric.
componentsMetric-specific breakdown fields such as interval counts, returns, or rolling-window diagnostics.
sampleSizeNumber of candles used for the computation.
sourceUpstream Hyperliquid endpoint used for the response.
firstCandleTime / lastCandleTimeObserved bounds of the candle sample used for the response.
{
"metric": "momentum",
"pair": "xyz:SPCX",
"window": "30m",
"interval": "1m",
"value": 0.004183,
"components": {
"simpleReturn": 0.004192,
"firstPrice": 162.71,
"lastPrice": 163.39
},
"sampleSize": {
"candles": 30
},
"source": {
"candles": "https://api.hyperliquid.xyz/info"
},
"computedAt": "2026-06-11T00:00:00.000Z",
"firstCandleTime": "2026-06-10T23:30:00.000Z",
"lastCandleTime": "2026-06-10T23:59:59.999Z"
}
Hyperliquid metrics on this branch are computed from public candle snapshots per request with a free preflight before x402 payment. They do not use a persistent cache or a background stream.
Response Format
Endpoints under /polymarket/* return a venue-specific JSON
envelope built around market identifiers, request window metadata,
sample sizes, and upstream data sources. DripMetrics returns
422 metric_not_computable before payment when the required
public data cannot produce a numeric diagnostic.
metricPolymarket diagnostic name, such as vpin, kyle-lambda, or leakage-score.
conditionIdPolymarket condition id for the market when the request is tied to a specific market contract.
slugHuman-readable Polymarket market or event slug when the request used slug-based resolution.
tokenId / assetIdPolymarket token identifier used for price-history-based diagnostics.
outcomeSelected token side for token-aware Polymarket diagnostics, currently YES or NO.
windowRequest window metadata including windowMinutes and, when relevant, startTs, endTs, lookbackMinutes, or newsTs.
valueThe primary numeric output of the diagnostic.
componentsDiagnostic-specific breakdown fields such as YES/NO volume, wallet concentration, or pre-news movement.
sampleSizeCounts of trades, wallets, price points, and scanned trades used for the computation.
sourceUpstream Polymarket endpoints used for the response, such as public trades or price history.
computedAtISO timestamp showing when the response was generated.
{
"metric": "flow-imbalance",
"slug": "fed-decision-in-october",
"conditionId": "0xdd22472e552920b8438158ea7238bfadfa4f736aa4cee91a6b86c39ead110917",
"window": {
"windowMinutes": 60,
"startTs": 1700000000000,
"endTs": 1700003600000
},
"value": 0.134228,
"components": {
"imbalance": 0.134228,
"yesVolume": 84.5,
"noVolume": 64.5,
"totalVolume": 149,
"tradeCount": 4
},
"sampleSize": {
"trades": 4,
"scannedTrades": 4
},
"source": {
"market": "https://gamma-api.polymarket.com/markets/slug/fed-decision-in-october",
"trades": "https://data-api.polymarket.com/trades"
},
"computedAt": "2026-05-25T21:30:00.000Z"
}
Polymarket diagnostics are computed from public upstream data per request.
Missing price history, empty trade windows, or invalid token-side selections
return before x402 payment is requested.
If you use a slug for price-history-based endpoints, include
outcome=YES or outcome=NO.
Response Format
Endpoints under /metrics/onchain/* return a DefiLlama-derived
JSON envelope with the requested target, window, primary numeric value,
unit, and metric-specific components. Chain-level
tvl-momentum responses include native-token-adjusted TVL
fields when a native asset mapping is available. DripMetrics checks that the metric
is finite before requesting x402 payment.
metricRequested on-chain metric name, such as stablecoin-flow or dex-efficiency.
chainChain identifier for chain-level metrics, such as base.
protocolProtocol identifier for protocol-level metrics, such as uniswap.
targetType / targetUsed when a metric can be requested by either chain or protocol.
windowRequested lookback window, currently 1d, 7d, 30d, or 90d depending on the metric.
valuePrimary numeric output for the selected on-chain metric.
unitInterpretation of value, such as pct_change or annualized_turnover.
componentsMetric-specific DefiLlama-derived fields and observation counts.
{
"metric": "tvl-momentum",
"targetType": "chain",
"target": "base",
"window": "30d",
"value": 0.083,
"unit": "pct_change",
"components": {
"currentTvlUsd": 5200000000,
"startTvlUsd": 4801477378,
"netTvlChangeUsd": 398522622,
"pctChange": 0.083,
"annualizedTvlGrowthPct": 1.009833,
"momentum": "positive",
"observations": 31,
"nativeTvlAvailable": true,
"nativeCurrency": "ETH",
"currentNativePriceUsd": 3500,
"startNativePriceUsd": 3200,
"currentTvlNative": 1485714.285714,
"startTvlNative": 1500461.680625,
"nativeTvlMomentumPct": -0.009828,
"annualizedNativeTvlGrowthPct": -0.119574,
"source": "DefiLlama"
},
"computedAt": "2026-06-10T16:00:00.000Z"
}
On-chain endpoints do not use a database or background indexer in this v1 pass. They fetch public DefiLlama data per request and return before payment when the request is invalid or the available history cannot support the calculation.
Response Format
Endpoints under /options/* return a JSON envelope with the
primary numeric value, the option-chain and trade-tape legs that produced
it in components, and sample sizes for both sides.
spread-greeks adds per-leg detail, netted greeks,
and a scenarioGrid. All responses are computed before x402
payment is requested.
metricRequested option metric, such as vrp or gex.
pairAlways BTC in this phase.
windowLookback for the realized (trade tape) leg: 30m, 1h, 2h, or 3h. Omitted for chain-only metrics like gex.
valuePrimary numeric output, e.g. implied-minus-realized variance points for vrp or net USD gamma per 1% move for gex.
componentsBoth legs of the combination: implied-side fields (ATM IV, expiry, forward, strike) and realized-side fields (annualized RV, semivols), plus a method note.
sampleSizeTrades and 1-minute intervals used on the realized leg, or instruments and expiries used on the chain leg.
sourceDeribit chain/index endpoints and the DripMetrics BTC trade cache.
{
"metric": "vrp",
"pair": "BTC",
"window": "30m",
"value": 0.043,
"components": {
"ivAtm": 0.3729,
"rvAnnualized": 0.31,
"rvWindow": 0.00234,
"carryRatio": 0.8313,
"breakevenWindowMovePct": 0.00282,
"strike": 62000,
"expiry": "2026-07-10T08:00:00.000Z",
"dteHours": 20,
"forward": 62036.79,
"note": "Variance points: shortest-dated ATM implied variance minus annualized trade-level realized variance (24/7 annualization, 525600 min/yr)."
},
"sampleSize": { "trades": 2148, "intervals": 29 },
"source": {
"chain": "https://www.deribit.com/api/v2/public/get_book_summary_by_currency?currency=BTC&kind=option",
"index": "https://www.deribit.com/api/v2/public/get_index_price?index_name=btc_usd",
"trades": "DripMetrics BTC trade cache"
},
"computedAt": "2026-07-08T14:00:00.000Z"
}
Option marks come from Deribit's public API per request (snapshot cached briefly in the worker); no key or subscription is involved. Greeks are Black-76 on the per-expiry forward with r = 0. Deribit contracts are coin-settled, so BTC-settled deltas differ from the quoted USD-forward deltas by the premium term — the response notes state the convention.
Response Format
Endpoints under /orderbook/* return a JSON envelope with
the primary numeric value, the supporting book-level detail in
components, and a sample size describing how much of the
fetched book was used. All responses are computed before x402 payment
is requested.
metricRequested orderbook metric, such as spread or execution-impact.
pairRequested pair. Only BTCUSDT is enabled today.
valuePrimary numeric output, e.g. spread or slippage in basis points. null for snapshot, which bundles six sub-metrics with no single headline number.
componentsSupporting book detail behind the value — best bid/ask, mid price, per-side volumes, or a fill breakdown, depending on the metric.
sampleSizeHow much of the fetched book was used, e.g. levels available versus levels consumed.
sourceThe Binance depth endpoint the snapshot was fetched from.
{
"metric": "spread",
"pair": "BTCUSDT",
"value": 0.62,
"components": {
"bestBid": { "price": 108000.1, "qty": 0.42 },
"bestAsk": { "price": 108006.8, "qty": 0.55 },
"midPrice": 108003.45,
"spreadAbsolute": 6.7,
"spreadBps": 0.62
},
"sampleSize": { "bidLevels": 100, "askLevels": 100 },
"source": { "depth": "https://data-api.binance.vision/api/v3/depth?symbol=BTCUSDT" },
"computedAt": "2026-07-23T14:00:00.000Z"
}
The order book is fetched fresh from Binance on every request — no cache,
no persistent stream — so the snapshot always reflects the live book at
the moment of the call. execution-impact and
snapshot take a side plus exactly one of
sizeBtc or notionalUsd, and fail before payment
if the requested size can't be filled within the fetched book depth.
Every endpoint also takes an optional pair — only
BTCUSDT is enabled today, with ETH and SOL planned as
siblings using the same metric names.
Response Format
/market/summary returns a deterministic layer — categorical
signals and the numeric metrics behind them —
plus an AI-written summary paragraph that interprets the
configuration. Every number is computed by the same calculators as the
individual metric endpoints; the AI never invents values. Signals are
computed before payment; the summary is generated only after payment
settles.
signalsCategorical reads per metric family, each in its own vocabulary: orderFlow (strong-selling … strong-buying), flowToxicity (low … high), liquidity (deep/normal/thin), volatility, priceTrend, activity, largeTraderShare, dealerGamma (dampening/neutral/amplifying), and volRiskPremium (options-rich/fair/options-cheap). Null when the underlying metric was unavailable.
metricsThe numeric values behind the signals: VPIN, buy/sell imbalance, CVD, Kyle's Lambda (plus USD-per-basis-point depth), realized vol, momentum, trade intensity, large-trade share, net GEX, gamma flip level, and VRP.
summaryOne AI-written paragraph explaining the configuration, including hedged historical tendencies and the most notable interaction between signals. Never price targets or trade recommendations. null only if generation failed after payment — the deterministic payload is still returned.
confidenceDeterministic 0–1 score from window coverage and sample size — not an AI opinion.
disclaimerFixed informational-use statement on every response; never AI-generated.
sampleSize / coverage / sourceTrades and option instruments used, window coverage detail, and the upstream data sources.
{
"pair": "BTC",
"window": "30m",
"asOf": "2026-07-15T14:00:00.000Z",
"lastPrice": 108050.2,
"confidence": 0.94,
"signals": {
"orderFlow": "sell-leaning",
"flowToxicity": "elevated",
"liquidity": "normal",
"volatility": "normal",
"priceTrend": "drifting-lower",
"activity": "busy",
"largeTraderShare": "typical",
"dealerGamma": "dampening",
"volRiskPremium": "options-rich"
},
"metrics": {
"vpin": 0.38,
"buySellImbalance": -0.14,
"kyleLambdaDollarsPer1Bp": 418387.7,
"realizedVolAnnualized": 0.52,
"gexNetUsdPer1Pct": 182000000,
"vrpVolPoints": 0.062
},
"summary": "BTC order flow over the last 30 minutes is modestly sell-side, with elevated VPIN pointing to a meaningful informed component in the selling — a configuration historically associated with continued short-term pressure. The notable tension is between the tape and the options market: positive dealer gamma tends to dampen moves...",
"summaryModel": "claude-opus-4-8",
"disclaimer": "Informational description of observed market conditions and their historical tendencies; not investment advice or a trade recommendation.",
"sampleSize": { "trades": 24310, "optionsInstruments": 612 },
"coverage": { "coverageRatio": 1, "partialData": false },
"source": { "trades": "DripMetrics BTC trade cache", "chain": "Deribit public API" }
}
The summary is written by Claude (Anthropic) under a constrained prompt: it may only use the supplied signals and values, may describe hedged historical tendencies, and may never state a directional outcome as expected, give price targets, or recommend trades. Options context (dealer gamma, VRP) is best-effort — a Deribit outage degrades the response to trade-tape signals rather than failing the request.
Metric Components
Chain-level stablecoin supply growth or contraction from DefiLlama stablecoin supply history.
value is percentage change in stablecoin supply over the requested
window. Supported windows are 1d, 7d, 30d,
and 90d.
Chain or protocol TVL growth momentum from DefiLlama TVL history, with native-token-adjusted fields for chain requests.
Supply exactly one of chain or protocol.
value is USD-denominated percentage TVL change over the requested
window. For chain-level requests, components.nativeTvlMomentumPct
adjusts TVL by the chain native token price, which helps separate actual
liquidity growth from native-token price movement.
Annualized protocol fees relative to average protocol TVL from DefiLlama fees and TVL history.
Supply protocol. value is annualized fee yield
over a 7d, 30d, or 90d window.
Annualized DEX volume turnover relative to average TVL from DefiLlama DEX volume and TVL history.
Supply exactly one of chain or protocol.
value is annualized turnover over a 7d,
30d, or 90d window.
Portfolio Value-at-Risk from daily historical closes, with empirical VaR, normal VaR, expected shortfall, and component risk.
Submit POST /metrics/portfolio/var with JSON. Use either
weights plus portfolioValueUsd, or token
quantities. Supported windows are 90d
and 180d. Empirical VaR is only available
for a 1d horizon; multi-day requests return normal VaR using
square-root-of-time scaling.
{
"value": {
"empiricalVaRUsd": 6200,
"empiricalVaRPct": 0.062,
"normalVaRUsd": 5100,
"normalVaRPct": 0.051
},
"components": {
"observations": 364,
"meanDailyReturn": 0.0011,
"dailyVolatility": 0.041,
"empiricalExpectedShortfallUsd": 8500,
"normalZScore": -1.64485,
"returnType": "log"
}
}
valuePrimary VaR outputs in USD and percentage terms. Fields that do not apply are omitted.
componentsObservation count, aligned date range, daily mean/volatility, z-score, price sources, and expected shortfall.
componentRiskNormal covariance approximation showing each asset’s contribution to total normal VaR.
priceSourceByAssetShows the Coinbase Exchange daily-candle source used for each asset in the portfolio.
Annualized realized volatility from 1-minute Hyperliquid candle closes.
Non-annualized realized volatility from 1-minute Hyperliquid candle closes.
Window return from first candle open to last candle close.
Signed opposite of Hyperliquid momentum.
Maximum peak-to-trough close loss within the candle path.
Downside-only volatility from negative 1-minute candle returns.
Variability of short rolling realized volatility within the candle window.
Return sensitivity versus a benchmark market from overlapping 1-minute Hyperliquid candles.
Supply pair or coin for the target market. Optional
benchmark defaults to xyz:SP500. The route preflights
both candle series and returns before payment if there are not enough overlapping
returns to compute a finite beta.
vpinInformed flow (VPIN) — the volume-synchronized probability that order flow is informed rather than noise.
value is the VPIN score for the requested window. Higher values
indicate more imbalanced buy and sell flow across equal-volume buckets,
which can suggest more informed or one-sided trading pressure.
Reference: Easley, López de Prado, and O’Hara (2012), who extended the logic behind PIN to Volume-Synchronized PIN (VPIN).
{
"components": {
"buckets": 20,
"bucketSize": 12.34,
"meanImbalance": 1.82,
"totalVolume": 617.0
}
}
bucketsNumber of equal-volume buckets that were fully formed for the VPIN calculation.
bucketSizeTarget base-asset volume allocated to each bucket.
meanImbalanceAverage absolute difference between buy volume and sell volume across buckets.
totalVolumeTotal traded base volume used to compute the VPIN window.
kyle-lambdaPrice impact per unit of signed order flow.
value is Kyle’s lambda, estimated here as the slope of the
relationship between short-interval price changes and signed order flow.
Higher absolute values indicate greater price impact per unit of net flow
and therefore thinner liquidity.
Reference: Kyle (1985), which introduced lambda as a measure of market depth and price impact in continuous auctions.
{
"components": {
"alpha": 0.000001234567,
"rSquared": 0.381204,
"intervals": 29,
"meanSignedOrderFlow": 4.287351,
"lastPrice": 64218.55,
"dollarsPer1Bp": 97580.21,
"dollarsPer1Cent": 1524.88
}
}
alphaRegression intercept for the short-interval price-change model.
rSquaredGoodness-of-fit statistic indicating how much of the short-interval price variation is explained by signed order flow.
intervalsNumber of time bins included in the regression.
meanSignedOrderFlowAverage buy volume minus sell volume across the sampled intervals.
lastPriceLast observed trade price in the requested window.
dollarsPer1BpApproximate signed notional needed to move price by one basis point based on the estimated lambda.
dollarsPer1CentApproximate signed notional needed to move price by one cent based on the estimated lambda.
betaAsset beta versus the exchange benchmark BTC pair.
value is the asset’s beta relative to the benchmark pair on the
same exchange, computed from aligned short-interval returns. Values above
1 indicate the asset tends to move more than the benchmark, while
values below 1 indicate lower relative sensitivity.
{
"components": {
"correlation": 0.842311,
"intervals": 29
}
}
correlationCorrelation between the asset return series and the benchmark return series over the aligned intervals.
intervalsNumber of aligned time bins used to estimate beta.
order-flow-hhiConcentration of signed order flow across short intervals.
value is the Herfindahl-Hirschman Index of absolute signed order
flow across short time buckets. Higher values mean order flow is concentrated
in fewer bursts, while lower values mean order flow is distributed more evenly
across the window.
{
"components": {
"intervals": 30,
"nonZeroIntervals": 24,
"totalAbsoluteSignedFlow": 418.273901,
"effectiveIntervals": 7.612443,
"maxShare": 0.284117
}
}
intervalsTotal number of time bins considered in the concentration calculation.
nonZeroIntervalsNumber of intervals with non-zero absolute signed order flow.
totalAbsoluteSignedFlowSum of the absolute signed order flow across all intervals.
effectiveIntervalsConcentration-adjusted number of active intervals, calculated as 1 / HHI.
maxShareLargest single-interval share of total absolute signed order flow.
historical-volatilityAnnualized realized volatility from log returns.
value is the annualized standard deviation of short-interval log returns for the requested window.
{
"components": {
"intervalVolatility": 0.00128431,
"intervals": 29,
"intervalsPerYear": 525600
}
}
intervalVolatilityStandard deviation of the unannualized interval return series.
intervalsNumber of return observations used in the estimate.
intervalsPerYearAnnualization factor implied by the interval size.
cvdCumulative signed trade volume.
value is net signed base volume over the window, with buys counted positively and sells negatively.
{
"components": {
"buyVolume": 412.81,
"sellVolume": 388.22,
"netDollarVolume": 1562404.55
}
}
buyVolumeTotal base volume classified as buyer-initiated.
sellVolumeTotal base volume classified as seller-initiated.
netDollarVolumeSigned notional traded over the window.
buy-sell-volume-imbalanceNet buy versus sell volume as a normalized imbalance.
value is normalized net flow, computed as buy volume minus sell volume divided by total volume.
{
"components": {
"buyVolume": 412.81,
"sellVolume": 388.22,
"totalVolume": 801.03
}
}
buyVolumeTotal buyer-initiated base volume.
sellVolumeTotal seller-initiated base volume.
totalVolumeTotal traded base volume used for normalization.
signed-dollar-volumeNet signed notional traded over the window.
value is signed dollar flow across the window, where positive values indicate buy-side notional dominance.
{
"components": {
"totalDollarVolume": 3248801.22,
"normalizedImbalance": 0.04127319
}
}
totalDollarVolumeTotal unsigned traded notional across the window.
normalizedImbalanceSigned dollar volume divided by total dollar volume.
trade-intensityTrade arrival rate over the observed window.
value is trades per minute based on the observed elapsed time between the first and last trade.
{
"components": {
"tradeCount": 1842,
"tradesPerSecond": 1.0214,
"windowSeconds": 1802.4,
"meanIntertradeSeconds": 0.9789
}
}
tradeCountTotal trades used in the estimate.
tradesPerSecondObserved trade arrival rate per second.
windowSecondsElapsed seconds between first and last trade.
meanIntertradeSecondsAverage gap between consecutive trades.
average-trade-sizeMean trade size over the observed window.
value is mean base-asset size per trade across the window.
{
"components": {
"averageDollarSize": 1763.41,
"tradeCount": 1842
}
}
averageDollarSizeMean notional size per trade.
tradeCountTotal number of trades in the window.
large-trade-shareShare of activity attributable to the largest trades in the window.
value is the share of dollar volume contributed by trades at or above the 90th percentile of trade notional.
{
"components": {
"thresholdDollarSize": 9821.44,
"largeTradeCount": 183,
"totalTradeCount": 1842,
"largeVolumeShare": 0.41421873
}
}
thresholdDollarSizeDollar-size cutoff used to define a large trade.
largeTradeCountNumber of trades at or above the threshold.
totalTradeCountTotal trades observed in the window.
largeVolumeShareShare of base volume attributable to large trades.
realized-volNon-annualized realized volatility from intrawindow returns.
value is non-annualized realized volatility, computed as the square root of summed squared interval returns.
{
"components": {
"realizedVariance": 0.0001842314,
"intervals": 29
}
}
realizedVarianceSum of squared interval log returns before taking the square root.
intervalsNumber of interval returns used in the calculation.
amihud-illiquidityPrice move per unit of traded dollar volume.
value is the average ratio of absolute return to dollar volume across short intervals. Higher values indicate lower liquidity.
{
"components": {
"intervals": 28
}
}
intervalsNumber of valid intervals contributing to the average illiquidity estimate.
vwapVolume-weighted average price.
value is the volume-weighted average execution price across all trades in the window.
{
"components": {
"totalVolume": 801.03,
"totalDollarVolume": 3248801.22
}
}
totalVolumeTotal traded base volume in the window.
totalDollarVolumeTotal traded notional used to compute VWAP.
vwap-deviationDistance between the latest trade price and VWAP.
value is the relative deviation of the last observed trade price from the window VWAP.
{
"components": {
"vwap": 64212.88,
"lastPrice": 64218.55,
"basisPoints": 0.8831
}
}
vwapWindow VWAP used as the comparison baseline.
lastPriceLatest trade price in the window.
basisPointsDeviation from VWAP expressed in basis points.
momentumWindow return from first observed price to last observed price.
value is the log return from the first price in the window to the last price.
{
"components": {
"simpleReturn": 0.01248173,
"firstPrice": 63426.44,
"lastPrice": 64218.55
}
}
simpleReturnSame move expressed as simple return instead of log return.
firstPriceFirst observed trade price in the window.
lastPriceLast observed trade price in the window.
reversalSigned opposite of the window return.
value is the negative of window momentum, useful when a mean-reversion framing is preferred.
{
"components": {
"momentum": 0.01240445,
"simpleReversal": -0.01248173
}
}
momentumUnderlying log-return momentum before sign inversion.
simpleReversalNegative simple return over the same window.
drawdownMaximum peak-to-trough loss observed within the window.
value is the largest percentage drop from a running peak price to a subsequent trough inside the window.
{
"components": {
"peakPrice": 64502.11,
"troughPrice": 63874.92
}
}
peakPriceHighest price observed before the maximum drawdown event.
troughPriceLowest price reached during that drawdown.
downside-semivolatilityVolatility computed from only negative intrawindow returns.
value is the square root of average squared negative returns only, isolating downside variation.
{
"components": {
"intervals": 29,
"downsideIntervals": 11
}
}
intervalsTotal interval returns observed in the window.
downsideIntervalsCount of intervals with negative returns.
rolling-correlationCorrelation of returns versus the exchange benchmark BTC pair.
value is correlation between the asset return series and the benchmark return series over aligned intervals.
{
"components": {
"intervals": 29
}
}
intervalsNumber of aligned return intervals used in the correlation estimate.
vol-of-volVariability of short rolling volatility within the window.
value measures how unstable realized volatility is across overlapping rolling subwindows.
{
"components": {
"rollingWindow": 5,
"observations": 25,
"meanRollingVol": 0.00841233
}
}
rollingWindowNumber of interval returns in each rolling volatility estimate.
observationsTotal rolling volatility observations produced.
meanRollingVolAverage of the rolling volatility estimates before dispersion is computed.
roll-spreadAbsolute Roll spread proxy inferred from lagged price-change covariance.
value is the absolute Roll spread proxy, computed as 2 * sqrt(abs(covariance)). The response reports mode: "absolute" because positive covariance is treated as an absolute spread proxy rather than a strict Roll estimator.
{
"components": {
"covariance": 2.583251,
"absoluteCovariance": 2.583251,
"intervals": 30,
"observations": 28,
"mode": "absolute",
"strictRollDefined": false,
"interpretation": "absolute_covariance_proxy"
}
}
covarianceLagged covariance of successive interval price changes.
absoluteCovarianceAbsolute value of the lagged covariance used for the default spread proxy.
intervalsNumber of interval summaries built from the trade stream.
observationsNumber of lagged price-change pairs used in the estimate.
modeEstimator mode. The current default is absolute.
strictRollDefinedWhether the covariance was negative, which is the strict Roll-model condition.
interpretationLabels the result as an absolute covariance proxy.
VPIN-style flow toxicity using equal-notional buckets of inferred YES/NO pressure.
value measures how persistently one-sided inferred YES/NO
pressure is after the requested flow is divided into equal-notional
buckets. Higher values imply more toxic or imbalanced flow.
{
"components": {
"vpin": 0.92349,
"buckets": 10,
"configuredBuckets": 10,
"bucketSize": 14.9,
"meanImbalance": 13.76,
"totalVolume": 149
}
}
vpinVPIN-style score computed from equal-notional buckets of inferred YES/NO pressure.
bucketsNumber of complete notional buckets used in the estimate.
configuredBucketsTarget bucket count used to size each equal-notional bucket.
bucketSizeNotional allocated to each bucket.
meanImbalanceAverage absolute YES-versus-NO imbalance across the completed buckets.
totalVolumeTotal qualifying notional used to build the bucketed flow series.
Kyle's Lambda-style price impact per unit of signed notional flow for a selected YES or NO outcome.
value estimates how strongly short-horizon price changes in the
selected Polymarket token respond to signed notional flow for that same
outcome side. Larger magnitudes imply more price impact per unit of flow.
{
"components": {
"lambda": 0.00169347,
"alpha": -0.01128977,
"rSquared": 0.997935,
"intervals": 3,
"meanSignedFlow": 6.666667,
"totalAbsoluteFlow": 29,
"selectedOutcome": "YES",
"lastPrice": 0.5
}
}
lambdaEstimated price impact per unit of signed notional flow for the selected outcome.
alphaIntercept term from the interval return versus signed-flow regression.
rSquaredExplained variance of interval returns under the fitted regression.
intervalsNumber of interval observations used in the estimate.
meanSignedFlowAverage signed notional flow per interval for the selected outcome.
totalAbsoluteFlowTotal absolute signed notional across the regression intervals.
selectedOutcomeOutcome side used to interpret signed flow and choose the token price series.
lastPriceLast observed price in the selected token series.
Normalized YES-versus-NO trade pressure over the requested window.
value is normalized net trading pressure for a Polymarket market.
Positive values indicate more YES-side pressure, while negative values
indicate more NO-side pressure.
{
"components": {
"imbalance": 0.134228,
"yesVolume": 84.5,
"noVolume": 64.5,
"totalVolume": 149,
"tradeCount": 4
}
}
imbalanceNormalized net pressure, computed from YES notional minus NO notional divided by total notional.
yesVolumeTotal YES-side notional counted toward the requested window.
noVolumeTotal NO-side notional counted toward the requested window.
totalVolumeTotal notional used to normalize the imbalance.
tradeCountTrades contributing usable pressure to the calculation.
How balanced YES-versus-NO trading is over the requested window.
value is highest when YES and NO flow are balanced and falls
toward zero as one side dominates the market.
{
"components": {
"twoSidedness": 0.865772,
"yesVolume": 84.5,
"noVolume": 64.5,
"dominantOutcome": "YES"
}
}
twoSidednessBalance score derived from the absolute gap between YES and NO notional.
yesVolumeTotal YES-side notional in the window.
noVolumeTotal NO-side notional in the window.
dominantOutcomeOutcome with larger observed notional during the requested window.
How concentrated recent Polymarket volume is across wallets.
value is an HHI-style concentration score over wallet notional
shares. Higher values mean a smaller set of wallets dominates recent flow.
{
"components": {
"totalVolume": 149,
"hhi": 0.45856,
"top1Share": 0.620805,
"top5Share": 1,
"uniqueWallets": 3
}
}
totalVolumeTotal notional summed across wallets.
hhiHerfindahl-Hirschman style concentration of wallet notional shares.
top1ShareLargest single-wallet share of total notional.
top5ShareCombined share of the five largest wallets in the sample.
uniqueWalletsDistinct wallets observed in the current request window.
Share of recent flow from wallets not seen in earlier API-visible trades for the same market.
value measures how much current flow comes from wallets that do
not appear in the earlier API-visible lookback for the same market. This is
request-bounded novelty, not full lifetime novelty.
{
"components": {
"noveltyShare": 0.379195,
"novelWalletCount": 2,
"totalWalletCount": 3,
"novelVolume": 56.5,
"totalVolume": 149
}
}
noveltyShareShare of current-window notional attributable to wallets not seen in the earlier API-visible lookback.
novelWalletCountWallets present in the current window but absent from the earlier sampled history.
totalWalletCountTotal distinct wallets observed in the current window.
novelVolumeNotional attributed to newly observed wallets.
totalVolumeTotal current-window notional used to compute novelty share.
Recent probability move scaled by recent realized volatility.
value is a z-style shock score that compares the recent price
move in a selected YES or NO token against recent realized volatility in
that same token.
{
"components": {
"currentPrice": 0.65,
"priorPrice": 0.55,
"delta": 0.1,
"realizedVol": 0.043589,
"shockZ": 2.294157
}
}
currentPriceLatest observed price in the chosen token side.
priorPriceObserved price nearest the start of the requested shock window.
deltaRaw price change over the requested window.
realizedVolStandard deviation of recent price differences over the lookback window.
shockZPrice move normalized by recent realized volatility.
Information leakage / pre-news movement around an explicit or inferred event anchor.
value measures how much of the total event-window move occurred
before the effective event anchor. If newsTs is omitted, the
endpoint uses the midpoint of the effective analysis window, so a default
request scores the most recent hour. It is an information leakage /
pre-news movement score, not an accusation of insider trading.
{
"components": {
"leakageScore": 0.5,
"preMove": 0.1,
"totalMove": 0.2,
"preNewsVolumeShare": 0.384181,
"preWindowVolume": 34,
"postWindowVolume": 54.5
}
}
leakageScoreShare of the full event-window move that was already in place by the explicit or inferred event anchor.
preMovePrice move observed before the explicit or inferred event anchor.
totalMoveTotal price move across the full pre/post event window.
preNewsVolumeShareShare of combined event-window notional that traded before the explicit or inferred event anchor.
preWindowVolumeTotal notional traded in the pre-news window.
postWindowVolumeTotal notional traded in the post-news window.
Intraday variance risk premium: Deribit ATM implied variance minus DripMetrics' annualized trade-level realized variance.
value is ivAtm² − rvAnnualized² in
annualized variance points, using the shortest-dated expiry more than two
hours out. Positive means options are pricing more variance than the tape
is realizing. components.carryRatio (realized over implied)
and components.breakevenWindowMovePct (the move the window
needs to pay for gamma) give the trader-facing reads of the same spread.
Realized vol uses 1-minute log returns from the BTC trade cache, annualized
on a 24/7 calendar.
Share of the nearest-expiry ATM straddle's implied move consumed by the realized move over the requested window.
value is realizedMovePct / impliedMovePct, where
the implied move is the ATM straddle mark (converted from BTC to USD at the
Deribit index) divided by the forward, and the realized move is the
absolute log return between the first and last trade in the window.
Values near 0 mean the move budget is intact; values near or above 1 mean
the tape has already spent what the straddle implies.
Implied 25-delta risk-reversal skew versus realized downside-upside semivolatility asymmetry.
value is rr25 − realizedSkew in annualized
vol points. rr25 interpolates put and call IV at ±0.25
Black-76 delta on the expiry nearest seven days out;
realizedSkew is annualized downside semivol minus upside
semivol from 1-minute returns on the trade tape. Positive means options
are pricing more crash risk than the tape is exhibiting.
Open-interest-weighted gamma exposure aggregated across the whole Deribit BTC chain.
value is total net USD gamma exposure per 1% spot move under
the stated dealers-long-calls-short-puts convention.
components.profile lists the largest strikes by gross
exposure, components.gammaFlipLevel is the spot level where
net gamma changes sign (scanned ±15%), and
components.grossTotalGexUsdPer1Pct is the assumption-free
concentration read. Crypto has no dealer-positioning data, so the sign
convention is reported explicitly rather than assumed silently.
Net Black-76 greeks and scenario P&L for a submitted multi-leg Deribit BTC option spread.
Submit POST /options/spread-greeks with a JSON body containing
up to six legs of { instrument, qty } (negative
qty = short). The response nets delta, gamma, vega, and theta
across legs on a consistent USD-forward basis, returns per-leg detail, and
includes a scenarioGrid repricing the spread over spot moves
of ±10% and vol shifts of ±10 points. Unknown instruments and
malformed legs return 400 before payment.
Best-bid/best-ask gap on the live BTCUSDT book.
value is the spread in basis points of mid price:
(bestAsk − bestBid) / midPrice × 10000.
components carries the raw best bid/ask price and size plus
the absolute spread. No parameters are required.
Size-weighted mid price, a sharper instantaneous fair-price read than the naive midpoint.
value weights each side's price by the opposite
side's size, so heavier resting size on one side pulls the price toward
the other side — the standard microprice convention.
components.skew is the microprice minus the naive
midpoint, signed. No parameters are required.
Bid-versus-ask volume imbalance over the top book levels.
value is (bidVolume − askVolume) /
(bidVolume + askVolume) summed over the top
depthLevels per side (default 10, max 50). Positive means
bid-heavy. If the fetched book has fewer levels than requested, the
response still charges and flags components.levelsLimited
rather than failing — it's still a valid, conservative reading.
Two-sided BTC volume resting within a basis-point band of mid price.
value is total bid-plus-ask volume within
bpsDistance basis points of mid price on both sides
(default 50, max 2000). components breaks out each side's
volume and USD notional and flags bookExhaustedBid /
bookExhaustedAsk if the fetched book's edge is still
inside the requested band, meaning the true depth extends further than
what was fetched.
Herfindahl concentration of book volume across the top levels.
value is a Herfindahl index (sum of squared volume
shares) pooled across both sides' top depthLevels
(default 10, max 50) — higher means volume is concentrated in a few
levels, a thinner and more fragile book.
components.bidHHI and askHHI break out each
side separately.
VWAP fill price and slippage for a given order size, walking the live book.
Requires side (buy or sell) and
exactly one of sizeBtc or notionalUsd. The
calculator walks asks (for a buy) or bids (for a sell) level by level
and returns the volume-weighted average fill price, filled quantity
and notional, and slippage versus top-of-book in value
(bps) and components.slippageUsd. If the requested size
exceeds the fetched book depth, the request fails with
422 before payment rather than returning a partial,
misleading fill.
Spread, micro-price, imbalance, depth-at-distance, concentration, and execution-impact from one shared book fetch.
Bundles all six other orderbook metrics computed from a single
Binance book fetch, keyed under components. All
parameters are optional and default the same way as the individual
endpoints (notionalUsd defaults to $10,000 on the
buy side for the execution-impact leg).
value is null — there's no single headline
number for a six-metric bundle. If the execution-impact leg can't be
filled within the fetched depth, the whole request fails with
422 before payment.