市面上所有的量化入门书都在教你——学会某个策略,年化 30%。
这本书告诉你——你亲手跑一遍回测,然后亲眼看着数字翻脸。
本书的核心案例:一个 PE 分位数策略在深证红利 2008—2017 的数据上跑出 +44.5% 的期间总超额。听起来很棒——然后我们把同一套参数换到沪深300 上:
-7.5%。
同一个策略、同一套参数、同一段时期,只换了一个指数,结果从 +44.5% 变成 -7.5%。
这本书就是你亲手跑出这两个数字的全过程。 这比读一百篇量化论文更能教会你什么叫回测——以及为什么不要相信任何单一回测结果。
| 适合 | 不适合 |
|---|---|
| 想学量化但被公式劝退的人 | 想找稳赚策略的人 |
| 做了几年投资想识破回测骗局的人 | 想要 PhD 级别模型的人 |
| 想把量化思维迁移到本行业的人 | 期望一夜暴富的人 |
| # | 核心问题 | 关键发现(可复现) |
|---|---|---|
| 1 | 哪个指数风险最大? | 上证指数年化 11.1% 居首;深证成长 1.2% 垫底 |
| 2 | PE=30 是贵还是便宜? | 同一策略换指数:+44.5% → -7.5% |
| 3 | PE 偏离正常值多远? | 最优参数是"看完数据才知道"的 |
| 4 | 一万种未来的分布? | 蒙特卡洛 VaR 95% = -30% |
| 5 | 外部信号可信吗? | 138 笔交易,胜率 52.9%,年化 6.7% |
| 6 | 收益率服从正态吗? | 不服从——超 3σ 频率是正态预测的 5 倍 |
| 7 | 连涨连跌后怎样? | 指数各有性格——创业板连涨 5 天后该卖 |
| 8 | 回测作弊了吗? | 在线 vs 离线均值最大差 1.78 个百分点 |
| 9 | 动量 vs 买入持有谁赢? | 纯动量 12/16 指数跑赢 |
| 10 | 性价比谁最高? | 中证500 夏普 0.24 居首 |
| 11 | 涨跌强度如何量化? | 跃升等级是传感器——但信号太不稳定 |
每个数字都可以用仓库内的脚本一键复现。这是本书的承诺:不信任任何无法复现的回测——包括这本书里的。
git clone https://github.com/Justinjchen-Cornell/Quant-from-Zero.git
cd Quant-from-Zero
pip install -r requirements.txt
python code/lesson1_descriptive.py不需要 API key,不需要买数据,不需要联网。数据已预打包:
data/
├── index_updated.csv # 新数据:16 指数每日涨跌幅(1990-2026,akshare)
├── index_2000_2017.csv # 旧数据:16 指数每日涨跌幅(2000-2017,原始研究)
├── *_pe_weekly.csv # 4 个指数的周度 PE + 周收益率(2005-2026,已清洗)
├── PE_old/ # 旧 PE 策略数据(2008-2017)
├── 交易策略1/ # 第 5 课信号交易原始数据
└── INDEX_META.csv # 指数代码 ↔ 中文名 ↔ 英文名 权威映射
把全部 11 课跑一遍并验证产物:
python scripts/smoke_test.py想拉最新数据?
pip install akshare # 已在 requirements.txt 中
python code/update_data.pyQuant-from-Zero/
├── README.md # 本文件(中文)
├── README_EN.md # English version
├── LICENSE # 代码 MIT / 书稿 CC BY-NC-ND 4.0
├── requirements.txt # Python 依赖(numpy/pandas/matplotlib/seaborn/scipy/akshare)
├── code/ # 💻 11 个可运行课程脚本 + 统一数据层 common.py
│ ├── common.py # 所有脚本的数据加载入口(路径/格式/名称唯一来源)
│ ├── lesson1_descriptive.py # 描述性统计
│ ├── ... # 第 2-11 课
│ └── update_data.py # 从 akshare 一键更新数据
├── data/ # 📊 预打包数据,拿来就能跑
├── book/ # 📖 13 章书稿(CC BY-NC-ND,免费阅读)
│ ├── chapters/ # 每章独立 .md —— 唯一正本
│ └── manuscript.md # 单文件版(由 scripts/build_manuscript.py 生成)
├── output/charts/ # 📈 课程图表(可一键重新生成)
├── scripts/
│ ├── smoke_test.py # 冒烟测试:跑全部课程并验证产物
│ └── build_manuscript.py # 从 chapters/ 重建单文件书稿
└── .github/workflows/ci.yml # CI:每次 push 自动跑全部课程
本书及配套代码仅供教育与研究用途,不构成任何投资建议。所有回测结果来自历史数据,不代表未来表现。投资有风险,决策需独立判断。
这些策略能拿去交易吗? 不能。这本书是思维训练工具,不是交易系统。它的目的是让你看懂回测、拆穿骗局、把方法论迁移到你的行业。
数据怎么来的? 新数据来自 akshare(免费开源),旧数据来自原始研究导出。每个文件的口径、来源、清洗规则见 data/README.md。
为什么有两个数据文件? 因为本书的核心案例就是"数据窗口改变一切":index_2000_2017.csv 是旧窗口,index_updated.csv 是扩展到 2026 年的新窗口。两个都要跑。
数字和我跑出来的不一样? 不可能——前提是你用仓库里的数据、跑仓库里的脚本。如果不一样,请开 issue(这是 bug,不是歧义)。
- 代码(
code/):MIT — 自由使用、修改、分发 - 书稿(
book/):CC BY-NC-ND 4.0 — 免费阅读与分享,商用与修改需书面授权 - 数据(
data/):来自 akshare(免费开源),旧数据来自作者研究档案
发现了数字对不上?脚本跑不起来?想翻译成英文版?欢迎提 Issue 或 PR。所有改动必须通过 python scripts/smoke_test.py。
这些策略脚本不是让你去跑量化交易的。
它们是一套思维训练工具——让你理解量化思维的边界、
学会评估任何策略的有效性、
然后把方法论迁移到你真正有信息优势的领域。
陈嘉 · 2026 · @Justinjchen-Cornell