# 《Python量化投资:技术、模型与策略》知识点全解 > AI生成|2026年10月28日|codebuddy|原书:赵志强 刘志伟《Python量化投资:技术、模型与策略》,机械工业出版社,2020-09-01 > **我的阅读**:进度 99%|累计 7小时32分钟|开始 2021-07-17|最近 2021-12-01|读完 2021-09-10 **一句话总结**:用一条 Python 生产线把投资想法变成可检验的规则——先打牢 NumPy/Pandas 与统计、金融基础,再走通"取数 → 清洗 → 指标与模型 → 回测 → 交易接口",最后落到 CTA 这类可执行策略。它解决的不是预测涨跌,而是**让"我觉得"变成"数据显示"**。 **适合谁**:会一点 Python、想从看研报转向写代码验证的投资者;金融从业者补编程,程序员补金融常识。**不适合**:零编程基础者(前 5 章推进快);想找稳赚策略的人;只想学深度学习选股的人。 **前置知识**:Python 语法与命令行;高中以上概率统计(均值、方差、正态、回归);知道股票、期货、债券、期权是什么即可,不要求推导。 ## 一、全书地图 章节之间是依赖关系,不是并列关系:后面每一章都假设前面的数据结构已经会用。 ```text 基础层 1 量化投资与Python 为什么做、为什么用Python 2 平台搭建和工具 环境一次搭对 3 常用库 NumPy/SciPy/Pandas/StatsModels 四把工具 4 可视化 Matplotlib/seaborn/highcharts 看得见 5 统计基础 分布与回归 概率语言 6 数据预处理 清理与描述统计 脏数据变可用 7 Pandas进阶 多重索引/周期变换 面板数据操作 度量层 8 金融基础 收益率/波动率/夏普/回撤 概念字典 9 资产定价 利率/债券/期权 从股票扩到全品种 模型层 10 时间序列 平稳/ARMA/GARCH 唯一建模重镇 数据层 11 数据源 TuShare/pandas-reader/Wind 燃料 实战层 12 CTA 趋势跟踪/换月/复权/ta-lib 第一个完整策略 ``` 3–7 章是同一件事的四个面(算、看、检、整),可跳读但别跳过 7.1 多重索引;8–9 章是度量衡,10 章是发动机,11–12 章才装车。 > 版本说明:简介称全书 18 章、第 12 章起为实战篇,与目录的 12 章章名对不上,可能源于版本或连载拆分。**本文编号以目录为准**,简介提及而目录未列的内容按主题讨论,对应关系待核对。 ## 二、核心知识点 **1. 量化是可检验的规则系统** 是什么:把想法写成明确的信号、仓位与风控规则,用历史数据回测、用指标评价。为什么重要:让错误可归因、可修正。怎么用:一句话写清,如"收盘上穿 20 日均线且量放 1.5 倍,次日开盘买入"。误区:把量化等同 AI;数据质量与成本常比模型更决定结果。 **2. 选 Python 是选生态,环境一次搭对** 是什么:NumPy/Pandas/StatsModels/matplotlib 构成数据到图表的链路,配套"包管理 → 解释器 → 编辑器/Notebook → 常用库"。为什么重要:量化八成工作在搬数据,"跑不起来"多因版本冲突与编译依赖(如 ta-lib)。怎么用:一项目一环境、依赖锁版本;密集计算向量化,Jupyter 研究、.py 生产。误区:全局环境反复安装,三个月后无法复现。 **3. NumPy 向量化 + Pandas 索引对齐** 是什么:ndarray 运算在 C 层完成;DataFrame 按标签自动对齐;多重索引用 (标的, 日期) 表达面板数据。为什么重要:对齐错了不报错,只产生 NaN 或静默错位,回测全废。怎么用:`prices[1:]/prices[:-1]-1` 一次算完;读入即 `set_index(['code','date'])`;`resample` 明确取 last 还是 sum。误区:两表相加满屏 NaN 当成缺失;对价格做 `resample().mean()`。 **4. 数据清理与统计体检** 是什么:缺失、异常、重复、停牌涨跌停的处理,加直方图/箱线图/时序图体检。为什么重要:一个空值能让回测由盈转亏,异常值会主导均值方差。怎么用:缺失按标的前向填充并限天数;异常先用业务规则判定(涨跌幅超限、成交量为 0)。误区:全表 `dropna()` 系统性削样本;用未来数据填历史。 **5. 收益率两种口径不能混** 是什么:简单 `P_t/P_{t-1}-1`;对数 `ln(P_t/P_{t-1})`。为什么重要:对数可跨期相加、近似对称,适合建模;简单可跨资产加权,适合组合。怎么用:建模用对数,组合与展示用简单,`exp(r)-1` 互转。误区:日对数收益乘 252 当成年化(应 `exp(252r)-1`);忽略除权假跳空。 **6. 风险调整指标三件套** 是什么:年化收益、年化波动率(日标准差 ×√252)、夏普 `(R_p-R_f)/σ_p`、索提诺(分母换下行标准差)、最大回撤、α/β。为什么重要:单看收益无法比较,回撤决定能否拿住。怎么用:同频率、同区间、同无风险利率比较,报告至少给"年化/最大回撤/夏普"。误区:日频与年频夏普混比;不算成本;回撤只算收盘价。 **7. 债券:价格是折现,久期是刻度** 是什么:零息利率是各期限纯折现率;债券价格等于票息与本金按对应利率折现之和;修正久期衡量利率变动 1% 的价格变化百分比。为什么重要:把利率—价格—风险定量连起来。怎么用:给定曲线即可定价,用久期估算利率冲击。误区:把票面利率当收益率;忽略凸性,利率大幅变动时线性近似失效。 **8. 期权:价格由多因素共同决定** 是什么:看涨给买入权利、看跌给卖出权利;价格受标的价、行权价、剩余期限、波动率、利率、分红影响。为什么重要:非线性工具,方向看对仍可能亏。怎么用:欧式无股息有平价 `c+Ke^{-rT}=p+S`,可校验报价或构造套利。误区:觉得便宜就买;混淆隐含与历史波动率;美式结论套欧式。 **9. 时间序列先问平稳** 是什么:平稳指均值、方差、自协方差不随时间漂移;白噪声无自相关;ACF 度量与自身滞后值的相关;混成检验(Ljung-Box)联合检验多阶自相关是否为 0。为什么重要:非平稳做回归会伪回归;ACF/PACF 是定阶唯一入口。怎么用:先画时序与 ACF,做单位根检验,不平稳就差分或取对数。误区:直接对价格建模(应建收益率);ACF 衰减慢就断言有记忆。 **10. ARMA 与信息准则** 是什么:AR(p) 用过去 p 期值解释当前,MA(q) 用过去 q 期冲击,ARMA 二者结合;AIC/BIC 在拟合优度上加参数惩罚。为什么重要:收益率一阶矩的标准框架,也是 GARCH 的前置。怎么用:ACF 拖尾+PACF 截尾定 AR 阶,反之定 MA;AIC/BIC 越小越好,BIC 惩罚更重;最后做残差白噪声检验。误区:高 R² 就以为能预测涨跌——收益率信噪比极低。 **11. GARCH:为波动率聚集而生** 是什么:ARCH 让条件方差依赖过去残差平方;GARCH(1,1) 再加一项过去的条件方差。为什么重要:方向难预测,波动却高度聚集,风控与期权定价都靠它。怎么用:`σ²_t=ω+αε²_{t-1}+βσ²_{t-1}`;`α+β` 接近 1 表示冲击衰减很慢,可用于 VaR。误区:忽略 `α+β<1` 的平稳条件;把条件波动率当收益方向。 **12. 数据源与本地库** 是什么:TuShare 提供免费开源的中国市场接口,pandas-reader 封装多个公开源,万得是商业终端;本地按行情、财务、基础信息分表。为什么重要:策略失效常源于数据而非逻辑,接口改版、复权因子重算都会让结果漂移。怎么用:原始层不加工落库,另建清洗层与复权层;行情表以 (代码, 日期) 为主键;财务按公告日对齐。误区:每次回测现拉数据;用当前成分股回测五年前。 **13. CTA:换月与复权决定回测真假** 是什么:CTA 以期货为标的,核心是趋势跟踪(均线、突破、动量),指标用 ta-lib 算(MA/EMA、MACD、RSI、ATR、布林带、OBV)。为什么重要:主力合约切换会跳空,不复权就造出虚假信号与收益。怎么用:按持仓量/成交量最大定主力;价差或比例法复权拼接;收盘生成信号、次日成交。误区:用前复权价做历史信号;忽略换月成本与涨跌停无法成交。 ## 三、关键概念速查表 | 概念 | 一句话解释 | 用在哪儿 | |---|---|---| | 对数收益率 | 价格比取对数,可跨期相加 | 建模、统计检验 | | 年化波动率 | 收益率标准差 ×√期数 | 风险度量、夏普分母 | | 夏普比率 | 单位总风险的超额收益 | 策略排序 | | 索提诺比率 | 分母只算下行波动 | 厌恶下跌的场景 | | 最大回撤 | 净值峰到谷的最大跌幅 | 能否拿住 | | α / β | 超额收益 / 市场敏感度 | 业绩归因 | | 零息利率 | 到期一次付息的纯折现率 | 债券定价、曲线 | | 久期 | 现金流到期时间的加权平均 | 利率风险 | | 看涨看跌平价 | `c+Ke^{-rT}=p+S` | 报价校验、套利 | | 平稳性 | 统计特征不随时间变化 | 建模门槛 | | ACF / PACF | 自相关 / 偏自相关 | AR、MA 定阶 | | AIC / BIC | 拟合优度加参数惩罚 | 模型选择 | | GARCH | 条件方差随冲击与过去方差变化 | 波动率预测、VaR | | 复权 | 消除分红与换月造成的不连续 | 历史收益计算 | ## 四、可复用的方法/框架 **策略研究六步闭环**:提出假设 → 定义可计算信号 → 准备无泄漏数据 → 回测(含成本) → 归因与稳健性检验 → 小仓实盘。任一步跳过,结论都只是曲线拟合。 **回测前数据体检**:索引唯一且按时间排序?有无重复行?缺失比例与填充方式?复权口径统一?停牌涨跌停标记?含已退市标的?字段可用时点早于成交时点? **时间序列建模五步**:画图看趋势与方差 → 平稳性检验 → 差分或变换 → ACF/PACF 定阶 → AIC/BIC 选模型 → 残差白噪声检验,不通过就回到定阶。 **绩效评估三层次**:绝对收益 → 风险(波动、回撤、下行偏差)→ 归因(α/β、风格暴露、换手与成本)。只看第一层等于没评估。 ## 五、我的阅读轨迹 | 项目 | 记录 | |---|---| | 进度 | 99% | | 累计阅读 | 7 小时 32 分钟 | | 开始阅读 | 2021-07-17 | | 最近阅读 | 2021-12-01 | | 读完时间 | 2021-09-10 | 9 月已标记读完、12 月又有阅读记录,说明中途回看而非线性推进;7.5 小时对应全书,属于"通读 + 局部回查"。 **复习建议**:① 剩余 1% 大概率是书末收尾(交易接口、爬虫舆情、AI 方向),具体位置待核对,优先补交易接口,它是研究到实盘的唯一缺口。② 第一优先级重读第 8、10、12 章——看得懂但容易写错。③ 第二优先级是第 3、7 章的多重索引与 resample,拿任意日线数据重写一遍。④ 第 2、4 章用到再查。⑤ 验收方式是重写 CTA 回测,不是重读书。 ## 六、行动清单 1. 用真实日线数据写出"读入 → 对齐 → 算收益率 → 算夏普与最大回撤"的 50 行脚本。 2. 对股票与期货主力连续合约各做一次复权,对比信号差异并记录。 3. 对沪深 300 日收益率做 ADF、ACF/PACF,拟合 ARMA 并用 AIC 选阶。 4. 用 GARCH(1,1) 拟合同一序列,输出条件波动率并与实际对比。 5. 搭最小本地库(行情表 + 交易日历),把一次回测的数据全部快照。 6. 把"回测前数据体检"写成断言脚本,固化各项检查。 7. 给现有策略补交易成本、滑点、涨跌停约束,重跑并对比收益衰减。 8. 用"20 日上穿 60 日均线"走完六步闭环,写出结论与失效条件。 ## 七、延伸阅读 1. **《利用 Python 进行数据分析》(Wes McKinney)**——Pandas 作者所写,补强第 3、6、7 章。**先读或并行**,把索引与变形练熟。 2. **《期权、期货及其他衍生产品》(John Hull)**——对应第 9 章。**读完第 8 章后插入**,本书给结论,Hull 给推导与更多品种。 3. **《金融时间序列分析》(Ruey Tsay)**——对应第 10 章。**最后读**,跑通 ARMA/GARCH 代码后再看,否则容易陷进公式。 顺序即"工具 → 品种 → 模型",与本书结构同构,可作二轮复习主线。