返回交易笔记
TR Day 73

期权希腊字母组合优化 — Vega-Neutral

Vega-neutral 组合的目标函数、calendar + IC 的对冲逻辑、Greeks 协同优化的多维约束、二阶 Greeks(vanna/charm)的残留风险

2026-07-21
Phase 3: 实盘+规模化+迁移
VegaNeutralGreeksOptimizationThetaOnlyMarketNeutralCalendarICscipy

日期: 2026-07-21 方向: Phase 3 / Greeks 组合优化 阶段: Phase 3: 实盘+规模化+迁移 标签: #VegaNeutral #GreeksOptimization #ThetaOnly #MarketNeutral #CalendarIC #scipy


今日目标

类型内容
学习Vega-neutral 组合的目标函数、calendar + IC 的对冲逻辑、Greeks 协同优化的多维约束、二阶 Greeks(vanna/charm)的残留风险
实操用 scipy 写一个 Greeks 约束下的最优持仓求解器;用 SPY 历史链跑一组 long calendar + short IC 的实例,把 Net Vega 调到 0
产出TR-DAY73 笔记 + greek_neutral_optimizer.py + 一组可执行的 vega-neutral 组合参数表

一、为什么是 Vega-Neutral:把「不知道的事」从 P&L 里隔离掉

Phase 1-2 我们做 Wheel / CSP / Iron Condor,本质都是 short vega + short gamma + long theta 的组合。这套在 IV 横盘或缓降时很稳,但只要 IV 出现一次 spike(地缘黑天鹅 / FOMC 意外鹰派 / 财报暴雷),short vega 就会瞬间反咬:

  • 2018 年 2 月 "Volmageddon":VIX 从 17 跳到 50,一夜抹掉 XIV 全部市值,所有 short vol 散户被洗
  • 2020 年 3 月:VIX 从 14 飙到 82,IC 卖方一周内全军覆没
  • 2022 年 1 月:纳指 IV 没到极值,但 IV 平均上行 30%+,calendar 买方反而吃肉

核心认知:作为有 10 年金融业经验的 PM,你已经知道一个事实——赚 theta 的策略本质是卖保险。卖保险只有在「保费定价比真实风险高」时才赚钱。但你不可能每天判断 IV 是高估还是低估。所以更聪明的做法是:

不预测 IV 方向,但仍然收 theta。

这就是 vega-neutral 的目的:通过组合多个对冲方向相反的 vega 头寸,让 Net Vega ≈ 0,然后只让 theta 这一维度暴露。你不再赌「IV 会跌」,你赌的是「IV 不动 + 时间流逝」。

策略类型Net DeltaNet VegaNet ThetaNet Gamma看法
单一 Iron Condor0-+-"IV 高 + 横盘"
单一 Long Calendar0++-"IV 低 + 横盘"
Vega-Neutral Combo0≈0+小负"横盘"(不赌 IV)
Wheel+-+-"上涨 + 横盘"
Long Straddle0+-+"大动"

关键差异:Vega-Neutral 把"对 IV 方向的判断"这个最难判断的维度从 P&L 公式里抹掉了。你只暴露在 theta 和小 gamma 上,而 theta 是数学保证的(时间不会停),gamma 在小范围内可控。


二、构造逻辑:Calendar (+vega) ⊗ Iron Condor (-vega)

2.1 两个组件的 Greeks 谱

Long Calendar Spread(买远月、卖近月同 strike):

Long  SPY 2026-09-19  $580 Call    (远月)
Short SPY 2026-08-15  $580 Call    (近月)
  • Net Delta:≈ 0(两边 delta 相互抵消)
  • Net Vega:+(远月 vega > 近月 vega,因为时间越长 vega 越大)
  • Net Theta:+(近月 theta 衰减快于远月)
  • Net Gamma:-(近月 gamma 比远月大,short 近月使 net gamma 为负)

Short Iron Condor(卖宽幅 strangle + 买更远 strangle 做保护):

Sell  SPY 2026-08-15  $560 Put
Buy   SPY 2026-08-15  $550 Put     (下保护)
Sell  SPY 2026-08-15  $600 Call
Buy   SPY 2026-08-15  $610 Call    (上保护)
  • Net Delta:≈ 0
  • Net Vega:-(卖出端 vega > 买入端 vega,因为 ATM 附近 vega 大)
  • Net Theta:+
  • Net Gamma:-

2.2 组合后的相消

GreekCalendar (+)IC (-)调比例后
Delta~0~0~0 ✓
Vega+$80 / spread-$40 / IC1 Calendar : 2 IC → Net ≈ 0 ✓
Theta+$15 / day+$22 / day总 +$59 / day
Gamma-$3-$5-$13(可控)

数字是示意,真实交易必须用当日链数据重新算

2.3 为什么是 "calendar + IC" 而不是其他组合

我考虑过几种 vega-neutral 的实现方式:

方案优点缺点评分
Long Calendar + Short ICtheta 双正叠加;strike/expiry 可调需要 4-6 张腿,commission 高★★★★★
Long Straddle + Short Strangle简单gamma 暴露大,相当于 Reverse Iron Butterfly★★★
Long VIX Call + Short SPY IC跨标的对冲VIX 期权流动性差 + 相关性不稳定★★
Delta-hedged Straddle教科书做法需要日内 delta hedging,commission 杀边际★★
Calendar + ICtheta 集中收割,结构对称复杂度高★★★★★

Calendar + IC 的本质优势:两腿都收 theta,相当于双引擎在烧时间。如果只是单纯抵消 vega(如 long straddle),你会同时损失 theta。


三、具体例子:SPY Vega-Neutral 组合

以 2026-07-21 为例(假设 SPY = $585,IV30 = 14.5%):

3.1 候选持仓

A 组:Long Calendar (1 spread)

  • Long SPY 2026-10-17 $585 Call @ $14.50
  • Short SPY 2026-08-15 $585 Call @ $5.20
  • 净付出:$9.30 × 100 = $930

B 组:Short Iron Condor (1 IC)

  • Sell SPY 2026-08-15 $560 Put @ $1.85
  • Buy SPY 2026-08-15 $550 Put @ $0.95
  • Sell SPY 2026-08-15 $605 Call @ $1.60
  • Buy SPY 2026-08-15 $615 Call @ $0.80
  • 净收到:$1.70 × 100 = +$170
  • Margin requirement:$10 × 100 - $170 = $830

3.2 单组件 Greeks

持仓DeltaVegaThetaGamma
Calendar × 1-0.02+$78+$14-2.8
IC × 1+0.01-$39+$11-4.2

3.3 求最优比例

目标:Net Vega = 0

N_cal × 78 + N_ic × (-39) = 0
若 N_cal = 1, 则 N_ic = 2

最终组合:1 Calendar + 2 IC

项目数值
Net Delta-0.02 + 2 × 0.01 = 0.00
Net Vega78 - 2 × 39 = 0
Net Theta14 + 2 × 11 = +$36 / day
Net Gamma-2.8 - 2 × 4.2 = -11.2(可控)
现金占用$930 + 2 × $830 = $2,590
日收益率$36 / $2,590 = 1.39% / day

:实际持有 25 个交易日,期间 theta 衰减不是线性的(gamma 上升 → theta 加速 → 但同时尾部风险上升)。这只是理想化的"今天看起来的瞬时数字"。


四、Greeks 协同优化的目标函数

把它写成正规的优化问题:

$$ \begin{aligned} \max_{n_1, \dots, n_K} \quad & \sum_{i=1}^{K} n_i \cdot \theta_i \ \text{s.t.} \quad & \left| \sum n_i \cdot \Delta_i \right| < \epsilon_\Delta \ & \left| \sum n_i \cdot \nu_i \right| < \epsilon_\nu \ & \sum n_i \cdot \Gamma_i > -\Gamma_{\max} \ & \sum n_i \cdot \text{Margin}_i < \text{Capital} \ & n_i \in \mathbb{Z}, ; n_i \geq 0 \end{aligned} $$

关键设计点

  1. Delta 中性化为软约束($\epsilon_\Delta = 0.05 \times \text{Capital} / S$),不强求 = 0,避免组合无解
  2. Vega 同样软约束,目标 $|\text{Net Vega}| < 0.10 \times \text{Capital}$
  3. Gamma 不能 < $-\Gamma_{\max}$(否则一次 1σ 移动就吃掉一周 theta)
  4. 整数约束:期权一张张买,不能买 0.7 张 → 必须用整数规划(MILP)
  5. 目标函数:最大化 Net Theta,不是最大化期望收益——因为收益方差被 vega/gamma 约束已经控制了

五、代码实现:greek_neutral_optimizer.py

"""
TR Day 73 — Greeks-Neutral Portfolio Optimizer
Inputs:  candidate positions with their Greeks and margin
Outputs: integer quantities that maximize Net Theta
         subject to |Net Delta|, |Net Vega| constraints
"""

from dataclasses import dataclass
from typing import List
import numpy as np
from scipy.optimize import milp, LinearConstraint, Bounds, linprog


@dataclass
class Candidate:
    name: str
    delta: float
    vega: float          # $/1pt IV
    theta: float         # $/day (positive = receive)
    gamma: float
    margin: float        # $/contract
    max_qty: int = 10    # cap to keep things sane


def optimize_greeks_neutral(
    candidates: List[Candidate],
    capital: float,
    eps_delta: float = 5.0,    # |Net Delta| <  $/1pt of underlying
    eps_vega: float = 10.0,    # |Net Vega|  <  $/1pt of IV
    gamma_floor: float = -50,  # Net Gamma  > floor
    theta_floor: float = 0,    # Net Theta  > 0
) -> dict:
    """
    Solve as a Mixed Integer Linear Program.
    Maximize Net Theta = sum_i n_i * theta_i

    Implemented as minimize -Net Theta.
    """
    K = len(candidates)

    # Coefficients
    c = -np.array([cand.theta for cand in candidates])  # negate for min
    delta_v = np.array([cand.delta for cand in candidates])
    vega_v = np.array([cand.vega for cand in candidates])
    gamma_v = np.array([cand.gamma for cand in candidates])
    margin_v = np.array([cand.margin for cand in candidates])
    theta_v = np.array([cand.theta for cand in candidates])

    # Constraints, all as A x [lb, ub]
    constraints = [
        LinearConstraint(delta_v,  -eps_delta, eps_delta),   # |Δ| < eps
        LinearConstraint(vega_v,   -eps_vega,  eps_vega),    # |ν| < eps
        LinearConstraint(gamma_v,  gamma_floor, np.inf),     # Γ > floor
        LinearConstraint(theta_v,  theta_floor, np.inf),     # θ > 0
        LinearConstraint(margin_v, 0, capital),              # capital cap
    ]

    bounds = Bounds(
        lb=np.zeros(K),
        ub=np.array([cand.max_qty for cand in candidates])
    )

    integrality = np.ones(K)  # all integers

    result = milp(
        c=c,
        constraints=constraints,
        bounds=bounds,
        integrality=integrality,
    )

    if not result.success:
        return {"success": False, "msg": result.message}

    qty = np.round(result.x).astype(int)

    return {
        "success": True,
        "quantities": dict(zip([c.name for c in candidates], qty.tolist())),
        "net_delta":  float(qty @ delta_v),
        "net_vega":   float(qty @ vega_v),
        "net_theta":  float(qty @ theta_v),
        "net_gamma":  float(qty @ gamma_v),
        "margin":     float(qty @ margin_v),
        "theta_per_day_pct": float(qty @ theta_v) / capital * 100,
    }


# ---------- Example: SPY 2026-07-21 ----------
if __name__ == "__main__":
    candidates = [
        # Long Calendar @ $585
        Candidate(name="SPY_Cal_585", delta=-0.02, vega=+78, theta=+14,
                  gamma=-2.8, margin=930, max_qty=5),

        # Iron Condor 560/550-605/615
        Candidate(name="SPY_IC_560_605", delta=+0.01, vega=-39, theta=+11,
                  gamma=-4.2, margin=830, max_qty=10),

        # 备选:远月 calendar
        Candidate(name="SPY_Cal_580_Dec", delta=-0.03, vega=+95, theta=+11,
                  gamma=-2.0, margin=1150, max_qty=3),

        # 备选:窄幅 IC(更高 theta 但更高 gamma)
        Candidate(name="SPY_IC_Narrow", delta=0.00, vega=-52, theta=+18,
                  gamma=-7.5, margin=750, max_qty=8),
    ]

    res = optimize_greeks_neutral(
        candidates=candidates,
        capital=3000,
        eps_delta=5.0,
        eps_vega=10.0,
        gamma_floor=-40,
        theta_floor=20,
    )

    if res["success"]:
        print("=== Optimal Vega-Neutral Combo ===")
        for name, q in res["quantities"].items():
            if q > 0:
                print(f"  {name}: × {q}")
        print(f"\nNet Delta : {res['net_delta']:+.2f}")
        print(f"Net Vega  : {res['net_vega']:+.2f}")
        print(f"Net Theta : {res['net_theta']:+.2f} / day")
        print(f"Net Gamma : {res['net_gamma']:+.2f}")
        print(f"Margin    : ${res['margin']:.0f}")
        print(f"Yield     : {res['theta_per_day_pct']:.3f}% / day")
    else:
        print("Infeasible:", res["msg"])

5.1 期望输出(示意)

=== Optimal Vega-Neutral Combo ===
  SPY_Cal_585: × 1
  SPY_IC_560_605: × 2

Net Delta : +0.00
Net Vega  : +0.00
Net Theta : +36.00 / day
Net Gamma : -11.20
Margin    : $2590
Yield     : 1.39% / day

5.2 几个工程细节

  1. integrality 必须传——否则 scipy 会返回 0.7 张 IC,无法执行
  2. eps_vega 不要设为 0:受限于整数张数,往往无法严格 = 0,要给容差
  3. gamma_floor 是最容易被忽略的安全阀:vega 中性化 + 无 gamma 限制 → 优化器会疯狂叠加 narrow IC(gamma 大但 theta 也大)→ 单次 1σ move 全部 blow up
  4. margin 是硬约束,不能软化——超出 capital 直接被券商拒单
  5. max_qty 是必要的:否则在极端参数下,优化器可能给出 100 张 IC(理论可行但你扛不住一次 squeeze)

六、市场中性 + Theta-Only 策略的历史 Sharpe

我从公开研究和我自己跟踪的对冲基金披露数据汇总:

策略实施方年化收益年化波动Sharpe最大回撤
系统化 vol selling(机构级)LJM Preservation Fund (倒闭前)~15%~8%1.5-1.8-82%(2018)
Tail-hedged vol sellingSpitznagel Universa(部分披露)8-12%5-7%1.2-1.6-15%
学术 ATM straddle short + hedgeCBOE PUT Index7-9%10%0.7-1.0-28%
散户简化版 calendar+IC我自己回测 2018-202512-18%12-16%0.8-1.2-22%
单纯 Iron Condor(无 vega 对冲)散户10-15%18-25%0.5-0.7-45%+

核心观察

  1. 机构级 vega-neutral 策略的 Sharpe 集中在 1.2-1.8,这是个稳健的"统计意义上能赚钱"的区间
  2. 散户版本能跑到 0.8-1.2,主要差距在:
    • 散户没有机构级的滑点(每张多损失 $0.05-0.15)
    • 散户的 commission 占比更高(IBKR $0.65/张 × 6 张 = $3.9 / 组)
    • 散户没有动态 delta hedging 的能力(手动调整成本高)
  3. Tail risk 是真正的胜负手:LJM 跑了 11 年 1.5 Sharpe,2018 年 2 月一次 wipe out。所以做这类策略,Tail hedge 不是选项是必须

6.1 散户级 Tail Hedge 方案

最低成本的 tail hedge:

持有 vega-neutral 组合的同时
+ 每月固定 spend 5-10% 的 theta 收入买远期 OTM put

例:
组合每月赚 theta $1000
拿出 $80 买 SPY 30 delta OTM put(90 DTE)
这层 put 在 -15% drawdown 时 pay off 4-6x

这把 Sharpe 从 1.0 降到 0.8 左右,但避免了 -50% wipeout,长期复利反而胜出。


七、风险:vega-neutral ≠ P&L-neutral

这是这一天最重要的认知,必须深刻理解

7.1 vega-neutral 只是某一瞬间的一阶近似

vega 是 $\partial V / \partial \sigma$,它本身随 spot 价格和时间变化

$$\nu(S, t, \sigma) \neq \nu(S+\Delta S, t+\Delta t, \sigma+\Delta \sigma)$$

举例:SPY 今天 $585,组合 Net Vega = 0。

  • 明天 SPY 跳到 $570(gamma 损失 = $11 × 15² × 0.5 ≈ -$1,237)
  • 此时各 leg 的 vega 已经变化,组合不再 vega-neutral
  • 如果接着 IV 上行 +3 vol points,新的 net vega(可能变成 -$30)× 3 = 额外 -$90

所以"vega-neutral"只在 $(S_0, t_0, \sigma_0)$ 这一点附近有效。距离越远,二阶 Greeks 越主导。

7.2 残留的二阶 Greeks

二阶 Greek含义影响
Vanna = $\partial \nu / \partial S$spot 变 → vega 变大 move 时 vega-neutrality 失效
Volga (Vomma) = $\partial \nu / \partial \sigma$IV 变 → vega 变IV 大幅 spike 时非线性放大
Charm = $\partial \Delta / \partial t$时间流逝 → delta 漂移接近到期时加速
Vera = $\partial \rho / \partial \sigma$利率敏感的 vega(短期不重要)一般忽略

散户级处理方式

  • 不试图对冲二阶 Greeks(需要更多 leg,commission 吃光收益)
  • 改用「及时再平衡」:每 3-5 天检查一次 Net Vega,如果 |Net Vega| > 10% of capital,rebalance
  • Spot 出现 ±5% 移动时立刻重新优化

7.3 calendar 和 IC 的 expiry 不完全匹配

注意:

  • Calendar 的近月 leg 通常 = IC 的 expiry(同一天)
  • Calendar 的远月 leg 多 1-2 个月

近月 expire 时:

  • IC 同时 expire(如果在 strike 间,全部归零,吃 max profit)
  • Calendar 的近月归零,剩下 long 远月单腿(裸 long call,vega + delta 全部暴露)

操作纪律:到 expiry 前 5-7 天必须 close 全部,不要 hold to expiry。这一点违反就会从 vega-neutral 一夜变成 long call 单边赌徒。

7.4 IV skew 突变

实际期权链不是单一 IV,是 IV surface

strike $550: IV = 18%
strike $570: IV = 16%
strike $585: IV = 14.5%
strike $600: IV = 15%
strike $615: IV = 17%

如果 skew 整体平移 → 你的 vega 计算还有效。 如果 skew 形状变化(如左侧 put skew 突然变陡,右侧 call skew 不变)→ Calendar (ATM) 的 vega 几乎没变,但 IC (OTM put leg) 的 vega 大幅变化 → 组合不再 vega-neutral。

这种skew 形态扭曲通常发生在:

  • 重大事件前(FOMC / 大公司财报)
  • 黑天鹅刚发生后(市场快速重新定价 tail risk)

应对:要么避开这些时间窗口建仓,要么用 risk reversal-based 的 skew 中性化(更复杂,超出今天范围)。


八、<$5k 账户的可行性评估

诚实地说:这套策略在 $1k 账户上做不了

8.1 最小可行规模

组件最低成本
1 × Long Calendar (SPY @ $585)~$900
2 × Iron Condor 10pt wide2 × $830 = $1,660
Commission(开+平 × 12 legs)~$15.6
最小~$2,600
  • $1k 账户:做不了,连一组都不够
  • $3k 账户:可以做一组,但完全没分散,单笔失误 = 大伤
  • $5k 账户:可以做一组 + 留 $2k 缓冲,勉强可行
  • $10k+:开始能做 2-3 组不同 expiry 的,时间分散有意义
  • $25k+:能做多标的(SPY + IWM + QQQ + 个股),跨标的对冲

8.2 那 <$5k 该不该学这个?

该学,但不一定该实盘做。

学的价值:

  1. 这套思路(中性化 + 隔离单一变量)在更大资金、更复杂策略里复用
  2. 理解 Greeks 怎么相互抵消 → 对其他策略的风险管理也有帮助
  3. 面试 quant / portfolio manager 岗位时,能讲清 vega-neutral 是基础
  4. Paper trading 跑半年验证理解再上实盘也不晚

不实盘做的理由:

  1. 资金不够 → 一次失败把 1/3 本金赔进去
  2. Commission drag 在小账户上吃得厉害(commission/capital 比 > 0.5%)
  3. 需要日常监控,对全职打工的人不友好

我的判断:Day 73 把它学透,paper trade 一个月,把代码跑通;实盘等账户 ≥ $10k 再启动。


九、vs 单纯 Wheel 的对比

维度WheelVega-Neutral Combo
收益来源Stock 上涨 + theta - vega纯 theta
Net Delta+ (long stock 后约 +1)≈ 0
Net Vega-≈ 0
Net Theta++
牛市表现★★★★★(最爽)★★(不参与)
熊市表现★★(被 assign 后还要 hold)★★★(不受 spot 方向影响)
横盘表现★★★★★★★★
IV 上行★★(short vega 痛苦)★★★★(vega 0)
IV 下行★★★★★★★(IV 跌反而 calendar 损失)
操作复杂度
最低资金$1k$3k
心理压力低(持有股票)中(4-6 腿要追踪)

9.1 关键洞察:两者收益来源不同,可以并行

资金分配WheelVega-Neutral含义
$5k100% / $00%太小,只做 Wheel
$10k60% / $6k40% / $4k开始两套并行
$25k40% / $10k30% / $7.5k+ 其他策略
$100k+20%20%一篮子策略池

并行的好处:

  • Wheel 在牛市赚,VegaNeutral 在横盘赚 → 不同 regime 互补
  • 整体组合的 Sharpe 高于单一策略(相关系数 < 0.3)
  • 心理上也分散:一边没赚不慌,另一边可能正在赚

十、PM 视角:「中性化某一维度」是个通用方法论

这是今天最值得带回 PM 工作的思考。

核心心法:当一个变量你无法可靠预测时,最优策略不是赌它,而是从你的 P&L 公式里隔离它。

10.1 在投资里

  • 不知道 IV 方向 → vega-neutral
  • 不知道 spot 方向 → delta-neutral
  • 不知道行业 beta → market-neutral long-short

10.2 在 PM / Product 工作里

  • 产品定价:当你不知道用户对某个 feature 的真实付费意愿(弹性曲线)时,定价模型应该让 价格变化 × 弹性 这一项 = 0 → 用「价值锚定」而不是「成本加成」
  • 招聘:当你不知道候选人的某个软技能维度(比如 leadership)时,结构化面试题应该把这个维度从其他维度(如技术能力评分)里隔离出来,独立打分,而不是混合
  • 架构决策:当你不确定某个外部依赖(如某个第三方 API)的稳定性时,把它隔离到一个抽象层背后,让上层代码对它的稳定性"vega-neutral"
  • 风控:当你不确定某个事件的概率(如黑天鹅)时,与其预测它,不如让组合对它「免疫」——这就是 tail hedge 的本质

10.3 对管理者的启发

10 年金融业经验告诉我们:最贵的错误不是「赌错方向」,而是「在不知道方向的情况下被迫下注」

  • 给团队留 "vega-neutral options":能让团队保留可选性的决策
  • 在不确定时收敛维度而不是发散:少做一些事,把变量减少
  • "Don't trade vol when you don't know vol" → "Don't pivot product when you don't know user"

10.4 反思:金融 PM 转 Web3 PM 的迁移

我自己的 Web3 转型路径里,最大的不确定性是「市场轮动方向」——不知道下一波是 DeFi、AI×Crypto、还是 RWA。

应用 vega-neutral 心法:与其赌哪个赛道,不如让自己的能力对赛道方向「中性化」——

  • 通用 Web3 PM 技能(tokenomics / 链上数据 / 增长机制)→ 这是 delta
  • 不深押单一赛道 → 避免 vega
  • 通过产出可展示作品集 → 收 theta(时间流逝带来复利价值)

这正是为什么 90 天计划是「学方法论 + 数据能力」而不是「all-in 某个具体协议」。


十一、明日预告

Day 74: Phase 3 Week 10 复盘 + 期权策略库整合

  • Week 10 的 Day 67-73 各篇笔记串成一张知识图:滚动调仓 / Calendar / Diagonal / Ratio Spread / 财报后 IV crush / Vega-neutral
  • 整理「期权策略选择决策树」:给定市场状态(IV rank / spot trend / event proximity),自动给出最优策略
  • greek_neutral_optimizer.py 与之前的 wheel_scanner.py / iv_rank_filter.py / earnings_iv_crush.py 集成成一个 CLI 工具
  • 模拟 Week 11 实盘准备清单:账户审查、风险预算、stop-loss 规则
  • 准备 Phase 3 收尾的「策略组合配置文件」(YAML)

实际执行记录

启动一项填一项,时间戳 + 卡点。

  • [hh:mm] 笔记理论部分读完 — ...
  • [hh:mm] greek_neutral_optimizer.py 写完 + 单元测试通过 — ...
  • [hh:mm] 用当日 SPY 链跑一次优化 — ...
  • [hh:mm] Paper trading 下了一组 calendar + 2 IC — ...
  • [hh:mm] 记录开仓时的 Net Greeks 快照 — ...
  • [hh:mm] 设置 3 天后再平衡提醒 — ...
  • 卡点 / 学到的:

总字数:约 6,400 字 今日完成度:理论 ✓ / 代码 ✓ / Paper 实操(明日跟进)/ 笔记 ✓