市场数据

加密期权数据 API

跨多个交易所聚合的 BTC 与 ETH 期权市场数据:持仓量、成交量、看跌/看涨比率、最大痛点、隐含波动率与希腊值。一个 REST API 和一个 MCP 服务器,无需逐个拉取交易所数据并自行换算口径。

比特币和以太坊的看涨与看跌合约,跨多个交易所聚合,统一以美元计并按同一约定重新计算。十七条路由回答同一个问题:市场把风险放在哪里,以什么价格。

#面向 AI 智能体与 LLM 的加密期权数据

“BTC 周五到期的最大痛点在哪里?”“ETH 隐含波动率在上升吗?”“看跌/看涨比说明了什么?”:AI 智能体通过 MCP 工具 get_options_data 用本数据族作答,该工具接收资产而非交易对。

MCP tools/call
一次 MCP 调用获取 BTC 看涨与看跌合约的持仓结构。
{
  "name": "get_options_data",
  "arguments": {
    "asset": "BTC",
    "fields": ["options_summary", "options_put_call_ratio", "options_iv"]
  }
}
  • 给 LLM 的提示:最大痛点是统计意义上的重心,而非预测;这里只有 BTC 和 ETH 有期权:BTCUSDT 会被拒绝,资产应写 BTC。
  • 给开发者:/v1/options/summary 让使用 tool calling 的 AI 智能体一次请求就看到一个资产的全貌;MCP 工具还可通过 expiries 返回各到期日的数据。
  • 适用环境:Claude、ChatGPT、Cursor 及任何 MCP 客户端,包括支持 MCP 的 AI 智能体框架,如 LangChain 或 n8n。

通过 MCP 服务器指南接入你的 AI 智能体,或用开源的 Agent Skills 教它使用 BytNode。

#基本原则

该市场数据族有三点不同于其他市场数据族。

  • 仅两种资产:比特币和以太坊。其他资产上,这个市场缺乏深度。
  • 通过 ?asset= 指定(必填),只填资产(BTC 或 ETH),而不是 ?symbol=。传入 BTCUSDT 或不传资产,都会返回 422。
  • 希腊值会重新计算,采用统一约定,而不是直接取自各交易所:各交易所的符号和约定差异太大,无法直接相加。
参数类型默认值说明
assetstring必填BTC 或 ETH。必填:缺少时返回 422。
timeframestring接受时必填所有 /history 路由以及 /v1/options/iv/klines、/v1/options/oi/change:5m、15m、30m、1h、4h、1d(本市场数据族不提供 1m);在 /v1/options/oi/change 上为变化的窗口。其他最新值路由(summary、oi、volume、iv、put-call-ratio、greeks、expiry、max-pain、oi/distribution)不接受该参数。
limitinteger100用于 /history 接口。
expirystring—在 /v1/options/max-pain/history 上为必填,在 /v1/options/oi/distribution 上为可选筛选。可传日期(2026-10-30),或按返回形式传入到期日的日期时间。
since_ms / until_msinteger—带日期的窗口,该市场数据族的历史接口均支持。

#概览

GET/v1/options/summarydata_type · options_summary完整参考
此接口的全部 19 个字段(取自接口契约)
timeISO 8601 UTC, milliseconds (2026-09-28T14:00:00.000Z)Point-in-time value: the instant of the options snapshot (all venues read together).
underlying_price_usdUSDIndex (spot) price of the underlying, from the options venues. Each expiry's ATM strike and greeks use that expiry's own forward price. Not the latest trade price: that is the `price` of `/v1/price-change`, i.e. the close of `/v1/klines?live=1`.
oi_total_usdUSDTotal open interest, USD.
oi_call_usdUSDCall open interest, USD.
oi_put_usdUSDPut open interest, USD.
volume_total_usdUSDTotal traded volume, USD.
volume_call_usdUSDCall volume, USD.
volume_put_usdUSDPut volume, USD.
put_call_ratioputs / callsPut/call open interest ratio (a quotient, not a share: 1.2 = 1.2 puts per call). Below 1 = more calls than puts.
put_call_label`bullish` (put_call_ratio < 0.7), `neutral`, or `bearish` (put_call_ratio > 1).
iv_atm_30d_pctpercent (58.5 = 58.5 %)At-the-money implied volatility at a constant 30-day maturity, annualised, in percent (55.2 = 55.2 %). Interpolated in total variance (IV² × time) between the two expiries around 30 days, so it does not jump when the nearest expiry rolls off; the ATM IV of each expiry is on `/v1/options/expiry`.
nearest_expiryThe next expiry: its instant, the time left, max pain, put/call ratio, ATM IV.
nearest_expiry.expiry_atISO 8601 UTC, milliseconds (2026-09-28T14:00:00.000Z)Expiry instant (08:00 UTC). Pass its date part (`YYYY-MM-DD`) as the `expiry` parameter.
nearest_expiry.time_to_expiry_ssecondsTime left before expiry, in seconds.
nearest_expiry.max_pain_strike_usdUSDStrike at which option holders lose the most at expiry (max pain).
nearest_expiry.put_call_ratioputs / callsPut/call open interest ratio (a quotient, not a share: 1.2 = 1.2 puts per call). Below 1 = more calls than puts.
nearest_expiry.iv_atm_pctpercent (58.5 = 58.5 %)At-the-money implied volatility of THIS expiry, annualised, in percent (55.2 = 55.2 %).
coverage`oi_coverage_ratio`: share of the open interest covered by the venues that answered (1.0 = all).
coverage.oi_coverage_ratiofraction (0.585 = 58.5 %)Share of the open interest covered by the contributing venues.

一次调用获取全貌:持仓、成交量、看跌/看涨比、平值隐含波动率,以及最近到期日的详情。

curl -H "X-API-KEY: $BYTNODE_API_KEY" \
  "https://api.bytnode.com/v1/options/summary?asset=BTC"
字段类型说明
asset (envelope)stringBTC 或 ETH。
underlying_price_usdfloat标的资产的指数(现货)价格。每个到期日的平值行权价和希腊值使用该到期日自身的远期价格。
oi_total_usd, oi_call_usd, oi_put_usdfloat以美元计的持仓:总计、看涨、看跌。
volume_total_usd, volume_call_usd, volume_put_usdfloat以美元计的成交额,分项相同。
put_call_ratiofloat看跌与看涨之比。
put_call_labelstring对该比率的定性解读。
iv_atm_30d_pctfloat插值到 30 天的平值隐含波动率,以百分比表示(48.2 = 48.2%)。
nearest_expiryobject最近的到期日:日期、剩余天数、最大痛点,以及其自身的看跌/看涨比和波动率。
coverageobjectoi_coverage_ratio:被聚合的交易所所代表的持仓量占比,取值 0 到 1 的小数。

#持仓量与成交量

GET/v1/options/oidata_type · options_oi完整参考
此接口的全部 8 个字段(取自接口契约)
timeISO 8601 UTC, milliseconds (2026-09-28T14:00:00.000Z)Point-in-time value: the instant of the options snapshot (all venues read together).
oi_total_usdUSDTotal open interest, USD.
oi_call_usdUSDCall open interest, USD.
oi_put_usdUSDPut open interest, USD.
oi_callbase asset quantity (BTC for BTCUSDT)Call open interest, in coins (base asset).
oi_putbase asset quantity (BTC for BTCUSDT)Put open interest, in coins (base asset).
coverage`oi_coverage_ratio`: share of the open interest covered by the venues that answered (1.0 = all).
coverage.oi_coverage_ratiofraction (0.585 = 58.5 %)Share of the open interest covered by the contributing venues.
GET/v1/options/oi/historydata_type · options_oi_history完整参考
此接口的全部 7 个字段(取自接口契约)
timeISO 8601 UTC, milliseconds (2026-09-28T14:00:00.000Z)Start of the bucket; the value is the LAST options snapshot of the bucket.
oi_total_usdUSDTotal open interest, USD.
oi_call_usdUSDCall open interest, USD.
oi_put_usdUSDPut open interest, USD.
oi_callbase asset quantity (BTC for BTCUSDT)Call open interest, in coins (base asset).
oi_putbase asset quantity (BTC for BTCUSDT)Put open interest, in coins (base asset).
is_closed`true` = the row is final; `false` = provisional: the latest bucket while it still settles (a few seconds after its end, e.g. a candle whose volumes are not final yet), or the period in progress with `?live=1` on the routes that take it. Exception, rare: when a venue delivers trades LATE (seconds to minutes, e.g. during a burst), a closed row built from trades (trade candles, candle volumes, CVD, buy/sell ratio, trades per second) is corrected afterwards to include them, usually within minutes and at most one hour later; the correction only adds the late trades.

持仓量,以资产单位和美元表示,按看涨和看跌拆分。

GET/v1/options/oi/changedata_type · options_oi_change完整参考
此接口的全部 6 个字段(取自接口契约)
timeISO 8601 UTC, milliseconds (2026-09-28T14:00:00.000Z)Point-in-time value: the instant of the options snapshot (all venues read together).
window_start_atISO 8601 UTC, milliseconds (2026-09-28T14:00:00.000Z)Instant of the reference snapshot: the latest one at least `timeframe` before `time`.
window_ssecondsActual distance between the two snapshots, in whole seconds (`timeframe` or a little more: snapshots arrive every minute).
oi_change_call_usdUSDChange of call open interest from `window_start_at` to `time`, USD.
oi_change_put_usdUSDChange of put open interest from `window_start_at` to `time`, USD.
oi_change_total_usdUSDChange of total open interest from `window_start_at` to `time`, USD.
GET/v1/options/oi/change/historydata_type · options_oi_change_history完整参考
此接口的全部 5 个字段(取自接口契约)
timeISO 8601 UTC, milliseconds (2026-09-28T14:00:00.000Z)Start of the bucket; the value is the LAST options snapshot of the bucket.
oi_change_call_usdUSDChange of call open interest from `window_start_at` to `time`, USD.
oi_change_put_usdUSDChange of put open interest from `window_start_at` to `time`, USD.
oi_change_total_usdUSDChange of total open interest from `window_start_at` to `time`, USD.
is_closed`true` = the row is final; `false` = provisional: the latest bucket while it still settles (a few seconds after its end, e.g. a candle whose volumes are not final yet), or the period in progress with `?live=1` on the routes that take it. Exception, rare: when a venue delivers trades LATE (seconds to minutes, e.g. during a burst), a closed row built from trades (trade candles, candle volumes, CVD, buy/sell ratio, trades per second) is corrected afterwards to include them, usually within minutes and at most one hour later; the correction only adds the late trades.

窗口内的变化,按需计算:最后一个值减去第一个值。每行带有 oi_change_call_usd 和 oi_change_put_usd。

GET/v1/options/oi/distributiondata_type · options_oi_distribution完整参考
此接口的全部 5 个字段(取自接口契约)
timeISO 8601 UTC, milliseconds (2026-09-28T14:00:00.000Z)Point-in-time value: the instant of the options snapshot (all venues read together).
expiry_atISO 8601 UTC, milliseconds (2026-09-28T14:00:00.000Z)Expiry instant (08:00 UTC). Pass its date part (`YYYY-MM-DD`) as the `expiry` parameter.
strike_usdUSDStrike price.
oi_call_usdUSDCall open interest at this strike, USD. `null` = no call listed.
oi_put_usdUSDPut open interest at this strike, USD. `null` = no put listed.

持仓量按行权价和到期日的分布。它是市场真正投入资金的价位地图:标的必须穿越的行权价墙。

GET/v1/options/volumedata_type · options_volume完整参考
此接口的全部 6 个字段(取自接口契约)
timeISO 8601 UTC, milliseconds (2026-09-28T14:00:00.000Z)Point-in-time value: the instant of the options snapshot (all venues read together).
volume_total_usdUSDTotal traded volume, USD.
volume_call_usdUSDCall volume, USD.
volume_put_usdUSDPut volume, USD.
coverage`oi_coverage_ratio`: share of the open interest covered by the venues that answered (1.0 = all).
coverage.oi_coverage_ratiofraction (0.585 = 58.5 %)Share of the open interest covered by the contributing venues.
GET/v1/options/volume/historydata_type · options_volume_history完整参考
此接口的全部 5 个字段(取自接口契约)
timeISO 8601 UTC, milliseconds (2026-09-28T14:00:00.000Z)Start of the bucket; the value is the LAST options snapshot of the bucket.
volume_total_usdUSDTotal traded volume, USD.
volume_call_usdUSDCall volume, USD.
volume_put_usdUSDPut volume, USD.
is_closed`true` = the row is final; `false` = provisional: the latest bucket while it still settles (a few seconds after its end, e.g. a candle whose volumes are not final yet), or the period in progress with `?live=1` on the routes that take it. Exception, rare: when a venue delivers trades LATE (seconds to minutes, e.g. during a burst), a closed row built from trades (trade candles, candle volumes, CVD, buy/sell ratio, trades per second) is corrected afterwards to include them, usually within minutes and at most one hour later; the correction only adds the late trades.

#看跌/看涨比与最大痛点

GET/v1/options/put-call-ratiodata_type · options_put_call_ratio完整参考
此接口的全部 3 个字段(取自接口契约)
timeISO 8601 UTC, milliseconds (2026-09-28T14:00:00.000Z)Point-in-time value: the instant of the options snapshot (all venues read together).
put_call_ratioputs / callsPut/call open interest ratio (a quotient, not a share: 1.2 = 1.2 puts per call). Below 1 = more calls than puts.
put_call_label`bullish` (put_call_ratio < 0.7), `neutral`, or `bearish` (put_call_ratio > 1).
GET/v1/options/put-call-ratio/historydata_type · options_put_call_ratio_history完整参考
此接口的全部 4 个字段(取自接口契约)
timeISO 8601 UTC, milliseconds (2026-09-28T14:00:00.000Z)Start of the bucket; the value is the LAST options snapshot of the bucket.
put_call_ratioputs / callsPut/call open interest ratio (a quotient, not a share: 1.2 = 1.2 puts per call). Below 1 = more calls than puts.
put_call_label`bullish` (put_call_ratio < 0.7), `neutral`, or `bearish` (put_call_ratio > 1).
is_closed`true` = the row is final; `false` = provisional: the latest bucket while it still settles (a few seconds after its end, e.g. a candle whose volumes are not final yet), or the period in progress with `?live=1` on the routes that take it. Exception, rare: when a venue delivers trades LATE (seconds to minutes, e.g. during a burst), a closed row built from trades (trade candles, candle volumes, CVD, buy/sell ratio, trades per second) is corrected afterwards to include them, usually within minutes and at most one hour later; the correction only adds the late trades.

看跌与看涨之比,按持仓量和成交量分别计算。低于 1 时看涨占优;高于 1 时下行对冲占上风。

GET/v1/options/max-paindata_type · options_max_pain完整参考
此接口的全部 7 个字段(取自接口契约)
timeISO 8601 UTC, milliseconds (2026-09-28T14:00:00.000Z)Point-in-time value: the instant of the options snapshot (all venues read together).
expiry_atISO 8601 UTC, milliseconds (2026-09-28T14:00:00.000Z)Expiry instant (08:00 UTC). Pass its date part (`YYYY-MM-DD`) as the `expiry` parameter.
time_to_expiry_ssecondsTime left before expiry, in seconds.
max_pain_strike_usdUSDStrike at which option holders lose the most at expiry (max pain).
put_call_ratioputs / callsPut/call open interest ratio (a quotient, not a share: 1.2 = 1.2 puts per call). Below 1 = more calls than puts.
oi_call_usdUSDCall open interest, USD.
oi_put_usdUSDPut open interest, USD.
GET/v1/options/max-pain/historydata_type · options_max_pain_history完整参考
此接口的全部 4 个字段(取自接口契约)
timeISO 8601 UTC, milliseconds (2026-09-28T14:00:00.000Z)The instant of the options snapshot the max pain was computed on (one row per snapshot, about every minute; no `timeframe`).
max_pain_strike_usdUSDStrike at which option holders lose the most at expiry (max pain).
put_call_ratioputs / callsPut/call open interest ratio (a quotient, not a share: 1.2 = 1.2 puts per call). Below 1 = more calls than puts.
is_closed`true` = the row is final; `false` = provisional: the latest bucket while it still settles (a few seconds after its end, e.g. a candle whose volumes are not final yet), or the period in progress with `?live=1` on the routes that take it. Exception, rare: when a venue delivers trades LATE (seconds to minutes, e.g. during a burst), a closed row built from trades (trade candles, candle volumes, CVD, buy/sell ratio, trades per second) is corrected afterwards to include them, usually within minutes and at most one hour later; the correction only adds the late trades.

max pain 历史针对的是单个到期日:因此 expiry 为必填。可以按 /v1/options/max-pain 或 /v1/options/expiry 返回的形式传入(2026-10-01T08:00:00.000Z),也可以只传日期(2026-10-01):两者指同一个到期日。缺失时,请求返回 422 missing_parameter,错误信息会列出该资产的有效到期日。

什么是最大痛点

使到期合约总价值最低的行权价,也就是看涨与看跌买方亏损最多的价位。它是统计上的重心,而不是预测:其价值在于说明现有仓位在哪个价位形成张力。

#隐含波动率

GET/v1/options/ivdata_type · options_iv完整参考
此接口的全部 2 个字段(取自接口契约)
timeISO 8601 UTC, milliseconds (2026-09-28T14:00:00.000Z)Point-in-time value: the instant of the options snapshot (all venues read together).
iv_atm_30d_pctpercent (58.5 = 58.5 %)At-the-money implied volatility at a constant 30-day maturity, annualised, in percent (55.2 = 55.2 %). Interpolated in total variance (IV² × time) between the two expiries around 30 days, so it does not jump when the nearest expiry rolls off; the ATM IV of each expiry is on `/v1/options/expiry`.

30 天恒定期限的平值隐含波动率,以百分比表示(iv_atm_30d_pct):在 30 天前后的两个到期日之间按总方差插值,因此最近到期日到期时不会跳变。它衡量市场为对冲支付了多少,与方向无关。每个到期日的平值波动率见 /v1/options/expiry。

GET/v1/options/iv/klinesdata_type · options_iv_klines完整参考
此接口的全部 6 个字段(取自接口契约)
timeISO 8601 UTC, milliseconds (2026-09-28T14:00:00.000Z)Start of the latest CLOSED bucket; the candle summarises its options snapshots.
open_pctpercent (58.5 = 58.5 %)30-day ATM IV at the start of the bucket.
high_pctpercent (58.5 = 58.5 %)Highest 30-day ATM IV.
low_pctpercent (58.5 = 58.5 %)Lowest 30-day ATM IV.
close_pctpercent (58.5 = 58.5 %)30-day ATM IV at the end of the bucket.
is_closed`true` = the row is final; `false` = provisional: the latest bucket while it still settles (a few seconds after its end, e.g. a candle whose volumes are not final yet), or the period in progress with `?live=1` on the routes that take it. Exception, rare: when a venue delivers trades LATE (seconds to minutes, e.g. during a burst), a closed row built from trades (trade candles, candle volumes, CVD, buy/sell ratio, trades per second) is corrected afterwards to include them, usually within minutes and at most one hour later; the correction only adds the late trades.

同一波动率,以按需生成的 OHLC K 线呈现,同样以百分比表示。每行带有 time、open、high、low、close。足以像绘制价格一样绘制波动率。与该市场数据族的所有历史接口一样,只提供已收盘的 K 线:进行中的那根从不出现。

#希腊值与到期日

GET/v1/options/greeksdata_type · options_greeks完整参考
此接口的全部 7 个字段(取自接口契约)
timeISO 8601 UTC, milliseconds (2026-09-28T14:00:00.000Z)Point-in-time value: the instant of the options snapshot (all venues read together).
deltadeltaAggregated delta of open options, OI-weighted (per unit of underlying).
gammadelta per USDChange of delta for a 1 USD move of the underlying, OI-weighted.
thetaUSD per dayTime decay per day, OI-weighted.
vegaUSD per volatility pointValue change for +1 point of implied volatility, OI-weighted.
coverage`oi_coverage_ratio`: share of the open interest covered by the venues that answered (1.0 = all).
coverage.oi_coverage_ratiofraction (0.585 = 58.5 %)Share of the open interest covered by the contributing venues.

按持仓量加权聚合的 Delta、Gamma、Vega 和 Theta。它们按统一约定重新计算,因此可以跨交易所相加,而各交易所自行公布的数值做不到这一点。

GET/v1/options/expirydata_type · options_expiry完整参考
此接口的全部 11 个字段(取自接口契约)
timeISO 8601 UTC, milliseconds (2026-09-28T14:00:00.000Z)Point-in-time value: the instant of the options snapshot (all venues read together).
expiry_atISO 8601 UTC, milliseconds (2026-09-28T14:00:00.000Z)Expiry instant (08:00 UTC). Pass its date part (`YYYY-MM-DD`) as the `expiry` parameter.
time_to_expiry_ssecondsTime left before expiry, in seconds.
oi_call_usdUSDCall open interest, USD.
oi_put_usdUSDPut open interest, USD.
put_call_ratioputs / callsPut/call open interest ratio (a quotient, not a share: 1.2 = 1.2 puts per call). Below 1 = more calls than puts.
max_pain_strike_usdUSDStrike at which option holders lose the most at expiry (max pain).
top_call_strike_usdUSDStrike with the largest call open interest.
top_put_strike_usdUSDStrike with the largest put open interest.
iv_atm_pctpercent (58.5 = 58.5 %)At-the-money implied volatility of THIS expiry, annualised, in percent (55.2 = 55.2 %).
put_call_label`bullish` (put_call_ratio < 0.7), `neutral`, or `bearish` (put_call_ratio > 1).

按到期日汇总:每个日期的持仓、看跌/看涨比、最大痛点和波动率。在大额到期之前应查看此视图,因为届时仓位了结会对标的产生影响。