Skip to content
Go back

量化交易探索-基础知识(三)

Edit page

工具篇(一)搞定了数据源,工具篇(二)用 vn.py 跑通了海龟策略的回测,工具篇(三)把 K 线、均线、MACD、RSI、F10、盘口这些概念对应到了同花顺手机 App 的真实界面上。到这一步,你已经能拿到数据、能看懂盘面、能跑历史回测。

但这还远远不够。一个真实可用的量化策略,不是一段能跑通的回测代码,而是一套能日复一日稳定运转的系统。它需要在每天早上 9 点前把数据准备好,在收盘后生成信号,在数据出错时发出告警,在策略失效时提醒你停掉它。

基础知识(三)解决的就是这个问题:从策略想法到可运行系统

Table of contents

Open Table of contents

引子:策略想法只是起点

很多人入行量化的第一步是:看到一个指标,觉得”这个指标金叉就买入、死叉就卖出好像很赚钱”,于是急匆匆写一段回测代码。如果回测曲线向上,就觉得自己找到了圣杯;如果向下,就换个参数继续试。

这种探索本身没有问题,但它停留在想法层。想法离真正赚钱,中间隔着一整套工程化工作:

工程化不是让策略变复杂,而是让策略从一次性玩具变成可持续运转的机器

这一篇按一个完整量化系统的自然分层来组织:

数据层 → 因子层 → 策略层 → 回测层 → 执行层 → 监控层

每一层都会讲清楚:它解决什么问题、有哪些常见做法、新手最容易踩什么坑。读完你应该能画出自己第一个”最小可运行系统”的架构图。

第一层:量化策略的工程化全景

1.1 一个完整系统的分层结构

把量化系统拆开看,基本就是六个层次:

量化系统分层架构

层次职责典型问题
数据层获取、清洗、存储、更新市场数据数据缺失、复权错误、停牌处理
因子层从原始数据计算特征未来函数、参数选择、计算效率
策略层把信号变成买卖决策选股、择时、仓位、再平衡
回测层用历史数据验证策略过拟合、成本估计、前视偏差
执行层把决策变成真实或模拟订单滑点、成交率、异常处理
监控层观察系统健康与策略绩效数据延迟、信号异常、绩效衰减

这六层不是一次性写完就结束,而是每天都在运转。数据层每天早上更新,因子层和策略层在数据就绪后计算,执行层在交易时段工作,监控层全天候运行。

1.2 从想法到实盘的八个阶段

一个策略从脑中的念头到真实账户里的买卖,通常要经历八个阶段:

策略生命周期

  1. Idea:观察到某个市场现象。比如”突破 20 日高点的股票后续会惯性上涨”。
  2. 数据:找到能验证这个想法的数据。比如日线 OHLCV、个股基本面数据。
  3. 因子:把现象量化成可计算的特征。比如”今日收盘价是否大于过去 20 日最高价”。
  4. 信号:根据因子生成买卖信号。比如突破为 1,未突破为 0。
  5. 回测:在历史数据上模拟交易,看过去赚不赚钱。
  6. 模拟盘:用接近真实的环境跑一段时间,但不真金白银下单。
  7. 实盘:接入券商 API 或手动执行信号。
  8. 监控迭代:观察绩效,失效时调整或下架。

大部分人卡在阶段 5 和阶段 6 之间:回测很美好,一到模拟盘就失效。这通常不是策略本身的问题,而是回测没有把真实世界的摩擦算进去

1.3 为什么”能跑”不等于”能赚钱”

回测代码能跑通,只说明它没有语法错误;回测曲线向上,只说明它在历史数据上有效。实盘能不能赚钱,取决于你能不能处理以下问题:

工程化的价值,就是把这些不确定性和摩擦尽量量化、自动化、可控化

第二层:数据层——策略的燃料

2.1 数据源类型与选择

量化策略的输入永远是数据。数据质量决定策略上限,数据问题决定策略下限。

常见数据源:

类型例子优点缺点
免费财经接口AKShare、Tushare 免费版、Yahoo Finance成本低、入门友好频率低、限流、不稳定
付费数据商Wind、同花顺 iFinD、聚源质量高、字段全贵、有授权限制
券商 API中泰 XTP、华宝 LTS、QMT可直接交易、实时性好接入复杂、门槛高
交易所官方上交所、深交所历史行情权威格式原始、清洗工作大

个人和小团队建议的路径:免费接口跑通策略 → 付费数据验证 → 券商接口实盘

2.2 数据清洗

原始数据很少能直接用。清洗工作通常包括:

数据清洗没有统一标准,核心原则是:清洗规则要在回测和实盘之间保持一致

2.3 数据存储

数据量小的时候 CSV 就够了,但系统稍微复杂一点就要考虑更专业的存储:

格式适用场景
CSV入门、少量股票、快速查看
SQLite单文件数据库,适合本地策略
PostgreSQL/MySQL多用户、高频写入、复杂查询
Parquet大量列式数据、压缩率高、读取快
HDF5时间序列数据、科学计算场景

对大多数个人量化者来说,SQLite + Parquet 的组合性价比最高:SQLite 存元数据和配置,Parquet 存日线/分钟线这种结构化时间序列。

2.4 数据更新 Pipeline

一个稳定的数据 pipeline 通常长这样:

数据更新 Pipeline

每天早上收盘后或盘前,系统执行以下步骤:

  1. 拉取:从数据源获取最新行情、财务、龙虎榜等数据。
  2. 校验:检查数据完整性,比如交易日是否连续、价格是否在合理范围。
  3. 清洗:复权、去重、处理停牌和缺失值。
  4. 落库:写入数据库或文件。
  5. 通知:更新成功后记录日志,失败时发送告警。

这个 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 信号生成

单个因子往往不够稳定,实际中常见三种信号生成方式:

信号生成的一个核心原则是:信号必须有明确的经济逻辑或行为逻辑支撑,而不是纯粹的数据拟合。

3.4 因子有效性检验

不要看到一个因子回测好就信。至少要检验三个指标:

如果一个因子只在全样本上有效,但分层测试看不出单调性,那它很可能是过拟合出来的。

第四层:策略层

4.1 选股策略

选股策略回答买什么

常见做法:

选股的关键是可解释性容量。一个只能在 10 只小盘股上有效的策略,实盘很难复制。

4.2 择时策略

择时策略回答什么时候买、什么时候卖

常见信号:

择时的难点在于:市场大部分时间没有明确趋势,频繁交易会被成本吃掉。

4.3 仓位管理

仓位管理决定买多少

常见方法:

方法说明适用场景
固定金额每只标的买固定金额简单、适合初学者
等权重每只入选标的买相同权重分散化、容量大
风险平价按波动率反比分配仓位控制风险贡献
凯利公式根据胜率和盈亏比计算最优仓位理论最优、对输入敏感
单笔风险法每笔交易最多亏总资金的 1%~2%控制风险、保护本金

对初学者最实用的是单笔风险法:先确定每笔交易最多能承受多少亏损,再反推仓位大小。这与基础知识(一)里讲的单笔 2% 风险原则是一致的。

4.4 再平衡与调仓频率

再平衡(Rebalance)指定期调整持仓,让组合回到目标状态。

调仓频率不是越频繁越好。频率越高,信号噪音越大,成本越高。

第五层:回测层

5.1 回测不是”验证”,是”证伪”

这是最重要的心态转换。回测的目的不是证明策略能赚钱,而是尽可能找出策略的问题

一个好的回测流程应该主动问自己:

5.2 过拟合:最大的敌人

过拟合(Overfitting)指策略过度贴合历史数据,对未来的预测能力很差。

常见原因:

应对方法:

5.3 交易成本与滑点

回测时最常见的错误是低估成本。

A 股交易成本包括:

一个日内策略如果单笔利润只有 0.1%,扣除佣金和滑点后可能根本没有盈利空间。

5.4 A 股特殊约束

回测引擎默认是理想环境,但 A 股有很多特殊约束:

如果回测没有模拟这些约束,结果会显著优于实盘。

5.5 前视偏差与未来函数

**前视偏差(Look-ahead Bias)**指在回测中使用了当时还不存在的信息。

经典错误:

未来函数是量化回测里最隐蔽、最致命的错误之一。发现它的唯一办法是:严格按时间顺序检查每一个输入变量

第六层:绩效分析

6.1 收益率指标

最基础的指标:

光看收益率没意义,必须结合风险看。

6.2 风险指标

指标含义用法
夏普比率每承担一单位总风险,获得多少超额收益> 1 通常认为可接受,> 2 较好
最大回撤从历史高点到低点的最大亏损幅度越小越好,反映极端风险
Calmar 比率年化收益 / 最大回撤综合考虑收益和风险
年化波动率收益率的标准差衡量收益波动程度

绩效指标示意

6.3 盈亏结构与胜率

高胜率低盈亏比的策略(如趋势跟踪)和低胜率高盈亏比的策略(如均值回归)都可以赚钱,关键是期望收益为正

6.4 绩效归因

绩效归因回答:赚的钱到底从哪里来

常见归因维度:

如果你的收益主要来自”买了小市值股票”,那这不是 Alpha,而是风格暴露。市场风格一变,策略就会失效。

第七层:执行层

7.1 模拟盘

模拟盘(Paper Trading)是回测和实盘之间的桥梁。

模拟盘的目的不是再验证一次策略,而是验证:

建议至少跑 3~6 个月模拟盘,覆盖不同市场环境,再考虑实盘。

7.2 实盘接入

实盘接入主要有三条路径:

路径代表特点
券商 APIQMT、恒生 PTrade、中泰 XTP直接对接券商,延迟低
量化平台聚宽、米筐、BigQuant上手快,但策略跑在平台上
半自动执行系统生成信号,手动下单最保守,适合初期验证

初学者建议从半自动执行开始:系统生成交易信号和买卖价格,人最终确认下单。这样既能验证系统,又不会因为程序 bug 造成大损失。

7.3 风控系统

风控不是可有可无的插件,而是系统的核心组件。分三层:

风控三层结构

风控规则应该是硬编码的,不能随意关闭。比如”单日亏损超过 5% 自动停止交易”这种规则,不能因为”我觉得今天会反弹”就手动绕过。

7.4 异常处理

真实交易会出现各种回测时想不到的异常:

系统设计时要考虑:

第八层:监控与运维

8.1 日志系统

日志是量化系统的黑匣子。每笔交易、每个信号、每次异常都应该记录:

日志不要只打印在控制台,要写入文件或数据库,便于事后审计。

8.2 告警机制

需要告警的典型场景:

告警渠道可以是邮件、短信、企业微信、钉钉。关键是告警要有分级:严重异常立即通知,普通异常事后汇总。

8.3 数据质量监控

数据质量监控通常包括:

数据质量问题是实盘亏损最常见的原因之一。一个每天自动校验数据质量的脚本,价值不亚于策略本身。

8.4 策略衰减与迭代

任何策略都有生命周期。当越来越多的人知道并使用同一个规律,它的超额收益就会消失。

策略衰减的信号:

应对策略衰减的方法:

闭环:搭建一个最小可运行系统

把以上内容压缩成一个最小可运行系统(MVP),它不需要很华丽,但必须完整闭环:

最小可运行系统

每日流程

  1. 收盘后自动拉取当日行情数据。
  2. 清洗并校验数据。
  3. 计算因子并生成交易信号。
  4. 检查风控规则。
  5. 输出次日交易计划(买入/卖出/持仓)。
  6. 发送通知(邮件/微信)。
  7. 记录日志。

技术栈建议(适合个人):

这个 MVP 不能让你暴富,但能让你在控制风险的前提下,系统地验证自己的想法

下一步

基础知识(三)把”策略工程化”的全景补上了。到这一步,你已经有了:

下一步可以进入具体策略类型的学习,比如:

每一种策略类型都会有自己的工程化细节,但底层框架已经搭好。

参考资料


Edit page
Share this post on:

Previous Post
量化交易探索-工具篇(三)
Next Post
Ghostty + Yazi 现代终端配置指南