Strasmore Research
学习 Matt Connor作者: Matt Connor · 更新于 2026-10-09

0DTE期权风险高吗?Gamma和Theta怎么看

比较SPY当日到期期权与一个月期权的Gamma、Theta和权利金,了解标的需要波动多远才能翻倍,判断风险究竟来自合约还是仓位。

0DTE期权风险高吗?从机制上看,是的:当日到期期权将一个月期期权的gamma和theta压缩在一个交易时段内,其权利金可能因SPY在普通一周内的波动而翻倍或归零。不过,真正导致散户账户资金耗尽的通常不是这种工具,而是仓位规模。以下数据来自2026年6月实际交易的SPY合约。

为什么0DTE期权比期限更长的期权风险更高?

0DTE期权是在最后交易日交易的合约(DTE指距离到期的天数;什么是0DTE期权一文介绍了基本概念)。当合约剩余时间从数周缩短至数小时时,会发生三项变化。

没有时间修复损失。剩余30天的合约可以承受不利波动并等待价格回升;当日到期的合约则无法等待。对于平值0DTE期权,权利金中的每一美元时间价值都会在收盘时归零。

Gamma高度集中。Delta表示期权对标的资产一美元变动的敏感度;Gamma表示标的资产变动时Delta的变化速度。临近到期时,Gamma会在行权价附近集中,SPY的小幅波动也可能使合约Delta从接近0大幅升至接近1(期权Gamma解析介绍了其运行机制)。

相对于权利金而言,Theta极高。Theta表示期权仅因时间流逝每天损失的价值;对于当日到期合约,按定义,Theta对应整个权利金(期权Theta介绍了合约存续期内的变化曲线)。

第一张图对这一点进行了定价分析。我们提取了2026年6月每个交易日的所有平值SPY看涨期权(行权价与SPY收盘价的偏离幅度不超过四分之一个百分点),按距离到期的天数对合约分组,并计算其平均权利金,以及SPY需要上涨多少才能收回权利金成本。

查询平值 SPY 看涨期权成本(按到期天数,2026年6月)
到期天数区间平均权利金盈亏平衡变动幅度 (%)双倍变动幅度 (%)Delta变动幅度 (%)
1 day (next session)3.020.410.810.79
2-5 days4.770.641.291.25
6-10 days6.70.91.81.73
11-20 days9.021.222.432.31
21-45 days14.271.923.843.56
每个数字背后的完整 SQL
WITH atm_calls AS
(
    SELECT
        days_to_expiry              AS dte,
        toFloat64(option_close)     AS premium,
        toFloat64(underlying_close) AS spot,
        toFloat64(delta)            AS dlt
    FROM global_markets.options_greeks
    WHERE underlying_symbol = 'SPY'
      AND lower(toString(option_type)) IN ('call', 'c')
      AND date >= toDate('2026-06-01')
      AND date <  toDate('2026-07-01')
      AND days_to_expiry > 0
      AND days_to_expiry <= 45
      AND iv_converged = 1
      AND volume > 0
      AND option_close > 0
      AND toFloat64(delta) BETWEEN 0.2 AND 0.8
      AND abs(toFloat64(strike_price) / toFloat64(underlying_close) - 1) < 0.0025
)
SELECT
    multiIf(dte <= 1,  '1 day (next session)',
            dte <= 5,  '2-5 days',
            dte <= 10, '6-10 days',
            dte <= 20, '11-20 days',
                       '21-45 days')                   AS dte_bucket,
    round(avg(premium), 2)                             AS avg_premium,
    round(avg(premium / spot) * 100, 2)                AS breakeven_move_pct,
    round(avg(premium / spot) * 200, 2)                AS double_move_pct,
    round(avg(premium / (dlt * spot)) * 100, 2)        AS delta_move_pct
FROM atm_calls
GROUP BY dte_bucket
ORDER BY min(dte)
自己运行这个查询

剩余一个日历日的合约平均成本为$3.02,相当于SPY价格的0.41%;相比之下,剩余21至45天的合约成本为$14.27(1.92%)。breakeven_move_pct列表示,期权到期时,SPY收盘价必须高于行权价多少,该看涨期权的价值才等于其成本;double_move_pct是这一幅度的两倍。delta_move_pct列是针对当日交易的一级近似值:仅凭合约当前的Delta,SPY需要变动到什么幅度,合约才能赚回或损失全部权利金。对于次日到期合约,该数值为0.79%;对于剩余一个月的合约,该数值为3.56%。请将这两项数据与下方到期日面板中的SPY日波动进行比较。

SPY需要移动多少,才能让0DTE期权权利金翻倍或归零?

按每一美元权利金比较才公平,因为一份具有较大希腊值的低价合约,可能与一份希腊值较小的高价合约承载相同的美元敞口。下一面板将同一组2026年6月合约的gamma和theta除以权利金,并将每一档表示为21至45天档的倍数。

查询每美元权利金的伽马与Theta(按到期天数,2026年6月)
到期天数区间每美元权利金的Gamma每日Theta (%)相对月外Gamma比率相对月外Theta比率
1 day (next session)0.029551.831.828.7
2-5 days0.009317109.4
6-10 days0.00476.95.13.9
11-20 days0.00233.92.52.2
21-45 days0.00091.811
每个数字背后的完整 SQL
WITH atm_calls AS
(
    SELECT
        days_to_expiry          AS dte,
        toFloat64(option_close) AS premium,
        toFloat64(gamma)        AS gma,
        toFloat64(theta)        AS tht
    FROM global_markets.options_greeks
    WHERE underlying_symbol = 'SPY'
      AND lower(toString(option_type)) IN ('call', 'c')
      AND date >= toDate('2026-06-01')
      AND date <  toDate('2026-07-01')
      AND days_to_expiry > 0
      AND days_to_expiry <= 45
      AND iv_converged = 1
      AND volume > 0
      AND option_close > 0
      AND toFloat64(delta) BETWEEN 0.2 AND 0.8
      AND abs(toFloat64(strike_price) / toFloat64(underlying_close) - 1) < 0.0025
),
ladder AS
(
    SELECT
        multiIf(dte <= 1,  '1 day (next session)',
                dte <= 5,  '2-5 days',
                dte <= 10, '6-10 days',
                dte <= 20, '11-20 days',
                           '21-45 days')       AS dte_bucket,
        min(dte)                               AS dte_lo,
        avg(gma / premium)                     AS gamma_raw,
        avg(abs(tht) / premium) * 100          AS theta_raw
    FROM atm_calls
    GROUP BY dte_bucket
)
SELECT
    dte_bucket,
    round(gamma_raw, 4)                                                                   AS gamma_per_premium_dollar,
    round(theta_raw, 1)                                                                   AS theta_pct_per_day,
    round(gamma_raw / (SELECT gamma_raw FROM ladder WHERE dte_bucket = '21-45 days'), 1)  AS gamma_ratio_vs_month_out,
    round(theta_raw / (SELECT theta_raw FROM ladder WHERE dte_bucket = '21-45 days'), 1)  AS theta_ratio_vs_month_out
FROM ladder
ORDER BY dte_lo
自己运行这个查询

按每一美元权利金计算,次日到期合约的gamma为0.0295,而一个月后到期合约为0.0009,即31.8比1。次日到期合约的theta每天消耗权利金的51.8%,一个月后到期合约则为1.8%,即28.7比1。

收盘时的翻倍和归零计算只取决于到期收益。看涨期权的价值等于SPY收盘价减去行权价,或为零。若在平值买入,SPY收盘价高于行权价两个权利金时,期权价值翻倍(相当于次日到期合约SPY价格的0.81%);若SPY收盘价等于或低于行权价,期权价值归零。价格不变就足以使其归零。一个月后到期合约需要在到期时高于行权价3.84%,才能实现翻倍;SPY有数周时间达到该水平,投资者也可以在此期间卖出期权。收益结构相同,但时间窗口不同;期权在此期间的价格变化,则由希腊值反映时间因素的影响。

为什么Gamma会集中在行权价附近

Gamma在标的价格所在位置达到峰值,向两侧逐渐下降。距离到期日越近,峰值越尖锐。图中将Gamma表示为SPY价格变动1%带来的Delta变化,即Gamma乘以SPY价格再除以100。数据按平值两侧每0.5%的价格区间计算,覆盖2026年6月。图中采用高于现货价格的虚值看涨期权,以及低于现货价格的虚值看跌期权。同一行权价的两者具有相同的Gamma。

查询SPY 变动1%带来的Delta变化(按距行权价的距离,2026年6月)
价内程度次日Delta变化月外Delta变化
-2%0.0780.071
-1.5%0.1310.077
-1%0.2240.081
-0.5%0.3720.087
0%0.4970.092
+0.5%0.3880.097
+1%0.2110.098
+1.5%0.0940.097
+2%0.0420.095
每个数字背后的完整 SQL
SELECT
    concat(if(half_pct > 0, '+', ''), toString(half_pct / 2), '%')  AS moneyness,
    round(avgIf(gma * spot / 100, dte <= 1), 3)                      AS next_day_delta_shift,
    round(avgIf(gma * spot / 100, dte BETWEEN 21 AND 45), 3)         AS month_out_delta_shift
FROM
(
    SELECT
        toInt32(round((toFloat64(strike_price) / toFloat64(underlying_close) - 1) * 200)) AS half_pct,
        days_to_expiry                                                                     AS dte,
        toFloat64(gamma)                                                                   AS gma,
        toFloat64(underlying_close)                                                        AS spot
    FROM global_markets.options_greeks
    WHERE underlying_symbol = 'SPY'
      AND date >= toDate('2026-06-01')
      AND date <  toDate('2026-07-01')
      AND ((days_to_expiry > 0 AND days_to_expiry <= 1) OR days_to_expiry BETWEEN 21 AND 45)
      AND iv_converged = 1
      AND volume > 0
      AND option_close > 0
      AND abs(toFloat64(strike_price) / toFloat64(underlying_close) - 1) < 0.0225
      AND ((lower(toString(option_type)) IN ('call', 'c') AND strike_price >= underlying_close)
        OR (lower(toString(option_type)) IN ('put', 'p')  AND strike_price <  underlying_close))
)
GROUP BY half_pct
HAVING countIf(dte <= 1) > 0 AND countIf(dte BETWEEN 21 AND 45) > 0
ORDER BY half_pct
自己运行这个查询

在行权价处,标的价格变动1%会使次日到期合约的Delta变动0.497,使月度到期合约的Delta变动0.092。高于平值2%处,这两个数值分别为0.042和0.095。一条线呈尖峰形,另一条则较为平缓。临近行权价的当日到期合约,每当SPY变动几美元,其方向性敞口就会重新调整。这正是到期日钉住风险的集中体现。

一个月内在同一天买入 SPY 看涨期权的实际结果

希腊字母描述的是价格在局部范围内的变化。要观察完整结果,下面的面板按到期日逐份分析合约:针对 2026 年 6 月的每个 SPY 到期日,选取行权价最接近到期日前一交易日 SPY 收盘价的看涨期权,记录该晚的收盘价(即次日开盘时屏幕上显示的价格,不考虑任何跳空),然后在到期日收盘时为合约估值:SPY 收盘价减去行权价;如果 SPY 收于行权价或以下,则价值为零。期权到期后,看涨期权的价值就是如此。

查询平值 SPY 看涨期权:前收盘价与到期收盘时价值(2026年6月每个到期日)
21 rows (showing 20)
到期日到期标签前收权利金到期价值剩余权利金 (%)SPY变动 (%)
2026-06-01Mon Jun 12.50.58230.12
2026-06-02Tue Jun 22.712.63970.4
2026-06-03Wed Jun 31.6200-1.2
2026-06-04Thu Jun 43.993.56890.53
2026-06-05Fri Jun 52.9800-2.54
2026-06-08Mon Jun 83.953.72940.46
2026-06-09Tue Jun 92.7500-0.41
2026-06-10Wed Jun 103.6100-1.74
2026-06-11Thu Jun 115.4416.483032.3
2026-06-12Fri Jun 123.53.45990.4
2026-06-15Mon Jun 153.4811.913421.54
2026-06-16Tue Jun 162.2200-0.42
2026-06-17Wed Jun 172.2300-0.69
2026-06-18Thu Jun 180.890.941060.18
2026-06-22Mon Jun 223.1500-0.44
2026-06-23Tue Jun 232.7800-1.16
2026-06-24Wed Jun 242.752.2800.3
2026-06-25Thu Jun 252.6800-0.61
2026-06-26Fri Jun 263.6100-0.2
2026-06-29Mon Jun 293.869.762531.31
每个数字背后的完整 SQL
WITH spy_by_day AS
(
    SELECT
        toDate(date)                             AS d,
        medianExact(toFloat64(underlying_close)) AS spot
    FROM global_markets.options_greeks
    WHERE underlying_symbol = 'SPY'
      AND date >= toDate('2026-06-01')
      AND date <  toDate('2026-07-01')
      AND underlying_close > 0
    GROUP BY d
),
last_sessions AS
(
    SELECT
        toDate(expiration_date) AS exp_date,
        max(toDate(date))       AS prior_session
    FROM global_markets.options_greeks
    WHERE underlying_symbol = 'SPY'
      AND expiration_date >= toDate('2026-06-01')
      AND expiration_date <  toDate('2026-07-01')
      AND date >= toDate('2026-05-22')
      AND date <  expiration_date
      AND volume > 0
    GROUP BY exp_date
),
atm AS
(
    SELECT
        toDate(g.expiration_date)                                                                                AS exp_date,
        argMin(toFloat64(g.strike_price), abs(toFloat64(g.strike_price) - toFloat64(g.underlying_close)))        AS strike,
        argMin(toFloat64(g.option_close), abs(toFloat64(g.strike_price) - toFloat64(g.underlying_close)))        AS premium_before,
        argMin(toFloat64(g.underlying_close), abs(toFloat64(g.strike_price) - toFloat64(g.underlying_close)))    AS spy_before
    FROM global_markets.options_greeks AS g
    INNER JOIN last_sessions AS ls
        ON ls.exp_date = toDate(g.expiration_date) AND ls.prior_session = toDate(g.date)
    WHERE g.underlying_symbol = 'SPY'
      AND lower(toString(g.option_type)) IN ('call', 'c')
      AND g.date >= toDate('2026-05-22')
      AND g.date <  toDate('2026-07-01')
      AND g.volume > 0
      AND g.option_close > 0
    GROUP BY exp_date
)
SELECT
    toString(a.exp_date)                                                                   AS expiry_date,
    concat(formatDateTime(a.exp_date, '%a %b '), toString(toDayOfMonth(a.exp_date)))       AS expiry_label,
    round(a.premium_before, 2)                                                             AS premium_prior_close,
    round(greatest(s.spot - a.strike, 0.0), 2)                                             AS value_at_expiry,
    round(greatest(s.spot - a.strike, 0.0) / a.premium_before * 100, 0)                    AS pct_of_premium_left,
    round((s.spot / a.spy_before - 1) * 100, 2)                                            AS spy_move_pct
FROM atm AS a
INNER JOIN spy_by_day AS s
    ON s.d = a.exp_date
ORDER BY a.exp_date
自己运行这个查询

在 Mon Jun 1,该合约前一晚收于 $2.5,到期日收盘时价值为 $0.58,相当于权利金的 23%;两个收盘价之间,SPY 变动了 0.12%。最后一行 Tue Jun 30 则从 $2.31 变为 $5.3,期间 SPY 变动了 0.75%。按结果排序如下:

查询平值看涨期权结果(2026年6月到期日)
结果到期日
1. Finished at or near zero (5% of the premium or less)10
2. Lost more than half1
3. Lost up to half5
4. Gained, less than doubled1
5. Doubled or better4
每个数字背后的完整 SQL
WITH spy_by_day AS
(
    SELECT
        toDate(date)                             AS d,
        medianExact(toFloat64(underlying_close)) AS spot
    FROM global_markets.options_greeks
    WHERE underlying_symbol = 'SPY'
      AND date >= toDate('2026-06-01')
      AND date <  toDate('2026-07-01')
      AND underlying_close > 0
    GROUP BY d
),
last_sessions AS
(
    SELECT
        toDate(expiration_date) AS exp_date,
        max(toDate(date))       AS prior_session
    FROM global_markets.options_greeks
    WHERE underlying_symbol = 'SPY'
      AND expiration_date >= toDate('2026-06-01')
      AND expiration_date <  toDate('2026-07-01')
      AND date >= toDate('2026-05-22')
      AND date <  expiration_date
      AND volume > 0
    GROUP BY exp_date
),
atm AS
(
    SELECT
        toDate(g.expiration_date)                                                                                AS exp_date,
        argMin(toFloat64(g.strike_price), abs(toFloat64(g.strike_price) - toFloat64(g.underlying_close)))        AS strike,
        argMin(toFloat64(g.option_close), abs(toFloat64(g.strike_price) - toFloat64(g.underlying_close)))        AS premium_before
    FROM global_markets.options_greeks AS g
    INNER JOIN last_sessions AS ls
        ON ls.exp_date = toDate(g.expiration_date) AND ls.prior_session = toDate(g.date)
    WHERE g.underlying_symbol = 'SPY'
      AND lower(toString(g.option_type)) IN ('call', 'c')
      AND g.date >= toDate('2026-05-22')
      AND g.date <  toDate('2026-07-01')
      AND g.volume > 0
      AND g.option_close > 0
    GROUP BY exp_date
),
outcomes AS
(
    SELECT
        a.exp_date                                          AS exp_date,
        greatest(s.spot - a.strike, 0.0) / a.premium_before AS premium_ratio
    FROM atm AS a
    INNER JOIN spy_by_day AS s
        ON s.d = a.exp_date
)
SELECT
    tupleElement(b, 1)                                                                         AS outcome,
    countIf(o.premium_ratio >= tupleElement(b, 2) AND o.premium_ratio < tupleElement(b, 3))    AS expiries
FROM
(
    SELECT arrayJoin([
        ('1. Finished at or near zero (5% of the premium or less)', -1.0, 0.05),
        ('2. Lost more than half',                                   0.05, 0.5),
        ('3. Lost up to half',                                       0.5,  1.0),
        ('4. Gained, less than doubled',                             1.0,  2.0),
        ('5. Doubled or better',                                     2.0,  1000000.0)
    ]) AS b
) AS buckets
CROSS JOIN outcomes AS o
GROUP BY outcome
ORDER BY outcome
自己运行这个查询

在 21 个到期日中,10 个合约最终归零或接近归零,1 个合约跌幅超过一半,5 个合约跌幅不超过一半,1 个合约上涨但未翻倍,4 个合约翻倍或涨幅更高。实际交易不会完全采用这种方式(大多数 0DTE 仓位会在当日开仓并平仓),而且这项统计并不能说明是否盈利。它反映的是结果的离散程度:几美元的权利金在一个交易日内、随着一个个到期日过去,可能变成原来的一个零头,也可能变成原来的数倍。

看似便宜的远价外行权价为何成本更高

距平值两到三个百分点的当日到期合约,交易价格只有几美分,买卖盘价差却往往达到几美分。假设买价为0.08美元、卖价为0.12美元,0.04美元的价差相当于0.10美元中间价的40%。这部分成本在 SPY 价格发生任何变动前就已经付出。相比之下,报价为2.48至2.50美元的平值合约,成交价差不到1%。远价外行权价的Delta也较低,因此需要标的大幅波动才可能产生收益;其低廉的价格还容易诱使投资者加大仓位。以美元计价便宜,并不意味着价差成本低,获利概率也不高。

SPX与SPY:现金结算、指派和下午5:30截止时间

SPX指数期权采用现金结算和欧式行权方式:合约到期时,以结算值与行权价之间的差额进行现金结算,不涉及股票,也不存在指派。SPY和QQQ期权采用美式行权方式并进行实物交割。若SPY看涨期权到期时高于行权价哪怕一美分,每张合约也会对应100股;看跌期权则对应100股空头。持有人可在到期日美东时间下午5:30 OCC截止时间前提交行权指令,时间明显晚于下午4:00收盘(券商通常会设定更早的截止时间)。SPY在收盘后仍会交易,因此,一份收盘时低于行权价几美分的合约仍可能转为价内,并被行权到卖方头上,而卖方可能以为合约已经到期失效。出于这一原因,SPY的0DTE卖出期权交易者通常会在收盘前平仓;许多指数交易者则偏好SPX,税务处理另见SPX与SPY期权。SPX月度合约在开盘时结算,周度合约在收盘时结算;上午结算与下午结算期权详细介绍了两者的区别。

风险来自工具本身,还是仓位规模?

当日到期合约如今已占据指数期权交易的大多数。Cboe报告称,2025年2月,0DTE占SPX期权成交量的56%,创当时纪录;2025年第三季度,0DTE占SPX日均成交量的57%。其中大部分成交由持仓数分钟至数小时的交易者完成。这些交易者通常将仓位控制在账户资金的一定比例内。上述交易机制对他们和其他交易者并无不同。

真正导致账户大幅亏损的差异在于仓位规模。单份合约的结果分布由希腊值和收益结构决定;账户层面的结果,则是这一分布乘以合约数量。一份2美元的合约看起来很便宜。买入10份就是2,000美元,到下午4点可能归零。对于10,000美元的账户而言,一次下午的交易就可能造成20%的回撤;而弥补20%的亏损,需要获得25%的收益。最大回撤指南介绍了这一计算方式,期权交易的风险有多大则将同一分析框架应用于期限更长的合约。

零日期权交易的风险确定性示例

风险确定,意味着最大亏损在入场时已知且已支付。对初学者而言,以下两种结构符合这一要求:

  • 买入看涨期权或看跌期权。最大亏损就是权利金。上方图表展示了该权利金在一个交易日内的变化。
  • 借记垂直价差:在同一到期日买入一个行权价的期权,同时卖出更远行权价的期权。最大亏损是净借记;最大收益是两个行权价之间的距离减去该借记。卖出的一腿可以降低成本,同时限制收益和 gamma。

贷记价差同样具有明确的最大亏损,即行权价宽度减去收到的权利金。但它在赚取 theta 的同时,也承担集中 gamma 风险;在 SPY 中,空头腿还可能被指派。裸卖期权完全没有明确的最大亏损(裸卖期权的保证金解释了原因)。0DTE 策略指南将介绍每种结构的具体用法。

本页其余内容——gamma、theta、价差和结算规则——都是合约本身的属性,无法由交易者调低。交易者能够设定的唯一变量是合约数量。发布仓位管理规则的交易者通常遵循一项惯例:将单笔 0DTE 仓位的权利金控制在账户资产中一个较小且固定的比例,1% 是经常被引用的数值。控制在这一规模时,即使全部亏损,也只是一次常见的糟糕交易日,而不是需要数月才能收复的回撤。

常见问题

0DTE期权是否比普通期权风险更高?

按每美元权利金计算,是的。2026年6月,一份剩余一天到期的平值 SPY 看涨期权,其 gamma 是21至45天期合约的 31.8 倍,日 theta 是 28.7 倍,而且没有时间从不利走势中恢复。买入合约的美元风险仍以权利金为上限;会扩大的风险来自持仓规模。

0DTE期权的亏损会超过买入成本吗?

买入期权时不会:多头看涨或看跌期权最多亏损权利金。卖出未备兑期权的亏损可能远超收到的权利金;在 SPY 或 QQQ 中,到期时处于价内的空头期权会被指派,每份合约对应100股。定义风险的价差策略将亏损上限设为执行价差额减去收到的权利金。

如果0DTE SPY期权到期时处于价内,会发生什么?

如果到期时价内幅度达到0.01美元或以上,期权将自动行权:看涨期权每份合约转为100股 SPY,看跌期权每份合约转为100股 SPY 空头,并于下一个营业日结算。持有人也可以在 OCC 规定的美国东部时间下午5:30截止时间前提交行权指令或放弃行权,券商通常会设定更早的截止时间。SPX期权则采用现金结算,不涉及股票。

0DTE期权的 gamma 是否更高?

是的,而且 gamma 会集中在执行价附近。2026年6月,SPY 上涨或下跌1%时,剩余一天到期的平值合约 delta 变动了 0.497,而21至45天期合约的变动为 0.092;当价格偏离平值达到2%时,次日期权的该数值降至 0.042。

什么是定义风险的0DTE交易?

指开仓时就确定最大亏损的交易:多头看涨或看跌期权最多亏损权利金,借方价差最多亏损净借方金额。交易结构决定最大亏损;合约数量决定这一最大亏损是否在可承受范围内。


上方每个面板都附带生成相应数据的 SQL。若要在 QQQ 上运行相同的阶梯分析,或改用其他月份,请在 Strasmore 终端中打开任意查询并修改标的代码或日期。