工具篇(一)搞定了数据源,工具篇(二)用 vn.py 跑通了海龟策略的回测,工具篇(三)把 K 线、均线、MACD、RSI、F10、盘口这些概念对应到了同花顺手机 App 的真实界面上。到这一步,你已经能拿到数据、能看懂盘面、能跑历史回测。
但这还远远不够。一个真实可用的量化策略,不是一段能跑通的回测代码,而是一套能日复一日稳定运转的系统。它需要在每天早上 9 点前把数据准备好,在收盘后生成信号,在数据出错时发出告警,在策略失效时提醒你停掉它。
基础知识(三)解决的就是这个问题:从策略想法到可运行系统。
Table of contents
Open Table of contents
引子:策略想法只是起点
很多人入行量化的第一步是:看到一个指标,觉得”这个指标金叉就买入、死叉就卖出好像很赚钱”,于是急匆匆写一段回测代码。如果回测曲线向上,就觉得自己找到了圣杯;如果向下,就换个参数继续试。
这种探索本身没有问题,但它停留在想法层。想法离真正赚钱,中间隔着一整套工程化工作:
- 数据从哪里来?每天怎么更新?
- 因子怎么计算?参数怎么选?
- 回测结果可信吗?是不是过拟合?
- 实盘怎么下单?风控怎么设?
- 系统每天自己跑,出错了谁发现?
工程化不是让策略变复杂,而是让策略从一次性玩具变成可持续运转的机器。
这一篇按一个完整量化系统的自然分层来组织:
数据层 → 因子层 → 策略层 → 回测层 → 执行层 → 监控层
每一层都会讲清楚:它解决什么问题、有哪些常见做法、新手最容易踩什么坑。读完你应该能画出自己第一个”最小可运行系统”的架构图。
第一层:量化策略的工程化全景
1.1 一个完整系统的分层结构
把量化系统拆开看,基本就是六个层次:

| 层次 | 职责 | 典型问题 |
|---|---|---|
| 数据层 | 获取、清洗、存储、更新市场数据 | 数据缺失、复权错误、停牌处理 |
| 因子层 | 从原始数据计算特征 | 未来函数、参数选择、计算效率 |
| 策略层 | 把信号变成买卖决策 | 选股、择时、仓位、再平衡 |
| 回测层 | 用历史数据验证策略 | 过拟合、成本估计、前视偏差 |
| 执行层 | 把决策变成真实或模拟订单 | 滑点、成交率、异常处理 |
| 监控层 | 观察系统健康与策略绩效 | 数据延迟、信号异常、绩效衰减 |
这六层不是一次性写完就结束,而是每天都在运转。数据层每天早上更新,因子层和策略层在数据就绪后计算,执行层在交易时段工作,监控层全天候运行。
1.2 从想法到实盘的八个阶段
一个策略从脑中的念头到真实账户里的买卖,通常要经历八个阶段:

- Idea:观察到某个市场现象。比如”突破 20 日高点的股票后续会惯性上涨”。
- 数据:找到能验证这个想法的数据。比如日线 OHLCV、个股基本面数据。
- 因子:把现象量化成可计算的特征。比如”今日收盘价是否大于过去 20 日最高价”。
- 信号:根据因子生成买卖信号。比如突破为 1,未突破为 0。
- 回测:在历史数据上模拟交易,看过去赚不赚钱。
- 模拟盘:用接近真实的环境跑一段时间,但不真金白银下单。
- 实盘:接入券商 API 或手动执行信号。
- 监控迭代:观察绩效,失效时调整或下架。
大部分人卡在阶段 5 和阶段 6 之间:回测很美好,一到模拟盘就失效。这通常不是策略本身的问题,而是回测没有把真实世界的摩擦算进去。
1.3 为什么”能跑”不等于”能赚钱”
回测代码能跑通,只说明它没有语法错误;回测曲线向上,只说明它在历史数据上有效。实盘能不能赚钱,取决于你能不能处理以下问题:
- 数据质量:历史数据是清洗过的,实盘数据可能延迟、缺失、出错。
- 交易成本:佣金、印花税、滑点、冲击成本会吃掉利润。
- 执行差异:回测按收盘价成交,实盘可能买不到或卖不掉。
- 市场变化:历史规律会失效,尤其是被太多人知道的规律。
- 心理因素:实盘亏损时,你能不能严格执行系统信号?
工程化的价值,就是把这些不确定性和摩擦尽量量化、自动化、可控化。
第二层:数据层——策略的燃料
2.1 数据源类型与选择
量化策略的输入永远是数据。数据质量决定策略上限,数据问题决定策略下限。
常见数据源:
| 类型 | 例子 | 优点 | 缺点 |
|---|---|---|---|
| 免费财经接口 | AKShare、Tushare 免费版、Yahoo Finance | 成本低、入门友好 | 频率低、限流、不稳定 |
| 付费数据商 | Wind、同花顺 iFinD、聚源 | 质量高、字段全 | 贵、有授权限制 |
| 券商 API | 中泰 XTP、华宝 LTS、QMT | 可直接交易、实时性好 | 接入复杂、门槛高 |
| 交易所官方 | 上交所、深交所历史行情 | 权威 | 格式原始、清洗工作大 |
个人和小团队建议的路径:免费接口跑通策略 → 付费数据验证 → 券商接口实盘。
2.2 数据清洗
原始数据很少能直接用。清洗工作通常包括:
- 停牌处理:停牌日没有交易,不能当成普通 0 值。
- 复权处理:分红送股会导致价格跳空,必须前复权或后复权。
- 缺失值:有些字段在某些日期缺失,要决定是插值、删除还是用前值填充。
- 异常值:价格或成交量突然跳变,可能是数据错误。
- 退市处理:回测时如果包含已退市股票,会产生幸存者偏差。
数据清洗没有统一标准,核心原则是:清洗规则要在回测和实盘之间保持一致。
2.3 数据存储
数据量小的时候 CSV 就够了,但系统稍微复杂一点就要考虑更专业的存储:
| 格式 | 适用场景 |
|---|---|
| CSV | 入门、少量股票、快速查看 |
| SQLite | 单文件数据库,适合本地策略 |
| PostgreSQL/MySQL | 多用户、高频写入、复杂查询 |
| Parquet | 大量列式数据、压缩率高、读取快 |
| HDF5 | 时间序列数据、科学计算场景 |
对大多数个人量化者来说,SQLite + Parquet 的组合性价比最高:SQLite 存元数据和配置,Parquet 存日线/分钟线这种结构化时间序列。
2.4 数据更新 Pipeline
一个稳定的数据 pipeline 通常长这样:

每天早上收盘后或盘前,系统执行以下步骤:
- 拉取:从数据源获取最新行情、财务、龙虎榜等数据。
- 校验:检查数据完整性,比如交易日是否连续、价格是否在合理范围。
- 清洗:复权、去重、处理停牌和缺失值。
- 落库:写入数据库或文件。
- 通知:更新成功后记录日志,失败时发送告警。
这个 pipeline 最好用定时任务(如 Linux cron、Airflow、GitHub Actions)自动化,而不是每天手动跑脚本。
第三层:因子与信号层
3.1 因子是什么
**因子(Factor)**是从原始数据中提取出来的、能解释或预测收益的特征。
举个例子:
原始数据:收盘价序列 [10, 11, 12, 11, 13]
因子:5 日均线 = (10+11+12+11+13) / 5 = 11.4
信号:收盘价 > 5 日均线 → 买入
因子把模糊的市场观察变成了可计算、可比较、可回测的数字。
3.2 常见因子类型
| 类型 | 例子 | 来源 |
|---|---|---|
| 技术面 | MA、MACD、RSI、布林带、成交量 | K 线/成交量 |
| 基本面 | PE、PB、ROE、净利润增速 | 财报 |
| 宏观 | 利率、汇率、CPI、PMI | 宏观经济数据 |
| 另类 | 舆情、北向资金、龙虎榜 | 非传统数据源 |
新手建议从技术面因子入手,因为数据最容易获取、逻辑最直观。但要知道,纯技术因子的生命周期通常较短,因为市场竞争激烈。
3.3 信号生成
单个因子往往不够稳定,实际中常见三种信号生成方式:
- 单因子阈值:RSI < 30 买入,RSI > 70 卖出。简单但容易失效。
- 多因子打分:每个股票按多个因子打分,选总分最高的 N 只。更稳健但参数更多。
- 机器学习模型:用历史数据训练模型预测收益。能力强但过拟合风险高。
信号生成的一个核心原则是:信号必须有明确的经济逻辑或行为逻辑支撑,而不是纯粹的数据拟合。
3.4 因子有效性检验
不要看到一个因子回测好就信。至少要检验三个指标:
- IC(Information Coefficient):因子值与未来收益的相关性。IC 越高,预测能力越强。
- IR(Information Ratio):IC 的均值除以标准差。衡量因子稳定性。
- 分层回测:按因子值把股票分成 5 组或 10 组,看各组收益是否单调。好的因子应该顶层收益高、底层收益低。
如果一个因子只在全样本上有效,但分层测试看不出单调性,那它很可能是过拟合出来的。
第四层:策略层
4.1 选股策略
选股策略回答买什么。
常见做法:
- 条件筛选:PE < 20 且 ROE > 15% 且市值 > 100 亿。
- 排序法:按某个综合得分排序,选前 N 只。
- 指数增强:以某个指数为基准,在行业/风格约束下选强势股。
选股的关键是可解释性和容量。一个只能在 10 只小盘股上有效的策略,实盘很难复制。
4.2 择时策略
择时策略回答什么时候买、什么时候卖。
常见信号:
- 金叉死叉:短期均线上穿长期均线买入,下穿卖出。
- 突破:价格突破前高买入,跌破前低卖出。
- 均值回归:价格偏离均线过多时反向操作。
- 多因子择时:用宏观因子或情绪因子判断整体仓位。
择时的难点在于:市场大部分时间没有明确趋势,频繁交易会被成本吃掉。
4.3 仓位管理
仓位管理决定买多少。
常见方法:
| 方法 | 说明 | 适用场景 |
|---|---|---|
| 固定金额 | 每只标的买固定金额 | 简单、适合初学者 |
| 等权重 | 每只入选标的买相同权重 | 分散化、容量大 |
| 风险平价 | 按波动率反比分配仓位 | 控制风险贡献 |
| 凯利公式 | 根据胜率和盈亏比计算最优仓位 | 理论最优、对输入敏感 |
| 单笔风险法 | 每笔交易最多亏总资金的 1%~2% | 控制风险、保护本金 |
对初学者最实用的是单笔风险法:先确定每笔交易最多能承受多少亏损,再反推仓位大小。这与基础知识(一)里讲的单笔 2% 风险原则是一致的。
4.4 再平衡与调仓频率
再平衡(Rebalance)指定期调整持仓,让组合回到目标状态。
- 日频:适合高频策略,但交易成本高。
- 周频/月频:适合中低频因子策略,摩擦较小。
- 事件触发:达到某个条件才调仓,如止损、止盈。
调仓频率不是越频繁越好。频率越高,信号噪音越大,成本越高。
第五层:回测层
5.1 回测不是”验证”,是”证伪”
这是最重要的心态转换。回测的目的不是证明策略能赚钱,而是尽可能找出策略的问题。
一个好的回测流程应该主动问自己:
- 这个结果是不是过拟合出来的?
- 换一段时期、换一批股票还成立吗?
- 成本算足了吗?
- 有没有用到未来数据?
- 如果实盘 execution 不如回测理想,结果会怎样?
5.2 过拟合:最大的敌人
过拟合(Overfitting)指策略过度贴合历史数据,对未来的预测能力很差。
常见原因:
- 参数太多:同时优化十几个参数,总能找到一段历史表现好的组合。
- 样本内优化:用同一批数据反复调试策略。
- 幸存者偏差:回测股票池不包含已退市股票。
- 数据挖掘:试了几十种因子组合,只报告最好的那个。
应对方法:
- 样本外测试:用一段未参与训练的数据验证。
- 滚动回测:用滚动窗口不断重新训练和验证。
- 简化模型:参数越少越不容易过拟合。
- 交叉验证:把时间序列切成多段分别测试。
5.3 交易成本与滑点
回测时最常见的错误是低估成本。
A 股交易成本包括:
- 佣金:通常万 1 到万 3,最低 5 元。
- 印花税:卖出时收 0.05%(2026 年标准)。
- 过户费:成交金额的 0.001%(沪市)。
- 滑点:下单价与实际成交价之间的差异。
- 冲击成本:大额订单影响市场价格。
一个日内策略如果单笔利润只有 0.1%,扣除佣金和滑点后可能根本没有盈利空间。
5.4 A 股特殊约束
回测引擎默认是理想环境,但 A 股有很多特殊约束:
- T+1:今天买的股票明天才能卖。
- 涨跌停:涨停买不到,跌停卖不出。
- 最小单位:买入必须是 100 股整数倍。
- 集合竞价:开盘和收盘价格是撮合出来的,不一定能按你的价格成交。
- 停牌:停牌日无法交易。
如果回测没有模拟这些约束,结果会显著优于实盘。
5.5 前视偏差与未来函数
**前视偏差(Look-ahead Bias)**指在回测中使用了当时还不存在的信息。
经典错误:
- 用当天的收盘价决定当天的买卖。实际上收盘后才能知道收盘价。
- 用当季度财报数据交易当季股票。财报是季度结束后才公布的。
- 用全样本均值做标准化。回测时只能用到当前时点之前的数据。
未来函数是量化回测里最隐蔽、最致命的错误之一。发现它的唯一办法是:严格按时间顺序检查每一个输入变量。
第六层:绩效分析
6.1 收益率指标
最基础的指标:
- 总收益率:(期末资金 - 期初资金) / 期初资金。
- 年化收益率:把总收益换算成按年复合的收益率。
- 超额收益:策略收益减去基准收益。
光看收益率没意义,必须结合风险看。
6.2 风险指标
| 指标 | 含义 | 用法 |
|---|---|---|
| 夏普比率 | 每承担一单位总风险,获得多少超额收益 | > 1 通常认为可接受,> 2 较好 |
| 最大回撤 | 从历史高点到低点的最大亏损幅度 | 越小越好,反映极端风险 |
| Calmar 比率 | 年化收益 / 最大回撤 | 综合考虑收益和风险 |
| 年化波动率 | 收益率的标准差 | 衡量收益波动程度 |

6.3 盈亏结构与胜率
- 胜率:盈利交易次数 / 总交易次数。
- 盈亏比:平均盈利 / 平均亏损。
- 期望收益:胜率 × 平均盈利 - (1 - 胜率) × 平均亏损。
高胜率低盈亏比的策略(如趋势跟踪)和低胜率高盈亏比的策略(如均值回归)都可以赚钱,关键是期望收益为正。
6.4 绩效归因
绩效归因回答:赚的钱到底从哪里来。
常见归因维度:
- 选股能力:是不是选对了股票?
- 择时能力:是不是买在低点、卖在高点?
- 行业配置:是不是押中了强势行业?
- 风格暴露:是不是承担了某种风格风险(如小市值、高 Beta)?
如果你的收益主要来自”买了小市值股票”,那这不是 Alpha,而是风格暴露。市场风格一变,策略就会失效。
第七层:执行层
7.1 模拟盘
模拟盘(Paper Trading)是回测和实盘之间的桥梁。
模拟盘的目的不是再验证一次策略,而是验证:
- 数据 pipeline 是否能每日稳定运行。
- 信号生成是否与回测一致。
- 订单逻辑是否正确。
- 成本估计是否合理。
建议至少跑 3~6 个月模拟盘,覆盖不同市场环境,再考虑实盘。
7.2 实盘接入
实盘接入主要有三条路径:
| 路径 | 代表 | 特点 |
|---|---|---|
| 券商 API | QMT、恒生 PTrade、中泰 XTP | 直接对接券商,延迟低 |
| 量化平台 | 聚宽、米筐、BigQuant | 上手快,但策略跑在平台上 |
| 半自动执行 | 系统生成信号,手动下单 | 最保守,适合初期验证 |
初学者建议从半自动执行开始:系统生成交易信号和买卖价格,人最终确认下单。这样既能验证系统,又不会因为程序 bug 造成大损失。
7.3 风控系统
风控不是可有可无的插件,而是系统的核心组件。分三层:

- 事前风控:下单前检查仓位、单笔风险、当日最大亏损、黑名单等。
- 事中风控:交易过程中监控异常价格、异常成交量、系统延迟。
- 事后风控:收盘后分析当日交易,检查是否有异常偏离。
风控规则应该是硬编码的,不能随意关闭。比如”单日亏损超过 5% 自动停止交易”这种规则,不能因为”我觉得今天会反弹”就手动绕过。
7.4 异常处理
真实交易会出现各种回测时想不到的异常:
- 数据源延迟或中断。
- 券商 API 返回错误。
- 订单部分成交。
- 网络超时。
- 程序崩溃。
系统设计时要考虑:
- 每个环节都要有超时和重试机制。
- 异常必须记录日志并告警。
- 关键操作要有幂等性:同样的信号不能重复下单。
- 系统启动时要有自检:数据是否完整、配置是否正确。
第八层:监控与运维
8.1 日志系统
日志是量化系统的黑匣子。每笔交易、每个信号、每次异常都应该记录:
- 信号生成时间、标的、方向、价格。
- 下单时间、价格、数量、状态。
- 成交回报、费用、滑点。
- 数据更新状态、校验结果。
日志不要只打印在控制台,要写入文件或数据库,便于事后审计。
8.2 告警机制
需要告警的典型场景:
- 数据未按时更新。
- 信号生成异常(如全仓信号、空仓信号)。
- 订单失败或部分成交。
- 单日亏损超过阈值。
- 策略绩效连续多日跑输基准。
告警渠道可以是邮件、短信、企业微信、钉钉。关键是告警要有分级:严重异常立即通知,普通异常事后汇总。
8.3 数据质量监控
数据质量监控通常包括:
- 价格是否跳空异常。
- 成交量是否为 0 或异常放大。
- 复权因子是否连续。
- 交易日是否缺失。
- 财务数据公布日期是否合理。
数据质量问题是实盘亏损最常见的原因之一。一个每天自动校验数据质量的脚本,价值不亚于策略本身。
8.4 策略衰减与迭代
任何策略都有生命周期。当越来越多的人知道并使用同一个规律,它的超额收益就会消失。
策略衰减的信号:
- 夏普比率连续下降。
- 最大回撤超过历史水平。
- 胜率或盈亏比明显变差。
- 实盘收益与回测偏离越来越大。
应对策略衰减的方法:
- 监控:持续跟踪策略绩效。
- 迭代:根据市场变化调整因子或参数。
- 下架:当策略持续失效时,果断停止。
- 组合:多个低相关策略组合,降低单一策略失效的影响。
闭环:搭建一个最小可运行系统
把以上内容压缩成一个最小可运行系统(MVP),它不需要很华丽,但必须完整闭环:

每日流程:
- 收盘后自动拉取当日行情数据。
- 清洗并校验数据。
- 计算因子并生成交易信号。
- 检查风控规则。
- 输出次日交易计划(买入/卖出/持仓)。
- 发送通知(邮件/微信)。
- 记录日志。
技术栈建议(适合个人):
- 数据:AKShare + SQLite/Parquet
- 计算:Pandas + NumPy
- 回测:Backtrader / vn.py / 自研脚本
- 定时:Linux cron / macOS launchd / GitHub Actions
- 通知:邮件 / 企业微信机器人
- 日志:Python logging
这个 MVP 不能让你暴富,但能让你在控制风险的前提下,系统地验证自己的想法。
下一步
基础知识(三)把”策略工程化”的全景补上了。到这一步,你已经有了:
- 工具:能拿到数据、能回测、能看盘。
- 知识:懂市场、懂指标、懂财报、懂系统架构。
下一步可以进入具体策略类型的学习,比如:
- 趋势跟踪策略
- 均值回归策略
- 多因子选股策略
- 统计套利策略
每一种策略类型都会有自己的工程化细节,但底层框架已经搭好。
参考资料
- 《量化交易探索-工具篇(一)》:macOS 上从零搭建 AKShare 数据环境
- 《量化交易探索-工具篇(二)》:vn.py 回测框架接入海龟策略
- 《量化交易探索-工具篇(三)》:同花顺手机 App 实战看盘
- 《量化交易探索-基础知识(一)》:K 线、成交量、技术指标、交易系统
- 《量化交易探索-基础知识(二)》:财报三张表、PE/PB/ROE、价值与成长、板块轮动