本文适合谁:准备入门个人量化的散户;已经写了几段代码、跑过几次回测的"野生量化"爱好者;以及那些看到"我跑过回测年化 200%"的"卖课大师"。
写在前面:量化的 3 个"看起来很小、踩到才知道"的事
做量化这件事,外行看的是"年化收益 30%+",内行看的是"系统在不在你 5 年后再次崩溃"。
5 年里我亲手坑过自己 3 次,每一次都让我不得不重构整套系统。这篇文章就是把这 3 个坑和"如何识别它们"讲清楚——希望你少走 2-3 年弯路。
坑 1:内存炸
典型症状:在算 A 股全市场 MACD 的时候,跑到一半 Python 报 MemoryError;或者程序被系统 OOM 杀掉;或者 Docker 容器"无理由"重启。
为什么会这样:
A 股有 5,500+ 只股票,每只股票 8 年日线 ≈ 2,000 根 K 线。如果你同时维护 5,500 × 2,000 根 K 线,再加 MACD、复权因子、几十个指标的中间变量:
`
5,500 × 2,000 × (每根 K 线 200 字节中间变量) = 2.2 GB
`
2.2 GB 只是 K 线的中间变量——还没算你跑多周期共振时要同时加载日/周/月三套、还没算你回测时复权因子的全表 join。
NAS 普遍 4GB 内存,后端服务 + 数据库 + Web UI 一开,可用内存不到 3GB——必爆。
怎么避:

上图是两种数据处理方式对比。上面"全量加载":5,500 只股票一次性读入内存 → 内存峰值 3.2 GB;下面"分批流式":每 400 只股票一个批次,算完即落库释放 → 内存峰值稳定 0.4 GB。
三个"土方法":
- 分批流式:每 400 只股票一个批次(这个数是经验值,2GB 内存下保守),算完即落库释放。不要图省事全量读。
- 断点续算:用状态表保存每只股票上次的"最后 EMA 值"和"最后 K 线位置",下次从断点继续。中断 5 次能续 5 次,比从 0 算快 10 倍。
- 数据库选择:SQLite 足够个人用(单文件、零运维),切到 PostgreSQL 未必更快——PostgreSQL 的网络往返和并发开销对小数据集是负收益。
实战中的好工具:
我现在用的 MACD 选股系统,作者专门为 NAS 低内存环境做了"分批流式 + 断点续算"——5,500 只股票 + 8 年日线全量初始化,飞牛 NAS 4GB 内存跑下来内存峰值不超过 1.2GB。这是当初我最看重的点。
坑 2:回测过拟合
典型症状:你的策略在 2018-2022 年回测年化 80%,2023 年 1 月开始实盘,3 个月亏 30%。
为什么会这样:
回测的本质是"用历史数据"找"参数"。但历史不会简单重复。
更阴险的是,量化圈最常用的"寻找最优参数"做法,会让"看起来漂亮"的策略被严重过拟合——你找到的不是"规律",而是"历史的巧合"。
怎么识别:
3 个简单但有效的检测:
检测 1:参数稳定性测试
比如你的策略用"RSI < 30"作为超卖判断。把阈值从 25 改到 35 试 5 个值,看回测结果变化是否剧烈:
如果小幅改动参数就大幅改变收益 → 过拟合。
真正稳健的策略,对参数变化应该是"温和"的——比如 75% / 76% / 80% / 77% / 72%,而不是上表这种"悬崖"。
检测 2:训练/测试集分离
把数据按时间切成 2 段:
- 训练期(如 2018-01 至 2022-12):用这个区间的数据调参;
- 测试期(如 2023-01 至 2025-12):用这个区间的数据只做"看一遍"。
如果训练期年化 80%、测试期年化 18%——过拟合无疑。健康的策略,训练期和测试期应该差距不大(年化差异 < 10 个百分点)。
检测 3:十分位分析(decile analysis)
把你的"选股评分"从高到低分成 10 档,每档算平均收益,看:
- D1(高分组)平均收益是否显著 > D10(低分组)?
- 从 D1 到 D10 是否呈现"单调下降"?
如果高分组和低分组收益差不多,或者不单调——你的"评分"和"未来收益"没关联,策略无效。

这张图是真实截图简化版:10 档(D1-D10)的"前向 20 日超额收益"分布。如果 D1 > D10 且单调整齐,评分体系有真实预测力。
实战中怎么用:
我用的 MACD 选股系统 的"策略表现"模块直接内置了这 3 个检测:
- 网格扫描(参数稳定性);
- Walk-forward(训练/测试分离);
- 十分位 + IC 序列(评分预测力)。
不需要自己写脚本,选完股跑一次"评估",系统会直接告诉你"这策略是真有效,还是看起来有效"。
坑 3:信号失效
典型症状:你的策略过去 3 年都赚钱,从某个月开始连续亏 3 个月。不是因为你做错了什么,是因为市场风格切换了。
为什么会这样:
"策略有效"本质上是"市场在某段时间内重复了某类行为模式"。但市场不是永远重复的——
- 2020 年小盘股风;
- 2021 年白马蓝筹风;
- 2022 年价值回归;
- 2023-2024 年 AI/算力主题风;
- 2025 年中小盘活跃风。
每一种"风格"持续 1-2 年,然后切换。如果你的策略是"基于小盘股动量"做的,那它在 2024 年一定亏得怀疑人生。
怎么识别和应对:
应对 1:组合策略,不要押单一信号
同时跑 3-5 个逻辑不相关的策略(MACD 金叉 + 缠论买点 + 价值投资 + 趋势追踪)。任何一个失效,另外几个可能还在赚钱。对冲掉的是"策略失效"风险。
应对 2:监控"市场情绪"——它比"选股"更重要
我每晚必看 4 个数据:
- 上涨家数 / 下跌家数——市场是普涨还是普跌?
- 北向资金净流入——外资在买还是在卖?
- 融资余额——杠杆资金在加仓还是在减仓?
- 涨停 / 跌停 / 连板家数——市场情绪是"贪婪"还是"恐惧"?

上图是 [MACD 选股系统](https://daily-research.top/) "市场情绪"模块的截图——上涨家数、北向资金、融资余额、涨停/跌停数,4 个关键指标。
如果这 4 个数据里,有 2 个以上转差——这周不玩。这就是我过去 2 年没亏过大钱的真正原因。
应对 3:定期回测 + 自动重新优化
每月跑一次"全策略回测",看:
- 哪些策略在最近 3 个月还赚钱?→ 继续用
- 哪些策略在最近 3 个月跑输基准?→ 暂停
- 有没有新策略冒出来?→ 加入候选池
不要等亏 30% 才发现失效。主动"退役"失效策略是成熟量化玩家的标志。
写在最后
5 年下来我最大的体会:量化不是比谁的策略更"聪明",而是比谁的"工程化"更扎实。
- 不把内存跑炸 = 你能跑 8 年;
- 不过拟合 = 你的策略在 2026 年还能用;
- 不死守失效策略 = 你在风格切换时不被打死。
把这 3 件事做扎实,剩下就是"每天看一眼市场情绪 + 跑一次选股"。
👉 想要立刻开始?
我拉了个小群,专门给"野路量化"的朋友:
- 群主每天 9:00 自动推送当日多周期共振选股清单(基于 [MACD 选股系统](https://daily-research.top/) 跑的真实结果);
- 每周一次量化工程经验分享(包括"如何在 4GB 内存下跑全市场"这种接地气话题);
- 不卖课、不卖软件、不收钱。
👉 [扫码进群,免费加入量化交流]

加入后回复"量化"两字,群主拉你进核心讨论组。
⚠️ 风险提示:本文不构成投资建议。回测过拟合是量化最常见也最隐蔽的陷阱。任何策略的过往表现都不代表未来收益。实盘前请充分回测和模拟盘验证,并自行承担交易风险。
☕️ 如果这篇文章对你有帮助
原创研究不易,你的支持是我持续输出的动力
微信打赏
请我喝杯咖啡 ☕
支付宝打赏
帮助我买些 token 🪙
💬 觉得有用?加入研报交流群
每日推送精选研报解读,与群友一起讨论行业趋势