返回交易笔记
TR Day 30

Phase 2 启动准备 + 接下来 30 天策略选型

Phase 间过渡的 release planning 方法、策略组合选型的「必做/不做」决策框架、paper trading 与实盘的 gap 识别原则

2026-06-08
Phase 1 → Phase 2 过渡
Phase2PrepStrategySelectionInfraSetupPaperTradingWeeklyReviewTransition

日期: 2026-06-08 方向: Phase 2 启动准备 阶段: Phase 1 → Phase 2 过渡 标签: #Phase2Prep #StrategySelection #InfraSetup #PaperTrading #WeeklyReview #Transition


今日目标

类型内容
学习Phase 间过渡的 release planning 方法、策略组合选型的「必做/不做」决策框架、paper trading 与实盘的 gap 识别原则
实操整理 Day 1-28 代码成模块化 repo、IB Gateway 自动启动配置、SQLite trade log 初始化、数据 cache 落地(SP100 / VIX / FRED)、Phase 2 资金分配方案敲定
产出TR-DAY30 笔记 + Phase 2 acceptance criteria 文档 + 准备清单 checklist + 每周 review 模板 + 风险预案表

一、Day 30 为什么是「过渡日」而不是「再多学一项」

1.1 一个常见的错误:把 Day 30 当成 Day 29 的延续

新手量化在 Day 30 这种节点有两种典型反应:

反应表现问题
「我再多学一个策略」当晚翻论文找新因子 / 看 calendar spreadPhase 1 的方法论没沉淀,越学越浅
「我开始切实盘」把 Day 28 双因子直接上 $5k 实盘还没跑过 paper、没建立 review 机制
正确反应停下来做 Phase 2 的 release planning30 天的输入需要 1 天的 staging

Phase 1(Day 1-30)的本质是方法论:你学会了 IBKR、期权 Greeks、因子构建、回测框架、Wheel 结构、风控数学。但这些是「单点能力」。Phase 2(Day 31-60)的本质是实操化——把这些单点串成可运行的策略组合。

中间这一步不做,Phase 2 会有两种典型失败:

  • 过载失败:同时开 4 个策略,全 paper trade,每天追不过来,2 周就放弃
  • 方向漂移:每周心血来潮换策略,没有沉淀,最后什么也没学会

1.2 过渡日的产品类比

Day 30 是 MVP → Beta 之间的 release planning 会议。 不是写新功能,是定 acceptance criteria + 资源分配 + 风险预案。

软件 release planning量化 Phase 间过渡
Sprint GoalPhase 2 目标
Backlog 优先级排序策略候选「必做/不做」
资源 / 工时分配资金 / 时间 / 注意力分配
Definition of DonePhase 2 出口标准
Risk register风险预案表
Retrospective cadence周复盘机制

下面 90% 的内容就是把这 6 项一项一项落实。


二、Phase 1 致谢段(短)

30 天结束,不晒 P&L,因为 paper 阶段 P&L 没意义。回顾过程产出

产出量化
学习笔记30 篇 TR-DAY
可运行的脚本28 个(去掉 Day 21 / Day 29 两个复盘日)
跑通过的 paper 仓位6 张期权 + 4 个股票仓位
重要数学概念吃透Black-Scholes、Greeks、IC、IR、Sharpe、Kelly、CAPM、Fama-French
工程能力ib_insync、yfinance、pandas、numpy、SQLite、cron 自动化

30 天的过程比结果重要:Phase 1 不产生 alpha,它产生「能识别 alpha 的能力」和「能识别自己错在哪里的能力」。这两件事是 Phase 2-4 真正的护城河。

回头看 30 天,最值钱的不是某一篇笔记,是这五条肌肉记忆:

  1. 「Theta 是友军,IV 是敌军」:Day 15-20 跑过 CSP/CC,知道时间费每天滴答到自己口袋的真实感觉,也知道 IV 突然上 5 个点对 short put 的杀伤力。这种感觉看书学不来,必须 paper 跑过。
  2. 「回测漂亮 ≠ 策略好」:Day 25-28 反复看到「同一组因子换一种调仓周期 Sharpe 从 1.8 跌到 0.6」,从此对漂亮回测保持警惕。
  3. 「单笔 max loss 是真实存在的数字」:Day 19 算 CSP max loss 的时候,第一次直观体感「卖一张 put 是有可能亏 $960」的,账户里就那么多钱,亏掉一笔的影响要心里清楚。
  4. 「自动化是纪律」:Day 1 配 IB Gateway 时觉得 cron 很麻烦,Day 30 反而觉得任何「需要每天手动跑」的策略都是不可持续的。
  5. 「先写下来再下单」:Day 20 的 thesis 模板,强制开仓前用一句话写明「我为什么要做这笔」,避免冲动交易。

这五条会沿用到 Phase 2-4,不需要再学一遍。


三、Phase 2(Day 31-60)全景:实操化的 4 周

3.1 一张图看完 Phase 2

Week 5 (Day 31-37)  ── 多因子组合实盘化
                       └── Day 28 双因子 v1 → IC加权 + WFA + Paper部署
Week 6 (Day 38-44)  ── 期权 Wheel 实战
                       └── 低价个股月度 CC + CSP, IWM/F/SOFI 池
Week 7 (Day 45-51)★ ── AI 信号(Claude + XGBoost + 期权)
                       └── 10-Q / 财报 sentiment → ML 排序 → 事件期权
Week 8 (Day 52-60)  ── 组合管理 + 黑天鹅对冲 + Phase 2 总结
                       └── 三策略并行 + VIX 对冲 + 出口评审

为什么是 4 周不是 6 周:原本想把 Week 9(Day 61-67)也作为 Phase 2 的延展(多周期因子 + 跨资产 beta 中和),但和 Phase 3 的「实盘准备 + 黑天鹅 stress test」高度重叠。所以 Phase 2 砍到 4 周,节奏更紧凑,避免内容稀释。每个 Week 主题单一、出口清晰,是 Phase 2 节奏设计的核心原则。

3.2 Week 5(Day 31-37):多因子组合实盘化

Day主题核心产出
31Day 28 代码 production 化(拆 module / 加 logging)factors/momentum.py + factors/lowvol.py
32IC 加权动态权重 + 因子衰减分析IC 时序图 + 权重函数
33Walk-Forward Analysis 第一版WFA notebook + 滚动 IS/OOS 图
34Top-K / Bottom-K 投资组合构建 + 调仓周期决策组合权重表 + 调仓日历
35Transaction cost model(佣金 + 滑点 + 借券)TCA 函数 + Net Sharpe
36Paper trade 自动化部署(cron + IB Gateway)定时 rebalance 脚本
37Week 5 复盘 + 双因子组合 v2 报告Week 5 retrospective

Week 5 出口标准:双因子 paper 组合连续运行 ≥ 5 个交易日,每日 rebalance log 完整无人工干预。

3.3 Week 6(Day 38-44):期权 Wheel 实战

Day主题核心产出
38标的池筛选(IWM + 5 只低价个股)标的池 csv + IV/OI/Earnings 表
39月度 CSP 批量挂单脚本wheel/csp_batch.py
40Assignment 自动检测 + CC 接替逻辑wheel/state_machine.py
41Roll 决策树(50% rule / 21 DTE / ITM)wheel/roll_logic.py
42Wheel 组合 Greeks 聚合监控Greeks dashboard
43月度 P&L 归因(premium / capital appreciation / theta)Attribution 表
44Week 6 复盘 + Wheel 实战手册Week 6 retrospective

为什么不用 SPY/QQQ:SPY ≈ $580、QQQ ≈ $500,单张 CSP 锁 $58k/$50k,远超 paper $5k 配额。IWM(≈$220)单张锁 $22k 还是太大,所以 Phase 2 Wheel 以低价个股(F / SOFI / PLTR / INTC)为主,IWM 只做 1 张演示性 CSP 用于体感对比。

3.4 Week 7(Day 45-51)★ AI 信号 pipeline

这是 Phase 2 最重要的一周,也是 Phase 1 没碰过的全新方向。

Day主题核心产出
45LLM 提取 10-Q / 10-K 结构化字段llm/extract_filing.py
46Earnings call transcript sentiment scoringsentiment score 表
47LLM 输出 → 特征工程(数值化 / dummy / 时间衰减)feature_engineering.py
48XGBoost 排序模型 + IC / Top-Decile 检验model_v1.pkl + 评估报告
49事件期权策略:earnings IV crush 套利结构trade structure 文档
50Paper 部署:LLM 信号 → 期权下单events/earnings_trader.py
51Week 7 复盘 + LLM 信号 v1 报告Week 7 retrospective

这周的核心难点不是 ML,是 LLM 输出的稳定性:同一份 10-Q,Claude 在不同 prompt / 不同时间会给不同 sentiment。Week 7 一半时间花在 prompt engineering 和 output validation 上。

为什么把 Week 7 标★

  • 这是作者 10 年金融 PM 经验里最稀缺的能力——传统金融机构没法做这件事(合规不允许 / 数据流不通 / 人才不混合),所以这件事是 Phase 2 真正的差异化竞争点。
  • 这件事的副产品(LLM 提取金融文档结构化字段)可以直接复用到 Web3 治理提案分析、链上 RWA 资产披露分析,是跨方向的能力底座。
  • Week 7 跑通的 pipeline 在 Phase 3 可以直接横向迁移到「Twitter 情绪 → 链上事件交易」「Discord 治理讨论 → DAO 提案做空/做多」等更多场景。

3.5 Week 8(Day 52-60):组合 + 对冲 + Phase 2 总结

Day主题核心产出
52三策略相关性矩阵 + 资金再分配correlation 表
53黑天鹅对冲:VIX call / put spread / tail hedgehedge 策略选型
54整体 Beta / Delta / Vega 聚合监控portfolio Greeks dashboard
55Drawdown 应急预案 + 熔断规则risk_rules.md
56Phase 2 paper P&L 归因attribution 报告
57「实盘 - 回测 gap」分析方法论gap_analysis.md
58Phase 2 面试题集(10 道,组合管理向)interview_q.md
59Phase 2 作品集 / Github pushrepo release v0.2
60Phase 2 总结 + Phase 3 启动会TR-DAY60

四、Phase 2 出口目标(Definition of Done)

可量化、可验收,避免「感觉差不多了」的模糊判断。

编号出口标准验收方式
DoD-13 个 paper 策略并行运行 ≥ 14 个交易日trade log 时间戳 + 仓位 snapshot
DoD-2完整 LLM → ML → 下单 pipeline 走通 ≥ 1 次end-to-end log + 1 张实际开仓的事件期权
DoD-3风控守则文档(黑天鹅 / 仓位 / 相关性 / 熔断)risk_rules.md ≥ 5 章
DoD-4周复盘机制连续执行 ≥ 4 周4 篇 weekly retrospective
DoD-5「实盘 - 回测 gap」识别方法论文档gap_analysis.md
DoD-6Repo 模块化 + 测试覆盖核心模块pytest 通过率 ≥ 80%
DoD-7Phase 2 面试题 ≥ 10 道,组合管理向interview_q.md

不在出口标准里的事

  • ❌ paper P&L 必须为正(paper 表现不代表实盘,不作为出口条件)
  • ❌ 切实盘交易(Phase 3 才考虑)
  • ❌ Sharpe ≥ X(样本太小,不科学)

五、Phase 1 → Phase 2 准备清单(今天 + 本周末必做)

5.1 基础设施

状态验证方式
IBKR Options Level 2-3 已批TWS Account → Permissions 显示 Level 2
市场数据订阅生效OptionTrader 能看到实时 IV
IB Gateway 安装~/Jts/ibgateway/ 存在
IB Gateway 自动启动配置(cron @reboot)crontab -l 显示启动行
TWS / Gateway 自动登录(IBC 配置)重启后无需手动密码
SQLite trade log 数据库初始化trade_log.db 存在且 schema 建好
requirements.txt 锁定版本pip freeze > requirements.txt
Python 虚拟环境固化.venv/ 或 conda env 可重建

5.2 代码 repo 整理

把 Day 1-28 的 28 个脚本拆成 5 个 production 模块:

trading_repo/
├── README.md                # 项目说明 + Phase 2 路线图
├── requirements.txt         # pinned deps
├── data/                    # 数据获取层
│   ├── __init__.py
│   ├── ibkr_client.py       # ib_insync 包装
│   ├── yfinance_loader.py   # 历史数据
│   ├── universe.py          # SP100 / SP500
│   └── cache.py             # parquet 缓存
├── factors/                 # 因子构建
│   ├── __init__.py
│   ├── momentum.py          # Day 22-23
│   ├── lowvol.py            # Day 24
│   └── combine.py           # Day 27-28
├── backtest/                # 回测框架
│   ├── __init__.py
│   ├── engine.py            # Day 25-26
│   ├── tca.py               # transaction cost
│   └── wfa.py               # walk-forward
├── risk/                    # 风控
│   ├── __init__.py
│   ├── greeks.py            # Day 15-19
│   ├── position_sizing.py   # Kelly / vol-target
│   └── circuit_breaker.py   # 熔断
├── journal/                 # 交易日志
│   ├── __init__.py
│   ├── db.py                # SQLite schema
│   └── attribution.py       # P&L 归因
├── scripts/                 # 一次性 / 定时脚本
│   ├── daily_rebalance.py
│   ├── monitor_greeks.py
│   └── eod_journal.py
└── tests/                   # pytest
    ├── test_factors.py
    └── test_backtest.py
任务命令 / 动作
初始化 repogit init trading_repo && cd trading_repo
写 README(含 Phase 2 路线图)vim README.md
拆模块(28 个脚本 → 5 个 package)重构 + 跑 pytest 验证
.gitignore(排除 trade_log.db / .env / cache/)vim .gitignore
Push 到 GitHub(私有 repo)gh repo create trading_repo --private --push

5.3 数据 cache

数据集频率存储用途
SP100 价格(OHLCV,10 年)日级data/cache/sp100.parquet因子回测
SP500 价格(OHLCV,5 年)日级data/cache/sp500.parquet扩展 universe
VIX 历史日级data/cache/vix.parquet黑天鹅信号
IV surface(核心 20 标的)日级data/cache/iv/{ticker}.parquetWheel + 事件
FRED 无风险利率(DGS3MO)日级data/cache/risk_free.parquetBSM 定价、Sharpe
财报日历周更data/cache/earnings_calendar.csvWheel 避雷 + 事件期权

六、策略选型决策:5 个候选 → 3 个必做

6.1 候选与决策

ID候选策略决策理由
A动量 + 低波动双因子(Phase 1 v1 升级)必做Phase 1 已建完整框架,沉淀成本最低,是「Phase 1 工作的延续性证明」
BWheel on 低价个股(CSP → assigned → CC)必做期权能力闭环验证 + 现金流策略,与因子组合相关性低
C财报 IV crush + LLM sentiment(Week 7)必做Phase 2 唯一的新方向,AI × 量化的核心实验
DCalendar spread / VIX arb不做需要复杂 Vega 风控,Phase 3 再说
EA 股因子迁移不做数据源 + 交易接口复杂度爆炸,Phase 3 Week 11 再说

关于「不做」的进一步说明

  • 不做 D(Calendar spread / VIX arb):Calendar spread 的核心风险是 Vega term structure(近月 vs 远月 Vega 不同步),需要建一套 Vega curve 监控系统。Phase 2 的 Greeks 监控只到「聚合 Net Vega」这一级,不足以支撑日历价差风控。VIX arb 涉及 VIX 期货合约结构和 ETF 跟踪误差(如 VXX 的 contango drag),是一个独立的 4-5 天学习量。两个都放 Phase 3 Week 9-10。
  • 不做 E(A 股因子迁移):A 股数据源(Tushare / AkShare)质量参差、API 限频严重、缺乏期权数据。交易接口(QMT / 同花顺 iFinD)和 IBKR 范式完全不同,需要重写一套 client。涨跌停制度、T+1、停牌频繁让因子回测假设全部失效。这件事独立做都要 30 天,不能并到 Phase 2。
  • 隐藏候选 F(加密 funding rate arb):作者本职 Web3,理论上有优势。但 Phase 2 是「先把传统市场量化跑顺」,加密放到 Phase 4 和 Web3 主线汇合,避免精力分散。

6.2 三个必做策略的特征对比

维度A 双因子B WheelC 事件期权
资产类型股票期权(卖方为主)期权(买/卖混合)
持仓周期月度 rebalance月度 expiry事件后 1-5 天
现金流方向资本利得premium 净收入偶发大额
主要风险系统性 beta + 因子失效标的暴跌 + IV 飙升LLM 误判 + IV crush 反向
Greeks 暴露Delta(基本对冲)Theta+ Vega- Delta+Vega- Gamma 复杂
与 SPY 相关性中等(市场 beta)中等(标的 beta)低(事件驱动)
自动化程度完全可定时完全可定时半自动(事件触发)

组合互补性逻辑:A 提供 beta 暴露 + 因子 alpha,B 提供 theta 现金流 + 低相关性,C 提供事件驱动 alpha + LLM/ML 能力建设。三者相关性矩阵预估都在 0.5 以下,是合理的多策略组合。


七、资金配置(Phase 2 Paper Trading)

7.1 配额表

策略资金配额占比说明
双因子组合(A)$2,00040%5-8 只股票,每只 $250-400
Wheel(B)$2,00040%2 张 CSP(如 F + SOFI 各 1 张 ≈ $1,800 锁定)
事件期权(C)$1,00020%单次开仓 ≤ $300,最多 3 笔并行
合计名义$5,000100%paper account 资金量
现金缓冲超额部分paper 账户超出 $5k 的部分作为缓冲,不主动调用

7.2 配额边界规则

规则阈值触发动作
单策略 drawdown≥ 20%暂停该策略下单,进入复盘
单策略仓位超过配额 110%拒绝新开仓
三策略合计 drawdown≥ 15%Phase 2 暂停,召开评审
单笔最大 max loss≥ 配额 30%拒绝下单(CSP 单张 max loss 上限)
相关性突变(30 日 ρ > 0.7)触发对冲检查

7.3 为什么是 40/40/20

  • A 和 B 等权(40/40):Phase 1 已建立的能力,可信度高
  • C 给 20%:新方向,先验证 pipeline 能跑通,不重仓
  • 没有给 D/E 任何配额:避免「分散到没意义」

7.4 配额会不会动态调整

会,但有强约束:

调整时机触发条件可调幅度
Week 6 末A 已连续运行 ≥ 10 个交易日A 配额 ±10%
Week 7 末C pipeline 全链路跑通C 配额可上调到 25%
Week 8 中任一策略 drawdown ≥ 15%该策略配额砍半
紧急情况黑天鹅事件全部转现金缓冲

禁止的调整

  • ❌ 「这周 A 赚了就把 C 的钱挪给 A」(追涨)
  • ❌ 「这周 B 亏了赶紧加仓」(摊薄)
  • ❌ 「凭感觉调」

所有配额调整必须写进 weekly retrospective 的 ADR(Architecture Decision Record)字段,附 1-2 句理由。没写 ADR 就调,等于没调,下次复盘会回滚。


八、Phase 2 心态准备

8.1 三条必须刻在脑子里的纪律

#纪律反例
1paper 表现不代表实盘「paper 跑了 2 周 Sharpe 3.5,赶紧实盘!」← Phase 3 才考虑
2不要急着切实盘任何 Phase 2 期间的切实盘冲动,先冷静 7 天再说
3关注 gap,不关注 P&L重点不是赚了多少,是「为什么 paper 和回测差 X bp」

8.2 关于「想切实盘的冲动」

这条单独拎出来讲,因为它是 Phase 2 最大的隐性风险。常见诱因:

诱因反驳
「paper 跑了两周都赚钱」两周样本对应不到 10 笔独立交易,统计上没意义;并且 paper 的成交是 perfect fill,实盘有 1-3 bp 滑点
「我同事 / 老婆 / 朋友都开始实盘了」别人的资金曲线是别人的,你不知道他的 max DD 期间是什么状态
「现在不上手会错过行情」量化的 alpha 来源是「策略 × 时间」,不是「时间 × 时间」;3 个月后入场不会少赚长期回报
「paper 不够刺激了」这是赌博心理在抬头,这条出现就是最大的红灯

预案:每次想切实盘,先回看本节的表格,再回看十一节的 Red 等级触发条件,至少冷静 7 天。如果 7 天后还想,写一份 1000 字的「为什么这次时机不同」的小作文,然后再决定。这个程序本身就能筛掉 90% 的冲动。

8.3 「实盘 - 回测 gap」是什么

回测时一切完美:成交价 = mid、滑点 = 0、佣金 = 0.005、IV 不变。Paper trading 暴露这些假设的破洞:

Gap 类型表现应对
成交价 gap限价单不成交 / 成交在 ask改 marketable limit
滑点 gap大单分拆后实际成本 > mid+spread/2TWAP / VWAP 拆单
Latency gap信号→下单→成交有 3-30s 延迟pre-market 准备订单
IV gap回测用 close IV,实际是 intraday加 IV percentile 监控
借券 gapshort leg 借不到 / 利率激增universe 加 hard-to-borrow 过滤
数据 gapyfinance 历史和 IBKR 实时对不上用 IBKR historical bar 校准

Phase 2 的价值就是把这些 gap 一个一个识别出来。这不是 paper 阶段的副产品,是 paper 阶段的主产品

换个角度:Phase 2 出口时,如果你能写出一份 30 条以上的「我观察到的实盘-回测 gap 清单 + 已修复 / 待修复 / 不可修复」,这份清单本身就是 Phase 3 切实盘的安全边际。没有这份清单就敢切实盘的人,第一次黑天鹅来临时基本全军覆没。


九、每周一次的 review 制度

9.1 时间与节奏

每周日晚 9:30-10:00 PM,30 分钟,不超时。

不要做成 2 小时的「全面体检」,节奏会断。30 分钟版本:

时间内容输出
0-5 min翻本周 trade log(按时间序)心里有数
5-15 min跑 attribution 脚本,看每策略 P&L 来源attribution.png
15-22 min检查 Greeks 暴露 + 策略相关性矩阵greeks_week.png
22-30 min写 weekly retrospective(200-400 字)weekly/WK{N}.md

9.2 Weekly Retrospective 模板

# Week N Retrospective (YYYY-MM-DD ~ YYYY-MM-DD)

## 1. 本周事实
- 开仓 X 笔 / 平仓 Y 笔 / 现持仓 Z 笔
- P&L: $___(不重要,仅记录)
- 最大单笔盈利 / 亏损 / 它的归因

## 2. 实盘-回测 gap(核心)
- 本周发现的 gap:
- 已修复 / 待修复:

## 3. Greeks 与相关性
- 组合 Net Delta / Vega / Theta:
- 三策略 30 日相关性变化:

## 4. 决策错误
- 本周最大的判断错误 + 它属于(执行错 / 模型错 / 运气)

## 5. 下周一个动作
- 一句话写下「下周必须改的 1 件事」(不超过 1 件)

9.3 为什么是「一件事」

经典 retrospective 病:「下周要改 A、B、C、D、E」。结果一周下来 5 件都没改。强制只能 1 件,反而真能做到。第 8 周的 Phase 2 总结时,你会看到 4 件「真实改了的事」,比 20 件「想改的事」有用得多。

9.4 周复盘的 anti-pattern

下面几种复盘姿势是无效的,碰到要立刻停手:

Anti-pattern表现矫正
流水账复盘「周一开了 A 仓 / 周二平了 B 仓 / 周三...」不要流水,归因维度只看「策略 × P&L source」
情绪复盘「这周亏太多了心情不好下周要扳回来」retrospective 不写情绪,只写事实 + 决策
追因子复盘「为什么 momentum 这周失效了我要换一个」单周样本不够推翻因子,最少 4 周才能讨论
完美主义复盘30 分钟变成 2 小时,写 3000 字严格 30 分钟限时,超时立刻停手
不做复盘「这周太忙下周补」复盘可以简短,不可以跳过;忙的那一周哪怕只写 100 字也要写

9.5 月度 review(Phase 2 内 2 次)

除了每周日,Week 5 末(Day 37)和 Week 8 末(Day 60)各做一次扩展 review,2 小时:

  • 月度 attribution 全维度(按策略 / 按标的 / 按市场状态)
  • 因子 / 信号衰减趋势
  • 风控规则触发频次
  • 下个月 ADR:要修改哪些规则、增加哪些监控、删掉哪些不用的代码

十、可能的卡点 + 预案

卡点出现概率预案
LLM API 配额(Claude / GPT)用完先用 Claude free tier,到额度 80% 切 OpenAI free,必要时月付 $20
IBKR Paper 数据延迟 / 周末停摆切到 historical replay 模式(yfinance + 历史 IV)
工作日不在电脑前极高所有策略 cron 自动化,事件期权策略加 mobile push
个人状态 burn-out每周一天「休息日」不看市场,强制 unplug
IB Gateway 异常断线加 watchdog 脚本,每 5 min 检测 + 自动重启
Wheel 标的暴雷(如 SOFI 财报暴跌)universe 加 earnings 过滤,CSP 离财报 ≥ 7 天
LLM 输出格式漂移加 pydantic schema 校验 + 重试机制
实盘冲动给自己写一封「未来 30 天不切实盘」的承诺信
paper 账户 reset / IBKR 维护trade log 写本地 SQLite,不依赖 IBKR 端
Python 环境损坏conda env export YAML,github 备份

关于 burn-out:Phase 1 30 天里,作者已经隐约感到周末做笔记的疲惫感。Phase 2 把每周日下午列为「不看盘日」(仅晚上 30 分钟做 review)。这不是软弱,是可持续节奏——量化是马拉松不是冲刺,能跑到 90 天的人是最终赢家。


10.1 关于 LLM 配额的更具体策略

Week 7 是 LLM 调用集中的一周。预估调用量:

  • 10-Q / 10-K 提取:单份文档 30-50K tokens,每周 10-15 份
  • Earnings call sentiment:单次 20-30K tokens,每周 8-10 次
  • 模型迭代调试:约 30% 额外 tokens overhead

合计 Week 7 大约消耗 200-300 万 tokens。Claude Sonnet 大约 $30-50,GPT-4o 大约 $20-40。

应对优先级

  1. 第一优先级:Claude / OpenAI free tier 用完前完成一轮 baseline
  2. 第二优先级:用本地小模型(Qwen 2.5 7B / Llama 3.1 8B)跑 sentiment baseline,作为 cost cap
  3. 第三优先级:必要时月付 $20(性价比最高的投入,相当于一顿饭)

记一笔账:Phase 2 整体预算上限 $100,所有外部 API(LLM + 数据源)共用,超出立刻 pause。钱不是问题,预算意识是问题——这是个人量化和机构量化最大的区别,机构看不到边际成本,个人必须看。

十一、Phase 2 周复盘的「红黄绿」健康度评分

不是每周都顺。设一个简单的 traffic light:

信号含义触发
🟢 Green全部正常,继续三策略都在跑、gap 已知、心态稳定
🟡 Yellow有问题但可控,加强观察某策略 drawdown 10-15% / 发现新 gap / 状态疲惫
🔴 Red必须 pause某策略 drawdown ≥ 20% / 系统性 bug / 连续 2 周不想做 review

🔴 Red 时强制暂停 ≥ 3 天,不交易、不写代码、只做反思。这条规则的价值在 Phase 3 实盘时才完全显现,Phase 2 是建立肌肉记忆。

11.1 触发 Yellow / Red 后的具体动作

等级强制动作不可做的事
🟡 Yellow当周复盘篇幅 +50%(额外 100 字归因) / 下周配额冻结不调不能加仓 / 不能开新策略
🔴 Red3 天 cooldown / 写 1 篇「失败复盘」≥ 500 字 / 召开和自己的「评审会」不能交易 / 不能改代码 / 不能看实时行情

「和自己的评审会」听上去傻,但实际操作就是:

  1. 找一个安静的下午,关掉 IDE 和 TWS
  2. 打开当周 retrospective + 当月 attribution
  3. 用第三人称写一封信给「这位交易员」,分析他的决策链
  4. 信末写一句「如果是机构 LP,是否会继续配置给他」

这种刻意拉开距离的反思方式,对克服自我合理化(self-justification bias)极其有效。Phase 1 没机会用,但 Phase 2-3 一定会用到,今天先把流程写下来。


十二、PM 视角:Phase 间过渡 = release planning

12.1 把今天的工作翻译成 PM 语言

量化术语PM 术语
Phase 1 → Phase 2 过渡MVP → Beta release planning
策略选型「必做/不做」功能优先级 P0/P1/P2
Phase 2 出口标准Beta GA 的 acceptance criteria
资金配额 40/40/20engineering capacity 分配
周复盘机制sprint retrospective
实盘-回测 gap「production - staging」 environment drift
Red/Yellow/Green 健康度sprint health indicator
风险预案表risk register / RACI

12.2 PM 在这个节点的关键能力

  1. 拒绝的能力:今天最重要的产出不是「我要做 ABCDE」,是「我不做 DE」。资源永远有限,不会说不的 PM 是失败的 PM,不会说不的量化交易员是亏钱的交易员。
  2. acceptance criteria 写在前面:DoD-1 到 DoD-7 是今天写的,不是 Day 60 时回头补的。这能避免「感觉差不多了」的自我欺骗。
  3. 建立 ritual:周日晚 9:30 的 30 分钟 review 是 ritual。Ritual 的价值不是单次产出,是多次执行后形成的认知复利。这和 PM 的双周 review、月度 OKR check-in 一样。
  4. risk register 不是为了消灭风险:它的价值是「风险出现时,你不慌」。Phase 2 出现的任何 11 节里列的卡点,你都已经知道 next action 是什么。

12.3 一个反直觉的洞察:Phase 1 的失败案例比成功案例更有用

回看 30 天的笔记,那些「跑通后特别顺利」的脚本(比如 Day 5 的 OHLCV 抓取、Day 11 的 BSM 定价器)其实给 Phase 2 的指导有限。真正给 Phase 2 留下方法论的是那些卡过的地方:

  • Day 14 的市场数据订阅卡了半天(subscription 没生效,API 返回 NaN),让 Phase 2 的「数据 cache + 双源校验」成为基础设施 P0;
  • Day 25 的回测过拟合(IS Sharpe 2.4,OOS Sharpe 0.3),让 Phase 2 的 WFA 成为必须而不是可选;
  • Day 28 的因子合成时发现「等权融合居然比 IC 加权效果更好」,让 Phase 2 的「先简单后复杂」原则写进 README。

Phase 2 设计时刻意保留 buffer 时间给「未来的失败」:每周留 1 天弹性日(不安排新内容),用于消化前面 6 天的意外卡点。这是 Phase 1 30 天里学到的最现实的项目管理智慧。

12.4 一句话总结

Phase 1 学方法论,Phase 2 实操化,过渡日是把方法论转成 acceptance criteria + 资源分配 + 风险预案的「release planning 会议」。今天最重要的产出不是写代码,是把「为什么这么做」「不做什么」「怎么验收」想清楚。


十三、明日(Day 31)任务

Day 31: Week 5 启动 — 多因子组合实盘化(IC 加权 / WFA / Paper 部署)

  • 启动 Week 5,第一件事:把 Day 28 的双因子代码拆成 production module
    • factors/momentum.py(Day 22-23 的 6/12/Risk-Adj momentum 三种实现)
    • factors/lowvol.py(Day 24 的 60-day realized vol + idiosyncratic vol 两种实现)
    • factors/combine.py(Day 27-28 的等权 + IC 加权融合)
  • 用 IC 时序图判断因子衰减,决定 Phase 2 用哪种加权
  • WFA 第一版 notebook:滚动 12 个月 IS + 3 个月 OOS
  • 输出:factors/ package 可 import + 一份 IC 衰减分析图

预计耗时:6h(重构 2h + WFA 框架 2h + IC 分析 1h + 笔记 1h)

Day 31 完成的硬标准

  • from factors.combine import build_signal 能在 notebook 一行 import
  • WFA 第一版能跑出 IS/OOS Sharpe 对比图
  • 写下「Phase 2 用等权 or IC 加权」的决策 + 理由
  • git commit 至少 3 次,commit message 符合「why-not-what」原则

如果 Day 31 当天没全做完,不要顺延到 Day 32,而是写入「Week 5 弹性日」消化。坚持节奏比追进度重要。


实际执行记录

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

14.1 准备清单(基础设施)

  • (1) IB Gateway 安装 + 验证启动 ────────── time: __________
  • (2) IBC 自动登录配置 ──────────────────── time: __________
  • (3) cron @reboot 写入 IB Gateway 启动 ── time: __________
  • (4) SQLite trade_log.db 初始化(schema:trade / position / journal 三表)── time: __________
  • (5) requirements.txt 锁定 ─────────────── time: __________
  • (6) 数据 cache 落地:sp100.parquet ────── time: __________
  • (7) 数据 cache 落地:vix.parquet ──────── time: __________
  • (8) 数据 cache 落地:risk_free.parquet ── time: __________
  • (9) 财报日历 csv 落地 ─────────────────── time: __________

14.2 代码 repo 整理

  • (10) trading_repo 初始化 + .gitignore ── time: __________
  • (11) 5 个 module(data/factors/backtest/risk/journal)骨架 ── time: __________
  • (12) Day 1-28 脚本 → module 迁移 ───────── time: __________
  • (13) pytest 框架 + 第一个测试通过 ───── time: __________
  • (14) README.md 写完(含 Phase 2 路线图) ── time: __________
  • (15) Github private repo push ──────────── time: __________

14.3 决策固化

  • (16) 策略选型决策签字:A/B/C 必做,D/E 不做 ── time: __________
  • (17) 资金配额表 40/40/20 写入 risk_rules.md ── time: __________
  • (18) Phase 2 DoD-1 ~ DoD-7 写入 phase2_doD.md ── time: __________
  • (19) 周复盘模板写入 weekly/template.md ── time: __________
  • (20) 风险预案表写入 risk_rules.md ─────── time: __________

14.4 心态层面

  • (21) 给自己写一封「未来 30 天不切实盘」的承诺信 ── time: __________
  • (22) 标定每周日下午为「不看盘日」 ───── time: __________
  • (23) 更新 docs/daily/TR_PROGRESS.md:Day 30 ✅ / Phase 1 ✅ / Phase 2 starting ── time: __________

14.5 卡点记录

时间卡点描述解决方式 / 待办

14.6 当天 Reflection(3 行内)

  • 今日最大收获:
  • 今日最大不确定:
  • 明天第一件事:把 Day 28 双因子代码拆成 factors/ package