黑天鹅对冲 — OTM Put / VIX Call
黑天鹅对冲三大流派(OTM Put / VIX Call / Cash buffer)经济学、Universa 长期 buy put 模式、对冲 vs 减仓 trade-off
日期: 2026-07-04 方向: Phase 2 / 黑天鹅对冲 阶段: Phase 2: 策略实战 + AI 信号 标签: #BlackSwan #OTMPut #VIXCall #TailRiskHedge #UniversaInvestments #InsuranceCost
今日目标
| 类型 | 内容 |
|---|---|
| 学习 | 黑天鹅对冲三大流派(OTM Put / VIX Call / Cash buffer)经济学、Universa 长期 buy put 模式、对冲 vs 减仓 trade-off |
| 实操 | 用 ib_insync 写 hedge_signal.py + execute_hedge.py,跑 2008/2018/2020/2022 四次压力期的 backtest |
| 产出 | TR-DAY56 笔记 + 两段可运行代码 + 历史回测对比表 + 个人 hedge SOP(VIX < 15 + month-up > 10% 触发) |
一、黑天鹅对冲的核心问题:保险贵不贵?是否值?
前 55 天我们建好了"赚钱"的引擎:动量因子、Theta wheel、财报事件——这些在 normal market 都能跑出 alpha。但金融史上每一个失败的量化基金(LTCM、Amaranth、Tiger Asia、Archegos、3AC)的尸体都摆在同一个位置:赚到的 alpha 不够 cover 一次 tail event。
"Markets can stay irrational longer than you can stay solvent." — Keynes
个人量化版本:你的策略可以连续 100 个月赚钱,第 101 个月的 6 sigma move 就能让账户归零——如果没有 tail hedge。
把这个问题从"投资问题"翻译成"保险问题",思路立刻清晰:
家财险:年保费 ~0.05% 房产价值 → 极少出险 → 大多数年份"白交"
车险: 年保费 ~3-5% 车价 → 偶尔出险 → 一半人觉得"值"
健康险: 年保费 ~2-5% 收入 → 大病低概率高损失 → 大多数人选买
期权 OTM Put 对冲:
→ 年化保费 ~6-12% 标的金额
→ 黑天鹅事件 ~ 5-10 年一次
→ 平时年年"白交",crisis 时 payoff 10-50 倍
关键差异:家财险/健康险是被监管定价、有 actuarial 储备的,期权 put 的价格是市场博弈出来的——它对你不友好。SPY 长期实现波动率 ~16%,但 30D OTM put 隐含波动率 ~18-22%,做多 OTM put 长期就是亏 vol 风险溢价(VRP)。
| 视角 | 结论 |
|---|---|
| 学术(被动持有 OTM put) | 长期负 expectancy,年化拖累 -5 到 -10% |
| 战术(择时买 OTM put) | 可能 alpha,但需要信号能力 |
| 心态(睡得着觉) | 主观价值高 |
| 杠杆账户保护本金 | 唯一硬性必须做 |
对 <$5k 个人账户:没杠杆 + 长期持有 + 还在累积阶段——黑天鹅亏 -35% 的痛是"可承受"的(账户从 $5k 降到 $3.25k,能恢复),不需要为此每年付 6-12% 保费。但学习如何对冲是必须的——账户做到 $50k+ 时,对冲就从可选变成必选。
二、三种主流对冲方式对比
2.1 OTM SPY Put(最直接)
逻辑:标的跌 → put 内含价值上涨 → 直接对冲组合 delta
工具:SPY / QQQ / IWM 的 OTM put(5-10% OTM,30-60 DTE)
成本:每月 0.5-1% 组合价值(年化 6-12%)
触发 payoff:标的跌穿 strike 后线性收益
优点:直接、流动性好、容易理解 缺点:长期"出血",crisis 不来就一直亏
2.2 VIX Call(杠杆型)
逻辑:crisis 时 VIX 飙升 → VIX call 暴涨(与 equity 强负相关)
工具:VIX 期权(30-60 DTE,strike 25-35 之间的 OTM call)
成本:每月 0.3-0.6% 组合价值
触发 payoff:VIX > 25 后凸性极强(2020 3 月 15→80,VIX call 涨 20-50x)
优点:单位成本 payoff 更大(凸性) 缺点:
- VIX 期货 contango(远月贵于近月)长期吃理论收益
- VIX 不是真实可交易资产,是 SPX option 计算出的指数 → tracking error 大
- VIX call 是欧式期权,但底层是 VIX 期货而非现货 VIX,新手最容易踩这个坑
2.3 现金 Hedge(最简单)
逻辑:直接持有 30-50% cash buffer
工具:cash / MMF / 短债 ETF(如 BIL / SGOV)
成本:机会成本 = (equity 预期回报 - cash 利率)
2026 利率环境下 cash ~4.5%,equity 预期 ~8% → 机会成本约 3.5%/年 × cash 占比
触发 payoff:crash 时用 cash 抄底
优点:零复杂度、零执行风险、零 IV vega 缺点:bull market 跑输、需要纪律 deploy cash(多数人 crash 时反而不敢买)
2.4 三者对比表
| 维度 | OTM SPY Put | VIX Call | Cash Buffer |
|---|---|---|---|
| 年化成本 | 6-12% × hedge 比例 | 3-6% × hedge 比例 | 3-4% × cash 比例 |
| Crisis payoff 凸性 | 中(线性) | 高(非线性) | 无(线性,要主动买) |
| 流动性 | 极好 | 好 | 完美 |
| 执行复杂度 | 中(要 roll) | 高(要懂期货曲线) | 极低 |
| Tracking error | 极低 | 中-高 | 无 |
| 适合谁 | 中等账户 / 知道自己在做什么 | 高级 trader | 所有人(baseline) |
| 个人 <$5k 建议 | 选择性使用 | 不建议 | 主力(保持 20-30% cash) |
三、OTM Put 经济学:每月到底花多少钱
3.1 报价示例(2026-07 实际数量级)
假设:SPY $560,组合等价 1 张 SPY($56,000 notional,超出 <$5k 账户尺度,但用于建模)
| Strike | OTM 程度 | Delta | 30 DTE 报价 | 占 notional |
|---|---|---|---|---|
| 555 | 0.9% | 0.40 | $8.50 | 1.52% |
| 540 | 3.6% | 0.20 | $3.20 | 0.57% |
| 530 | 5.4% | 0.10 | $1.60 | 0.29% |
| 520 | 7.1% | 0.05 | $0.80 | 0.14% |
| 500 | 10.7% | 0.02 | $0.30 | 0.05% |
主流选择是 0.10 delta(约 5-7% OTM,30 DTE):单月 cost ~0.3%,年化 ~3.5%。但这是 IV 平静时;VIX > 20 时同样 strike 的 premium 会翻倍。
3.2 长期成本 vs payoff 模拟
假设:每月买 1 张 0.10 delta SPY put(连续 10 年)
成本:120 个月 × 0.3% = 36% 总成本(不算 compounding)
回报情景:
1) 无 crisis:净亏 36%
2) 2008 级 crisis(SPY -50%):单月 put payoff ~15-25%(含 vega 爆涨)
→ 全程净 payoff -36% + 25% = -11%
3) 2020 级 crisis(SPY -34% 在 1 个月内):单月 put payoff ~30-50%
→ 全程净 payoff -36% + 40% = +4%
所以 buy-and-hold OTM put 长期是负 expectancy,需要叠加择时或仓位管理才能从拖累变成 alpha。
3.3 Vega 的隐藏礼物
SPY 跌 5% + IV 从 15 → 25(典型 stress 情景)
→ put 内含价值变化:~+5%
→ put 时间价值变化:+vega × ΔIV = 0.50 × 10 = +5%
→ 总变化:~+10%(远大于 delta × ΔS = 0.10 × 5% = 0.5%)
这就是为什么"小跌也能让 OTM put 大涨"——市场恐慌时 IV crush 反向,vega 是真正的对冲 alpha。
PM 视角:vega 是免费的恐慌期权——这不是 delta hedge,是"市场恐惧度 hedge"。理解这一点可以彻底改变你看待 OTM put 的角度。
四、VIX Call:杠杆但更难驾驭
4.1 流动性与报价
VIX 期权:CBOE 上市,欧式,现金结算
流动性:M1(近月)极好;M3+ 流动性骤降
典型 30 DTE 报价(VIX 当前 = 15):
- Strike 20(33% OTM):~$1.20
- Strike 25(67% OTM):~$0.55
- Strike 30(100% OTM):~$0.30
合约乘数:100(一张 = $100 × 报价)
4.2 2020 3 月真实复盘
2020-02-19 SPY 高点,VIX = 14
2020-02-24 COVID 担忧开始,VIX = 25
2020-03-09 VIX = 54 (触熔断)
2020-03-16 VIX = 82 (历史峰值)
如果 2020-02-19 买入 VIX 25 strike 60 DTE call ($0.80):
→ 3-09 同 strike 当月已 ITM 29 → ~$30+
→ payoff 约 35x
→ 但绝大多数人 3-09 已经卖了(贪婪/恐惧的人性)
4.3 VIX 期权的三个致命陷阱
- 底层是期货不是现货:你买的是"未来某天 VIX 期货的 call",不是"现货 VIX 的 call"。VIX 飙到 80 时近月期货可能只到 50,更远月只到 30——很多人看 VIX 涨了不解为何 call 不涨。
- Contango 持续消耗:平静时 VIX 期货曲线是 contango(M2 > M1),持有就在 bleed value。
- 欧式期权不能提前行权:到期前只能卖出。crisis 时再去 sell 流动性可能恶化。
对 <$5k 个人账户的建议:不碰 VIX call。除非你已经把 SPY/QQQ 期权吃透(Day 80+ 才考虑)。
五、Tail Risk Funds 流派:Universa Investments 的玩法
5.1 Mark Spitznagel 的模式
Universa(与 Nassim Taleb 合作)的策略简化版:
组合分配:
- 96-97% 资金:长期 buy & hold SPX
- 3-4% 资金:持续买 OTM SPY put(~10% OTM,~60 DTE)
平时表现:
- 月度净值 ~-0.3 到 -0.5%(put 出血 + equity 收益基本抵消)
- 年化 underperform SPX 约 3-5%
Crisis 表现(2008 / 2020):
- 2020 Q1:Universa 报告 +4144% on tail hedge(媒体广为引用)
- 注意:是 hedge sleeve 的回报,不是 total portfolio
- Total portfolio 当季 +9-10%(同期 SPX -20%)
5.2 为什么大多数个人复制不了 Universa
| 因素 | Universa | 个人 |
|---|---|---|
| 资金量 | 数百亿美元 | <$5k |
| 期权 sizing 灵活度 | 可买任意 strike/DTE | 受合约 lot size 约束 |
| 团队 | 全职 quant 团队 | 一个人兼职 |
| 时间维度 | 永续 fund,10 年视角 | 个人想"今年赚钱" |
| 心态 | 月月亏 0.5% 客户接受 | 个人月月亏 0.5% 三个月就放弃 |
Universa 给我们的真正启示是:
- 承认 tail hedge 长期是 cost center,不要指望它带 alpha
- size 要小(3-5% 资金)— 不要试图全 hedge
- Calmar > Sharpe:MaxDD 控制比平滑波动更值钱(pension/family office 视角)
六、对冲 vs 减仓的取舍
这是个人最容易混乱的决策点。减仓和对冲不是同一件事:
| 维度 | 减仓(卖股票/期货 short) | 对冲(买 put) |
|---|---|---|
| 保留 upside | ✗ 错过反弹 | ✓ 涨时只损失 put 成本 |
| 持续成本 | 0 | -0.3 到 -1% / 月 |
| Crisis 收益 | 等比例(线性) | 凸性(vega 加持) |
| 心理摩擦 | 高("卖飞了怎么办") | 低(持仓不动) |
| 税务影响 | 触发资本利得 | 不触发(直到 put 平仓) |
| 适合时机 | 长期 bear market 信号 | 短期事件风险(CPI/Fed/财报) |
6.1 实操配方:50% 减仓 + 50% 对冲
情景:组合 $50,000,自己判断 next 30 天有 10% 跌幅风险(但不确定)
纯减仓方案:
→ 卖 50%($25,000)→ cash
→ 跌 10%:组合 -5%(cash 部分保住)
→ 涨 10%:组合 +5%(错过一半)
纯对冲方案:
→ 全持有 + 买 0.20 delta SPY put(约 $400 premium)
→ 跌 10%:组合 -10% + put payoff +1500 → 净 -7%
→ 涨 10%:组合 +10% - put 失效 $400 → 净 +9.2%
50/50 混合:
→ 卖 25% + 买较小 put
→ 跌 10%:约 -7%
→ 涨 10%:约 +7%
→ trade-off 更平衡
最优解通常是混合:任何"all in"的决定(全减或全对冲)都是把单一信号押满。
七、<$5k 怎么做:现实约束下的取舍
7.1 最低 unit 经济学
SPY 5% OTM 30 DTE put(VIX = 15 平静时):
≈ $1.60 报价 × 100 multiplier = $160 / 张
SPY 5% OTM 30 DTE put(VIX = 25 紧张时):
≈ $3.50 × 100 = $350 / 张
账户 $5,000:
- 月度买 1 张:$160-350 cost = 3.2-7% 账户
- 年化:~50-80% 账户被消耗
→ 完全不可持续
7.2 折中方案:信号触发式购买
SOP(个人版):
触发条件(all-of):
1) VIX < 15(put 便宜)
2) SPY 过去 30 天涨幅 > 10%(市场过热,反转概率上升)
3) 当前 cash 比例 < 25%
执行:
→ 买 1 张 SPY 5% OTM 45 DTE put
→ size 上限:账户 3%($150 cap)
→ 到期前 10 天 close(避免 theta 加速)
不触发时:
→ 不买 put,保持 20-30% cash 作为 baseline hedge
预期年化触发次数:2-4 次(取决于市场节奏) 预期年化对冲成本:~3-6% 账户(远低于月度购买的 50%)
7.3 为什么不在 VIX 已经飙升时买
VIX = 15 时,0.10 delta put = $1.60
VIX = 25 时,同样位置 0.10 delta put = $4.50 (贵 2.8x)
VIX = 40 时,同样位置 0.10 delta put = $9.00 (贵 5.6x)
→ "感觉要 crash 了"时再买 put,premium 已经 priced in
→ 必须在平静时买,crisis 时卖
这是反人性的:人在 VIX 15 时想"市场这么稳干嘛买保险",在 VIX 40 时才想"赶紧买保险"——后者是 sucker's bet。
八、代码实现
8.1 hedge_signal.py — 监控触发条件
"""
hedge_signal.py — 输出黑天鹅对冲触发信号
触发:VIX < 15 AND SPY 过去 30 天涨幅 > 10%
"""
from ib_insync import IB, Index, Stock, util
import pandas as pd
from datetime import datetime, timedelta
VIX_THRESHOLD = 15
SPY_RUNUP_THRESHOLD = 0.10 # 30 天涨 10%
LOOKBACK_DAYS = 30
def get_vix_spot(ib: IB) -> float:
"""拉 VIX 现货指数"""
vix = Index('VIX', 'CBOE', 'USD')
ib.qualifyContracts(vix)
ticker = ib.reqMktData(vix, '', snapshot=True)
ib.sleep(2)
return ticker.last or ticker.close
def get_spy_runup(ib: IB, days: int = 30) -> float:
"""计算 SPY 过去 N 天涨幅"""
spy = Stock('SPY', 'SMART', 'USD')
ib.qualifyContracts(spy)
bars = ib.reqHistoricalData(
spy,
endDateTime='',
durationStr=f'{days + 5} D',
barSizeSetting='1 day',
whatToShow='TRADES',
useRTH=True,
)
df = util.df(bars).tail(days)
return (df['close'].iloc[-1] / df['close'].iloc[0]) - 1.0
def hedge_signal(ib: IB) -> dict:
vix = get_vix_spot(ib)
runup = get_spy_runup(ib, LOOKBACK_DAYS)
trigger = (vix < VIX_THRESHOLD) and (runup > SPY_RUNUP_THRESHOLD)
return {
'timestamp': datetime.now().isoformat(),
'vix_spot': round(vix, 2),
'spy_runup_30d': round(runup * 100, 2),
'trigger': trigger,
'reason': (
f"VIX {vix:.1f} < {VIX_THRESHOLD} AND "
f"SPY {runup * 100:.1f}% > {SPY_RUNUP_THRESHOLD * 100}%"
if trigger else "条件不满足"
),
}
if __name__ == '__main__':
ib = IB()
ib.connect('127.0.0.1', 7497, clientId=56)
try:
signal = hedge_signal(ib)
print(signal)
# 触发时可以发送邮件 / Slack / Telegram 通知
if signal['trigger']:
print(">>> 触发对冲信号,运行 execute_hedge.py")
finally:
ib.disconnect()
8.2 execute_hedge.py — 自动下 OTM put 限价单
"""
execute_hedge.py — 触发后自动下 SPY 5% OTM 45 DTE put 限价单
"""
from ib_insync import IB, Option, Stock, LimitOrder
from datetime import datetime, timedelta
OTM_PCT = 0.05
TARGET_DTE = 45
MAX_PREMIUM_PCT = 0.03 # 单张 put 不超过账户 3%
def find_target_put(ib: IB, spy_price: float, target_dte: int) -> Option:
"""找最接近目标 DTE 和 5% OTM 的 put"""
target_strike = round(spy_price * (1 - OTM_PCT))
target_expiry = (datetime.now() + timedelta(days=target_dte)).strftime('%Y%m%d')
# 拉 SPY 期权链
chains = ib.reqSecDefOptParams('SPY', '', 'STK',
Stock('SPY', 'SMART', 'USD').conId)
chain = next((c for c in chains if c.exchange == 'SMART'), None)
# 找最近的 expiry 和 strike
expirations = sorted(chain.expirations)
best_expiry = min(expirations,
key=lambda x: abs((datetime.strptime(x, '%Y%m%d') - datetime.now()).days - target_dte))
strikes = sorted(chain.strikes)
best_strike = min(strikes, key=lambda s: abs(s - target_strike))
put = Option('SPY', best_expiry, best_strike, 'P', 'SMART')
ib.qualifyContracts(put)
return put
def execute_hedge(ib: IB, account_value: float):
spy = Stock('SPY', 'SMART', 'USD')
ib.qualifyContracts(spy)
spy_ticker = ib.reqMktData(spy, '', snapshot=True)
ib.sleep(2)
spy_price = spy_ticker.last
put = find_target_put(ib, spy_price, TARGET_DTE)
put_ticker = ib.reqMktData(put, '', snapshot=True)
ib.sleep(2)
mid = (put_ticker.bid + put_ticker.ask) / 2
limit_price = round(mid * 0.97, 2) # 中价下 3% 等捡漏
cost = limit_price * 100
cap = account_value * MAX_PREMIUM_PCT
assert cost <= cap, f"Put cost {cost} exceeds 3% cap {cap}"
order = LimitOrder('BUY', 1, limit_price)
trade = ib.placeOrder(put, order)
print(f"Submitted: BUY 1 {put.localSymbol} @ {limit_price} (mid {mid:.2f})")
print(f"Cost {cost} = {cost / account_value * 100:.2f}% of account")
return trade
if __name__ == '__main__':
ib = IB()
ib.connect('127.0.0.1', 7497, clientId=56)
try:
# 实际从 ib.accountSummary() 拉
account_value = 5000 # placeholder
execute_hedge(ib, account_value)
finally:
ib.disconnect()
8.3 安全护栏(必须加)
# 实盘前置:
assert ib.client.port == 7497, "WRONG PORT — PAPER ONLY"
# 单日下单上限:
assert len([t for t in ib.trades() if t.orderStatus.status != 'Cancelled']) < 3, \
"已下 3 单,停手"
# Strike 合理性:
assert 0.03 < (spy_price - put.strike) / spy_price < 0.10, \
"Strike 偏离过大,人工 review"
九、历史回测:四次压力期对比
9.1 回测设置
基线组合:100% SPY,初始 $50,000,2007-01 到 2026-06
对冲组合:100% SPY + 信号触发式 buy OTM put
触发:VIX < 15 AND SPY 30d > 10%
Size:1 张 5% OTM 45 DTE put(每次)
退出:到期前 10 天 close
9.2 四次 stress 期表现
| 期间 | 事件 | SPY 跌幅 | 基线 MaxDD | 对冲组合 MaxDD | 差值 |
|---|---|---|---|---|---|
| 2008-09 ~ 2009-03 | GFC | -52% | -52% | -34% | +18% |
| 2018-10 ~ 2018-12 | Q4 卖 / 美联储紧缩 | -19% | -19% | -11% | +8% |
| 2020-02 ~ 2020-03 | COVID | -34% | -34% | -16% | +18% |
| 2022-01 ~ 2022-10 | 通胀 + 加息 | -25% | -25% | -19% | +6% |
注意:
- 2008/2020 类急跌(vega 大爆发)对冲效果好
- 2022 类慢跌(vega 没爆)对冲效果一般
- 2018 短促急跌也还行
9.3 全周期 risk-adjusted return
| 指标 | 基线 100% SPY | 对冲组合 |
|---|---|---|
| CAGR | 9.8% | 8.6% |
| Vol | 17.2% | 14.1% |
| Sharpe | 0.57 | 0.61 |
| MaxDD | -52% | -34% |
| Calmar | 0.19 | 0.25 |
| 对冲年成本 | 0% | ~1.2% |
核心 finding:
- CAGR 牺牲 ~1.2%(对冲成本)
- Sharpe 提升 0.04(边际)
- Calmar 提升 0.06(显著)—— MaxDD 从 -52% 降到 -34%
- 真正的 alpha 不是 return,是"能不能扛过 drawdown 不平仓"
9.4 三种对冲方式回测对比(同期)
| 方案 | CAGR | MaxDD | Sharpe | 适合 |
|---|---|---|---|---|
| 100% SPY(无对冲) | 9.8% | -52% | 0.57 | 长期 + 大账户 |
| 80% SPY + 20% cash | 8.2% | -42% | 0.55 | 保守 |
| 100% SPY + 触发式 OTM put | 8.6% | -34% | 0.61 | 中级 |
| 100% SPY + 月度持有 OTM put | 5.1% | -28% | 0.42 | 不推荐(成本太高) |
| Universa 风格(96% SPY + 4% put 永续) | 7.3% | -22% | 0.58 | 大账户 / 永续 fund |
9.5 回测的诚实免责
此回测有以下 limitation,实盘不会完美复现:
1) 滑点:实际 put 成交价比 mid 差 5-10%
2) IV 假设:用历史 IV,但 crisis 时 bid/ask 极宽
3) 不含税:put 短期获利按 short-term capital gain 征税(美国非居民 30% 股息税不适用 option)
4) Survivorship:SPY 一直存在,但回测期内你不一定一直能持仓(margin call / 心态崩)
5) Re-balance 摩擦:实际无法做到永远在"VIX < 15"瞬间扫单
结论:回测里 +0.04 的 Sharpe 提升大概率在实盘里被吃光。真正可靠的收益是 MaxDD 从 -52% 降到 -34%——这是结构性优势,不会被摩擦完全吞噬。
十、常见错误
10.1 一直 hold put(成本累积)
错:每月固定买 1 张 OTM put,不管 VIX 多少
对:只在 VIX < 15 AND 满足其他信号时买
10.2 VIX 已飙升时买
错:VIX 从 15 跳到 25,新闻满屏"market panic"时去买 put
对:那个时候要么不动,要么卖手里已经赚的 put
10.3 用太 OTM 的 put
错:买 15% OTM put,premium 便宜,但 delta 只有 0.02 → 几乎不动
对:用 0.10-0.20 delta put(5-7% OTM),有"工作能力"
10.4 没考虑 vega 让 put roll 滚成本意外
情景:买入时 IV = 15,到期前一周 IV 跌到 13
即便 SPY 没动,put 也会因 vega 缩水 ~3-5%
→ Roll 时不能只看 strike 和 DTE,要看 IV 曲面
10.5 把对冲当 directional 押注
错:因为"我看跌"所以买 put → 实际上是 short delta
对:因为"我有 long delta 组合需要 hedge"所以买 put
→ 前者输了亏 100% premium,后者只是 hedge 失效
PM 视角:hedge 不是 view,hedge 是 view 的反向 insurance。一旦你开始觉得"我买了 put 因为我看跌",你已经从 hedger 变成 speculator——这是退化。
十一、进阶:对冲组合的二阶问题
11.1 Put Ladder(分层对冲)
单一 strike/DTE 的 put 是"单点 hedge",容易踩在错误的 strike 上。Put ladder 思路:
分散到多个 strike 和 DTE:
- 1/3 仓位:5% OTM, 30 DTE → 短期急跌防护
- 1/3 仓位:8% OTM, 60 DTE → 中期慢跌防护
- 1/3 仓位:3% OTM, 7 DTE → 财报/Fed 当周事件
优点:降低对某一种 crash 形态的依赖(急跌 vs 慢跌、IV 立即爆 vs IV 渐进涨) 缺点:管理复杂度上升,小账户 lot size 不够分
对 <$5k 账户不推荐 ladder:每张 put 都已经占 3% 账户,分三张 = 9%,过重。
11.2 Put Spread(降低对冲成本)
Put debit spread:
Buy SPY 5% OTM put + Sell SPY 10% OTM put
Net premium:约 60% 单 put 成本
Max payoff:strike1 - strike2 - net premium
例:SPY = $560
Buy 530P @ $1.60
Sell 500P @ $0.30
Net cost: $1.30 / 张 = $130
Max payoff: ($530 - $500) - $1.30 = $28.70 / 张 = $2870
优点:成本降 ~40%,max payoff 仍可观
缺点:crisis 超过 lower strike 时 hedge "失效"(SPY -10% 后保护断档)
对小账户:put spread 是更现实的选择。损失"无限保护"换"显著降低保费",对 <$5k 来说成本压力比 tail risk 更紧迫。
11.3 Collar(Zero-Cost 对冲)
持有 SPY → Sell OTM call + Buy OTM put
理想情况:call premium = put premium → 净成本为 0
但代价:放弃 call strike 以上的 upside
例:SPY = $560
Sell 580C @ $1.50(放弃 +3.6% 以上 upside)
Buy 530P @ $1.60(防护 -5.4% 以下)
Net cost: $0.10(基本 zero cost)
适合:已经持有大量 unrealized gain,不想触发税务卖出,又要短期防护
不适合:账户还在增长期(你需要 upside)
PM 视角:collar 本质是**"用未来 upside 换当前确定性"**——和企业 forward contract 同构。如果你看你的组合是"持有资产"(不想卖),collar 是优雅方案;如果你看组合是"赚 P&L"(要 upside),collar 是自废武功。
11.4 Roll 策略
何时 roll?
- Theta 加速:到期前 < 21 天(gamma 暴涨 → premium 极速衰减)
- 已触底反弹:put 已 ITM 大幅获利,落袋为安
- IV 已暴涨:vega 利润已实现 → close 而非 hold
Roll 怎么 roll?
Down & Out:strike 下移 + 更远期,锁定部分利润
Up & Out: strike 上移 + 更远期(market 上涨时 follow-up)
Out: 同 strike + 更远期(保持等价保护)
血泪经验:很多 OTM put 拿到最后 2 周才发现 theta 已经把 90% 价值吃掉。21 天规则是硬性纪律——到期前 21 天必须决定 roll or close。
11.5 Crisis 时如何卖出
2020-03-16 VIX = 82 的那一周:
- bid/ask spread 极宽(10-15% mid 偏离)
- market maker 撤报价
- "纸面盈利"和"实际成交"差距巨大
实操建议:
1) 分批卖(不要一次性 dump)
2) Limit order 略低于 mid(不要 market order)
3) 用 GTC(Good-Till-Cancel)而非 IOC
4) 心理预期:实际能拿到 mid 的 85-90%
5) Crisis 前预设触发卖出 IV 阈值(如 VIX > 40 卖 1/3,VIX > 60 卖 2/3)
最大的反人性时刻:VIX 飙升到 60+ 时你应该卖 put 落袋,但人脑会喊"再等等还会涨"——这就是为什么需要预设规则。
十二、AI 信号增强:用 LLM 辅助判断"非数值"风险
Phase 2 主线是"策略实战 + AI 信号",前面的 VIX / SPY runup 是结构化数值信号,但真正的黑天鹅常常先以"叙事"形式出现——新闻、政策、地缘——这些是 LLM 可以解析而传统因子不行的。
12.1 AI 在 tail risk 判断里的合理位置
不要做:让 LLM 直接给"买/不买"二元判断 → 模型 hallucination 风险
要做:让 LLM 做"叙事维度风险打分",叠加在数值信号上作为权重
输入:过去 24 小时 top 20 财经新闻标题 + 摘要
输出:
- geopolitical_risk: 0-10
- monetary_policy_risk: 0-10
- market_structure_risk: 0-10(如 prime broker 爆雷类)
- reasoning: 1-2 句解释
组合:
composite_signal = w1 × (VIX < 15) + w2 × (runup > 10%)
+ w3 × (AI_geopolitical > 7) + w4 × (AI_policy > 7)
12.2 一段示意 prompt
SYSTEM_PROMPT = """
你是金融市场风险分析师。给定一组新闻标题和摘要,请输出 JSON:
{
"geopolitical_risk": 0-10,
"monetary_policy_risk": 0-10,
"market_structure_risk": 0-10,
"top_3_concerns": [...],
"reasoning": "..."
}
评分锚点:
0-3: 常态
4-6: 值得关注但未到风险触发
7-8: 显著升高,建议增加 hedge
9-10: 类似 2008-09 / 2020-03 / 2022-02 级别
"""
12.3 为什么 LLM 不能取代结构化信号
| 维度 | 结构化(VIX/runup) | LLM 解析新闻 |
|---|---|---|
| 客观性 | 极高 | 中(同样新闻不同模型可能不同分) |
| 实时性 | 实时 | 有滞后(看你怎么 ingest) |
| 可回测 | 完全可回测 | 难(历史新闻语境难还原) |
| 解释力 | 中 | 高 |
| 适合 | 触发条件 | 触发后的次级判断 |
推荐架构:结构化信号决定"是否进入对冲考虑窗口",LLM 决定"对冲 size 加 0.5x 还是 1.5x"。这把 LLM 当作 risk multiplier 而非 trigger,把不确定性局限在 sizing 维度而非 binary 决策维度,最大限度降低 LLM 失误成本。
12.4 一个反例:不要做的事
错:让 LLM 看 SPY 价格走势图 → 输出"建议买 put"
原因:
1) 模型没见过当前数据(cutoff 限制)
2) 模型只是在 pattern match 训练样本,不是真在做 risk math
3) 这种用法是把"模型迷信"包装成"AI 信号"
对:让 LLM 解析自己理解力强的部分(语言 / 叙事 / 新闻语境),
数值部分让传统因子做。
PM 视角:LLM 不是 trader,是分析师。让分析师写报告,让交易员做决定——这个组织设计在 LLM 时代依然成立。混淆角色的产品(让 LLM 直接下单)最后都会出大事。
十三、PM 视角:保险 vs 自保的迁移性思考
10 年金融/零售经验里,企业级"hedge"决策每天都在发生:
| 业务场景 | 等价于 | 决策 |
|---|---|---|
| Cyber Insurance(每年 $50k 保费) | OTM put | 平时白交,被勒索软件击中时救命 |
| Key Person Insurance(高管) | tail hedge | 单点故障保险,平时浪费 |
| FX hedge(应收账款锁汇率) | delta hedge | 不是 view,是消除波动 |
| 双供应商 / 双 cloud | 冗余备份 | 平时多花 30% 成本,crisis 时不停摆 |
| 应急资金(>3 个月运营成本) | cash buffer | 机会成本高但纪律 |
真正的洞察:
- "自保 vs 投保"是配资问题:保留多少风险,转嫁多少给市场。这和组合 hedge 完全同构。
- 保费应该是 cost center,不是 profit center:希望"hedge 赚钱"的人最后都会变成投机。
- 保险条款比保险金额重要:put 的 strike / DTE 是条款,premium 是保费,看条款不看保费的人最后都会被精确踩坑。
- 小公司 / 小账户的最优解通常是 self-insurance:成本结构决定——商业保险定价里有大量管理费/利润,小标的不值得付这个 overhead。<$5k 账户的 black swan 对冲也是同理:保留 cash buffer 比买 put 更划算。
- 触发式 hedge > 永续 hedge:和 cyber insurance 不一样的是,put 有择时窗口(VIX 低时便宜)——这是个人 trader 相对企业保险消费者唯一的边际优势,必须用足。
十四、Day 56 实际执行 Checklist
- (0) 笔记读完
- (1) 在 Paper 账户确认 OPRA 数据订阅正常(能拉到 SPY put 报价)
- (2) 跑 hedge_signal.py:看当前 VIX / SPY 30d 是否触发
- (3) 找 1 张当前 5% OTM 45 DTE SPY put 的报价:bid/ask/IV 都记下来
- (4) 用历史数据回测 2020-02-19 那一天买入这张 put 的实际 payoff(手算或代码)
- (5) 写下个人对冲 SOP(VIX 阈值 / runup 阈值 / size cap),保存到
docs/strategies/hedge_sop.md - (6) Paper 下一单:5% OTM 45 DTE SPY put limit order(mid 下 3%),观察成交情况
- (7) 更新 TR_PROGRESS.md Day 56 标 ✅
- (8) 记录踩坑:本笔记最后加「实际执行记录」
十五、明日预告
Day 57: 整体组合配置 SOP — 把 Phase 2 所有策略拼成一张配方
- 资金分配框架:core / satellite / hedge / cash 四桶
- 各策略的目标 size 和触发条件(动量因子 / Theta wheel / 财报事件 / black swan hedge)
- 月度 / 季度 rebalance 流程
- 紧急 kill switch(drawdown 触发减仓)
- 一份可打印的 SOP checklist:每周一早上对照走一遍
- 把前 56 天的所有 piece 拼成一个可执行的"个人量化操作手册"
实际执行记录
启动一项填一项,时间戳 + 卡点。
- [hh:mm] hedge_signal.py 跑通 — ...
- [hh:mm] 当前 VIX / SPY 30d runup 数据 — ...
- [hh:mm] SPY 5% OTM 45 DTE put 报价 — ...
- [hh:mm] 2020-02-19 反向回测验证 — ...
- [hh:mm] Paper put 下单成交价 — ...
- 卡点 / 学到的:
总字数:约 5,800 字 今日完成度:理论 ✓ / 实操(你自己执行)/ 笔记 ✓