A股雪球:敲入、敲出、锁定期与 LocalVol 蒙特卡洛
A股雪球:敲入、敲出、锁定期与 LocalVol 蒙特卡洛
雪球(Snowball)是近年国内零售与代客场外市场里最常见的自动赎回结构。公开站里已有 中证500 Autocallable 条款页,但条款页回答的是「合同怎么写」,本文回答三件更常被问到的事:
- 敲入、敲出、锁定期分别改变了哪一段现金流;
- 为什么不能用 Black-Scholes 闭式公式「估一个价」;
- 猛犸如何用历史波动率、ImpliedVol、LocalVol 或 SLV 做蒙特卡洛,把 Term Sheet 变成价格和 Greeks。
可先在 场外期权计算器 或 Excel 指数类结构案例 MCP-TC18 上对照本文的三条情景。
1. 雪球卖的是什么
对投资者,雪球常被讲成「高票息、自动赎回」。对定价台,它是一笔 路径依赖、可提前终止、带敲入或有损失 的场外期权:卖方用较高的条件票息,换取投资者在标的大跌且从未敲出时承担近似 1:1 的下行。
典型挂钩标的是沪深 300、中证 500、中证 1000 或单票。观察规则几乎总是:
| 事件 | 观察频率 | 典型触发 | 发生后 |
|---|---|---|---|
| 锁定期 | 合约前若干月 | 不计敲出 | 即使价格越过敲出线,也不提前终止 |
| 敲出(KO) | 锁定期后按月 | (如 103%) | 合约终止,支付已计提的敲出票息 |
| 敲入(KI) | 通常每日 | (如 80%) | 记下「已敲入」;若此后从未敲出,到期按跌幅承担损失 |
| 到期 | 期末一次 | 未敲出 | 未敲入则付红利票息;已敲入则按期末价相对期初的涨跌结算 |
用符号写,期初价格 ,敲出比例 ,敲入比例 ,名义本金 ,年化敲出票息 ,年化红利票息 ,已持有年数 。猛犸默认结构(Snowball)的三种支付是:
第三种情形下, 时投资者承担本金损失; 但未敲出(例如一直在敲出线下方震荡)时,结算仍按期末涨跌,而不是「保本 + 票息」。这是雪球和「保本结构化存款」最容易被混淆的一点。
2. 一条数值例子,看清三条路径
取一组市场上常见的教学参数(不是某张具体合同的报价):
| 要素 | 取值 |
|---|---|
| 标的 / 期初 | 沪深 300, |
| 名义本金 | 元 |
| 期限 | 年 |
| 锁定期 | 前 3 个月不观察敲出 |
| 敲出线 | (4120) |
| 敲入线 | (3200) |
| 敲出票息 / 红利票息 | ,(年化) |
| 计息 | 按实际持有时间折年(Act/360 或合同约定) |
路径 A:第 6 个月敲出。 锁定期过后,第 6 个观察日收盘 4150。合约终止。
投资者拿到约 9 万票息,不再承担后续跌幅。卖方的风险在敲出日被「关掉」。
路径 B:一年从未敲出、也从未敲入。 价格始终在 3200 与 4120 之间,期末 3900。
这是对投资者最好的情形:拿满红利票息,本金不亏。对卖方,这是「卖出了便宜波动率、却付了高票息」的路径,价格对 微笑左翼和期限结构 非常敏感。
路径 C:第 4 个月曾跌破 3200,此后从未回到 4120,期末 2800。
投资者亏损 30 万。敲入一旦发生,后面即使反弹到 4000 下方,只要没敲出,到期仍按 结算——反弹如果不够高,亏的是本金,不是「少拿一点票息」。
三条路径的期望贴现,才是雪球的公平价格。任意一条单独发生的概率,都取决于整条波动率曲面,而不是一个 ATM 波动率。
3. 雪球、小雪球、Autocallable 差在哪
公开站里的 自动敲出赎回 更接近外汇/指数 Autocallable:有敲出、有票息,但往往 没有敲入后的本金亏损腿。国内零售里习惯这样分:
| 经典雪球 | 小雪球(Autocall / Early Snowball) | 外汇 Autocallable | |
|---|---|---|---|
| 敲出 | 有,锁定期后月度 | 有 | 有 |
| 敲入 | 有,多为日频 | 无 | 通常无 |
| 未敲出到期 | 未敲入付红利;已敲入承担跌幅 | 付约定票息或保本变体 | 付浮动/固定金额 |
| 投资者最怕的路径 | 阴跌敲入、再也敲不出去 | 主要是拿不到高票息 | 汇率没碰到敲出线 |
| 猛犸结构名 | Snowball | EarlySnowball / AutoCall | 条款脚本或 Autocallable YAML |
小雪球去掉敲入,价格更高、风险更对称,票息会明显低于经典雪球。用同一套 ATM 波动率去「类比」这两种结构,价差常常被估错。
凤凰(Phoenix)在雪球之上多了「未敲入则按观察日派息」;气囊、累计器是另一族零售结构。谱系见后续专文,本文只把雪球本身讲清楚。
4. 为什么闭式公式不够用
香草欧式可以用 Black-Scholes,因为支付只依赖 。雪球同时依赖:
- 离散敲出日上是否穿过 (锁定期还要把前几个观察日「关掉」);
- 日频敲入是否曾经穿过 ;
- 敲出发生的 日历时间 (票息按持有期计提);
- 未敲出时,期末是票息还是 。
这是典型的 离散观察障碍 + 自动赎回 + 或有远期。障碍期权的解析近似(含站内 障碍期权、Vanna-Volga)可以给单障碍欧式一个参考价,但无法同时处理「月度 KO + 日度 KI + 锁定期 + 票息时钟」。
因此生产上的标准做法是:
- 选定一条扩散:没有期权面时用 历史波动率 或指定常数 σ;有香草市场时用 LocalVol / SLV 拟合微笑;
- 按交易日历生成路径,在路径上执行与合同相同的观察规则;
- 贴现平均得到价格,再用同一套路径(或 bump / AAD)出 Greeks。
猛犸场外模块对雪球走的就是这条路,而不是「先当香草、再拍一个障碍调整」。波动率来源可以换,观察规则不变。
5. 波动率模型怎么选
猛犸给雪球(以及同类 YAML 结构)四条常用波动率路径,由浅到深:
- 历史波动率(HistVol):用标的过去价格算出已实现波动率,再当常数 σ 做蒙特卡洛。没有期权市场、单票流动性差、或要和「过去一年实际波动」对账时,这是默认选项。算法(收盘价法、EWMA、RiskMetrics 等)见 历史波动率,Excel 构造见 MCP-TC13。
- ImpliedVol / 指定常数 σ:直接写入一个数(报价台上的「用 22% 扫一遍」)。和 HistVol 一样是 平坦波动率,没有微笑。
- 局部波动率:拟合今日整张隐含波动率曲面,回答「今天这张雪球值多少」。
- 局部随机波动率(SLV):在 Dupire 上再加波动率自身的随机性,看远期微笑怎么动,从而影响「未来几个月还没敲出」的条件分布。
实务上可以按下面选:
| 模型 | 猛犸中的典型用法 | 适合 | 不适合 |
|---|---|---|---|
| 历史波动率 HistVol | McpHistVols 取窗口 σ,再走平坦波动率蒙特卡洛 | 无期权面的指数/单票;回溯、压力、与已实现波动对账;曲面缺失时的回退 | 有流动香草面时的正式报价(没有 skew,敲入概率容易偏) |
| ImpliedVol / 常数 σ | 手工指定 σ,试算或对冲台快速扫描 | 看票息和障碍水平的一阶敏感 | 正式估值;会系统性错估敲入概率 |
| Dupire LocalVol | LocalVol_Dupire_{标的},有期权面时的结构默认路径 | 日终估值、与香草面一致的报价 | 需要真实 vol-of-vol、对冲动态时 |
| Heston SLV | LocalVol_Heston_{标的} | 报价复核、压力情景、skew 动态 | 校准不稳定或表面数据极稀时 |
HistVol 和 ImpliedVol 都是「一个 σ 生成全部路径」:敲入线在虚值区,模型 看不到 左翼比 ATM 更贵。差别只在 σ 从哪来——HistVol 来自历史行情,ImpliedVol 来自今日报价或交易员判断。有香草面时,应升到 LocalVol / SLV;没有面时,HistVol 比拍一个 20% 更站得住,也便于换窗口(60D / 90D / 180D / 252D)做敏感性。
经验规则:
- 敲入线在 70%–85%、期限 1–2 年的 A 股雪球,左翼 skew 比 ATM 或历史波动率更决定价格。只用 20% 平价或一段 HistVol,通常会把敲入概率估低、把结构估贵(对卖方)或估便宜(对买方),方向取决于你站在哪一边。
- 锁定期越长,前几个月的敲出被关掉,价格越接近「卖出向下风险、买入一段时间的区间票息」,对 短期 vol 和偏度 更敏感。HistVol 若用很长窗口,会把近月已经抬升的波动率抹平。
- 同一条款用 HistVol、ImpliedVol、LocalVol、SLV 各跑一遍,价差本身就是风险报告:HistVol 与 LocalVol 差出一个点以上的年化票息,先问有没有可用的期权面;LocalVol 与 SLV 差得多,先查曲面翼部和红利/借券曲线。
更完整的决策表见后续专文《结构化产品该用哪条波动率》。
6. 猛犸里的三条使用路径
6.1 产品怎么定义
雪球不写死在 C++ 里,而是一条 YAML 结构:字段(期初价、上下障碍比例、两种票息、锁定期、名义本金、日历)+ 两张观察表(月度敲出、日度敲入)+ Payoff 脚本。脚本在起始日记下障碍,在观察日更新 IsKnockedOut / IsKnockedIn,在到期日按上一节的三种情形支付。
字段与脚本语法见 产品定义与收益脚本。把锁定期从 3 个月改成 0、或去掉敲入腿,就是小雪球 / Autocall,无需改引擎。
6.2 Excel / Python
指数类结构的端到端模板是 MCP-TC18:日历 → 利率曲线 → 波动率对象 → 结构对象 → 价格与 Greeks。Python 侧同一套对象链,适合批量试算不同 、、票息。
波动率对象可以换,后面步骤不变:
- 有期权面:
McpLocalVol(Dupire 或 Heston SLV); - 无期权面或要与已实现波动对账:
McpHistVols(见 MCP-TC13),再按估值日取出 σ; - 快速试算:直接指定常数 ImpliedVol。
对象顺序可以记成:
- 交易日历(交易所 + 银行间,决定日频敲入是否「有收盘价」);
- 折现曲线(默认人民币互换曲线);
- 波动率:LocalVol / HistVol / 指定 σ(LocalVol 路径还须能取到即期,障碍按期初价比例展开);
- 结构名
Snowball+ 条款字段; McpPrice/ Greeks。
6.3 场外计算器与批量估值
单笔试算、给客户看条款: 猛犸场外期权计算器。模块能力概述见 场外衍生品定价估值模块(脚本定义、LocalVol/Heston 校准、GPU 蒙特卡洛)。
投组日终、多标的、要 Delta/Vega 分桶和 VaR 时,走估值引擎的 STRUCTUREDDERIVATIVE:同一 YAML,波动率按交易选择 LocalVol、历史波动率或指定 σ,输出价格、Greeks,以及组合级风险。单笔定价和组合重估共用同一套结构定义,避免「计算器一个价、风控另一个价」。曲面缺失时,引擎可以回退到 HistVol,而不是静默用一个拍脑袋的常数。
7. 常见误区
把雪球当高收益理财。 路径 C 是合同写明的或有亏损,不是「极端压力情景」。定价必须把这条腿的概率权重量进去。
用期末价判断敲入。 国内日频敲入看的是存续期内是否曾经收在敲入线下方。期末在线上方、中途敲过,仍按已敲入处理。
锁定期当成「前三个月不观察」。 锁定期通常只关掉 敲出;敲入在锁定期内仍然有效。前三个月阴跌敲入、第四个月没能敲出,是很典型的亏损路径。
ATM 或一段历史波动率对一下就报价。 雪球是左翼 + 障碍 + 自动赎回的混合物。没有期权面时,HistVol 是合理的起点(并应换窗口做敏感度);有香草面时,至少用 LocalVol 拟合当日曲面,对账或对冲再用 SLV 看动态。
忽略日历和分红。 日频敲入依赖交易日;指数分红、合成股息曲线会改变远期,从而同时推动敲入、敲出概率。股息处理见 合成股息曲线。
Greeks 用香草那套直觉。 接近敲出观察日且现价贴着敲出线时,Delta 会很尖;已敲入、远离敲出线时,结构更像短期看跌。跨资产 bump 约定见 结构化产品希腊字母。
8. 延伸阅读
| 想继续看 | 文档 |
|---|---|
| 中证500 条款怎么写 | 自动敲出赎回(Autocallables)-CSI500 |
| 外汇自动赎回合同 | 自动敲出赎回(Autocallables) |
| 脚本字段与雪球片段 | 产品定义与收益脚本 |
| 历史波动率怎么算 | 历史波动率、MCP-TC13 |
| LocalVol / Dupire | 局部波动率模型、Dupire 校准 |
| SLV | 局部随机波动率 |
| Excel 结构全流程 | MCP-TC18 结构化存款指数类 |
| 模块能力与 GPU | 场外衍生品模块介绍 |
| 组合重估与 VaR | 从单笔定价到组合估值 |
在计算器里改敲出线、锁定期和票息,对着三条路径各看一眼价格和 Delta,比只读条款页更容易建立直觉。
