Skip to content

Repository files navigation

从零开始跑量化

11 堂课 × 11 个可运行脚本 × 30 年 A 股真实数据

它们是一套思维训练工具——让你理解量化思维的边界、学会评估任何策略的有效性、然后把方法论迁移到你真正有信息优势的领域。

Code: MIT Book: CC BY-NC-ND 4.0 Python 3.9+ CI 在线阅读

English version


既然策略不能赚钱,这本书的价值在哪里

市面上所有的量化入门书都在教你——学会某个策略,年化 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.py

仓库结构

Quant-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

About

从零开始跑量化:11 堂课 × 30 年 A 股真实数据 × 可复现代码,亲手拆穿回测骗局(+44.5% 换一个指数就变 -7.5%)。Quant from Zero — reproducible backtesting education, thinking tools not trading tools.

Topics

Resources

Contributing

Stars

3 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages