第 1 章 · 01 quant-trading 项目全貌与诚实回测哲学


文档摘要

第 1 章 · 01 quant-trading 项目全貌与诚实回测哲学 本节摘要:本节是整段旅程的起点。在动任何一行策略代码之前,我们先认清脚下这块地基——quant-trading 项目到底是什么、作者是谁、规模多大、藏了哪些宝贝。更重要的是,作者在 README 开篇就摆出 Renaissance Technologies 的两句名言,然后坦白地告诉你:仓库里所有回测都假设"无摩擦"——无滑点、无手续费、无流动性约束。这一句诚实,决定了你应当如何阅读本书后面所有的"漂亮收益曲线":永远先打一个折,再看。 涉及源码:原项目 (约 31KB), (GPL),全仓约 7537 行 / 26 个 Python 文件。

第 1 章 · 01 quant-trading 项目全貌与诚实回测哲学

本节摘要:本节是整段旅程的起点。在动任何一行策略代码之前,我们先认清脚下这块地基——quant-trading 项目到底是什么、作者是谁、规模多大、藏了哪些宝贝。更重要的是,作者在 README 开篇就摆出 Renaissance Technologies 的两句名言,然后坦白地告诉你:仓库里所有回测都假设"无摩擦"——无滑点、无手续费、无流动性约束。这一句诚实,决定了你应当如何阅读本书后面所有的"漂亮收益曲线":永远先打一个折,再看。

涉及源码:原项目 README.md(约 31KB),LICENSE(GPL),全仓约 7537 行 / 26 个 Python 文件。

⚠️ 注意:本节引用的所有策略收益、Sharpe、最大回撤数字,均来自无摩擦假设下的历史回测,不构成任何投资建议。作者本人也反复强调——回测好看,绝不等于实盘能赚。

金融/数学原理

一、项目来历:一个意裔学者的个人策略集

quant-trading 是 GitHub 用户 je-suis-tm(我更愿意称他"某位意裔量化学者")维护的个人策略仓库,采用 GPL 协议开源。它的体量不大却很扎实——根目录加四个子目录(Oil Money project/Ore Money project/Smart Farmers project/Monte Carlo project),合计 26 个 Python 文件、约 7537 行代码,远不是"toy repo"那种几百行的玩票。

按内容,这 26 个文件可以干净地分成三类:

类别 数量 代表
技术指标策略 12 个 MACD、Awesome Oscillator、Parabolic SAR、Bollinger、RSI、Heikin-Ashi、Dual Thrust、London Breakout、Shooting Star、Pair Trading 等
期权与波动率 2 个 Options Straddle、VIX Calculator
Quantamental 大项目 4 个(每个含多脚本) Oil Money(石油货币)、Ore Money、Smart Farmers(智能农民)、Monte Carlo

第三类是全书真正的"重头戏"——所谓 quantamental(quant + fundamental),是把宏观基本面与统计/优化方法揉在一起的研究项目,动辄几百行,有的还自带数据清洗与子目录。技术指标那 12 个则短小精悍,平均两百多行,非常适合作为入门精读素材,本书第 2~5 章就主要啃它们。

二、README 开篇:Renaissance 的"51% 胜率"神话

打开 README,正文第一段不是自我介绍,而是两段引文——

We're right 50.75 percent of the time... but we're 100 percent right 50.75 percent of the time, you can make billions that way.
—— Robert Mercer,Renaissance Technologies 联席 CEO

If you trade a lot, you only need to be right 51 percent of the time, we need a smaller edge on each trade.
—— Elwyn Berlekamp,组合博弈论联合创始人

作者特意注明:这两句话出自 Gregory Zuckerman 的《The Man Who SOLVED THE MARKET》(每一个 quant 的必读书)。把它放在仓库最显眼的位置,等于把整套研究的"价值观"先抛出来——

量化交易的核心不是"每单必胜",而是"持续地、微量地占优"。Renaissance 旗下的 Medallion 基金年化超过 60%(扣费前更高),靠的不是某几次神准预测,而是成千上万次"只比抛硬币好一点点"的下注,叠加严密的资金管理。这正是后面所有动量策略反复出现的底色:MACD、AO、SAR 这些指标单看胜率都不惊艳,但配合纪律化的持仓规则,长期累积出一条向上的曲线。

三、诚实回测哲学:无摩擦假设意味着什么

真正奠定全书阅读姿态的,是 README Intro 段里这一句(中文意译)——

所有脚本都是历史数据回测/前测(基本用 Python,不是 C++,也许不久会换 Julia)。假设所有交易都是无摩擦的:无滑点、无手续费、无流动性约束。最后,所有脚本都包含一个名为 main 的全局函数,方便你直接嵌入自己的交易系统(虽然我懒得很,没写 docstring)。

这三条"无"假设,翻译成实盘语言,意味着——

  1. 无滑点:你下单时,成交价就等于你想买/想卖的那个报价。现实中限价单可能成交不了、市价单会被层层吃单,真实成交价永远比回测里差。
  2. 无手续费/印花税:每一笔买卖零成本。现实中股票有佣金、期货有手续费、外汇有点差,频繁交易会被"千刀万剐"。
  3. 无流动性约束:你想买一万手就一定能买得到。现实中大单会冲击市场、滑点会成倍放大,小盘股甚至根本吃不下你的仓位。

所以当你看到后面 MACD 在某只股票上回测出一条漂亮的资产曲线时,请自动在心里减掉:每笔交易成本约 0.1%~0.3%、滑点再 0.05%~0.2%、极端行情下还要更多。一条回测里年化 20% 的曲线,实盘可能只剩 8%~12%,甚至为负。作者把这点坦白写在 README 第一页,是研究姿态的体现——先把假设说清楚,再谈结论

四、作者风格:金融功底深厚,叙事生动

读几篇代码注释和 README,你会发现作者绝不是"只会调包的程序员",而是真正受过计量经济学训练的学者。几个标志性的痕迹:

  • 协整 = 痴缠情侣 + 502 胶:在 Pair Trading 一节,他把 cointegration 比作"一对 clingy relationship 里被 crazy-glued(502 胶)粘在一起的情侣,大多数关系迟早会散,只有极少数能走到婚姻",用生活化的比喻讲清了"为什么协整对要定期复核"。
  • RSI "kinda bs":在 RSI Pattern Recognition 脚本注释里,他毫不客气地写"I would undoubtedly give up on this bs divergence strategy"(我绝对会放弃这个扯淡的背离策略)。对学院派指标的不留情面,反而显得真诚。
  • 意裔学者情结:Smart Farmers 项目里用 VECM(向量误差修正模型)做需求预测,代码注释里致敬了他的导师 Gallo 和诺贝尔奖得主 Engle(协整理论的奠基人之一)。这是把课堂上学到的计量工具真刀真枪用到商品基本面上。
  • 爱用 emoji 和文化梗:Oil Money 项目里用 🛢️/💰 区分油与货币,RSI 章节标题就玩 "kinda bs",Awesome Oscillator 全程 "AWESOME!"。这让冰冷的代码有了温度。

五、数据来源分层

项目里数据不是统一来源,而是按"够用就行"分层——

  • yfinance / fix_yahoo_finance:股票日线(MACD/AO/SAR/RSI 全用这个),最方便但有时不稳定。
  • 本地 CSV:外汇和指数走 data/gbpusd.csv(来自 histdata)、data/stoxx50.xlsx
  • 专题数据:data/henry hub european options.csv(天然气期权,供 Options Straddle 用)、data/cme holidays.csvdata/treasury yield curve rates.csv(国债收益率曲线)、data/bitcoin.csv

记住这条分层:能从 Yahoo 白嫖的就白嫖,买不到的才本地化。这也是个人量化研究者的现实选择。

算法与代码精读

本节是导论,没有复杂代码可精读。但有四段"代码事实"必须先建立,它们会贯穿全书——

事实 1:每个脚本都有 main(),且用 if __name__=='__main__' 守护

def main(): ma1=int(input('ma1:')) ma2=int(input('ma2:')) stdate=input('start date in format yyyy-mm-dd:') eddate=input('end date in format yyyy-mm-dd:') ticker=input('ticker:') df=yf.download(ticker,start=stdate,end=eddate) new=signal_generation(df,macd) new=new[slicer:] plot(new, ticker) if __name__ == '__main__': main()

这是 MACD 的入口(节选)。三个要点:① 参数靠交互式 input() 输入,所以脚本"双击即跑";② 数据靠 yf.download 现拉;③ 真正的策略逻辑封在 signal_generation 里,main 只负责编排。这种结构让每个脚本既是独立可运行的回测,又能被嵌入更大的系统。

事实 2:positions / signals 双列约定(全书统一)

往后每一章你都会看到这两列,务必现在就记住——

  • positions:当前持仓状态(0 = 空仓,1 = 满仓),逐根 K 线记录"我现在是拿着还是没拿"。
  • signals:= positions.diff(),即实际下单动作(+1 = 这一根开多,-1 = 这一根平仓/反手,0 = 什么都不做)。

为什么要拆成两列?因为回测里你既要知道"某时刻持仓是多少"(算市值),又要知道"今天到底要不要下单"(算交易成本与信号触发)。一列状态 + 一列动作,是最干净的写法。后面第 2 章 MACD、第 2 章 SAR,全仓统一沿用。

事实 3:signal_generation(df, method) 的回调式结构

几乎所有技术指标脚本都长这样:

def signal_generation(df, method): signals = method(df) # 先调指标函数,填充 ma1/ma2/sar 等 signals['positions'] = 0 signals['positions'][ma1:] = np.where(signals['ma1'][ma1:]>=signals['ma2'][ma1:], 1, 0) signals['signals'] = signals['positions'].diff() return signals

把"算指标"这件事抽成 method 参数(可以是 macdparabolic_sarawesome_ma),让信号生成框架与具体指标解耦。这是一种轻量的策略模式,后面你会反复受益。

事实 4:无 docstring,但有大量"碎碎念"注释

作者自己承认"懒得很,没写 docstring"。但他用一种很可爱的方式补偿——在函数上方写大段散文式注释,把"为什么这么干""这个指标有什么坑""曾经一周交易六天所以默认 12/26"全写进去。读他的代码,像在读一本带批注的笔记本。本书后面"反直觉发现"很多就来自这些注释。

🎯 反直觉发现:Renaissance 的"51% 胜率赚大钱",听起来像鸡汤,但它真正在说的是——单笔盈亏的期望值 × 交易次数,才是收益的来源。技术指标策略胜率常常只有 45%~55%,但配合"截断亏损、让利润奔跑"的持仓规则,依然能累积出正期望。这与你直觉里"必须预测准才能赚"完全相反,也是本书反复要打掉的一个执念。

关键技巧

  1. 先读 README 再读代码:作者的金融直觉、引用来源、坑点提示,全在 README 里。跳过 README 直接看代码,会丢掉一半信息。
  2. 认清"无摩擦假设":这是阅读所有漂亮回测曲线时的"滤镜"。看图前先默念三遍:无滑点、无手续费、无流动性约束。
  3. positions/signals 双列约定:这是全书统一的回测骨架,记住它,后面读任何指标脚本都事半功倍。
  4. 数据来源分层:yfinance 优先、本地 CSV 兜底。个人研究者没有彭博终端,这种务实分层值得借鉴。

本节要点

  1. quant-trading 是 je-suis-tm 的个人 GPL 策略集,约 7537 行 / 26 文件,分技术指标(12)、期权(2)、quantamental 大项目(4)三类。
  2. README 开篇引用 Renaissance 的"51% 胜率"名言,定调全书:量化靠的是持续微量占优,不是单笔必胜。
  3. 作者坦白所有回测无摩擦,实盘需自行扣成本,不构成投资建议。
  4. 作者风格:金融功底深、比喻生动(协断=情侣+502 胶)、对学院派指标不留情面(RSI "kinda bs")、意裔学者情结(VECM 致敬 Gallo/Engle)。
  5. 数据分层:yfinance/fix_yahoo_finance(股票)+ 本地 CSV(gbpusd/stoxx50)+ 专题数据(henry hub options/国债收益率)。

下一节,我们把这套"诚实哲学"落到工程层面——项目没有 requirements.txt,我们怎么把环境跑起来?


作者与出处
原作者: 灏天文库
整理: 灏天文库整理
本站整理收录,版权归原作者/开源协议所有;欢迎通过原文链接访问源仓库。
发布者: 作者: 灏天文库 转发
评论区 (0)
U