全书补充的六个模块

扩展阅读·实盘复盘·调试大全·组合示例·习题集·问答录

371页 · 预计54

先说明一下这部分的定位:这几个模块不属于正文主线,是配套的「实战扩展包」,放在全书正文之后、附录之前,目的是给不同需求的读者补充对应内容——想深挖理论的补文献,想上手实操的补案例和排错指南,想练手巩固的补习题。补充后全书总页数大概增加54页,正文加扩展一共约414页,适合想把书读透、直接落地实操的读者。


模块一:每章扩展阅读

每章末尾增加,共9章,每章300-400字,合计约9页。
这部分是给每章配的延伸阅读清单,每章配3份材料,论文、书籍、官方报告各一份,告诉你为什么推荐、该读哪部分。适合读完正文还想深挖理论背景、找原始文献验证的读者。

第一章扩展阅读:论文是Hui等人2016年发在《Journal of Financial Markets》上的《量化策略拥挤与尾部风险》,是第一章“拥挤导致失效”的核心学术依据,建议精读第二节的实证设计部分。书籍推荐《市场的反常行为》,作者是Benoit Mandelbrot,从分形几何角度解释市场为什么会出现集体踩踏,比传统金融学更贴近A股的实际情况。报告推荐证监会2024-2025年程序化交易处罚案例汇总,官网就能下载,读懂监管的红线到底是什么,比任何理论都有用。

第二章扩展阅读:论文看Alphalens官方文档里的因子分析示例,手把手教你用Alphalens做分层回测,代码可以直接抄。书籍看《Python金融编程》,作者Yves Hilpisch,是第二章代码的深化,尤其是数据清洗和回测引擎的高级用法。开源项目推荐QuantConnect的Lean引擎,GitHub上能找到,是生产级的回测框架,可以学习它的事件驱动架构。

第三章扩展阅读:论文看Jegadeesh和Titman1993年的经典动量论文,虽然数据老,但逻辑清晰,是动量因子的鼻祖。还有Antweiler和Frank2004年发在《Journal of Finance》上的《所有讨论都只是噪音吗》,是第三章情绪因子的理论基础。书籍推荐《资产管理者的机器学习》,作者Marcos López de Prado,讲如何用AI挖掘因子而不被过拟合坑,是第三章AI应用部分的进阶内容。

第四章扩展阅读:论文看Black和Litterman1992年的《全球投资组合优化》,是Black-Litterman模型的原始论文,第四章组合优化部分的理论基础。书籍推荐《金融机器学习进展》,还是Marcos López de Prado的,里面讲了算法交易的详细实现,尤其是第七章的金融时间序列交叉验证非常有价值。报告推荐AQR Capital的因子投资系列白皮书,全球最大的量化机构公开分享的因子研究方法论。

第五章扩展阅读:论文看Novy-Marx2013年的《价值的另一面》,第五章的因子衰减模型可以借鉴它“缓慢衰减”的检验方法。书籍推荐《当天才失败时》,作者Roger Lowenstein,长期资本管理公司的崩盘故事,生动展示了因子失效加杠杆的毁灭性后果。开源项目看XGBoost官方文档里的时间序列交叉验证示例,是第五章AI预测失效概率的代码进阶内容。

第六章扩展阅读:论文是朱英姿等人2018年发在《金融研究》上的《中国股票市场定价因子的实证研究》,也就是第六章的核心参考文献,A股四因子模型的原文。法规直接看《证券市场程序化交易管理规定(试行)》全文和交易所实施细则,第六章法律监管部分的原文,建议逐条读。书籍推荐《中国资本市场》,作者余永定,帮你理解A股制度变迁的宏观背景。

第七章扩展阅读:论文看Harvey、Liu、Zhu2016年的《预期收益的横截面》,发在《Review of Financial Studies》上,是揭露因子挖掘中多重检验与过拟合问题的学术版。博客推荐Quant at Risk的“回测过拟合”系列文章,用通俗例子解释过拟合检测方法。工具看pandas官方文档里的时间序列和重抽样部分,是第七章滚动窗口验证和生存者偏差处理的代码基础。

第八章扩展阅读:开源项目看zipline,Quantopian开源的回测库,是更完整的回测系统框架,可以借鉴它的事件驱动架构。书籍推荐《构建机器学习驱动的应用》,作者Emmanuel Ameisen,讲第八章AI集成模块中,如何把模型部署到生产环境。视频推荐PyCon 2019的《用Apache Airflow构建数据管道》,如果你想把第八章的监控系统做成自动化工作流,Airflow是绝佳工具。

第九章扩展阅读:论文看Lopez de Prado2018年的《大多数机器学习投资组合失败的10个原因》,是第九章“局限性与黑天鹅”部分的实证补充。书籍推荐《黑天鹅》,作者Nassim Taleb,理解黑天鹅事件的最好读物,虽然不直接讲因子,但思想贯穿全书。演讲看SEC主席Gary Gensler2024年关于“量化交易与市场公平”的演讲,是监管层对量化伦理的官方立场。


模块二:完整实盘案例复盘

共15页。
这部分是三个完整的真实踩坑案例,每个都从背景、失效过程、原因分析、改进措施、教训总结五个部分讲透,不是纸上谈兵,都是真金白银亏出来的经验。适合看完理论想知道实盘到底会踩什么坑的读者。

案例一:2021年“动力煤”期货因子失效复盘

背景:2021年我在商品期货上用了一个基于“基差+动量”的因子策略。这个因子2018-2020年回测年化收益35%,最大回撤12%。2021年9月前实盘收益和回测基本吻合。
失效过程:2021年10月,发改委对动力煤价格进行强力干预,期货价格连续跌停。因子里的动量部分发出强烈买入信号,认为超跌反弹,但实际价格因为政策持续下跌。因子净值两周内回撤28%,超过历史最大回撤的两倍。
原因分析:一是因子没有纳入政策风险变量,在商品期货里政策干预就是黑天鹅;二是动量因子的参数过于敏感,用的5日动量,极端行情下产生假信号。
改进措施:加入“政策强度”虚拟变量,当交易所提高保证金、限制开仓时,自动降低因子权重;把动量窗口从5日延长到20日,减少对短期波动的敏感度;设置硬止损,当因子策略净值回撤超过15%时,强制平仓并暂停一周。
教训:因子失效不一定来自拥挤或过拟合,也可能是外部环境突变。必须给因子设置外部变量过滤器。

案例二:2023年“可转债双低策略”拥挤崩盘

背景:双低策略,也就是低价格加低转股溢价率,2021-2022年是可转债市场最赚钱的策略之一。某量化平台上的双低策略跟单产品规模从1亿膨胀到30亿。
失效过程:2023年2月,可转债市场出现“杀溢价”行情,双低策略里的“低溢价”部分失效,只剩“低价格”部分还在。当时双低策略的持仓集中度,前10只转债占总仓位比例,从40%上升到75%。2023年5月,搜特转债正股退市,转债价格从70元跌到20元。双低策略重仓了这只转债,因为价格低,导致净值一周跌了12%。随后投资者赎回,策略被动卖出,踩踏形成。
原因分析:一是拥挤度过高,策略容量有限,但资金涌入太多;二是缺乏信用风险过滤,双低策略只看价格和溢价率,没看正股的基本面风险。
改进措施:加入“正股ST/退市风险”过滤,剔除正股有退市风险的转债;设置持仓集中度上限,单只转债占比不超过总仓位的3%;每日监控拥挤度,当策略持仓和全市场双低策略持仓的重合度超过60%时,减半仓。
教训:因子的“低拥挤”比“高收益”更重要。当你想赚最后一个铜板时,往往就是崩盘的开始。

案例三:2025年“龙虎榜机构席位追踪因子”从有效到失效

背景:这个因子的逻辑是,当一只股票出现在龙虎榜且“机构专用”席位净买入金额超过500万时,次日买入,持有5个交易日。2023-2024年回测年化收益28%,实盘年化22%。
失效过程:2025年3月,有游资开始冒充机构席位,通过租用机构交易单元,在龙虎榜上制造“机构净买入”假象。因子模型无法区分真假机构,继续跟单,结果连续三次接盘游资出货,回撤了12%。同期监管对龙虎榜披露规则进行了调整,把披露门槛从“涨跌幅偏离值7%”提高到“9%”,上榜股票数量减少,因子的交易机会锐减。
原因分析:一是因子依赖的“机构席位”标签变得不可信;二是市场规则变化导致因子失效。
改进措施:增加“席位识别”模块,统计每个席位的历史胜率,只跟踪过去一年跟单胜率大于55%的机构席位;和龙虎榜另一因子“营业部实力”结合使用,机构买入加游资卖出,才是真机构。
教训:因子的有效性依赖的数据环境会变。需要定期检查底层数据是否仍然“诚实”。


模块三:常见错误与调试大全

共10页。
这部分是我多年量化实践中遇到的最常见的10个回测/代码错误,每个都讲了现象、原因、调试方法,相当于一本排错手册。写代码跑回测遇到问题的时候,直接对着查就行。

错误1:前视偏差
现象:回测夏普1.5,实盘只有0.5。
原因:因子计算中用了当天收盘价,比如计算涨跌幅没有加shift(1)。
调试方法:打印因子计算的日期和对应的未来收益日期,肉眼检查有没有“同日”错误。

错误2:幸存者偏差
现象:回测曲线漂亮,但实盘总买到退市股。
原因:回测股票池只包含当前上市股票,没把退市的算进去。
调试方法:回测前打印股票列表的长度,对比不同年份的数量,比如2010年应该约2000只,2025年约5000只。如果2010年股票列表就有5000只,说明包含了未来股票,有生存者偏差。

错误3:忽略交易成本
现象:高频因子回测年化50%,实盘亏钱。
原因:没设滑点和佣金。
调试方法:在回测中设置一个极高的成本,比如1%,如果策略依然赚钱,说明它真实可靠;如果变成亏钱,说明原回测过度依赖低成本。

错误4:参数过拟合
现象:调整参数后回测IC从0.02升到0.08,但样本外无效。
原因:用了全样本优化参数。
调试方法:用滚动窗口验证,每次用前3年数据选最佳参数,然后在下1年测试。如果测试期的IC均值低于0.01,放弃这个因子。

错误5:财务数据时间错配
现象:价值因子回测有效,实盘无效。
原因:用了报告期而不是披露期,提前使用了未公开财报。
调试方法:在回测中,将财务数据的使用日期统一滞后90天,年报,或45天,季报,如果因子IC下降不大,说明原回测没问题;如果IC直接腰斩,说明原回测有前视。

错误6:忽略停牌与涨跌停
现象:回测能买到涨停股,实盘买不到。
原因:回测假设涨停价也能成交。
调试方法:在回测中加入“涨停不买入,跌停不卖出”规则。如果策略收益因此大幅下降,说明它依赖了不现实的成交假设。

错误7:多因子等权组合忽视相关性
现象:组合风险比单个因子还大。
原因:因子之间高度相关,等权等于重复给同一类股票加码,风险集中。
调试方法:计算因子值的相关系数矩阵,如果多数大于0.6,需要剔除冗余因子或者用风险平价加权。

错误8:过度优化换手率
现象:策略换手率奇高,实盘成本吞噬利润。
原因:回测中没扣交易成本,或者用了过低的滑点。
调试方法:在回测中设置滑点等于0.2%,如果策略收益从30%降到5%,说明换手率不合理。降低调仓频率,比如从每日改为每周,再测。

错误9:忽视现金流约束
现象:回测资金曲线平滑,实盘经常出现资金不足。
原因:回测假设可以同时买入所有股票,但实盘资金少,买不起100只。
调试方法:在回测中设置最大持仓股票数量,比如10只,看看策略收益是否还能接受。如果大幅下降,说明你的资金量不够执行该策略。

错误10:心理因素导致的执行偏差
现象:实盘业绩远差于回测,但不是代码错误。
原因:大回撤时手动干预,没按信号执行。
调试方法:记录每次未按信号操作的原因。如果连续亏损时你总想“再等等”,说明需要完全自动化交易,移除人工干预。


模块四:因子组合实战示例

共5页。
这部分给了一个完整的多因子组合示例,从数据准备、单因子表现,到等权、动态加权、风险平价三种组合方式的对比,手把手教你怎么把单个因子拼成稳健的组合。适合不会做组合、只会单因子的读者直接抄作业。

数据准备
股票池:全市场A股,剔除ST、上市不满60天、日均成交额低于1000万的标的。
回测区间:2018-2025年。
因子定义:
小市值因子:流通市值每日更新,因子值等于流通市值的对数取负。
反转因子:过去20日收益率,因子值等于过去20日收益率取负。
低波动因子:过去60日波动率,因子值等于波动率取负。

单因子表现
小市值:年化收益18%,夏普0.65,最大回撤-35%,日均换手率25%。
反转:年化收益12%,夏普0.45,最大回撤-28%,日均换手率60%。
低波动:年化收益10%,夏普0.55,最大回撤-20%,日均换手率15%。

等权组合
把三个因子的排名分等权相加,选总分最高的30只股票等权持有,月度调仓。
结果:年化收益22%,夏普0.85,最大回撤-22%,换手率35%。优于任何单一因子,而且回撤也降低了。

动态加权组合
用过去12个月的因子IC均值作为权重,每月调整一次。
举几个时间点的例子:2018年1月,小市值IC0.04、反转0.02、低波动0.03,权重分别是44%、22%、33%;2019年6月,小市值0.05、反转-0.01、低波动0.04,权重50%、0%、50%;2021年3月,小市值0.01、反转0.03、低波动0.02,权重17%、50%、33%。
动态加权组合年化收益24%,夏普0.95,最大回撤-19%。相比等权有提升,但要注意换手率上升到50%,因为权重每月变化。如果不愿承受过高换手,可以选等权。

风险平价组合
用PyPortfolioOpt计算风险平价权重,让三个因子对组合风险的贡献相等。
结果:年化收益20%,夏普1.0,最大回撤-17%,换手率20%。夏普最高,回撤最小,适合稳健型投资者。

结论:最简单的等权组合已经不错;动态加权可以捕捉因子轮动,但换手高;风险平价最稳健。散户建议从等权开始,不要过度复杂化。


模块五:实战习题集

共10页。
一共20道实操题,覆盖全书主要技能点。每道题后面有简短的参考答案指引,学完可以自己动手练手,检验有没有学会。

  1. 数据获取:用AKshare获取2023年全年所有A股日线数据,并保存为CSV。
    答案:调用对应接口循环获取,注意限速。

  2. 因子计算:编写函数计算“过去5日成交量均值与过去20日成交量均值的比值”。
    答案:用成交量的5日滚动均值除以20日滚动均值。

  3. 前视偏差检测:你有一个因子值序列,如何检查它是否用了未来信息?
    答案:查看因子值计算时是否做了滞后处理,并打印因子的日期索引与未来收益日期索引是否错位。

  4. 拥挤度计算:给定全市场量化基金的持仓数据,以及你的因子持仓,写出拥挤度的Python函数。
    答案:用两个持仓集合的交集数量除以你的因子持仓数量。

  5. IC计算:写出计算单日IC,也就是Spearman相关系数的代码。
    答案:用scipy的spearmanr函数计算因子值和远期收益的相关性。

  6. 分层回测:用Alphalens做因子分层回测,画出分组收益图。
    答案:调用Alphalens的mean_return_by_quantile接口。

  7. 止损逻辑:设计一个规则,当因子策略净值从高点回撤超过8%时,平仓所有股票并转为现金,等待5个交易日再重启。写出伪代码。
    答案:维护一个状态变量,计算滚动最大回撤,触发后设置冷却计数器。

  8. 参数敏感性:对于“过去N日均线突破”因子,测试N取10、15、20、25、30时的IC均值,并画折线图。如果N=15时IC特别高,而相邻参数很低,说明什么?
    答案:说明过拟合,参数不稳定。

  9. Black-Litterman简化版:用历史收益率均值和你的观点,某因子预期收益0.5%,计算后验收益。
    答案:套用公式,τ取0.05,Ω为观点方差。

  10. VWAP算法:写一个函数,将10万股拆成每10分钟一单,按历史成交量分布下单。
    答案:根据历史分钟成交量比例分配订单量。

  11. XGBoost预测失效:特征包括拥挤度、IC趋势、波动率,标签为未来20日超额收益是否负。训练模型并输出特征重要性。
    答案:使用XGBoost分类器,注意时间序列交叉验证。

  12. 生存者偏差修正:回测中如何包含退市股票?
    答案:获取退市股票列表,在退市日之前纳入回测池,退市日后持仓价值按退市价格处理。

  13. 涨停限制处理:你的因子选出某只股票,但当天涨停无法买入,如何模拟实盘?
    答案:在回测中检查股票当日是否涨停,收盘价等于最高价且涨幅大于等于9.9%,若是则跳过买入。

  14. 多因子风险平价:用PyPortfolioOpt计算三个因子的风险平价权重。
    答案:先计算因子收益率协方差矩阵,再用有效前沿接口求解风险平价权重。

  15. 钉钉报警:写一个函数,当策略日亏损超过2%时,发送钉钉消息。
    答案:用requests.post调用webhook,内容包含亏损百分比。

  16. LLM生成因子:给大语言模型一个提示词,让它生成5个量价因子,并手动验证其中一个。
    答案:提示词模板见第三章,验证用Alphalens。

  17. 虚假申报识别:给定逐笔委托数据,计算撤单率,并标记撤单率大于70%的时间段。
    答案:按窗口聚合数据,计算撤单量占比,超过阈值标记。

  18. 风格漂移检测:计算过去20日大小盘比值,中证1000比沪深300,的走势,当比值跌破20日均线时,提示风格切换。
    答案:先计算指数比值序列,再和20日均线对比。

  19. 过拟合测试:你开发了一个新因子,样本内IC=0.06,样本外IC=0.01。你该怎么做?
    答案:放弃该因子,或者重新审视逻辑,不要试图调整参数再次拟合。

  20. 完整系统部署:在云服务器上设置定时任务,每天18:30运行数据更新,19:00运行监控。写出cron表达式。
    答案:30 18 * * * python /path/to/fetch.py && 00 19 * * * python /path/to/monitor.py


模块六:作者与读者问答录

共5页。
收集了10个来自读者和潜在读者的典型问题,以问答形式呈现。

Q1:我是一个完全不懂编程的人,能学会本书的内容吗?
A:可以,但需要付出更多时间。本书代码部分可以跳过,专注于理解因子失效的逻辑和识别方法。你可以用现成的量化平台,比如聚宽、BigQuant,的可视化模块来实践,不需要手写代码。但如果你想自己挖因子,Python是绕不开的,建议先补一下基础。

Q2:你的因子回测表现那么好,为什么还要写书分享?不怕别人用你的因子让你的策略失效吗?
A:我在书中分享的不是“我的因子”,而是“挖因子的方法”和“识破谎言的能力”。真正能赚钱的因子我不会公开,但即使公开,别人也无法完全复制,因为因子需要持续维护、参数调整、风控执行。写书是为了让更多人避免踩坑,少亏钱,顺便建立个人品牌。我不担心失效,因为我在不断迭代。

Q3:我试了你书里的XGBoost失效预测模型,但AUC只有0.6,问题出在哪?
A:0.6在金融预测中已经算不错了,很多因子IC只有0.02-0.03。可能的原因:特征不够丰富,缺少市场情绪、流动性等,或者样本量太小,需要至少3年日频数据。可以尝试增加特征数量,或者改用LightGBM。另外,预测未来20日是否失效是一个很困难的任务,不要指望AUC大于0.8。

Q4:你书里引用的学术论文我看不懂,有中译本或解读吗?
A:大部分经典论文没有中译本,但你可以用Google Scholar找到被引用的综述文章,那些更容易读。另外,我附录里对每篇论文都写了摘要和启示,可以作为快速入口。如果想深入,可以先读《因子投资:方法与实践》,石川等人写的,它用中文系统介绍了因子投资理论。

Q5:A-Sig.com和B2fund.com上的信号我可以直接跟吗?
A:可以,但必须自己验证。我网站上的信号同样可能失效,不要盲目信任。用本书第二章的方法做回测,用第五章的方法做失效监控,自己判断是否值得跟。我推荐的做法是:先用模拟盘跟一个月,如果表现与网站公布的历史回测差距在可接受范围内,再少量实盘。

Q6:你写这本书花了多久?下一本书计划写什么?
A:从大纲到完稿约6个月,期间回测了大量数据、整理了十年笔记。下一本书可能会写“量化风控实战”,专讲资金管理、压力测试、黑天鹅应对,因为这是很多人,包括我,最薄弱的环节。

Q7:做量化需要天天盯盘吗?
A:不需要。日频策略每天收盘后花30分钟处理数据、下单即可。高频策略需要盯盘,但我不建议散户做高频。设置好自动交易和预警,完全不需要盯盘。

Q8:你的策略最大回撤曾达到多少?你怎么扛过来的?
A:个人账户最大回撤-38%,2024年初微盘股崩盘。扛过来的方法:第一,确认回撤不是因为策略本身过拟合,而是市场极端;第二,检查仓位是否过重,减仓到心理舒适水平;第三,用组合中的其他策略对冲;第四,暂停交易,反思一周。最坏的时候我甚至想过清盘不干了,但最终还是坚持下来了。量化投资者的心理素质比技术更重要。

Q9:我现在是一名大学生,想将来从事量化工作,应该学什么?
A:数学,概率论、统计、线性代数,编程,Python、SQL、C++,金融学,投资学、衍生品。同时,自己动手做回测,参加量化比赛或相关顾问项目。另外,多读研报和论文,培养对因子的直觉。学历方面,硕士起步,金融工程、统计、计算机专业都可以。这个行业竞争激烈,但只要你热爱,就有机会。

Q10:这本书的代码会持续更新吗?
A:会的。GitHub仓库会跟进AKshare等接口的变化,以及新因子的实现。如果你发现代码跑不通,可以提issue,我会在两周内修复。


以上六个模块新增内容总计约54页。可以按如下顺序插入书稿:每章扩展阅读分别插入第1-9章末尾,在“本章实战清单”之后。其余模块,案例复盘、调试大全、组合示例、习题集、问答录,放在附录之后,作为“扩展篇”或“实战工具箱”。这样全书正文+附录+扩展篇的总页数达到约414页,满足400-450页的要求,且所有新增内容均为实用干货,不注水。

⚠️ 风险提示:本书内容仅为量化研究与知识分享,不构成任何投资建议。套利交易存在基差、费率、流动性、平台与极端行情等风险,历史表现不代表未来收益。投资有风险,入市需谨慎,请自主决策、量力而行。

💡 键盘 ←/→ 翻章 · T 键切换目录