2018年2月5日星期一。那天道琼斯指数一天暴跌1175点创下了历史上最大的单日点数跌幅。但你猜那天谁在笑有一小群做波动率交易的人。他们在之前的几年里每天都在做同一件事——卖期权。他们赌的就是市场的波动率会保持在低水平。2015年到2017年市场风平浪静他们赚得盆满钵满。但2018年2月5日这一天波动率突然飙升他们的策略遭遇了巨大亏损。这就是波动率交易的双刃剑特性——大部分时间稳定赚钱偶尔一次巨亏就把利润全部回吐。但有意思的是即使有2018年2月这样的波动率炸弹长期来看卖期权的人总体上还是赚钱的。为什么因为市场存在一个持续的、系统性的现象——波动率溢价。今天这篇我们就来聊聊这个大多数人都不知道、但对理解市场非常重要的概念。Why什么是波动率溢价一个反直觉的事实先说一个让人困惑的现象。假设你统计过去20年的数据计算两个东西1.隐含波动率IV期权价格里隐含的市场预期未来波动率2.实际波动率RV市场实际发生的波动率你会发现一个规律隐含波动率系统性地高于实际波动率。换句话说市场预期的波动总是比实际发生的波动要大。这意味着什么意味着期权的价格总是偏贵的。市场在为可能不会发生的波动付出溢价。这个溢价就叫波动率溢价Volatility Risk Premium, VRP。波动率溢有多大用数据说话。根据大量学术研究如CBOE的白皮书在美股市场上•平均隐含波动率约20%•平均实际波动率约15-16%•波动率溢价约4-5个百分点这意味着投资者平均每年多付了4-5%的保险费给期权卖方。你可能会说4-5%也不多啊。但别忘了这是每年。如果你是持续卖期权的每年多赚4-5%的超额收益复利20年差距就非常大了。为什么市场愿意付这个溢价你可能会问市场不都是聪明人吗为什么会系统性地多付钱答案藏在行为金融学里。原因一尾部风险厌恶人天生厌恶极端风险。一次暴跌30%的损失不是三次暴跌10%的简单叠加。它对你的心理和财务的冲击是指数级的。所以人们愿意多付一点钱去买一个保险——看跌期权。这就像你买车险。你知道一年出大事故的概率可能只有1%但你还是愿意每年交几千块保费。因为万一出了事损失太大了。市场也是一样。投资者愿意多付一点钱买看跌期权就是为了防范那个万一。原因二机构的对冲需求很多大型机构养老金、保险公司、对冲基金有严格的对冲要求。他们必须持有一定比例的看跌期权来对冲组合风险。这个需求是刚性的不管期权贵不贵他们都得买。大量的刚性买方需求推高了期权价格也就推高了隐含波动率。原因三认知偏差人对概率的判断天生就不准确。人们倾向于高估小概率事件的发生可能性。万一明天崩盘了呢万一黑天鹅来了呢这种恐惧驱动他们去买期权保险即使从统计上看这个保险是贵了的。WhatShort Volatility——卖波动率赚钱的逻辑核心策略既然波动率溢价持续存在那怎么从中赚钱最简单的方式卖期权。这就是Short Volatility做空波动率策略。核心逻辑很简单1.期权价格包含了隐含波动率IV2.隐含波动率系统性地高于实际波动率RV3.你卖出期权等于卖出了一个偏贵的东西4.当实际波动率低于隐含波动率时你就赚了差价三种常见的Short Volatility策略策略一卖出跨式Short Straddle同时卖出相同行权价的看涨期权和看跌期权。盈利条件实际波动率 隐含波动率价格变动不大亏损条件实际波动率 隐含波动率价格大幅波动最大盈利收到的全部期权费最大亏损理论无限// pythondef short_straddle_pnl(spot_price, strike, call_premium, put_premium,expiry_spot):卖出跨式策略的盈亏计算total_premium call_premium put_premium # 收到的总期权费# 到期盈亏call_payoff max(0, expiry_spot - strike) # 买方行权价值put_payoff max(0, strike - expiry_spot)# 卖方盈亏 收到的期权费 - 买方的行权价值pnl total_premium - call_payoff - put_payoff# 盈亏平衡点upper_breakeven strike total_premiumlower_breakeven strike - total_premiumreturn {pnl: pnl,max_profit: total_premium,upper_breakeven: upper_breakeven,lower_breakeven: lower_breakeven,profit_zone: f价格在{lower_breakeven:.2f}-{upper_breakeven:.2f}之间盈利}策略二卖出宽跨式Short Strangle卖出一个虚值看涨期权和一个虚值看跌期权行权价不同。比跨式更安全因为盈利区间更宽。但收到的期权费也更少。// pythondef short_strangle_pnl(spot_price, call_strike, put_strike,call_premium, put_premium, expiry_spot):卖出宽跨式策略的盈亏计算total_premium call_premium put_premiumcall_payoff max(0, expiry_spot - call_strike)put_payoff max(0, put_strike - expiry_spot)pnl total_premium - call_payoff - put_payoffreturn {pnl: pnl,max_profit: total_premium,upper_breakeven: call_strike total_premium,lower_breakeven: put_strike - total_premium}策略三卖出看跌期权Short Put只卖出看跌期权。本质上是在说我不觉得市场会大跌。这是巴菲特常用的策略。他卖出的看跌期权如果到期时市场没跌到行权价以下他就白赚期权费。如果跌到了他就以行权价买入股票——反正他本来就打算买。// pythondef short_put_pnl(strike, premium, expiry_spot):卖出看跌期权的盈亏计算put_payoff max(0, strike - expiry_spot)pnl premium - put_payoffbreakeven strike - premiumreturn {pnl: pnl,max_profit: premium,breakeven: breakeven,assignment_price: strike}Short Volatility的收益特征Short Volatility策略有一个非常独特的收益分布大部分时间赚小钱偶尔一次亏大钱。就像推土机前捡硬币——大部分时间你在捡硬币稳定赚期权费但推土机极端波动来的时候你来不及跑就完蛋了。这就是为什么2018年2月5日很多卖波动率的基金一天亏了几年的利润。How如何安全地捕获波动率溢价核心风控原则Short Volatility不是不能做但你必须做好风控。原则一永远不要裸卖期权裸卖期权naked short的风险是无限的。你卖出一个看涨期权理论上价格可以无限上涨你的亏损也就无限。正确做法用价差spread来限制风险。比如卖出一个看跌期权的同时买入一个更低行权价的看跌期权。这样你的最大亏损就被限制在两个行权价之间。// pythondef bull_put_spread(sell_strike, buy_strike, sell_premium, buy_premium,expiry_spot):牛市看跌价差——限制风险的卖期权策略# 净收到的期权费net_premium sell_premium - buy_premium# 最大亏损 行权价差 - 净期权费max_loss (sell_strike - buy_strike) - net_premium# 最大盈利 净期权费max_profit net_premium# 到期盈亏sell_put_payoff max(0, sell_strike - expiry_spot)buy_put_payoff max(0, buy_strike - expiry_spot)pnl net_premium - sell_put_payoff buy_put_payoffreturn {net_premium: net_premium,max_profit: max_profit,max_loss: max_loss,risk_reward_ratio: max_profit / max_loss,pnl: pnl}原则二控制仓位卖期权的仓位不要超过总资金的20-30%。即使遭遇极端波动你也有足够的资金扛过去原则三设止损当期权价格涨到你收到期权费的2-3倍时止损出场。不要心存侥幸。波动率溢价的量化衡量怎么判断当前市场的波动率溢价有多大// pythonimport numpy as npimport pandas as pddef calculate_volatility_premium(iv_series, realized_vol_series, window252):计算波动率溢价# 滚动波动率溢价vrp iv_series - realized_vol_series# 滚动平均vrp_mean vrp.rolling(windowwindow).mean()vrp_std vrp.rolling(windowwindow).std()# 当前溢价水平current_vrp vrp.iloc[-1]historical_mean vrp_mean.iloc[-1]# 判断当前溢价是否处于历史高位vrp_percentile (vrp.dropna() current_vrp).mean()return {current_vrp: f{current_vrp:.2%},historical_mean: f{historical_mean:.2%},percentile: f{vrp_percentile:.1%},signal: HIGH if vrp_percentile 0.8 else LOW if vrp_percentile 0.2 else NORMAL}def vrp_trading_signal(iv, rv, iv_percentile, threshold0.8):基于波动率溢价的交易信号vrp iv - rv# 波动率溢价处于历史高位 → 卖期权的好时机if iv_percentile threshold and vrp 0:return {signal: SELL_VOLATILITY,reason: f隐含波动率处于{iv_percentile:.0%}分位VRP{vrp:.2%}卖期权有优势,strategy: 卖出跨式或宽跨式注意风控}# 波动率溢价很低甚至为负 → 买期权的好时机elif iv_percentile (1 - threshold) and vrp 0:return {signal: BUY_VOLATILITY,reason: f隐含波动率处于{(1-iv_percentile):.0%}低分位期权便宜,strategy: 买入跨式或宽跨式做多波动率}else:return {signal: NEUTRAL,reason: f波动率溢价处于正常水平VRP{vrp:.2%},strategy: 观望或小幅操作}波动率溢价的时变特征波动率溢价不是恒定不变的。它有时间变化的特征市场恐慌时溢价扩大当市场恐慌时隐含波动率飙升但实际波动率可能还没跟上。此时期权特别贵卖期权的溢价特别高。但这也是最危险的时候——因为你不知道波动会不会真的爆发。市场平静时溢价收窄市场风平浪静时隐含波动率和实际波动率差距缩小。卖期权赚得少但安全性也更高。危机后溢价可能暂时消失甚至反转刚经历完一次大波动后实际波动率很高隐含波动率可能还没反应过来。此时期权可能反而便宜。Short Volatility的实操框架// pythonclass ShortVolatilityStrategy:做空波动率策略框架def __init__(self, total_capital, max_position_pct0.25,stop_loss_multiplier2.5):self.total_capital total_capitalself.max_position_pct max_position_pct # 最大仓位比例self.stop_loss_multiplier stop_loss_multiplier # 止损倍数def check_entry_conditions(self, iv, rv, iv_percentile, vrp):检查入场条件conditions []# 条件1IV处于历史较高分位if iv_percentile 0.7:conditions.append(True)else:conditions.append(False)# 条件2VRP为正且较大if vrp 0.03: # 至少3个百分点conditions.append(True)else:conditions.append(False)# 条件3近期没有重大事件财报、Fed会议等# 这个需要人工判断conditions.append(True) # 假设没有重大事件return all(conditions)def calculate_position_size(self, option_premium, max_loss_per_contract):计算仓位大小# 最大风险资金max_risk_capital self.total_capital * self.max_position_pct# 每个合约的最大亏损max_loss_per_contract_with_stop max_loss_per_contract * self.stop_loss_multiplier# 合约数量num_contracts int(max_risk_capital / max_loss_per_contract_with_stop)return {num_contracts: num_contracts,total_premium_received: num_contracts * option_premium,max_risk: num_contracts * max_loss_per_contract_with_stop,risk_pct: num_contracts * max_loss_per_contract_with_stop / self.total_capital}def manage_position(self, current_option_price, entry_price,days_to_expiry):仓位管理pnl_pct (entry_price - current_option_price) / entry_price# 止损检查if current_option_price entry_price * self.stop_loss_multiplier:return {action: STOP_LOSS,reason: f期权价格涨至入场价的{current_option_price/entry_price:.1f}倍触发止损}# 临近到期如果盈利超过50%可以考虑平仓锁定利润if days_to_expiry 7 and pnl_pct 0.5:return {action: TAKE_PROFIT,reason: f临近到期已盈利{pnl_pct:.0%}建议平仓}# 继续持有return {action: HOLD,current_pnl: f{pnl_pct:.0%}}波动率溢价的暗面最后聊聊Short Volatility的风险。2018年2月5日波动率末日2018年2月5日CBOE的波动率指数VIX一天飙升了114%从14.86涨到了37.86。这一天有一只名叫XIV的产品反向VIX ETF在一天之内暴跌93%。发行商Credit Suisse被迫将其清盘。XIV的策略就是Short Volatility。它赌波动率不会上升。结果那一天波动率爆发了。教训Short Volatility策略的最大风险是——波动率的突然爆发。这种爆发是不可预测的。你可能连续赚了5年然后在一天之内全部回吐。如何防范波动率炸弹1.永远设止损期权价格涨到入场价的2-3倍就出场2.分散到期日不要把所有期权都卖在同一个月份3.保持现金储备至少保留50%以上的现金用于应对极端行情4.关注VIX当VIX从低位开始快速上升时立即减仓5.买保险用一部分利润买入深度虚值期权防范黑天鹅总结今天聊了一个大多数人都不知道的量化概念——波动率溢价。核心要点1.什么是波动率溢价隐含波动率系统性地高于实际波动率期权价格偏贵这个差价就是溢价。2.为什么存在尾部风险厌恶、机构对冲需求、认知偏差——市场愿意为保险多付钱。3.怎么赚这个钱卖出期权Short Volatility策略包括卖出跨式、卖出宽跨式、卖出看跌期权。4.核心风控永远不裸卖、控制仓位20-30%、设止损2-3倍期权费、买保险防范黑天鹅。5.最大的风险波动率的突然爆发。连续赚5年一天回吐。这是Short Volatility的暗面。一句话总结波动率溢价是市场上最持久的免费午餐之一但这份午餐的账单可能在某一天突然到来。下一期我们深入VIX指数——市场的恐慌温度计。理解VIX是做好波动率交易的第一步。