Week 1 周复盘 + Week 2 准备
Week 1 周复盘 + Week 2 准备
日期: 2026-05-16 方向: 个人量化交易 / Week 1 复盘 阶段: Phase 1: 基础与工具链 标签: #WeeklyReview #Retrospective #vectorbt #ibkr #FactorInvesting #Week2Prep
今日目标
| 类型 | 内容 |
|---|---|
| 复盘 | Week 1 (Day 1-6) 完成度自评 + 知识图谱串联 + 认知盘点 |
| 反思 | 踩坑可能性排序 + 当前回测能力分级 + 个人复盘 prompt |
| 预告 | Week 2 因子投资基础 — 为什么因子是个人量化的甜点 |
| 产出 | TR-DAY7 笔记 + 自评打分表 + Week 2 学习清单 |
一、Week 1 完成度自评
1.1 每日实操产出对照表
把 Day 1-6 应当产生的「实操产出」摆到一起,用最严的标准自评。这是周复盘最有价值的一步——日记式记录天然倾向于自我感觉良好,唯有把六天的产出物码在一张表上,才能看出真实进度。
| Day | 主题 | 应交付物 | 自评状态 | 备注 |
|---|---|---|---|---|
| Day 1 | IBKR 账户准备 | Paper 账户启用、Options Level 申请提交、市场数据订阅、TWS 装好 | 部分完成 | Options Level 仍在审批中(IBKR 通常 1-3 工作日,实际我等了 4 天还在 Pending) |
| Day 1 | 第一段连接代码 | tr_day1_connect.py 能拉到 SPY bid/ask | 完成 | Read-Only 模式连通,无误下单风险 |
| Day 2 | ib_insync 进阶 | 同步/异步 API 理解、Contract 限定、Event handler 注册 | 完成 | 写了 tr_day2_order_roundtrip.py,下 limit → 取消的往返脚本 |
| Day 2 | 错误码处理 | 至少捕获 7 类常见 errorCode (200/201/202/300/321/354/2104) | 完成 | 但实操中只触发了 3 类(200 contract 错、201 拒单、2104 数据 farm),剩下的只是「读过文档」 |
| Day 3 | Python 量化环境 | venv 隔离 + pandas/numpy/yfinance/matplotlib 安装、版本锁定 | 完成 | requirements.txt 提交到 repo,Python 3.11.9 |
| Day 3 | 数据源对比 | 至少跑通 yfinance + IBKR historical 两个 source 同一标的下载 | 完成 | 顺手把 Polygon 试用 key 也跑通了,验证了三家数据在 SPY 收盘价上的小数点级别差异 |
| Day 4 | 时序基础 | 自己写一个 metrics.py:simple/log return + Sharpe + MaxDD + Calmar + Sortino | 完成 | 函数都过了 unit test,但我的 MaxDD 第一版用了 cumulative return 而非 cumulative wealth,错了一次 |
| Day 4 | 年化对照 | 252/365/12 三个年化口径在文档里写清楚 | 完成 | 同时记录了「日频 √252、月频 √12、周频 √52」对照表 |
| Day 5 | 回测框架对比 | vectorbt / backtrader / Lean 三家跑同一个 SMA(20,50) 看结果是否一致 | 未完成 | 只跑了 vectorbt,backtrader 装好但没跑通同样的策略对照;Lean 完全没动 |
| Day 5 | 选型决策记录 | 写下「为什么选 vectorbt 起步」的 ADR | 完成 | 决策点:向量化吞吐量 + Notebook 友好 + 参数扫描原生支持,trade-off 是事件驱动语义弱 |
| Day 6 | vectorbt 第一个回测 | SPY 2014-2024 SMA(20,50) 含成本,能产出权益曲线 | 完成 | Sharpe = -0.08,符合「单看技术指标没 edge」的预期 |
| Day 6 | 参数扫描 heatmap | fast ∈ {5,10,20,50}, slow ∈ {50,100,200} 的 12 格 heatmap | 完成 | 没有任何一格 Sharpe > 0.3,进一步坐实结论 |
1.2 完成度评分
应交付物总数:12
已完成:10
部分完成:1(Options Level 卡审批,非我主观能控)
未完成:1(三家回测框架对照)
Week 1 完成度:83% (10/12)
排除外部因素的可控完成度:91% (10/11)
自我评估:可接受。未完成的一项(三家框架对照)不是没时间,是优先级判断——Day 5 当时已经在 vectorbt 上跑通了,我下意识觉得「再装两个框架做同一件事是浪费」,于是跳过了对比环节。这是典型的速度 vs 严谨度权衡,留到 Week 4 之前补做即可。
1.3 文档/代码资产盘点
| 资产 | 路径 | 状态 |
|---|---|---|
| 6 篇日记 | docs/daily/TR-DAY{1..6}.md | ✓ |
| 进度文件 | docs/daily/TR_PROGRESS.md | ✓ |
| IBKR 连接脚本 | scripts/tr_day1_connect.py | ✓ |
| 下单往返脚本 | scripts/tr_day2_order_roundtrip.py | ✓ |
| 数据下载脚本 | scripts/tr_day3_download.py | ✓ |
| 指标函数库 | tr_lib/metrics.py | ✓ unit test 通过 |
| 回测脚本 | notebooks/tr_day6_sma.ipynb | ✓ |
| ADR-001 框架选型 | docs/adr/ADR-001-vectorbt.md | ✓ |
二、Week 1 知识图谱
把 6 天的核心概念串起来,是周复盘第二件有价值的事。孤立的知识点不构成能力,必须看到节点之间的依赖才算「真懂」。
2.1 数据 → 决策的全链路
[DAY 1]
┌──────────────────┐
│ IBKR 账户体系 │
│ Paper Trading │
│ Options Level │
│ 市场数据订阅 │
└────────┬─────────┘
│
[DAY 2]
┌────────▼─────────┐
│ ib_insync API │
│ ─ 同步/异步 │
│ ─ Contract 限定 │
│ ─ 订单/事件 │
│ ─ 错误码 │
└────────┬─────────┘
│
┌────────▼─────────┐ [DAY 3]
│ Python 工程化 │ ◀─── pandas / numpy / yfinance / matplotlib
│ ─ venv 隔离 │
│ ─ 数据源对比 │ 数据源坑:
│ ─ 复权 / 缺失 │ ─ yfinance 复权口径不一致
│ ─ survivorship │ ─ 退市股票看不到(survivorship bias)
└────────┬─────────┘ ─ split/dividend 调整需要 auto_adjust=True
│
[DAY 4]
┌────────▼─────────┐
│ 时序基础 │
│ ─ simple/log │
│ ─ √252 年化 │
│ ─ Sharpe │
│ ─ MaxDD/Calmar │
│ ─ Sortino │
└────────┬─────────┘
│
[DAY 5]
┌────────▼─────────┐
│ 回测框架选型 │
│ vectorbt ✓ │
│ backtrader │
│ Lean │
└────────┬─────────┘
│
[DAY 6]
┌────────▼─────────┐
│ 端到端回测 │
│ SPY SMA(20,50) │
│ ─ 含真实成本 │
│ ─ 含滑点 │
│ ─ 参数扫描 │
│ → Sharpe ≈ 0 │
│ → 「没 edge」 │
└──────────────────┘
│
▼
[WEEK 2 起点]
开始找真正的 alpha:
因子 / 事件 / 期权 Theta
2.2 用一个表概括 Week 1 主链路
| 层级 | 关注什么 | 工具 | 失败模式 |
|---|---|---|---|
| 接入层 | 能不能连得上数据 / 下得了单 | IBKR + ib_insync | 端口错、Read-Only 没开、数据未订阅 |
| 数据层 | 数据是不是「干净的、可信的」 | yfinance / IBKR Hist | 复权错、生存偏差、缺失值 |
| 计算层 | 能不能算出 return / Sharpe / MaxDD | pandas / numpy / 自写 metrics | 年化口径错、log vs simple 混用、MaxDD 公式错 |
| 框架层 | 能不能高吞吐迭代策略 | vectorbt | 向量化只适合无路径依赖策略 |
| 策略层 | 这个 idea 有没有 edge | 回测 + 参数扫描 | overfit、未来函数、未含成本 |
| 执行层 | 实盘能不能复刻回测 | Paper Trading | 滑点、partial fill、断网(Week 5 才到) |
重点观察:六层每一层都有自己的「失败模式」——任何一层错了,下游所有结论作废。这就是为什么 Day 4 的 MaxDD 公式我会反复 unit test,Day 6 把成本和滑点显式建进去。回测的可信度等于最弱一环的可信度。
三、本周三个最重要的认知(思维方式变化)
知识点会忘,但思维方式的变化会留下来。如果一周下来没有 1-3 个「我看世界的方式变了」的瞬间,这一周的学习就停留在「读过」而不是「掌握」。
认知 #1:Paper Trading 不评估盈利能力,只评估流程跑通
来 Week 1 之前我隐约以为 Paper Trading 是个「无风险沙盒」——能在里面赚钱说明实盘也能赚。
Day 1 颠覆了这个直觉。
Paper Trading 的成交模型对用户「过于友好」:
- 默认全成交(实盘可能 partial fill)
- 默认无滑点(实盘 illiquid 期权 bid-ask 能差 20%)
- 默认能借券(实盘热门 short 票可能找不到券)
- 默认数据延迟和实盘一致(其实是的,但 Paper 不会被 HFT 前置)
类比到 PM 工作:这就像「内部 staging 环境压力测试通过 ≠ 生产环境扛得住」。Staging 永远是对自己友好的,因为没有真实流量、没有真实并发、没有真实恶意用户。
思维方式的变化:从「沙盒里跑通 = 行了」变成「沙盒只能否定方案,不能肯定方案」。Paper 跑不通的策略一定不行,但 Paper 跑得通的策略只是「值得进一步真实环境验证」。后者是 Week 5 paper trade 实盘的工作。
认知 #2:单看技术指标没 edge,要找结构性 alpha
Day 6 跑 SMA(20,50) 在 SPY 2014-2024 上,含手续费和滑点,最终 Sharpe = -0.08。12 格参数扫描没有一格 Sharpe > 0.3。
这个结果不是「这个策略是 BUG」,而是「这个策略其实没问题」——它的 Sharpe 接近 0 就是市场充分有效给出的答案。
为什么没 edge:
- SMA 这种规则信息含量极低,全市场所有人都看得到
- 2014-2024 是大牛市,「持有不动」就是最强基准——任何择时策略都在和"无风险持有"赛跑
- 滑点和手续费每年吃 1-2%,需要超过这个数的 alpha 才值得做
- 技术指标本质是 price 的滞后函数,不带任何外生信息
Week 1 让我把「找 alpha」的搜索空间重新分类:
| Alpha 类型 | 来源 | 个人量化可行性 |
|---|---|---|
| 信息不对称 | 内幕消息、卫星图像、信用卡刷卡数据 | ✗ 需要资源 |
| 速度优势 | HFT 机房 + 微秒级 | ✗ 资本门槛 |
| 复杂度溢价 | 期权、可转债、ETF arbitrage | ✓ Week 7-9 |
| 行为偏差 | 散户过度反应、动量、价值 | ✓✓ Week 2 因子的甜点 |
| 结构性约束 | 指数纳入/剔除、税收、法律限制 | ✓ Week 8 事件驱动 |
| 风险溢价 | 卖期权(Theta)、卖波动率 | ✓✓ Week 7 Wheel |
思维方式的变化:从「找一个能赚钱的指标组合」变成「找一类别人不愿意/不能做的策略空间」。前者是无穷无尽的过拟合,后者是经济学问题。
认知 #3:回测 pipeline 比策略本身重要 10 倍
Day 5-6 让我意识到一件事:任何能在脑子里想出来的策略,都需要一套相同的 pipeline 来验证。
那套 pipeline 包括:
[原始数据] → [清洗(复权、survivorship、缺失值)]
→ [特征构造]
→ [信号生成]
→ [仓位计算]
→ [含成本/滑点的回测引擎]
→ [指标计算(Sharpe/MaxDD/Calmar/Sortino)]
→ [参数扫描 + 鲁棒性检验]
→ [out-of-sample 验证]
→ [walk-forward]
→ [Paper Trade]
→ [小仓位实盘]
只要这套 pipeline 是干净的、可复用的、自动化的,换策略就只是换中间一两个模块。pipeline 的工程质量决定了我能在 90 天里验证多少个 idea。
反过来:如果 pipeline 是手工的、一次性的、夹带未来函数的,测 100 个策略也都是垃圾结论。
类比到 PM 工作:这等同于「实验框架比实验本身重要」——一个支持快速 A/B 的产品平台 > 一个精心设计的单次实验。Booking、Airbnb、Uber 在 PM 圈被反复提及,不是因为他们做了多少聪明的实验,是因为他们一年能跑数千次实验,绝大多数实验本身平平无奇但累积出复利。
思维方式的变化:Week 1 我开始以「我将要测 1000 个策略」的视角写代码,而不是「我现在要测这一个 SMA 策略」。前者要求每个函数都签名清晰、有 unit test、能被 N 个不同策略复用。这会显著拖慢 Week 1 的速度——但 Week 8 之后回报指数级。
四、本周潜在坑总结(按踩坑可能性排序)
如果给一个完全相同背景的朋友推荐这条路径,他最可能在哪里被卡住?按概率从高到低排:
坑 #1:IBKR Options Level 申请被批 Level 1 而非 Level 2/3
概率:60%(包括我)
为什么会发生:
- IBKR 的适当性判定模型偏保守
- 「期权交易经验」一栏如果选 None / Limited 几乎必批 Level 1
- 资金小(<$10k)也会压 level
- 申请节奏太急(开户当天就申请)会被怀疑
怎么办:
- 先接受 Level 1,开始做 covered call(CC)+ protective put
- 跑 30 天积累交易记录(哪怕每周只下 1-2 单 CC)
- 然后向 IBKR 申诉,附上交易记录截图,理由「已展示风险管理能力」
- 通常二次申请 80% 能拿到 Level 2
- 不要跳过 Level 2 直接申 Level 3,会被拒得更狠
对学习计划的冲击:Day 49+ 的财报 spread 策略需要 Level 3。如果到 Day 40 还卡在 Level 1,要把 Week 7 的 Wheel 策略提前到 Week 5-6,给 Level 升级留时间。这是 Week 1 就要预判的风险。
坑 #2:yfinance 数据复权不一致 / split 处理错误
概率:50%
症状:
- 同一标的同一日期,今天下载和上周下载的收盘价不一样
- 某些日期出现「价格断崖式下跌 50%」(其实是 stock split 没调整)
- 历史长度对不上(yfinance 偶尔会丢数据)
怎么办:
# 1. 永远用 auto_adjust=True
df = yf.download('SPY', start='2014-01-01', end='2024-12-31', auto_adjust=True)
# 2. 下载完立刻持久化到 parquet
df.to_parquet('data/raw/SPY.parquet')
# 3. 后续从 parquet 读,不要重复打 yfinance
# 4. 至少用一个第二源(IBKR Hist / Polygon / Tiingo)做 sanity check
核心策略:数据下载是一次性投资,回测是反复迭代。把数据 cache 住,pipeline 后续就不会被数据源抽风搞坏。
坑 #3:vectorbt API 文档稀缺 + 概念偏离传统回测
概率:50%
为什么会发生:
- vectorbt 文档对入门者不友好(假设你已经会用 numpy)
- 它不是「事件驱动」回测,而是「向量化」回测——所有信号一次性算完再回放
- 路径依赖策略(如 trailing stop)写起来反而比 backtrader 难
vbt.Portfolio.from_signalsvsfrom_ordersvsfrom_holding三个入口语义差很多
怎么办:
- 第一周只用
vbt.Portfolio.from_signals,不要碰from_orders - 看官方 examples 库(github.com/polakowo/vectorbt/tree/master/examples),里面是最完整的代码
- 搞不定就去 vectorbt PRO 的 Discord,但注意 vectorbt 和 vectorbt PRO 是两个不同的库,PRO 有付费版语法差异
- 复杂路径依赖策略,直接用 backtrader,不要硬上 vectorbt
坑 #4:metrics 计算口径错(年化、Sharpe、MaxDD)
概率:40%
典型错误:
- 用 simple return 算累积收益时直接相加(应该是
(1+r).cumprod()-1) - Sharpe 没减无风险利率(小钱影响不大但要意识到)
- 年化用了 365 而不是 252(做美股就是 252,不要拍脑袋)
- MaxDD 用了
return.cummin()而不是wealth.cummax() - wealth的 drawdown 系列
怎么办:
写完 metrics 函数立刻用一个已知答案的样本验证:
# 例如:连续 3 天每天 +1%,第 4 天 -5%
test_returns = [0.01, 0.01, 0.01, -0.05]
# 累积 wealth 应该是 [1.01, 1.0201, 1.030301, 0.978786]
# MaxDD 应该是 (0.978786 - 1.030301) / 1.030301 ≈ -5.00%
不要相信任何「我自己写的 metrics」,必须有 unit test。
坑 #5:venv / 包版本冲突
概率:30%
症状:
- ib_insync 0.9.86 + Python 3.12 → asyncio 兼容性 bug
- vectorbt + numpy 2.x → 部分函数报 deprecation
- pandas 2.x → 一些旧代码
df.append()用法报错
怎么办:
# 锁版本,写 requirements.txt
python==3.11.9
ib_insync==0.9.86
pandas==2.1.4
numpy==1.26.4
vectorbt==0.26.1
yfinance==0.2.40
进 Day 8 之前把 requirements.txt lockfile 化,免得后面任何升级污染回测结果。
坑 #6:W-8BEN 没填 / 填错
概率:20%(我已避免)
填错的代价:股息 30% 预扣会变成 28%(Backup Withholding)甚至更高,且要补缴。这是 Day 1 就要做对的事,不要拖。
五、当前回测能力分级(自评)
给读者一个对照标准。不要美化自己:
| 能力点 | 我的状态 | 备注 |
|---|---|---|
| 能下载数据 | ✓ | yfinance + IBKR Hist 双源 |
| 能算单标的 metrics | ✓ | Sharpe/MaxDD/Calmar/Sortino |
| 能跑单策略回测 | ✓ | vectorbt SMA 已跑通 |
| 能加成本 + 滑点 | ✓ | 0.1% commission + 1bp slippage |
| 能做参数扫描 | ✓ | heatmap 12 格 |
| 能区分 in-sample vs out-of-sample | △ | 概念懂,未实操 |
| 能做 walk-forward 优化 | ✗ | Week 4 才学 |
| 能识别 overfit | ✗ | Week 4(关键认知) |
| 能做 Monte Carlo 鲁棒性 | ✗ | Week 4 |
| 能做多标的 portfolio 回测 | ✗ | Week 3 才学 |
| 能做因子回测(横截面) | ✗ | Week 2 起步 |
| 能上 paper trade 实盘 | ✗ | Week 5 |
| 能做小仓位实盘 | ✗ | Week 9 |
| 能做组合层面风控 | ✗ | Week 10+ |
当前级别定位:「能跑单标的单策略回测的初学者」。距离「合格的回测工程师」至少还差 4 周(识别过拟合 + walk-forward + 多标的组合 + Monte Carlo)。
这个分级的意义:避免邓宁-克鲁格效应——刚学会跑回测最容易高估自己。SMA 跑出 Sharpe -0.08 不可怕,可怕的是跑出 Sharpe 1.5 还以为是真的(绝对是 overfit / 未来函数 / 数据 leakage)。
六、Week 2 预告:因子投资基础
6.1 为什么因子是个人量化的甜点
Week 1 的 Day 6 已经验证了「单一技术指标没 edge」。Week 2 我要回答一个更根本的问题:有没有哪类策略,对个人量化是天然友好的?
答案是:因子投资。
为什么因子对个人友好:
| 因素 | 因子策略 | 高频策略 | 信息不对称策略 |
|---|---|---|---|
| 资本门槛 | $5k 起步 | $1M+ | $$$ |
| 速度要求 | 月度/季度调仓 | 微秒级 | 实时 |
| 数据要求 | 公开财报 + 行情 | 高频 tick | 私有信息 |
| 学术支撑 | 50 年文献(Fama-French) | 黑箱 | 无 |
| 容量 | 万亿 USD | 受限 | 受限 |
| 个人可行性 | ✓✓✓ | ✗ | ✗ |
因子策略的核心 alpha 来自风险溢价 + 行为偏差,这两类 alpha 不会因为多了一个个人散户参与就消失。Fama-French 1992 年发的论文,30+ 年后仍然有效——这是策略空间稳健性的极强证据。
6.2 Week 2 学习清单
| Day | 主题 | 关键概念 | 实操 |
|---|---|---|---|
| Day 8 | 因子基础 + Fama-French 三因子 | Market / Size / Value | 下载 Ken French 数据库,复现 SMB/HML |
| Day 9 | 动量因子 (Momentum) | 12-1 月动量、风险/收益异常 | 实现一个 cross-sectional momentum 策略 |
| Day 10 | 价值因子 (Value) | P/B、P/E、EV/EBITDA、FCF/EV | 用 yfinance + Alpha Vantage 拿基本面数据 |
| Day 11 | 低波动因子 (Low Volatility) | low-vol anomaly、最大化 Sharpe 的非对称分布 | 实现 trailing 12M std 排序选股 |
| Day 12 | 质量因子 (Quality) | ROE、ROA、Gross Profitability (Novy-Marx) | 实现 quality 排序 |
| Day 13 | 因子组合 (Multi-Factor) | 等权 vs IC 加权 vs 波动率加权 | 4 因子组合回测 |
| Day 14 | Week 2 复盘 + Day 15 期权基础预告 | - | 因子 portfolio 完整回测报告 |
6.3 Week 2 我最想搞清楚的事
- 动量是真的吗:12-1 月动量在 2014-2024 美股上还能不能跑出 Sharpe > 1?
- Value Trap 怎么识别:低 P/B 股票里有真便宜也有要破产的,怎么过滤?
- 多因子加权的实操方案:等权简单粗暴,IC 加权需要什么数据?
- 因子衰减:传统三因子在过去 10 年很多研究说 Value 死了,是真的吗?
七、个人复盘 prompt(给读者一个反思框架)
每完成一周,建议留出 30 分钟回答下面三个问题,用文字形式写下来——口头回答和文字回答的深度不在一个数量级。
Prompt 1: 这一周我最 surprised 的是什么?
我的答案:Day 6 的 SMA 参数扫描,12 格 heatmap 没有任何一格 Sharpe > 0.3。 我此前隐约以为「至少能找到一组参数让回测看着不错」,结果发现真正高效的市场对最朴素的技术指标毫不留情。这件事让我意识到:之前 90% 的「自媒体技术分析教程」都是事后挑参数的视错觉。
Prompt 2: 我最不确定的概念是什么?
我的答案:vectorbt 的 from_signals 在「同一天既出 entry 又出 exit」时的语义。
官方文档说会按 accumulate 参数决定行为,但我没在测试里完全 reproduce 出来。留到 Week 2 用因子策略时再深挖——因子策略月度调仓,不会出现日内信号冲突,可以先绕开。
Prompt 3: 我下周最想搞清楚的事是什么?
我的答案:动量因子 12-1 月在「2020 COVID + 2022 加息周期」里有没有崩溃。 如果有,这个崩溃是不是可以被低波动 / 质量因子对冲掉。这是 Multi-Factor Combination 的核心动机。
八、PM 视角:周复盘是一种「指标驱动的学习」
最后一段思考,给读者迁移到工作上。
PM 工作里有一个反复出现的模式:Week-over-Week Review。 团队每周一花 30-60 分钟看上周的关键指标——DAU、LTV、Funnel Conversion、NPS——和上上周对比,问三个问题:
- 哪个指标动了?为什么?
- 哪个指标没动但应该动?为什么没动?
- 下周我们要主动推动哪个指标?
Week 1 复盘对应到这套框架:
| PM Review | 量化学习对应 |
|---|---|
| WoW 关键指标 | 应交付物完成度、回测能力分级 |
| 指标动了为什么 | 哪些坑踩了?哪些认知变了? |
| 指标没动为什么 | 三家框架对照没做(速度 vs 严谨度的权衡) |
| 下周主动推什么 | Week 2 因子 + Options Level 升级跟进 |
核心迁移性思考:
- 学习是一个产品,自己是 PM,自己也是用户。每周必须有「产品 metrics」。
- 过程指标 > 结果指标。Week 1 的结果指标是「Sharpe -0.08」,糟糕;但过程指标是「跑通了完整 pipeline」,优秀。新手前期 100% 看过程指标。
- 对自己诚实。我 Day 5 跳了三家对照,那一刻我就知道我在偷懒,但当时给自己讲了一个理由(「在 vectorbt 跑通了,没必要重复」)。复盘时必须把这种合理化叙事戳破。
- 复盘的产出物比复盘本身重要。脑子里想的复盘等于没复盘。这篇 Day 7 笔记本身就是 Week 1 的「Definition of Done」——没有它,前 6 天的学习只是「读过」。
九、Week 1 → Week 2 的关键过渡 checklist
在 Day 8 开始之前,把下面这些事做完:
- (1) Options Level 跟进:如果还在 Pending,今天主动给 IBKR 发邮件询问;如果被批 Level 1,开始规划 Wheel 策略提前
- (2) 数据源 lockfile:
requirements.txt锁版本,提交到 repo - (3) 把 metrics.py 升级:加上
information_ratio、ulcer_index、hit_rate,因子组合复盘需要 - (4) 多标的数据下载:下载 SPY 成分股或 S&P 500 完整列表 2014-2024 数据,因子横截面回测起步
- (5) 三家框架对照(Week 1 留尾):在 backtrader 里复刻同一个 SMA(20,50),确认 vectorbt 的结果可信
- (6) Ken French 数据下载:Ken French Library,Day 8 直接用
- (7) 把 Week 1 笔记发布:选 1-2 篇精华(推荐 Day 4 metrics + Day 6 回测)发到 Mirror / 知乎,对外讲一遍是最强的内化
- (8) 更新
TR_PROGRESS.md:Week 1 标 ✅,Week 2 占位
十、明日预告
Day 8: 因子投资基础 — Fama-French 三因子模型
- 因子模型的数学骨架(横截面回归 vs 时间序列回归)
- Market / Size / Value 三因子的经济学解释
- Ken French 数据库怎么用
- 用 SMB / HML 数据回归任意标的,得到该标的的因子载荷
- Alpha 的含义:扣除因子贡献后剩下的「真本事」
- 实操:用 Python 复现 Fama-French 1993 论文核心结论
实际复盘记录
周一上午留出 1.5 小时填这个段落。
- [hh:mm] Day 1-6 实操产出对照 — ...
- [hh:mm] 三个认知具体写下来 — ...
- [hh:mm] 踩坑总结 — ...
- [hh:mm] Week 2 准备 checklist 完成 — ...
- 卡点 / 下周要主动推动的事:
总字数:约 5,400 字 Week 1 完成度:83% (10/12),可控完成度 91% Week 1 → Week 2 衔接状态:✓ 数据基础设施就绪,✓ 回测框架就绪,△ Options Level 跟进中