• 期权实验室交易分析
导航
  • 仪表盘
  • 期权链
  • 策略构建器
  • 持仓
  • 隐含波动率曲面
  • Gamma敞口
  • 希腊值计算器
  • 学习路径
  • 研究
  • 模型检验
  • 交易想法
  • 设置
  • Sign in
© 2026 Options Lab·粤ICP备2026135365号-1·粤公网安备44011302005991号
全部研究

Kelly 仓位:按波动率的整个区间计算,而不是一个数

数据:2026-09-30 收盘时从本站数据供应商记录的 50ETF、300ETF 与中证1000股指期权(IM)期权链;同一收盘的 47 个看板推荐。区间宽度来自波动率预测研究(通过 AKShare 获取的 QVIX 波动率指数,2015 年以来每个已结束的到期月)。

Kelly 不再假设实现波动率事先已知。 它现在对实现波动率实际可能落入的区间取平均:预测值上下约 ±25 %,且偏高一侧比偏低一侧略重。大多数卖权利金的交易仓位变小;买波动率的交易和 debit spread(借方价差)略微变大。

  • ±25 %:预测值周围的区间(对数离散度 0.253),每个期限都一样。对 25 % 的预测,到期前的实现波动率有五分之四的时间落在约 17 % 到 35 % 之间。
  • 0.68×:铁鹰式(iron condor)的 Kelly 比例中位数,相对于只用一个数计算(看板上 11 个铁鹰式)。
  • 25 / 22:仓位变大 / 变小的看板推荐(共 47 个可交易推荐)。
  • 0.148 → 0:中证1000股指期权(IM)上一个深度 out-of-the-money(OTM,虚值)的 bull put spread(牛市看跌价差)。它在整个区间上的期望值为负,所以 Kelly 不下注。
  • +10 %:看板上每 ¥100 万的合约数(1,368 → 1,505)。

不变的部分:expected value(EV,期望值)、评分、成本检查,以及每张卡片上的优势期望值(edge EV)。变化的只有 Kelly 比例、半 Kelly 仓位、合约数和评级。

Kelly 仓位是什么,为什么只用一个数会下注过多

Kelly criterion(凯利公式)选出投入风险的资金比例,使财富长期增长最快。对一笔期权交易来说,押上的是它的最大亏损:投入组合的比例 f,就是买入 f × 组合 / 最大亏损 张合约。Kelly 在到期时所有可能的结果上,最大化对数增长的期望:

f* = argmax over f in [0, 1) of   Σ probability_i × log(1 + f × P&L_i / max loss)

本站把这个满仓比例显示为评级(10 % 起为 strong(强),2 % 起为 moderate(中),以下为 marginal(弱)),并建议取一半,且每笔不超过组合的 5 %,因为满仓 Kelly 对输入的误差非常敏感。

各个结果的概率来自到期价格的分布,而这个分布最主要取决于一个数:标的实际会波动多少,即 realised volatility(RV,实现波动率)。本站的预测是 0.95 × at-the-money(ATM,平值)implied volatility(IV,隐含波动率)(原因;本研究进行时是 IV 减去 1 个波动率点的长期溢价,原因)。以前,Kelly 给每笔交易定仓位时都假设这个预测完全准确。

但它并不准。波动率预测研究测量了实现波动率离这类预测有多远:高或低四分之一都很常见。而这个误差的影响并不对称。信用价差(credit spread)在波动率平静时赚得少,不平静时亏得多,所以只按区间中心定仓位会下注过多。

Kelly 现在使用的区间

log RV ~ Normal( log c − s²/2 , s² ),   s² = 0.064  →  s = 0.253
区间上半部分:离散度 × 1.143
  • c 是定仓位用的波动率:0.95 × ATM IV(本研究进行时为 ATM IV − 1 个点),或交易者自己的波动率观点向市场收缩一半后的值。
  • c 是区间的均值。 −s²/2 的平移让平均结果落在预测值上,因为预测本身是按平均值拟合的(IV 均值减 RV 均值)。数据在每个窗口长度上都支持这一点。
  • 每个期限宽度都一样。 研究测得的离散度混了两样东西。一是真正的不确定性:市场比预期更平静或更剧烈,这会改变期权收益。二是测量噪声:几天的实现波动率只由几次日波动算出,就像只抛五次硬币来判断它是否公平。五天里,真实 13 % 的波动率有五分之四的时间会被测成约 9 % 到 20 % 之间的任何值。这种噪声不会改变价格最终能走多远,而期权收益只看这个,所以区间只保留真实的部分。一个更早、更宽的版本把噪声也算了进去(5 天时离散度 0.49),会让短期交易被当作市场比实际不确定一倍来定仓。
  • 更重的高波动一侧(尾部折扣,tail haircut)。 区间上半部分加宽 14 %,使 7.5 % 的结果落在原区间第 95 百分位之上,而不是 5 %。近几年实际是 6–9 %,而对卖权利金的一方,那正是亏钱的一侧。加上它之后,区间均值比 c 高约 2 %。
15 % 的波动率预测下,横轴为距到期 1 到 40 个交易日:Kelly 使用的区间是一条平的色带,五分之四的结果落在约 10.5 % 到 21 %,一半落在约 12 % 到 18 %;第 95 百分位是一条约 23 % 的平的蓝线。更早的版本(橙色点线)在 1 天时张开到约 3 % 到 32 %,40 天时收窄到约 10 % 到 21 %。竖线标出 7 和 15 个交易日。

15 % 预测的区间在每个期限都一样。橙色点线是同时计入测量噪声的早期版本。

如何阅读此图
  • 横轴是剩余时间:距到期的交易日数。纵轴是从现在到到期的实现波动率。
  • 虚线是预测值(这里是 15 %)。蓝色带是实现波动率一半时间(深色)和五分之四时间(浅色)落入的范围。
  • 蓝色实线是带尾部折扣的第 95 百分位。它在预测值上方的距离,比色带在下方伸出的距离更远:高波动一侧是有意加重的。
  • 橙色点线是更早、更宽版本的 80 % 范围。它在临近到期时张开,因为计入了测量噪声;离到期较远时两者一致。
  • 竖线标出下面示例的期限:7 个交易日(IM)和 15 个交易日(ETF)。

Kelly 如何使用这个区间

  1. 取期权链的 smile(波动率微笑,每个行权价一个隐含波动率),把它转换成到期价格的分布,并缩放到平值波动率等于预测值 c。
  2. 在实现波动率的区间上取 32 个点,中位数两侧各 16 个,并附上概率权重(每一半各用一组 Gauss quadrature,即高斯求积,所以中位数处的折点能精确处理)。
  3. 在每个点上,把价格分布拉伸到该波动率:每个对数收益乘以 σ点 / c。微笑的偏斜和厚尾保持原有形状。
  4. 把 32 个分布按各自的概率加权合在一起,求出在所有分布上同时让对数增长期望最大的同一个 Kelly 比例。

这不是 32 个单独 Kelly 比例的平均。Kelly 回答的是:不知道自己身处哪一种情形时,哪一个仓位让财富增长最快?在高波动情形里亏损会急剧放大的交易,得到的答案更小。跨到期月的交易(如日历价差)仍和以前一样按市场 IV 定仓。

2026-09-30 收盘的十个推荐

真实期权链,记录于 2026-09-30 收盘。除 IM 深度虚值牛市看跌价差是按报价手工构造外,其余都是优化器自己的推荐(中等风险偏好);全部通过成本检查。腿的写法:+ 买入,− 卖出,P 看跌,C 看涨;IM 的行权价是指数点位。两个买波动率的推荐假设交易者的观点为 ATM IV + 5 个点,按一半可信度定仓。

推荐腿剩余交易日满仓 Kelly,单个数满仓 Kelly,整个区间半 Kelly 仓位(上限 5 %)每 ¥100 万合约数评级
50ETF 牛市看跌价差+2.7P −2.9P150.1480.1195.0 %28strong
300ETF 熊市看涨价差(bear call)−4.5C +4.9C150.1960.1305.0 %13strong
300ETF 铁鹰式+4.2P −4.3P −4.5C +5C150.3310.2265.0 %11strong
IM 铁鹰式+6700P −7000P −8000C +8200C70.0980.0180.9 %1moderate → marginal
IM 铁蝶式(iron butterfly)+6700P −7300P −7300C +7900C70.0720.0874.3 %1moderate
300ETF 卖出看跌(short put)−4.3P150000风险无上限
50ETF 跨式多头(long straddle,观点 18.8 %)+2.9C +2.9P150.1720.1795.0 %58strong
IM 宽跨式多头(long strangle,观点 30.9 %)+7200P +7400C70.0640.0703.5 %2(原为 1)moderate
IM 牛市看跌价差,深度虚值−6800P +6200P70.148000(原为 1)strong → negative
IM 牛市看跌价差,近平值+6500P −7100P70.0860.0723.6 %1moderate

当日定仓位用的波动率:12.81 %(50ETF)、15.71 %(300ETF)、24.88 %(IM),两个买波动率观点为 16.31 % / 28.38 %。前三者的 80 % 区间:9.0–18.0 %、11.0–22.0 %、17.4–34.9 %。

合约数几乎不变:只要满仓 Kelly 达到 0.10,5 % 的上限就会起作用;而一张 IM 合约本身就占 ¥100 万的 1.7–5.8 % 风险。真正传递信号的是比例和评级。

十个小图,按上表顺序从左上开始,每个推荐一个。每个小图画出满仓 Kelly 与到期前实现波动率的关系:白色曲线是假如实现波动率固定在该值时的 Kelly,水平线是三种定仓方式,下方的条带是每个波动率的概率。信用交易的白色曲线从低波动时接近 1 下降到略高于预测值处的 0;跨式和宽跨式多头的白色曲线从 0 上升。卖出看跌的小图标注“风险无上限:Kelly 定为 0”。

在整个波动率区间上的 Kelly,每个推荐一个小图。点击图片查看原尺寸。

如何阅读此图

先看左上角的小图(50ETF 牛市看跌价差),再和跨式多头(第四行左侧)对比。

  • 横轴是从现在到到期的实现波动率,每个小图的上下两部分共用。
  • 白色曲线回答“如果我事先知道波动率会怎样?”:假如实现波动率固定在该值,满仓 Kelly 的比例。信用交易在波动率低时想下重注,波动率一旦高于它的盈亏平衡点就一点也不想下。买波动率的交易正好相反。
  • 下方的条带表示每个波动率有多大可能:本站使用的区间是蓝色,中位数处有一个折点,从那里开始是更重的上半部分。橙色点线是更早、更宽的版本。
  • 竖直点线是定仓位用的波动率。只用一个数定仓(图例中的“(a)”,白色虚线)就是在这一点读白色曲线。
  • 蓝色实线(图例中的“(b)”)是本站现在的做法:考虑整条蓝色条带的 Kelly。框里给出三个数值;“(c)”是早期版本,仅供对比。
  • 看看蓝色条带有多少落在白色曲线为零的地方。对卖方来说,那就是本来根本不该交易的结果所占的比例,正是它把蓝线往下拉。

为什么有的交易变大,有的变小

对波动率取平均,会通过两个效应改变一笔交易的 Kelly 比例。一是期望值随波动率变化的弯曲:向上弯的价值曲线会从不确定性中获益。二是结果更分散,而对数增长不喜欢分散。由于高波动一侧更重,对大多数卖方来说第二个效应占上风。

  • 铁鹰式和深度虚值价差缩小得最多。 一旦高波动把价格推过卖出的行权价,亏损就会加速,而更重的上半部分正好加重了这些结果。IM 深度虚值牛市看跌价差的期望值从预测值处的每张 +¥160 变成整个区间上的 −¥27,所以仓位为 0。
  • 近平值信用价差缩小得较少(IM 近平值牛市看跌价差 0.086 → 0.072,50ETF 牛市看跌价差 0.148 → 0.119)。它们的亏损有上限,限制了高波动一周里的损害。
  • 铁蝶式和借方价差可能变大(IM 铁蝶式 0.072 → 0.087)。在预测值附近,它们的价值随波动率向上弯。
  • 跨式和宽跨式多头略微变大:它们在更重的高波动一侧赚钱。
  • 裸卖期权风险无上限,所以在考虑任何区间之前,Kelly 就把它定为 0。

更新,2026-10-09。 本站现在把净卖出看跌(short put)视为亏损有上限:标的跌到零时亏损就停止。它有自己的“下行风险大”Kelly 结论,仓位由每笔 5 % 的上限决定,而不是由 Kelly 比例决定。只有净卖出看涨仍然风险无上限。上面的 300ETF 卖出看跌一行及其图是在这一改动之前算出的。

对看板的影响

在 2026-09-30 收盘数据上重放标准看板请求(六个标的,所有剩余至少 14 天的月份,中等风险偏好):47 个可交易推荐(通过成本检查且风险有限)。

定仓方式strongmoderatemarginalnegative每 ¥100 万合约数
单个数(以前)1630101,368
整个区间(现在)2121501,505

25 个推荐变大,22 个变小;没有一个降到零。按结构看,现在与以前比例的中位数:铁鹰式 0.68,牛市看跌价差 0.86,熊市看涨价差 0.91,铁蝶式 1.00,牛市看涨价差 1.14,蝶式 1.22,熊市看跌价差 1.33。

2026-09-30 收盘 47 个可交易看板推荐的两张散点图。横轴:只用一个数时的满仓 Kelly;纵轴:整个波动率区间上的满仓 Kelly。左图(蓝色)是本站使用的区间:对角线上方 25 个点、下方 22 个,最大的两个比例(0.33 和 0.40)被拉低到约 0.23。右图(橙色)是更早、更宽的版本:上方 37 个,下方 10 个。

每个点是一个看板推荐:以前的 Kelly 比例(横轴)对比现在的(纵轴)。左:本站使用的区间。右:早期版本,仅供对比。

如何阅读此图
  • 每个点是一个推荐。横轴:只用一个数时 Kelly 投入多少。纵轴:现在投入多少。
  • 虚线对角线表示“没有变化”。在它上方的点仓位变大,下方的变小。数量写在角落里。
  • 0.10 处的灰线标出“strong”。在它右侧或上方的推荐都已触及每笔 5 % 的上限,所以在这个区域内移动不会改变合约数。
  • 坐标轴标签里的“(a)”“(b)”“(c)”与上一张图的三种定仓方式相同。右图是更早、更宽的版本:它把大多数推荐推高,而现在使用的区间让变大和变小的数量大致相当。

局限与注意事项

  • 大部分缩小来自尾部折扣。 如果没有它,单靠区间本身,ETF 卖波动率推荐的变化不到 10 %。尾部折扣基于 27 个到期月(近期有 6–9 % 的结果高于第 95 百分位,全部历史上是 4.6 %),所以它是有意留出的安全边际,而不是测量出的事实。
  • 区间的中心放在哪里最关键。 预测是按实现波动率的均值拟合的。如果把它当作中位数,区间均值会抬高,所有卖波动率的推荐仓位都会降到接近零。
  • 宽度是在 QVIX(波动率指数)上拟合,再用到平值 IV 上的,只有 27 个到期月和一次压力事件(2024 年 9 月的行情)。随着更多到期月结束,宽度、溢价和尾部折扣都会重新拟合。
  • 分布如何加宽是一个建模选择。 每个点拉伸的是预测微笑的对数收益,保留偏斜。另一种做法是在每个点用缩放后的 IV 重建微笑,试过后发现不收敛,而且仓位会更大。
  • 只是一天的收盘。 十个推荐和看板重放都是同一时点的快照。效应的方向是结构性的,具体数字不是。
  • Kelly 的好坏取决于它的概率。 即使在区间上取平均,它也假设这个区间是对的。这就是本站建议半 Kelly 并设 5 % 上限的原因。

自己复现

脚本 kelly_range.py(见下方下载)是定仓计算的独立副本:预测、带尾部折扣的区间、32 点求积、从微笑到分布的转换,以及混合分布上的对数最优 Kelly 比例。只需要 numpy 和 scipy。

输入。 区间只需要定仓位用的波动率。给一笔交易定仓需要一条期权链:远期价格、距到期的交易日数、每个行权价一个隐含波动率,以及各条腿和它们的成交价。区间的参数(0.064、1 个点的溢价和 7.5 % 的尾部目标)来自波动率预测研究和溢价回测,它们用的是公开数据:QVIX 波动率指数(AKShare index_option_50etf_qvix 等同类函数,自 2015-02-09 起)和新浪 ETF 收盘价。

区间与求积点:

def forecast_range(centre, sd=0.253, tail=True, nodes=31):
    median = centre * exp(-0.5 * sd * sd)          # c 是均值
    if tail:                                       # 每一半 16 个高斯点
        u, wu = half_range_rule((nodes + 1) // 2)  # 半正态求积
        z = concatenate([-u[::-1], u * TAIL_K])    # 上半部分 x 1.143
        w = concatenate([wu[::-1], wu]) / 2.0
    else:
        z, w = hermegauss(nodes); w = w / w.sum()
    sigmas = clip(median * exp(sd * z), 0.01, 5 * centre)
    return sigmas, w

混合分布上的 Kelly:

point = market.scaled(centre / atm_iv)             # 微笑缩放到预测值
pnls, weights = [], []
for sigma_k, w_k in zip(sigmas, w):
    node = point.return_scaled(sigma_k / centre)   # 拉伸对数收益
    pnls.append(node.pnl(legs))                    # 到期每股盈亏
    weights.append(w_k * node.masses)
f = log_optimal_fraction(concatenate(pnls), concatenate(weights), max_loss)
half_kelly = min(f / 2, 0.05)

log_optimal_fraction 求 Σ w × log(1 + f × 盈亏 / 最大亏损) 的斜率为零时的 f(斜率严格递减,所以用区间求根即可);期望盈亏不为正时返回 0。

运行方法:

pip install -r requirements.txt     # 或:pip install numpy scipy
python kelly_range.py               # 区间 + 一条模拟的 50ETF 式期权链
python kelly_range.py --centre 0.25 # 某个定仓波动率的区间
python kelly_range.py --chain my_chain.json   # 你自己的期权链和腿

你应该看到什么。 区间部分会精确打印上文引用的 80 % 区间:12.81 % → 9.0–18.0 %,15.71 % → 11.0–22.0 %,24.88 % → 17.4–34.9 %,区间均值比定仓波动率高 2.0 %。默认运行随后在一条模拟期权链上(远期 3.05,15 个交易日,ATM IV 14 %,看跌偏斜,每条腿两个最小价位的买卖价差成本)给三笔交易定仓,规律与真实推荐相同:近平值牛市看跌价差 0.128 → 0.116,深度虚值牛市看跌价差 0.326 → 0,铁鹰式 0.177 → 0.084。每笔还会打印“假如波动率固定”的 Kelly 曲线。

如何验证。 十个推荐的表格需要记录下来的 2026-09-30 期权链,它们来自商业数据供应商,不能再分发,所以默认运行改用模拟期权链。在记录的期权链上,脚本算出的 Kelly 比例与本站自己的定仓代码相差不超过 1e-9,并且对检查的六个推荐(单个数和整个区间两种定仓都检查:50ETF 牛市看跌价差、300ETF 熊市看涨价差和铁鹰式、IM 铁鹰式、两个 IM 牛市看跌价差)逐位复现了表中印出的所有小数。区间的点和权重与本站一致到 1e-14。每当本站的定仓代码变化,自动化测试都会重新检查这些结果。

下载脚本

独立的 Python 脚本,只使用公开数据(AKShare)。先安装 requirements.txt 中的依赖,再运行脚本。

  • kelly_range.py
  • requirements.txt

免责声明: 仅供学习。以下均为对历史数据的研究,过往结果不代表未来表现,不构成任何投资建议。