Appearance
量化入门
本书主旨是用 Python 代码把量化研究的基本流程跑通:规则写清楚、历史回测、基准对照、样本外检验。重点在方法与可复现实验,不在传授金融理论或投资决策。
读者须知
关于金融知识与作者背景
作者没有专业金融背景。文中出现的 ETF、动量、回撤、Sharpe、成本等用语,仅为方便读懂实验而作的最低限度说明,不能当作金融专业指导,也不构成对概念准确性的背书。
金融市场、产品制度、会计与监管等知识,需要读者自行查阅教材、课程或合规材料加以补充。若表述与专业文献不一致,以专业来源为准。
读者对象
适合希望用代码学习「如何做量化实验」的读者,例如:
| 人群 | 说明 |
|---|---|
| 金融科技、量化相关专业学生 | 作编程与回测实验配套,金融课另修 |
| 量化交易 / 投研方向的编程向初学者 | 建立「规则—回测—检验」闭环 |
| 有一定 Python 基础的开发者 | 用代码承载策略假设并做样本外检查 |
| 对动量轮动等实验感兴趣的自学读者 | 以跑通主线代码为主 |
先修建议:会读写基础 Python(变量、函数、pandas 即可)。股票 / ETF 等金融概念不要求本书教会你,需自行预习。
本书提供:可运行的 Python 示例、研究流程与过拟合等常见方法问题。
本书不提供:金融专业指导、投资建议、实盘交易方案;亦不覆盖高频做市、生产级交易系统与大规模机器学习流水线。
全书实验主线为 池内动量轮动。体例上分篇展开,并附脚本便于随文实验。内容组织参考 xingwudao/xquant-learning,章节与实验按自学需要另行编排。
常见弯路
量化入门阶段,学习者往往从 MACD 等单一技术指标入手。指标本身作为价格动量的一种表达并无问题;困难在于随后的路径:在感觉「不够用」时叠加 RSI、KDJ、布林带及各类量价因子,并在单只股票上反复试参、拼接逻辑。
其典型后果是规则日趋复杂,样本内回测偶有亮点,更换标的或样本区间后失效。症结通常不在缺少某一个指标,而在研究闭环尚未建立——规则是否明确、是否设置基准、样本外是否经得起检验。
研究取向
本书以业余常见的 单票叠指标 做法为对照,介绍主线 池内动量轮动 的学习差异。
| 业余常见 | 本书主线 | |
|---|---|---|
| 名称 | 单票叠指标 | 池内动量轮动 |
| 研究对象 | 单只股票 | 先定义可投资的 Universe,再在截面上比较 |
| 信号逻辑 | MACD + RSI + KDJ… 纵向堆指标 | 横截面动量 等可复现因子(经典如 Jegadeesh & Titman 的动量效应) |
| 交易方式 | 猜测单票买卖点 | 动量轮动 / 再平衡:按排名持有相对强势标的 |
| 检验标准 | 单票收益曲线 | 相对基准的组合收益、回撤、换手与样本外稳定性 |
前者在单标的上纵向堆叠指标以判断买卖时点;后者先界定股票池,再依据截面相对强弱定期调整,评价对象是组合整体。该框架对应学术与业界广泛讨论的横截面动量(cross-sectional momentum),而非个人指标拼盘。
学习目标
读者学完后应能表述并运用下列要点:
- 研究对象为组合 / Universe,而非单票指标堆叠
- 规则可复现:池子、信号、调仓与成本假设事先给定
- 设置基准:至少对照买入持有或等权持有全池
- 绩效评价不止于收益:波动、最大回撤、风险调整收益(如 Sharpe)、换手
- 识别过拟合:样本内最优须经样本外或滚动检验
- 理解再平衡与成本对结论的影响
- 区分回测与实盘:对滑点与冲击成本具备基本认识
- 说明主线策略:
动量轮动的比较对象、换仓规则与检验方法
高频做市、完整交易系统、大规模机器学习流程及论文级交叉验证实现,不属于本课程范围。
内容结构
- 第一单元(研究纪律):规则、回测、基准、参数优化与过拟合;收束于「单标的叠指标有风险」
- 第二单元(主线策略):Universe、权重、
动量轮动、再平衡与止损 - 第三单元(验收与稳健性):组合绩效、walk-forward
- 第四单元(落地与迭代):成本与滑点、研究迭代
阅读顺序(共 16 讲)
按四个单元推进。「已写」表示正文可读。
A. 研究纪律
| 篇 | 标题 | 一句话 | 状态 |
|---|---|---|---|
| 1 | 量化到底在干什么 | 规则 + 重放 = 回测 | 已写 |
| 2 | 先拿到价格数据 | 没有数据就没法实验 | 已写 |
| 3 | 每月定投(DCA) | 固定周期、固定金额 | 已写 |
| 4 | 与买入持有对照 | 没有基准无法评价 | 已写 |
| 5 | 定投加均线门禁 | 加判断不保证更好 | 已写 |
| 6 | 参数扫描:寻找最优均线 | 找出样本内最优 (N) | 已写 |
| 7 | 过拟合:换一段时间再考 | 最优参数换窗易失效 | 已写 |
B. 组合与主线策略
建议阅读顺序为 8 → 9 → 10 → 11 → 12(先建立轮动主线,再补全池子与权重,然后是再平衡与止损)。
| 篇 | 标题 | 一句话 | 状态 |
|---|---|---|---|
| 8 | 进入主线:动量轮动 | 池内比强弱,定期换仓 | 已写 |
| 9 | 先定股票池 Universe | 没有池子,就没有横截面 | 已写 |
| 10 | 买多少:先从等权开始 | 权重是规则,不是感觉 | 已写 |
| 11 | 再平衡:多久换一次 | 频率 × 成本,会改结论 | 已写 |
| 12 | 止损:持仓期内何时动手 | 风控规则,也可过拟合 | 已写 |
C. 验收与稳健性
| 篇 | 标题 | 一句话 | 状态 |
|---|---|---|---|
| 13 | 组合怎么验收才专业 | 收益、回撤、Sharpe、换手、相对基准 | 已写 |
| 14 | 滚动样本外:walk-forward | 一次切分不够,要看样本外分布 | 已写 |
D. 落地与迭代
| 篇 | 标题 | 一句话 | 状态 |
|---|---|---|---|
| 15 | 回测到现实:成本与滑点 | 账面收益要打折 | 已写 |
| 16 | 研究如何迭代 | 监控什么、何时重做 | 已写 |
16 讲正文均已具备;后续可按课程反馈增补习题与扩展池。
实验环境
依赖 Python 3.10+ 及常用科学计算库:
bash
source .venv/bin/activate
pip install yfinance pandas numpy matplotlib
python easy-quant/code/02_get_data.py
python easy-quant/code/08_momentum_rotation.py
python easy-quant/code/09_universe.py
python easy-quant/code/10_position_sizing.py
python easy-quant/code/11_rebalance.py
python easy-quant/code/12_stop_loss.py
python easy-quant/code/13_portfolio_metrics.py
python easy-quant/code/14_walk_forward.py
python easy-quant/code/15_execution_gap.py
python easy-quant/code/16_iteration.py脚本位于 easy-quant/code/,图像输出至 easy-quant/code/output/。
声明
- 本书仅供编程与量化方法的学习参考,不构成任何投资建议。
- 作者无专业金融背景;文中金融相关概念仅为实验语境下的通俗说明,不具备指导作用,读者须自行补充正规金融知识。
- 示例多采用 ETF 与固定样本窗口,结论随数据、假设与实现细节而变化;回测不等于实盘。