订单流如何推动隐含波动率变化
用一个行权价看懂订单流如何推高隐含波动率,结合AAPL真实每日波动率与成交量数据,解释股价横盘时期权报价为何变化。
订单流逐笔推动隐含波动率。做市商为期权报价时,并不是在判断股票将往哪个方向走。他们会同时报出买价和卖价。当买单持续涌向同一侧时,做市商会不断提高其愿意提供的波动率,直到订单流放缓,或持仓成本得到补偿。整个过程中,股票本身可能始终横盘,而且这种情况很常见。
做市商实际报出的是什么
期权有以美元计价的买价和卖价,但另一侧的交易台以波动率为工作单位。隐含波动率是年化百分比变动幅度。在给定行权价、剩余到期天数、股价和利率的情况下,期权价格与之相匹配。将价格代入定价模型,可以反推出波动率。代入波动率,则可以反推出价格。隐含波动率只是用另一种单位重新表达价格。因此,专业交易者之间通常以波动率报价期权,而不是以美元报价。
举个假设例子可以更清楚地说明这一点。一张行权价为220美元、剩余一个月到期的看涨期权,早盘卖价为5.20美元。到下午,同一合约的卖价升至5.60美元,股票仍为220美元,但剩余期限少了一天。行权价没有变化,利率没有变化,而时间流逝本应推动期权价格朝相反方向变动。这多出的40美分只能来自波动率输入,没有其他来源。
订单流如何在单一行权价上推动隐含波动率
下图选取所有距离股价不超过5%、剩余20至45天到期的AAPL期权,并从三个角度衡量每个交易日:当天合约成交量中看涨期权所占比例、这些平值附近合约的平均隐含波动率,以及收盘时股价相对于观察窗口第一天水平的变化。
每个数字背后的完整 SQL
WITH
(
SELECT toFloat64(close)
FROM global_markets.stocks_daily_aggs
WHERE ticker = 'AAPL'
AND date >= '2026-05-01'
ORDER BY date
LIMIT 1
) AS start_close
SELECT
toString(date) AS date,
round(100 * sumIf(volume, startsWith(lower(toString(option_type)), 'c')) / sum(volume), 1) AS call_share_pct,
round(100 * avg(implied_volatility), 1) AS atm_iv_pct,
round(100 * (toFloat64(any(underlying_close)) / start_close - 1), 1) AS stock_pct_vs_start
FROM global_markets.options_greeks
WHERE underlying_symbol = 'AAPL'
AND date BETWEEN '2026-05-01' AND '2026-06-30'
AND iv_converged = 1
AND volume > 0
AND days_to_expiry BETWEEN 20 AND 45
AND abs(toFloat64(strike_price) / toFloat64(underlying_close) - 1) < 0.05
GROUP BY date
ORDER BY date在5月和6月2026年的41个交易日中,看涨期权成交占比从观察窗口开始时平值附近成交量的71%,升至结束时的80.7%。这些合约的波动率则从22.5%升至27.8%;同期股票收盘价较起点变动了3.2%。
两条线并不会逐日同步,这才是这一机制的真实表现。某一天的单边买入可能只让报价移动一个跳动点。连续多日的订单流则会推高整体水平,因为做市商每天早上都被要求以尚未足以抑制需求的价格,继续持有更多同方向的仓位。整个过程中,股票无需发生任何方向性变动。
为何某一行权价的IV高于相邻行权价
固定一个交易日,横向比较不同的行权价,而不是比较不同日期。下图固定交易日期和到期日,按该交易日成交最活跃的到期日,从低于股价的行权价逐步排列到高于股价的行权价。
每个数字背后的完整 SQL
WITH
(
SELECT max(date)
FROM global_markets.options_greeks
WHERE underlying_symbol = 'AAPL'
AND date <= '2026-06-30'
) AS session_date,
(
SELECT expiration_date
FROM global_markets.options_greeks
WHERE underlying_symbol = 'AAPL'
AND date = session_date
AND iv_converged = 1
AND volume > 0
AND days_to_expiry BETWEEN 20 AND 45
GROUP BY expiration_date
ORDER BY sum(volume) DESC
LIMIT 1
) AS busy_expiry
SELECT
concat('$', toString(toUInt32(round(toFloat64(strike_price))))) AS strike,
round(100 * avg(implied_volatility), 1) AS offered_iv_pct,
sum(volume) AS contract_volume
FROM global_markets.options_greeks
WHERE underlying_symbol = 'AAPL'
AND date = session_date
AND expiration_date = busy_expiry
AND iv_converged = 1
AND volume > 0
AND abs(toFloat64(strike_price) / toFloat64(underlying_close) - 1) <= 0.06
GROUP BY strike_price
ORDER BY strike_price图中的每份合约都对应同一只股票、同一个交易日,并在同一日期到期。各行之间唯一变化的是行权价,卖方波动率也随之变化:$275行权价为26.2%,而$305行权价为23.3%,总计覆盖7个行权价。一个行权价与下一个行权价之间的差异,就是波动率偏斜。买卖力量的平衡是影响偏斜形态的因素之一。需求不会均匀分布在整条期权链上,而是集中在交易者想要的行权价上。该行权价的报价也会随之变动。
按期权类型拆分同一交易日的数据,可以进一步看清这一点,因为距离股价相同的看涨期权和看跌期权,是由同一交易台在同一时刻报价的。
每个数字背后的完整 SQL
WITH
(
SELECT max(date)
FROM global_markets.options_greeks
WHERE underlying_symbol = 'AAPL'
AND date <= '2026-06-30'
) AS session_date
SELECT
multiIf(bucket = 0, 'at spot',
bucket < 0, concat(toString(abs(bucket)), '% below'),
concat(toString(bucket), '% above')) AS strike_vs_spot,
round(100 * avgIf(iv, is_call), 1) AS call_iv_pct,
round(100 * avgIf(iv, NOT is_call), 1) AS put_iv_pct
FROM
(
SELECT
implied_volatility AS iv,
startsWith(lower(toString(option_type)), 'c') AS is_call,
round(((toFloat64(strike_price) / toFloat64(underlying_close)) - 1) * 100 / 2.5) * 2.5 AS bucket
FROM global_markets.options_greeks
WHERE underlying_symbol = 'AAPL'
AND date = session_date
AND iv_converged = 1
AND volume > 0
AND days_to_expiry BETWEEN 20 AND 45
AND abs(toFloat64(strike_price) / toFloat64(underlying_close) - 1) <= 0.10
)
GROUP BY bucket
HAVING countIf(is_call) > 0 AND countIf(NOT is_call) > 0
ORDER BY bucket在7.5% below,看跌期权的波动率为30%,看涨期权则为27.6%。在10% above,同样两项指标分别为33.3%和25.7%。股票相同,时间相同,模型相同。差异来自交易者持续询价的行权价。
做市商仍会持续报出另一侧的价格
提高卖价并不等于拒绝交易。交易台持续向稳定需求卖出看涨期权后,会形成看涨期权空头。通常的防御方式是买入股票进行对冲。这就是Delta对冲:根据期权的方向性风险确定股票持仓规模,并随着股价变化进行调整。对冲并非没有成本。每次股价变动都需要重新平衡,这会产生费用。此外,股票无法对冲的那部分风险,即持仓对波动率本身的敏感度,会随着卖出合约数量增加而上升。
更高的卖价,是交易台承担一单位相同风险所要求的价格。买价也会随之上移,因为交易台愿意在更有利的价位买回这些看涨期权。买卖两侧之间的价差,正是做市商的盈利来源,而不是对方向的押注。
电子报价能够、也不能够观察到什么
在交易大厅时代,订单是由人带来的。经纪人走进交易人群,做市商可以看到订单规模及其所属机构。这些信息会影响报价。电子屏幕消除了这类背景信息。现代做市商只能在交易发生后,通过成交明细读取订单流的形态:不同执行价和到期日的成交量、隔夜未平仓量的变化(即仍未平仓的合约数量)、挂单卖价被主动买入的速度,以及波动率上调后买盘是否再次出现。大多数时候,交易台无法区分机构订单和散户订单。报价会根据交易模式调整,而不是根据交易者身份调整。
每个数字背后的完整 SQL
WITH
(
SELECT max(date)
FROM global_markets.options_greeks
WHERE underlying_symbol IN ('AAPL', 'MSFT', 'NVDA', 'AMZN', 'KO', 'SPY')
AND date <= '2026-06-30'
) AS session_date
SELECT
underlying_symbol AS symbol,
round(100 * sumIf(volume, startsWith(lower(toString(option_type)), 'c')) / sum(volume), 1) AS call_share_pct,
round(100 * avg(implied_volatility), 1) AS atm_iv_pct
FROM global_markets.options_greeks
WHERE underlying_symbol IN ('AAPL', 'MSFT', 'NVDA', 'AMZN', 'KO', 'SPY')
AND date = session_date
AND iv_converged = 1
AND volume > 0
AND days_to_expiry BETWEEN 20 AND 45
AND abs(toFloat64(strike_price) / toFloat64(underlying_close) - 1) < 0.05
GROUP BY underlying_symbol
ORDER BY call_share_pct DESC在该交易日,AMZN位居样本前列,其平值附近成交量中有91.9%为看涨期权,平值附近波动率为38.7%。向下查看图中的两列数据,可以发现它们并不会逐行对应。一天的订单流只是波动率曲面的一个输入。该曲面还包含每个标的自身的交易历史,以及交易台当时已经持有的仓位。
这并不意味着什么
报价不是预测。更高的卖价只说明交易台希望通过下一份卖出的合约获得更多补偿,并不说明股票下一步将往哪个方向走。隐含波动率是由市场参与者实际支付的价格决定的价格,而隐含波动率与历史波动率之间的差距,可以用来观察价格与实际结果有多频繁地出现偏离。某一行权价的报价为40%波动率,并不代表市场预测股票将变动40%。这只说明有人希望买入该合约,并将其价格推高。
这些图表如何测算
每张图只保留模型波动率解收敛、且当日确实有成交的合约。随后,仅保留平值附近、剩余20至45天到期的行权价。这是观察波动率水平的标准窗口,可避免期限过短或过长带来的失真。各区间内的平均值按合约等权计算。看涨期权占比按成交合约数量计算,而不是按客户交易方向计算,因为成交明细不会标注一笔交易是买入还是卖出。
常见问题
买入期权会推高隐含波动率吗?
在某一行权价持续出现单边买入时,该行权价的卖方波动率通常会同步升高。另一侧的交易台正在卖出随后需要对冲的合约,而卖价决定了下一份合约的定价。单笔小额订单通常不会以可见方式改变流动性良好标的的波动率。
做市商会判断方向吗?
双边报价业务建立在买卖价差之上,股票风险通常会被对冲,而不是直接持有。做市商最终形成多头或空头仓位,通常只是因为承接了其他人的订单。
为什么同一只股票的两个行权价具有不同的隐含波动率?
每个行权价都是独立合约,各自拥有独立的供求关系。偏斜描述的就是这种模式:在同一到期日内,下行和上行行权价以不同波动率报价。
隐含波动率上升是否意味着股票将发生变动?
不意味着。隐含波动率是用百分比形式重新表达的期权价格,而价格反映的是市场当前愿意支付的金额。实际波动低于或高于期权市场收取的水平,一直都很常见。
做市商能知道谁在买入吗?
在电子市场中通常不能。成交明细会显示合约、行权价、到期日和时间戳,但不会附带客户名称。在交易大厅时代,做市商可以看到交易人群中的经纪人;转向电子屏幕后,这类信息便消失了。
上文每张图表都附有生成图表的SQL,因此同样的测算可以应用于其他标的或其他周。您可以在Strasmore终端中用自然语言提出请求。