量化交易系统架构设计:从回测到实盘的4层分层方案(附架构图)

一、90%的新手都踩过的坑

先问你一个问题:你是不是也这样?

在Jupyter Notebook里写了一段策略代码,回测曲线漂亮得不行,年化30%、夏普2.0。于是兴奋地准备实盘,结果发现------回测代码根本没法直接用。

数据获取方式不一样、信号触发的逻辑要重写、订单成交的情况比想象中复杂一万倍......

我感觉大多数的量化新手都可能会踩到这个坑:回测一套代码,实盘另一套代码。

所以,我个人认为对应的解决方案是什么呢?答案是:分层架构。

今天这篇文章,我分享一个生产级量化交易系统的4层架构的拆解,不涉及代码,只讲核心思路和设计要点。希望看完你也就能画出自己的架构图。

  • 量化交易系统的4层架构

分层的价值:

  1. 改策略时,不影响数据获取和下单
  2. 换数据源时,策略层不需要改动
  3. 核心优势:回测和实盘共用同一套策略逻辑

三、第1层:数据层

职责:获取、清洗、对齐行情数据

设计要点:

|----------|--------|-------------|
| 数据类型 | 用途 | 要点 |
| 历史数据 | 回测 | 需要清洗,注意未来函数 |
| 实时数据 | 实盘 | 处理延迟,保证连续性 |

最容易踩的坑------未来函数

用"未来"的数据计算"现在"的信号。例如:用当天的收盘价计算均线,然后在同一天买入。

回测里没问题,因为你知道当天收盘价。但实盘里,收盘价是收盘后才确定的。

正确做法:日线策略用前一天收盘价计算信号,第二天开盘交易。

数据层原则:策略层拿到的数据,无论回测还是实盘,格式必须一致。

四、第2层:策略层

职责:根据行情数据和当前持仓,生成交易信号

输入:行情数据 + 持仓状态

输出:买入/卖出/持有

设计原则:

不关心数据从哪里来,只接收标准格式

不负责下单,只返回信号

核心判断逻辑可复用

回测与实盘的差异:策略逻辑可以复用,但需要适配不同的接口(回测引擎的模拟接口 vs 实盘的API接口)。

五、第3层:风控层

这是最容易放错位置的一层。

风控层应该在策略层和执行层之间,而不是在执行层之后。因为风控应该在下单之前检查,而不是等订单发出后再拦截。

风控指标示例:

|---------|-----------|
| 指标 | 触发动作 |
| 单笔亏损超限 | 拒绝信号或强制平仓 |
| 账户回撤超限 | 暂停所有新开仓 |
| 持仓集中度超限 | 拒绝超限的开仓信号 |
| 信号频率过高 | 拒绝高频信号 |

设计原则:

  1. 独立运行,与策略逻辑分离
  2. 优先执行,优先级高于策略信号
  3. 实时监控,在每个信号进入执行层之前检查

六、第4层: 执行层

职责:接收通过风控的信号,转换成订单,发送到交易所

核心功能:

|--------|---------------------|
| 功能 | 说明 |
| 订单转换 | 信号转为具体的限价单/市价单 |
| 状态管理 | 跟踪订单状态(已提交/已成交/已取消) |
| 重试机制 | 未成交时按规则撤单重发 |
| 成交反馈 | 将成交结果回写给策略层 |

最容易忽略的坑------假设一定能成交

回测里下买单,默认下一秒成交。实盘里可能遇到流动性不足、滑点、网络延迟。

执行层原则:

  1. 不假设成交,等待交易所返回确认
  2. 设置超时,超时后撤单或降级
  3. 记录实际成交价,反馈给风控层

七、完整数据流

  1. 数据层推送最新行情
  2. 策略层计算信号
  3. 风控层检查:通过则继续,拒绝则记录日志
  4. 执行层发送订单到交易所
  5. 交易所返回成交结果
  6. 执行层更新持仓,回写给策略层
  7. 等待下一笔行情,循环

关键点:成交回报必须回写给策略层,否则策略层不知道当前仓位,无法决定下一个信号。


八、总结

核心收获:

四层架构:数据层、策略层、风控层、执行层

风控层必须在策略层和执行层之间

分层的价值:策略逻辑可复用,每层独立优化

你可以立即做的:

检查现有系统:风控在下单前还是下单后?

如果在下单后,考虑调整位置

加上最简单的风控:比如单笔亏损超限就拒绝下一个开仓信号

你的量化系统现在的架构是怎么样的呢?欢迎在评论区跟我分享讨论!

相关推荐
Constantine372 小时前
最强生图模型GPT-image-2正式上线!附教程
人工智能·gpt
MaoziShan2 小时前
CMU Subword Modeling | 23 Syllables and Syllabification
前端·人工智能·机器学习·语言模型·自然语言处理·中文分词
程序员柒叔2 小时前
Agent / Subagent / Swarm 解析:ClaudeCode源码深度解读
人工智能·后端
AI浩2 小时前
PF-RPN:无需提示的通用区域提议网络
人工智能
blxr_2 小时前
深入Spring AI RAG:揭秘RetrievalAugmentationAdvisor的过滤器机制
人工智能·spring
qq_348231852 小时前
企业级避坑指南
人工智能·学习
番茄去哪了2 小时前
JeecgBoot框架集成spring ai并进行同步调用异步调用模板
java·人工智能·spring
X journey2 小时前
机器学习进阶(22):朴素贝叶斯
人工智能·机器学习