API for On-Demand Crypto and Prediction Market Metrics via x402

DripMetrics AI

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.

Exchange metrics support 30m and 1h windows with 30m as the default. BTC cache-backed metrics also support 2h and 3h when enough live BTC history is retained. Polymarket diagnostics use windowMinutes with a default of 60. Hyperliquid uses public 1m candles. On-chain metrics use public DefiLlama data. Portfolio VaR uses daily historical prices and accepts POST JSON. Price: $0.05 per metric request; the AI market summary is $0.25.
Contact: drip@dripmetrics.ai. Email us for refunds on failed metrics, even if the failure came from an invalid or nonexistent market request. You can also send product ideas, venue requests, and general feedback.

Built for fast, machine-consumable market intelligence.

On-demand metrics

Pull exchange metrics or Polymarket diagnostics only when you need them.

Simple JSON

Responses are structured for agents, dashboards, and automation.

Per-request pricing

Pay for the exact metric calls you use instead of a platform seat.

Prediction-market diagnostics

Use public Polymarket trades and price history without standing up a stream.

Hyperliquid candles

Use public Hyperliquid candle snapshots for venue-specific volatility, momentum, and drawdown metrics.

On-chain metrics

Use public DefiLlama data for stablecoin flow, TVL, fee yield, and DEX efficiency signals.

Portfolio risk

Submit weighted or quantity-based crypto portfolios and receive VaR, expected shortfall, and component risk.

AI market summary

One call synthesizes the BTC tape and options chain into deterministic signals plus a concise AI-written read of current conditions.

BTC orderbook

Spread, micro-price, imbalance, depth, concentration, and execution-impact computed fresh from Binance's live BTCUSDT depth.

How paying works

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.

1 · Call, get terms

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.

2 · Sign locally

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.

3 · Settle, get data

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.

First paid call in a few minutes

You need a wallet key on Base holding a little USDC. Install the client packages: npm install @x402/fetch @x402/evm viem

See the price first — free, no wallet needed
curl -i "https://api.dripmetrics.ai/metrics/vpin?pair=BTCUSDT"
# HTTP 402 — the body lists price, asset, network, and payTo
Pay and fetch (TypeScript)
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
Agents: connect over MCP instead
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.

Refunds, ideas, and feedback

Refunds for failed metrics

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.

Tell us what to add

Send ideas for new metrics, new venues, workflow improvements, and general API feedback.

Available signals

Hyperliquid candle metrics

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.

DefiLlama-sourced metrics

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 Value-at-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.

Polymarket diagnostics

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.

Deribit option-chain metrics

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.

Binance depth-derived metrics

AI-explained BTC market conditions

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.

Supported venues

  • BTC cache: BTCUSDT with 30m, 1h, 2h, and 3h windows when retained history is available
  • Binance: BTCUSDT, ETHUSDT, SOLUSDT
  • Coinbase: BTC-USD, ETH-USD, SOL-USD
  • BTC orderbook: paid Binance BTCUSDT depth metrics under /orderbook/*
  • Hyperliquid: paid candle metrics under /hyperliquid/*
  • Polymarket: paid diagnostics under /polymarket/* using public trades and price history
  • DefiLlama: paid on-chain metrics under /metrics/onchain/*
  • Portfolio VaR: paid portfolio risk endpoint under /metrics/portfolio/var
  • Deribit: paid BTC option metrics under /options/* combining the option chain with the BTC trade tape
  • Market summary: paid AI-explained BTC conditions at /market/summary combining the trade tape and options chain

Simple API surface

  • GET /
  • GET /health
  • GET /catalog
  • GET /metrics/:metricName
  • GET /metrics/onchain/:metricName
  • POST /metrics/portfolio/var
  • GET /hyperliquid/:metricName?pair=BTC&window=30m
  • GET /polymarket/:metricName
  • GET /options/:metricName
  • POST /options/spread-greeks
  • GET /orderbook/:metricName
  • GET /market/summary?window=30m

API requests

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.

AI BTC Market Summary
curl "https://api.dripmetrics.ai/market/summary?window=30m"
Catalog
curl "https://api.dripmetrics.ai/catalog"
BTC Orderbook Spread
curl "https://api.dripmetrics.ai/orderbook/spread"
BTC Execution Impact
curl "https://api.dripmetrics.ai/orderbook/execution-impact?side=buy&notionalUsd=10000"
Price Impact
curl "https://api.dripmetrics.ai/metrics/kyle-lambda?pair=SOL-USD"
Effective Spread
curl "https://api.dripmetrics.ai/metrics/roll-spread?exchange=coinbase&pair=ETH-USD"
BTC Informed Flow 2h
curl "https://api.dripmetrics.ai/metrics/vpin?pair=BTCUSDT&window=2h"
Hyperliquid Historical Volatility
curl "https://api.dripmetrics.ai/hyperliquid/historical-volatility?pair=BTC&window=30m"
Hyperliquid Momentum
curl "https://api.dripmetrics.ai/hyperliquid/momentum?coin=ETH&window=1h"
Hyperliquid Realized Vol
curl "https://api.dripmetrics.ai/hyperliquid/realized-vol?pair=HYPE&window=30m"
Hyperliquid Reversal
curl "https://api.dripmetrics.ai/hyperliquid/reversal?pair=SOL&window=30m"
Hyperliquid Drawdown
curl "https://api.dripmetrics.ai/hyperliquid/drawdown?pair=BTC&window=1h"
Hyperliquid Downside Semivolatility
curl "https://api.dripmetrics.ai/hyperliquid/downside-semivolatility?pair=ETH&window=1h"
Hyperliquid Vol of Vol
curl "https://api.dripmetrics.ai/hyperliquid/vol-of-vol?pair=HYPE&window=30m"
Hyperliquid HIP-3 Market
curl "https://api.dripmetrics.ai/hyperliquid/momentum?coin=xyz:SPCX&window=1h"
Hyperliquid Beta
curl "https://api.dripmetrics.ai/hyperliquid/beta?coin=xyz:SPCX&benchmark=xyz:SP500&window=1h"
Onchain Stablecoin Flow
curl "https://api.dripmetrics.ai/metrics/onchain/stablecoin-flow?chain=base&window=7d"
Onchain TVL Momentum
curl "https://api.dripmetrics.ai/metrics/onchain/tvl-momentum?chain=base&window=30d"
Onchain Protocol Fee Yield
curl "https://api.dripmetrics.ai/metrics/onchain/protocol-fee-yield?protocol=uniswap&window=30d"
Onchain DEX Efficiency
curl "https://api.dripmetrics.ai/metrics/onchain/dex-efficiency?protocol=uniswap&window=30d"
Portfolio VaR with Weights
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"
  }'
Portfolio VaR with Quantities
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"
  }'
7-Day Normal Portfolio VaR
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"
  }'
Polymarket VPIN
curl "https://api.dripmetrics.ai/polymarket/vpin?slug=fed-decision-in-october&windowMinutes=60&limit=500"
Polymarket Kyle Lambda
curl "https://api.dripmetrics.ai/polymarket/kyle-lambda?slug=fed-decision-in-october&outcome=YES&windowMinutes=60&limit=500"
Polymarket Flow Imbalance
curl "https://api.dripmetrics.ai/polymarket/flow-imbalance?slug=fed-decision-in-october&windowMinutes=60&limit=500"
Polymarket Probability Shock
curl "https://api.dripmetrics.ai/polymarket/probability-shock?slug=fed-decision-in-october&outcome=YES&windowMinutes=60&lookbackMinutes=1440"
Polymarket Leakage Score
curl "https://api.dripmetrics.ai/polymarket/leakage-score?slug=fed-decision-in-october&outcome=YES&windowMinutes=60&limit=1000"
BTC Options Variance Risk Premium
curl "https://api.dripmetrics.ai/options/vrp?window=30m"
BTC Options Expected-Move Consumption
curl "https://api.dripmetrics.ai/options/expected-move?window=1h"
BTC Options Crash Premium
curl "https://api.dripmetrics.ai/options/crash-premium?window=1h"
BTC Options Gamma Exposure
curl "https://api.dripmetrics.ai/options/gex"
BTC Options Spread Greeks
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.

Connect from Claude and other MCP agents

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 Code
claude mcp add --transport http dripmetrics https://mcp.dripmetrics.ai/mcp
Claude Desktop / other clients (mcp-remote)
{
  "mcpServers": {
    "dripmetrics": {
      "command": "npx",
      "args": ["mcp-remote", "https://mcp.dripmetrics.ai/mcp"]
    }
  }
}
Paying agents (x402 client wrapper, e.g. Cloudflare agents SDK)
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.

Exchange metric response structure

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.

metric

Metric name requested, such as vpin or vwap.

pair

Trading pair used in the query, such as BTC-USD.

exchange

Exchange source for the trades used to compute the metric.

window

Aggregation 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.

value

The primary numeric output of the metric.

components

Metric-specific breakdown fields that help explain or support value.

computedAt

ISO timestamp showing when the metric response was generated.

tradeCount

Total number of trades used in the computation window.

firstTradeTime

ISO timestamp for the earliest trade included in the calculation.

lastTradeTime

ISO timestamp for the latest trade included in the calculation.

coverage

Requested versus effective trade-window coverage, including whether the exchange fetch was partial and whether the metric was served from a truncated sample.

Generic Metric Response
{
  "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.

Hyperliquid response structure

Endpoints under /hyperliquid/* return a venue-specific JSON envelope built around the requested market, window, sample size, upstream source, and observed candle bounds.

metric

Requested Hyperliquid metric name.

pair

Hyperliquid market identifier, such as BTC for a perp.

benchmark

Optional benchmark market identifier returned by hyperliquid/beta.

window

Requested lookback window, currently 30m or 1h.

interval

Underlying candle interval, currently fixed at 1m for candle-based phase 1 metrics.

value

Primary numeric output for the selected metric.

components

Metric-specific breakdown fields such as interval counts, returns, or rolling-window diagnostics.

sampleSize

Number of candles used for the computation.

source

Upstream Hyperliquid endpoint used for the response.

firstCandleTime / lastCandleTime

Observed bounds of the candle sample used for the response.

Hyperliquid 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.

Polymarket response structure

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.

metric

Polymarket diagnostic name, such as vpin, kyle-lambda, or leakage-score.

conditionId

Polymarket condition id for the market when the request is tied to a specific market contract.

slug

Human-readable Polymarket market or event slug when the request used slug-based resolution.

tokenId / assetId

Polymarket token identifier used for price-history-based diagnostics.

outcome

Selected token side for token-aware Polymarket diagnostics, currently YES or NO.

window

Request window metadata including windowMinutes and, when relevant, startTs, endTs, lookbackMinutes, or newsTs.

value

The primary numeric output of the diagnostic.

components

Diagnostic-specific breakdown fields such as YES/NO volume, wallet concentration, or pre-news movement.

sampleSize

Counts of trades, wallets, price points, and scanned trades used for the computation.

source

Upstream Polymarket endpoints used for the response, such as public trades or price history.

computedAt

ISO timestamp showing when the response was generated.

Polymarket Response
{
  "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.

On-chain response structure

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.

metric

Requested on-chain metric name, such as stablecoin-flow or dex-efficiency.

chain

Chain identifier for chain-level metrics, such as base.

protocol

Protocol identifier for protocol-level metrics, such as uniswap.

targetType / target

Used when a metric can be requested by either chain or protocol.

window

Requested lookback window, currently 1d, 7d, 30d, or 90d depending on the metric.

value

Primary numeric output for the selected on-chain metric.

unit

Interpretation of value, such as pct_change or annualized_turnover.

components

Metric-specific DefiLlama-derived fields and observation counts.

Onchain Response
{
  "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.

BTC options response structure

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.

metric

Requested option metric, such as vrp or gex.

pair

Always BTC in this phase.

window

Lookback for the realized (trade tape) leg: 30m, 1h, 2h, or 3h. Omitted for chain-only metrics like gex.

value

Primary numeric output, e.g. implied-minus-realized variance points for vrp or net USD gamma per 1% move for gex.

components

Both legs of the combination: implied-side fields (ATM IV, expiry, forward, strike) and realized-side fields (annualized RV, semivols), plus a method note.

sampleSize

Trades and 1-minute intervals used on the realized leg, or instruments and expiries used on the chain leg.

source

Deribit chain/index endpoints and the DripMetrics BTC trade cache.

Options VRP Response
{
  "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.

BTC orderbook response structure

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.

metric

Requested orderbook metric, such as spread or execution-impact.

pair

Requested pair. Only BTCUSDT is enabled today.

value

Primary numeric output, e.g. spread or slippage in basis points. null for snapshot, which bundles six sub-metrics with no single headline number.

components

Supporting book detail behind the value — best bid/ask, mid price, per-side volumes, or a fill breakdown, depending on the metric.

sampleSize

How much of the fetched book was used, e.g. levels available versus levels consumed.

source

The Binance depth endpoint the snapshot was fetched from.

Orderbook Spread Response
{
  "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.

Market summary response structure

/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.

signals

Categorical 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.

metrics

The 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.

summary

One 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.

confidence

Deterministic 0–1 score from window coverage and sample size — not an AI opinion.

disclaimer

Fixed informational-use statement on every response; never AI-generated.

sampleSize / coverage / source

Trades and option instruments used, window coverage detail, and the upstream data sources.

Market Summary Response (abridged)
{
  "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.

Documented metrics

onchain/stablecoin-flow

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.

onchain/tvl-momentum

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.

onchain/protocol-fee-yield

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.

onchain/dex-efficiency

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/var

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.

Portfolio VaR Response Fields
{
  "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"
  }
}

value

Primary VaR outputs in USD and percentage terms. Fields that do not apply are omitted.

components

Observation count, aligned date range, daily mean/volatility, z-score, price sources, and expected shortfall.

componentRisk

Normal covariance approximation showing each asset’s contribution to total normal VaR.

priceSourceByAsset

Shows the Coinbase Exchange daily-candle source used for each asset in the portfolio.

hyperliquid/historical-volatility

Annualized realized volatility from 1-minute Hyperliquid candle closes.

hyperliquid/realized-vol

Non-annualized realized volatility from 1-minute Hyperliquid candle closes.

hyperliquid/momentum

Window return from first candle open to last candle close.

hyperliquid/reversal

Signed opposite of Hyperliquid momentum.

hyperliquid/drawdown

Maximum peak-to-trough close loss within the candle path.

hyperliquid/downside-semivolatility

Downside-only volatility from negative 1-minute candle returns.

hyperliquid/vol-of-vol

Variability of short rolling realized volatility within the candle window.

hyperliquid/beta

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.

Adverse Selection Risk vpin

Informed 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).

VPIN Components
{
  "components": {
    "buckets": 20,
    "bucketSize": 12.34,
    "meanImbalance": 1.82,
    "totalVolume": 617.0
  }
}

buckets

Number of equal-volume buckets that were fully formed for the VPIN calculation.

bucketSize

Target base-asset volume allocated to each bucket.

meanImbalance

Average absolute difference between buy volume and sell volume across buckets.

totalVolume

Total traded base volume used to compute the VPIN window.

Price Impact kyle-lambda

Price 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.

Kyle-Lambda Components
{
  "components": {
    "alpha": 0.000001234567,
    "rSquared": 0.381204,
    "intervals": 29,
    "meanSignedOrderFlow": 4.287351,
    "lastPrice": 64218.55,
    "dollarsPer1Bp": 97580.21,
    "dollarsPer1Cent": 1524.88
  }
}

alpha

Regression intercept for the short-interval price-change model.

rSquared

Goodness-of-fit statistic indicating how much of the short-interval price variation is explained by signed order flow.

intervals

Number of time bins included in the regression.

meanSignedOrderFlow

Average buy volume minus sell volume across the sampled intervals.

lastPrice

Last observed trade price in the requested window.

dollarsPer1Bp

Approximate signed notional needed to move price by one basis point based on the estimated lambda.

dollarsPer1Cent

Approximate signed notional needed to move price by one cent based on the estimated lambda.

Beta beta

Asset 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.

Beta Components
{
  "components": {
    "correlation": 0.842311,
    "intervals": 29
  }
}

correlation

Correlation between the asset return series and the benchmark return series over the aligned intervals.

intervals

Number of aligned time bins used to estimate beta.

Order Flow Concentration order-flow-hhi

Concentration 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.

Order-Flow-HHI Components
{
  "components": {
    "intervals": 30,
    "nonZeroIntervals": 24,
    "totalAbsoluteSignedFlow": 418.273901,
    "effectiveIntervals": 7.612443,
    "maxShare": 0.284117
  }
}

intervals

Total number of time bins considered in the concentration calculation.

nonZeroIntervals

Number of intervals with non-zero absolute signed order flow.

totalAbsoluteSignedFlow

Sum of the absolute signed order flow across all intervals.

effectiveIntervals

Concentration-adjusted number of active intervals, calculated as 1 / HHI.

maxShare

Largest single-interval share of total absolute signed order flow.

Historical Volatility historical-volatility

Annualized realized volatility from log returns.

value is the annualized standard deviation of short-interval log returns for the requested window.

Historical-Volatility Components
{
  "components": {
    "intervalVolatility": 0.00128431,
    "intervals": 29,
    "intervalsPerYear": 525600
  }
}

intervalVolatility

Standard deviation of the unannualized interval return series.

intervals

Number of return observations used in the estimate.

intervalsPerYear

Annualization factor implied by the interval size.

CVD cvd

Cumulative signed trade volume.

value is net signed base volume over the window, with buys counted positively and sells negatively.

CVD Components
{
  "components": {
    "buyVolume": 412.81,
    "sellVolume": 388.22,
    "netDollarVolume": 1562404.55
  }
}

buyVolume

Total base volume classified as buyer-initiated.

sellVolume

Total base volume classified as seller-initiated.

netDollarVolume

Signed notional traded over the window.

Buy/Sell Imbalance buy-sell-volume-imbalance

Net buy versus sell volume as a normalized imbalance.

value is normalized net flow, computed as buy volume minus sell volume divided by total volume.

Buy-Sell-Volume-Imbalance Components
{
  "components": {
    "buyVolume": 412.81,
    "sellVolume": 388.22,
    "totalVolume": 801.03
  }
}

buyVolume

Total buyer-initiated base volume.

sellVolume

Total seller-initiated base volume.

totalVolume

Total traded base volume used for normalization.

Signed Dollar Volume signed-dollar-volume

Net signed notional traded over the window.

value is signed dollar flow across the window, where positive values indicate buy-side notional dominance.

Signed-Dollar-Volume Components
{
  "components": {
    "totalDollarVolume": 3248801.22,
    "normalizedImbalance": 0.04127319
  }
}

totalDollarVolume

Total unsigned traded notional across the window.

normalizedImbalance

Signed dollar volume divided by total dollar volume.

Trade Intensity trade-intensity

Trade arrival rate over the observed window.

value is trades per minute based on the observed elapsed time between the first and last trade.

Trade-Intensity Components
{
  "components": {
    "tradeCount": 1842,
    "tradesPerSecond": 1.0214,
    "windowSeconds": 1802.4,
    "meanIntertradeSeconds": 0.9789
  }
}

tradeCount

Total trades used in the estimate.

tradesPerSecond

Observed trade arrival rate per second.

windowSeconds

Elapsed seconds between first and last trade.

meanIntertradeSeconds

Average gap between consecutive trades.

Average Trade Size average-trade-size

Mean trade size over the observed window.

value is mean base-asset size per trade across the window.

Average-Trade-Size Components
{
  "components": {
    "averageDollarSize": 1763.41,
    "tradeCount": 1842
  }
}

averageDollarSize

Mean notional size per trade.

tradeCount

Total number of trades in the window.

Large-Trade Share large-trade-share

Share 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.

Large-Trade-Share Components
{
  "components": {
    "thresholdDollarSize": 9821.44,
    "largeTradeCount": 183,
    "totalTradeCount": 1842,
    "largeVolumeShare": 0.41421873
  }
}

thresholdDollarSize

Dollar-size cutoff used to define a large trade.

largeTradeCount

Number of trades at or above the threshold.

totalTradeCount

Total trades observed in the window.

largeVolumeShare

Share of base volume attributable to large trades.

Realized Volatility realized-vol

Non-annualized realized volatility from intrawindow returns.

value is non-annualized realized volatility, computed as the square root of summed squared interval returns.

Realized-Vol Components
{
  "components": {
    "realizedVariance": 0.0001842314,
    "intervals": 29
  }
}

realizedVariance

Sum of squared interval log returns before taking the square root.

intervals

Number of interval returns used in the calculation.

Illiquidity Ratio amihud-illiquidity

Price 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.

Amihud-Illiquidity Components
{
  "components": {
    "intervals": 28
  }
}

intervals

Number of valid intervals contributing to the average illiquidity estimate.

VWAP vwap

Volume-weighted average price.

value is the volume-weighted average execution price across all trades in the window.

VWAP Components
{
  "components": {
    "totalVolume": 801.03,
    "totalDollarVolume": 3248801.22
  }
}

totalVolume

Total traded base volume in the window.

totalDollarVolume

Total traded notional used to compute VWAP.

VWAP Deviation vwap-deviation

Distance between the latest trade price and VWAP.

value is the relative deviation of the last observed trade price from the window VWAP.

VWAP-Deviation Components
{
  "components": {
    "vwap": 64212.88,
    "lastPrice": 64218.55,
    "basisPoints": 0.8831
  }
}

vwap

Window VWAP used as the comparison baseline.

lastPrice

Latest trade price in the window.

basisPoints

Deviation from VWAP expressed in basis points.

Momentum momentum

Window 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.

Momentum Components
{
  "components": {
    "simpleReturn": 0.01248173,
    "firstPrice": 63426.44,
    "lastPrice": 64218.55
  }
}

simpleReturn

Same move expressed as simple return instead of log return.

firstPrice

First observed trade price in the window.

lastPrice

Last observed trade price in the window.

Reversal reversal

Signed opposite of the window return.

value is the negative of window momentum, useful when a mean-reversion framing is preferred.

Reversal Components
{
  "components": {
    "momentum": 0.01240445,
    "simpleReversal": -0.01248173
  }
}

momentum

Underlying log-return momentum before sign inversion.

simpleReversal

Negative simple return over the same window.

Drawdown drawdown

Maximum 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.

Drawdown Components
{
  "components": {
    "peakPrice": 64502.11,
    "troughPrice": 63874.92
  }
}

peakPrice

Highest price observed before the maximum drawdown event.

troughPrice

Lowest price reached during that drawdown.

Downside Volatility downside-semivolatility

Volatility computed from only negative intrawindow returns.

value is the square root of average squared negative returns only, isolating downside variation.

Downside-Semivolatility Components
{
  "components": {
    "intervals": 29,
    "downsideIntervals": 11
  }
}

intervals

Total interval returns observed in the window.

downsideIntervals

Count of intervals with negative returns.

Rolling Correlation rolling-correlation

Correlation of returns versus the exchange benchmark BTC pair.

value is correlation between the asset return series and the benchmark return series over aligned intervals.

Rolling-Correlation Components
{
  "components": {
    "intervals": 29
  }
}

intervals

Number of aligned return intervals used in the correlation estimate.

Volatility of Volatility vol-of-vol

Variability of short rolling volatility within the window.

value measures how unstable realized volatility is across overlapping rolling subwindows.

Vol-Of-Vol Components
{
  "components": {
    "rollingWindow": 5,
    "observations": 25,
    "meanRollingVol": 0.00841233
  }
}

rollingWindow

Number of interval returns in each rolling volatility estimate.

observations

Total rolling volatility observations produced.

meanRollingVol

Average of the rolling volatility estimates before dispersion is computed.

Effective Spread roll-spread

Absolute 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.

Roll-Spread Components
{
  "components": {
    "covariance": 2.583251,
    "absoluteCovariance": 2.583251,
    "intervals": 30,
    "observations": 28,
    "mode": "absolute",
    "strictRollDefined": false,
    "interpretation": "absolute_covariance_proxy"
  }
}

covariance

Lagged covariance of successive interval price changes.

absoluteCovariance

Absolute value of the lagged covariance used for the default spread proxy.

intervals

Number of interval summaries built from the trade stream.

observations

Number of lagged price-change pairs used in the estimate.

mode

Estimator mode. The current default is absolute.

strictRollDefined

Whether the covariance was negative, which is the strict Roll-model condition.

interpretation

Labels the result as an absolute covariance proxy.

polymarket/vpin

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.

Polymarket VPIN Components
{
  "components": {
    "vpin": 0.92349,
    "buckets": 10,
    "configuredBuckets": 10,
    "bucketSize": 14.9,
    "meanImbalance": 13.76,
    "totalVolume": 149
  }
}

vpin

VPIN-style score computed from equal-notional buckets of inferred YES/NO pressure.

buckets

Number of complete notional buckets used in the estimate.

configuredBuckets

Target bucket count used to size each equal-notional bucket.

bucketSize

Notional allocated to each bucket.

meanImbalance

Average absolute YES-versus-NO imbalance across the completed buckets.

totalVolume

Total qualifying notional used to build the bucketed flow series.

polymarket/kyle-lambda

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.

Polymarket Kyle-Lambda Components
{
  "components": {
    "lambda": 0.00169347,
    "alpha": -0.01128977,
    "rSquared": 0.997935,
    "intervals": 3,
    "meanSignedFlow": 6.666667,
    "totalAbsoluteFlow": 29,
    "selectedOutcome": "YES",
    "lastPrice": 0.5
  }
}

lambda

Estimated price impact per unit of signed notional flow for the selected outcome.

alpha

Intercept term from the interval return versus signed-flow regression.

rSquared

Explained variance of interval returns under the fitted regression.

intervals

Number of interval observations used in the estimate.

meanSignedFlow

Average signed notional flow per interval for the selected outcome.

totalAbsoluteFlow

Total absolute signed notional across the regression intervals.

selectedOutcome

Outcome side used to interpret signed flow and choose the token price series.

lastPrice

Last observed price in the selected token series.

polymarket/flow-imbalance

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.

Flow-Imbalance Components
{
  "components": {
    "imbalance": 0.134228,
    "yesVolume": 84.5,
    "noVolume": 64.5,
    "totalVolume": 149,
    "tradeCount": 4
  }
}

imbalance

Normalized net pressure, computed from YES notional minus NO notional divided by total notional.

yesVolume

Total YES-side notional counted toward the requested window.

noVolume

Total NO-side notional counted toward the requested window.

totalVolume

Total notional used to normalize the imbalance.

tradeCount

Trades contributing usable pressure to the calculation.

polymarket/two-sidedness

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.

Two-Sidedness Components
{
  "components": {
    "twoSidedness": 0.865772,
    "yesVolume": 84.5,
    "noVolume": 64.5,
    "dominantOutcome": "YES"
  }
}

twoSidedness

Balance score derived from the absolute gap between YES and NO notional.

yesVolume

Total YES-side notional in the window.

noVolume

Total NO-side notional in the window.

dominantOutcome

Outcome with larger observed notional during the requested window.

polymarket/wallet-concentration

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.

Wallet-Concentration Components
{
  "components": {
    "totalVolume": 149,
    "hhi": 0.45856,
    "top1Share": 0.620805,
    "top5Share": 1,
    "uniqueWallets": 3
  }
}

totalVolume

Total notional summed across wallets.

hhi

Herfindahl-Hirschman style concentration of wallet notional shares.

top1Share

Largest single-wallet share of total notional.

top5Share

Combined share of the five largest wallets in the sample.

uniqueWallets

Distinct wallets observed in the current request window.

polymarket/wallet-novelty

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.

Wallet-Novelty Components
{
  "components": {
    "noveltyShare": 0.379195,
    "novelWalletCount": 2,
    "totalWalletCount": 3,
    "novelVolume": 56.5,
    "totalVolume": 149
  }
}

noveltyShare

Share of current-window notional attributable to wallets not seen in the earlier API-visible lookback.

novelWalletCount

Wallets present in the current window but absent from the earlier sampled history.

totalWalletCount

Total distinct wallets observed in the current window.

novelVolume

Notional attributed to newly observed wallets.

totalVolume

Total current-window notional used to compute novelty share.

polymarket/probability-shock

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.

Probability-Shock Components
{
  "components": {
    "currentPrice": 0.65,
    "priorPrice": 0.55,
    "delta": 0.1,
    "realizedVol": 0.043589,
    "shockZ": 2.294157
  }
}

currentPrice

Latest observed price in the chosen token side.

priorPrice

Observed price nearest the start of the requested shock window.

delta

Raw price change over the requested window.

realizedVol

Standard deviation of recent price differences over the lookback window.

shockZ

Price move normalized by recent realized volatility.

polymarket/leakage-score

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.

Leakage-Score Components
{
  "components": {
    "leakageScore": 0.5,
    "preMove": 0.1,
    "totalMove": 0.2,
    "preNewsVolumeShare": 0.384181,
    "preWindowVolume": 34,
    "postWindowVolume": 54.5
  }
}

leakageScore

Share of the full event-window move that was already in place by the explicit or inferred event anchor.

preMove

Price move observed before the explicit or inferred event anchor.

totalMove

Total price move across the full pre/post event window.

preNewsVolumeShare

Share of combined event-window notional that traded before the explicit or inferred event anchor.

preWindowVolume

Total notional traded in the pre-news window.

postWindowVolume

Total notional traded in the post-news window.

options/vrp

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.

options/expected-move

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.

options/crash-premium

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.

options/gex

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.

options/spread-greeks

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.

orderbook/spread

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.

orderbook/micro-price

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.

orderbook/imbalance

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.

orderbook/depth-at-distance

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.

orderbook/concentration

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.

orderbook/execution-impact

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.

orderbook/snapshot

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.