返回交易笔记
TR Day 56

黑天鹅对冲 — OTM Put / VIX Call

黑天鹅对冲三大流派(OTM Put / VIX Call / Cash buffer)经济学、Universa 长期 buy put 模式、对冲 vs 减仓 trade-off

2026-07-04
Phase 2: 策略实战 + AI 信号
BlackSwanOTMPutVIXCallTailRiskHedgeUniversaInvestmentsInsuranceCost

日期: 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 PutVIX CallCash 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 账户尺度,但用于建模)

StrikeOTM 程度Delta30 DTE 报价占 notional
5550.9%0.40$8.501.52%
5403.6%0.20$3.200.57%
5305.4%0.10$1.600.29%
5207.1%0.05$0.800.14%
50010.7%0.02$0.300.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 期权的三个致命陷阱

  1. 底层是期货不是现货:你买的是"未来某天 VIX 期货的 call",不是"现货 VIX 的 call"。VIX 飙到 80 时近月期货可能只到 50,更远月只到 30——很多人看 VIX 涨了不解为何 call 不涨。
  2. Contango 持续消耗:平静时 VIX 期货曲线是 contango(M2 > M1),持有就在 bleed value。
  3. 欧式期权不能提前行权:到期前只能卖出。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 给我们的真正启示是

  1. 承认 tail hedge 长期是 cost center,不要指望它带 alpha
  2. size 要小(3-5% 资金)— 不要试图全 hedge
  3. 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-03GFC-52%-52%-34%+18%
2018-10 ~ 2018-12Q4 卖 / 美联储紧缩-19%-19%-11%+8%
2020-02 ~ 2020-03COVID-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对冲组合
CAGR9.8%8.6%
Vol17.2%14.1%
Sharpe0.570.61
MaxDD-52%-34%
Calmar0.190.25
对冲年成本0%~1.2%

核心 finding

  1. CAGR 牺牲 ~1.2%(对冲成本)
  2. Sharpe 提升 0.04(边际)
  3. Calmar 提升 0.06(显著)—— MaxDD 从 -52% 降到 -34%
  4. 真正的 alpha 不是 return,是"能不能扛过 drawdown 不平仓"

9.4 三种对冲方式回测对比(同期)

方案CAGRMaxDDSharpe适合
100% SPY(无对冲)9.8%-52%0.57长期 + 大账户
80% SPY + 20% cash8.2%-42%0.55保守
100% SPY + 触发式 OTM put8.6%-34%0.61中级
100% SPY + 月度持有 OTM put5.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机会成本高但纪律

真正的洞察

  1. "自保 vs 投保"是配资问题:保留多少风险,转嫁多少给市场。这和组合 hedge 完全同构。
  2. 保费应该是 cost center,不是 profit center:希望"hedge 赚钱"的人最后都会变成投机。
  3. 保险条款比保险金额重要:put 的 strike / DTE 是条款,premium 是保费,看条款不看保费的人最后都会被精确踩坑。
  4. 小公司 / 小账户的最优解通常是 self-insurance:成本结构决定——商业保险定价里有大量管理费/利润,小标的不值得付这个 overhead。<$5k 账户的 black swan 对冲也是同理:保留 cash buffer 比买 put 更划算。
  5. 触发式 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 字 今日完成度:理论 ✓ / 实操(你自己执行)/ 笔记 ✓