《量化交易:如何建立自己的算法交易事业》读书笔记
原书名:Quantitative Trading: How to Build Your Own Algorithmic Trading Business
作者:Ernest P. Chan(欧内斯特·陈)
出版:2009 年(第一版)/ 2021 年(第二版)
译者:商诺奇、谢彦
这是一本写给想要入门量化交易的个人投资者的实战指南。作者 Ernest Chan 是一位拥有多年对冲基金经验的量化交易员,他在书中分享了如何从零开始建立自己的量化交易系统。
经常也会读很多书,但是很多书读完就忘了,有时候可能看几遍也没办法集中注意力。想想还是写写笔记记录自己的读书过程,常看常新。之前尝试写过一些读书笔记,但大多都很难坚持下来,写一半就没有下文了,这可能是我学习过程中最大的障碍吧,说白了就是坚持,做什么事情都要坚持,我认为这是学习的关键。
结合 AI 去写博客是一个不错的办法,整体上文章比较规范,行文思路也很规范,也算是提升自己写作能力的一种办法吧。看了那么多书,也了解了很多但是并不能很好的表达出来,归根结底是思考的少,或者只是自己以为理解了,实际上泛泛而谈,没有深度。逼着自己把看过的东西写下来,看看效果吧。
为什么读这本书
距离自己进入股市也有 3 年了,盈亏常有很多,但一直没有找到适合自己的交易策略,自从 2024 年 9 月 24 号以来虽然也挣了一些钱,但在我看来运气的成分更多,我也在想着如何把自己的收益率包吃住,不求挣很多,而是稳定。所以决定读这本书,看看如何建立自己的量化交易系统。这本书特别适合初学者,里面有很多专业性的理论对我帮助很大,填补了我对于股票交易的知识黑洞。
书中金句
「量化交易的核心不是找到一个神奇的策略,而是建立一套可重复、可验证的交易流程。」
与其他量化投资书籍不同,这本书不是教你某个具体策略,而是教你 如何自己寻找盈利策略 ——如何识别、回测、验证、执行一个策略,并在实盘中持续优化。
全书框架
本书按照交易员开展量化交易事业的步骤顺序组织:
核心观点
第一章:量化交易初探
先入为主我认为量化交易是通过预设好的程序对交易市场中的数据进行分析,然后进行高频的套利交易。那么其中最关键的应该是程序也就是策略吧。我就这么认为吧,也不知道对不对,这篇博客也不是为了扫盲,而是为了记录自己的学习过程。想到啥写啥吧!
信息比率、基准收益、夏普比率这些听着就很高大上,这可能是我这种泥腿子(半路出家,也没有经过专业的学习,在做中学,学中做)在交易过程中欠缺的东西,完全跟着感觉走,一些行为还是需要理论支撑的。
先是概念澄清,然后程序化,然后就是策略了。我们一旦可以对事物进行准确的定义,那么我们就可以对其进行数字化建模,然后进行策略的验证和执行。
谁能成为量化交易员?
- 不需要华尔街背景,个人投资者也可以入门
- 需要具备:编程能力、统计学基础、风险意识
- 量化交易的优势:纪律性、可回测、可自动化
第二章:寻找切实可行的策略
正所谓兵马未动粮草先行,想要挣钱那么先要问自己能接受多大的亏损,这可能是很多人都会忽略的吧。看问题需要从整体出发,而不是从局部出发。深思熟虑,比如最近全球的贵金属价格波动剧烈,有的人就是那么的不让人理解,金价已经涨到 5000 美元/ounce,还要非常狂热的买入,这显然是不合理的。就好像头顶的苹果触手可及,但是低头一看自己站在悬崖边上,就算不挣钱也不能承担超出自己承受范围内的风险呀!
书中所了一个很专业的概念:挫跌和挫跌期。问问自己能承受的最大的蹉跌是多少?10%?30%?50%?能承受的最长挫跌期是多少?10 天?几个月?还是几年?据我所知黄金可是不容易涨的,套上几十年谁也受不了吧,要么就做好止损(这可是个老大难的问题,什么时候入场,什么时候立场)。
一个很显然的原则是,我们做一笔交易(一买一卖)需要考虑成本和风险。成本包括券商佣金、手续费、滑点等。风险包括市场风险、交易风险、策略风险等。在做交易前应该能提前计算我的盈利价格和亏损价格,像以往那种买进去被套上了在研究解套的问题,这在量化程序中是绝对不可取的,即使在现实中也是不可取的。各种离场策略、止盈止损等。
策略来源:
- 学术论文(SSRN、arXiv)
- 金融博客和论坛
- 财经新闻中的市场异常
- 自己对市场的观察
甄别策略的标准:
好策略的特征
- 逻辑清晰:能用简单的经济学原理解释为什么有效
- 适合自己:匹配你的资金规模、风险偏好、时间投入
- 有竞争壁垒:别人不容易复制或已经失效
常见陷阱:
- 数据窥探偏差(Data Snooping Bias)
- 过度拟合历史数据
- 忽略交易成本和滑点
- 幸存者偏差
第三章:回测
这是本书最核心的章节之一。详细介绍了回测的步骤、工具和指标。回测是量化交易中最关键的一步,它帮助我们验证策略的有效性,避免在实盘中踩坑。我可能会花很大的篇幅去实践书中介绍的回测过程,因为只是阅读我并不能很好的理解,其实还是太懒了,如果能进下心来深入思考这个其实不难。
3.2.1 数据是否经分拆及股息调整?
在回测之前,有一个容易被忽视但极其重要的问题:你的历史数据是否经过分拆和股息调整?
如果不处理这个问题,你的回测结果可能完全是错的。
假设某公司在 T 日进行 1 拆 N 的股票分拆:
| 分拆比例 | 含义 | 股价变化 |
|---|---|---|
| N = 2 | 1 股变 2 股 | 股价减半 |
| N = 0.5 | 2 股合 1 股(反向分拆) | 股价翻倍 |
分拆调整示例
假设股票在分拆前收盘价 100 元,1 拆 2 后变成 50 元。
如果不调整历史数据,回测系统会认为股票「暴跌 50%」,产生错误的卖出信号!
正确做法:把 T 日之前的所有历史价格都乘以 \(\frac{1}{N} = \frac{1}{2}\)
调整公式:
当公司在 T 日派发每股 \(d\) 元的股息时,股价会相应下跌(除息)。
为什么不能直接减去股息?
假设:T-2 日收盘 95 元,T-1 日收盘 100 元,T 日除息派发 2 元
| 调整方式 | T-2 调整后 | T-1 调整后 | T-2→T-1 收益率 |
|---|---|---|---|
| 减法(-2) | 95-2=93 | 100-2=98 | (98-93)/93=5.38% ❌ |
| 乘因子(×0.98) | 95×0.98=93.1 | 100×0.98=98 | (98-93.1)/93.1=5.26% ✅ |
| 原始数据 | 95 | 100 | (100-95)/95=5.26% ✅ |
结论:减法会破坏历史收益率的一致性,乘因子才能保证所有历史日期之间的收益率不变!
调整公式: $ 调整后价格 = 原价格 \times \frac{Close(T-1) - d}{Close(T-1)} $
其中 \(Close(T-1)\) 是除息日前一天的收盘价。
实践建议
- 使用「调整后收盘价」(Adjusted Close)进行回测
- Yahoo Finance 的
Adj Close列已经处理好分拆和股息 - 自己处理原始数据时,务必按时间倒序调整(先调整最近的事件)
📊 案例:IGE 基金 2005-2007 年数据调整
以 IGE 基金为例,演示调整因子的计算过程。公式:\(调整因子 = (Close - d) / Close\)
股息调整因子表(2005-2007 年共 9 次派息):
| 除息日 | 股息 | 前一日收盘价 | 调整因子 |
|---|---|---|---|
| 2007-9-26 | 0.177 | 128.08 | 0.998618 |
| 2007-6-29 | 0.3 | 119.44 | 0.997488 |
| 2006-12-21 | 0.322 | 102.61 | 0.996862 |
| 2006-9-27 | 0.258 | 91.53 | 0.997181 |
| 2006-6-23 | 0.32 | 92.2 | 0.996529 |
| 2006-3-27 | 0.253 | 94.79 | 0.997331 |
| 2005-12-23 | 0.236 | 89.87 | 0.997374 |
| 2005-9-26 | 0.184 | 89 | 0.997933 |
| 2005-6-21 | 0.217 | 77.9 | 0.997214 |
计算总因子:股息总因子 = 所有调整因子累乘 = 0.976773;2005-6-9 有 1 拆 2 分拆,分拆因子 = 0.5;
分拆+股息总因子 = \(0.976773 \times 0.5\) = 0.488386
验证调整结果:
| 日期 | 原始收盘价 | 用哪个因子 | 调整后价格 |
|---|---|---|---|
| 2005-6-10 | 74 | 0.976773(分拆后,只调股息) | 72.28 |
| 2005-6-9 | 73.74 | 0.976773(分拆当天) | 72.03 |
| 2005-6-8 | 144.48 | 0.488386(分拆前,调股息+分拆) | 70.56 |
| 2005-6-7 | 144.11 | 0.488386 | 70.38 |
常用回测平台:
| 平台 | 特点 | 适用场景 |
|---|---|---|
| Excel | 简单直观 | 快速验证想法 |
| MATLAB | 数学运算强 | 复杂统计分析 |
| Python | 生态丰富 | 全流程开发 |
| R | 统计分析 | 学术研究 |
| TradeStation | 实盘集成 | 期货交易 |
业绩度量指标:
| 指标 | 公式/说明 | 参考值 |
|---|---|---|
| 夏普比率 | (年化收益 - 无风险利率) / 年化波动率 | > 1 可接受,> 2 优秀 |
| 最大回撤 | 从峰值到谷底的最大跌幅 | < 20% 较好 |
| 卡玛比率 | 年化收益 / 最大回撤 | > 1 可接受 |
| 胜率 | 盈利交易数 / 总交易数 | 因策略而异 |
| 盈亏比 | 平均盈利 / 平均亏损 | > 1.5 较好 |
避免回测陷阱:
# ❌ 错误示范:使用未来数据
signal = price > price.shift(-1) # shift(-1) 使用了未来价格!
# ✅ 正确做法:只使用历史数据
signal = price > price.shift(1) # shift(1) 使用昨天的价格
前视偏差(Look-Ahead Bias)
这是回测中最常见的错误。确保在 t 时刻做出的决策只使用 t 时刻之前的数据。
第四章:创建交易业务
业务结构选择:
| 类型 | 优点 | 缺点 |
|---|---|---|
| 个人账户 | 简单、灵活 | 税务不优化 |
| 自营公司 | 税务优惠、杠杆更高 | 监管要求 |
| 对冲基金 | 可管理外部资金 | 合规成本高 |
初始资本:
- 作者建议:至少 $50,000 - $100,000
- 资金太少 → 交易成本占比过高
- 资金太多(对新手)→ 心理压力大
第五章:交易执行系统
自动交易系统架构:
关键组件:
- 数据获取:实时行情、历史数据
- 信号生成:策略逻辑计算
- 订单管理:订单状态跟踪、异常处理
- 执行算法:TWAP、VWAP、冰山订单
- 监控报警:异常检测、自动熔断
第六章:资金与风险管理
凯利公式:
- \(f^*\):最优投资比例
- \(p\):胜率
- \(q\):败率 (1-p)
- \(b\):盈亏比
实践建议
实际使用时,通常取凯利值的 ½ 或 ¼(半凯利、四分之一凯利),以降低波动。
风险控制原则:
- 单笔交易风险 < 总资金的 1-2%
- 单日最大亏损限制
- 策略级别的止损
- 组合层面的相关性控制
第七章:进阶策略类型
书中介绍了几种常见的量化策略:
核心假设:价格偏离均值后会回归
典型方法: - 配对交易(Pairs Trading) - 统计套利 - 布林带策略
适用市场:震荡市
核心假设:强者恒强,趋势会延续
典型方法: - 突破策略 - 移动平均交叉 - 通道突破
适用市场:趋势市
核心假设:某些因子能解释股票收益差异
常见因子: - 价值因子(低 PE、PB) - 动量因子(过去收益) - 质量因子(ROE、低负债) - 规模因子(小盘股溢价)
特点: - 持仓时间极短(秒级) - 依赖技术基础设施 - 需要极低的延迟
门槛:对个人投资者来说门槛较高
第八章:扩大你的交易事业
- 从个人账户到管理外部资金
- 如何找到合适的投资者
- 基金结构和合规要求
- 规模扩大后的策略容量问题
关键概念速查
| 概念 | 说明 |
|---|---|
| 回测(Backtesting) | 用历史数据模拟策略表现 |
| 前视偏差(Look-Ahead Bias) | 在回测中错误使用了未来数据 |
| 过拟合(Overfitting) | 策略过度适应历史数据,失去泛化能力 |
| 夏普比率(Sharpe Ratio) | 风险调整后的收益指标 |
| 最大回撤(Max Drawdown) | 策略净值从峰值到谷底的最大跌幅 |
| 滑点(Slippage) | 预期成交价与实际成交价的差异 |
| 存活者偏差(Survivorship Bias) | 只看到成功案例,忽略失败样本 |
| 样本外测试(Out-of-Sample) | 用未参与策略开发的数据进行验证 |
实用工具推荐
数据源:
- Yahoo Finance(免费)
- Quandl(部分免费)
- Wind、Choice(国内付费)
回测框架(Python):
backtrader- 功能全面,社区活跃zipline- Quantopian 开源框架vnpy- 国内期货量化框架qlib- 微软开源的 AI 量化平台
券商 API:
- Interactive Brokers(IB)
- 国内:华泰、中泰等券商的量化接口
我的思考
延伸阅读
- 《打开量化投资的黑箱》- Rishi K. Narang
- 《主动投资组合管理》- Grinold & Kahn
- 《算法交易:制胜策略与原理》- Ernest P. Chan(作者的进阶书籍)
- 《量化投资:策略与技术》- 丁鹏
阅读进度:🔖 进行中