第98页 · 预计8页
一套完整的量化交易系统,不是只有策略代码。它是一个完整的工程,至少包含四层:数据层、策略层、执行层、风控层。
很多新手做系统,上来就写策略逻辑,结果数据不对、执行错了、风控失效,最后亏了钱不知道为什么。
第一层:数据层 数据层是整个系统的基础,负责所有数据的获取、清洗、存储、计算。 行情数据:股票、期货、外汇、加密的K线、tick数据 基本面数据:财报、宏观、行业数据 盘口数据:Level2、逐笔成交、委托队列 衍生数据:指标、因子、信号
数据层的要求:准确、及时、完整。数据错了,后面全错。
第二层:策略层 策略层负责生成交易信号。 策略引擎:运行各个策略的逻辑,计算信号 组合管理:资金分配、仓位管理、信号融合 参数管理:策略参数的配置、更新、优化
策略层的要求:逻辑清晰,可配置,可回测。
第三层:执行层 执行层负责订单的发送和管理。 订单路由:把策略信号转换成实际订单 算法交易:拆单、冰山、VWAP等 通道对接:对接各个交易所、经纪商的API
执行层的要求:快速、稳定、低滑点。
第四层:风控层 风控层是整个系统的安全阀,全程监控风险。 事前风控:下单前检查,有没有超仓位、超风险限额 事中风控:持仓监控、盈亏监控、保证金监控 事后风控:每日对账、风险报告、绩效分析
风控层是独立的,不经过策略层,直接管执行层。哪怕策略层出问题,风控层也能拦住。
四层架构,层层独立,各司其职。这是专业量化系统的标准结构,不要所有逻辑揉在一起。
数据是量化的粮食。多市场交易,数据源多,格式不一样,质量参差不齐,所以数据对接和清洗非常重要。
数据源的多源备份 每个市场至少两个数据源,一主一备。 主数据源:付费的,稳定,质量好 备用数据源:免费的,或者另一家付费的,主源挂了自动切
我自己的配置: A股:主用Tushare Pro,备用AKshare 美股:主用yfinance,备用Alpha Vantage 外汇:主用经纪商API,备用第三方数据源 加密:主用交易所API,备用第三方行情
不要只用一个数据源,哪天接口挂了,系统就停了。
数据清洗的标准流程 拿到原始数据之后,不能直接用,要走清洗流程: 第一步:格式统一。所有市场的数据统一成相同的格式,时间、开高低收、成交量,字段名一致,单位一致。 第二步:异常值检测。检查价格有没有跳空、有没有负数、成交量有没有异常值。比如价格突然跳空10%,又没有除权,就是数据错了。 第三步:缺失值处理。停牌、休市的数据缺失,要标记出来,不能用0或者前值填充。 第四步:复权校准。股票数据要做前复权,检查除权除息有没有处理对。 第五步:时间对齐。不同市场的交易时间不一样,要按各自的时间轴对齐,不要混在一起。
数据清洗看起来麻烦,但这是基础。数据不干净,后面策略回测和实盘都会出问题。我见过至少十个人因为数据没洗对,回测看起来赚钱,实盘亏钱。
数据存储方案 数据量小的话,用CSV存就行,简单方便。 数据量大的话,推荐用关系型数据库PostgreSQL,或者时序数据库InfluxDB。 行情数据:用时序数据库,存的快,查询快 基本面数据:用关系型数据库,结构清晰 交易记录:用关系型数据库,方便对账
我自己的系统,日线数据用PostgreSQL,tick数据用InfluxDB,完全够用。
策略引擎是系统的大脑,负责运行策略逻辑。好的策略引擎应该是模块化的,加新策略不用改核心代码。
模块化设计 每个策略都是一个独立的模块,有统一的输入输出接口。 输入:行情数据、持仓数据、账户资金 输出:交易信号(买卖方向、数量、价格)
策略之间互相不影响,加新策略就加一个模块,不用改其他地方。
策略引擎的运行模式 两种运行模式: 第一种:事件驱动。每来一根K线,或者每来一笔tick,就触发一次策略计算。适合高频、日内策略。 第二种:定时运行。比如每天收盘后运行一次,计算第二天的信号。适合日线级别的中长线策略。
我一般是两种结合:日线策略每天收盘后跑一次,生成第二天的交易计划;日内策略实时驱动,有新数据就计算。
回测与实盘一体化 最好的架构是回测和实盘用同一套策略代码。回测的时候用历史数据,实盘的时候用实时数据,策略逻辑完全一样。
这样避免了回测一套、实盘一套,两边逻辑不一样的问题。很多人回测是回测的代码,实盘是实盘的代码,逻辑有细微差别,结果就对不上。
实现方法就是把策略逻辑写成纯函数,输入数据输出信号。回测的时候喂历史数据,实盘的时候喂实时数据,同一个函数。
实盘运行不能没人管,要有监控和报警。出问题了要能及时知道,不能等亏了很多钱才发现。
监控的三类指标 第一类:系统监控。监控系统本身的状态。 行情是不是正常更新,有没有断 接口是不是正常,有没有报错 服务器状态:CPU、内存、磁盘 程序有没有在运行,有没有崩溃
第二类:交易监控。监控交易和持仓。 持仓是不是和策略预期一致 订单有没有正常成交 当日盈亏、总盈亏 保证金使用率
第三类:风险监控。监控风险指标。 总仓位有没有超限 单个策略仓位有没有超限 最大回撤有没有到预警线 波动率有没有异常
报警方式 报警分几个等级: 通知级:比如程序重启了、数据切换到备用源了,发个消息就行,不紧急。 预警级:比如回撤到5%、保证金到70%了,需要关注,不用立刻处理。 紧急级:比如策略异常下单、风控触发、程序崩溃,要立刻处理,最好电话+短信+消息一起提醒。
我用的报警渠道: 钉钉/企业微信机器人:普通通知,每天的日报 短信:紧急情况,比如强平预警 电话:最紧急的,比如账户异常亏损
不要只用一种报警方式,万一软件没打开,或者没网,就收不到了。
量化系统是7x24小时运行的,尤其是外汇和加密,不能停。所以容灾非常重要。
本地容灾 单台服务器的话,至少要: 定时备份。每天收盘后备份所有数据和配置。 看门狗程序。监控主程序,崩溃了自动重启。 备用配置。所有参数都有备份,配置坏了立刻切回上一版本。
多机高可用 资金量大的话,至少两台服务器,一主一备。 主机正常运行,备机同步数据,待命。 主机出问题了,备机立刻接管,继续运行。 切换时间要控制在1分钟以内,不能耽误交易。
更高级的是多活架构,多个服务器同时运行,分摊压力,一个坏了不影响其他的。但个人一般用不上。
极端情况预案 最极端的情况:服务器全挂了,网络断了。 要有应急预案:
手机版交易软件,随时可以手动平仓
经纪商的紧急联系电话,关键时刻可以打电话下单
全部清仓的应急按钮,一键平掉所有仓位
永远不要觉得系统不会出问题。做交易的,什么极端情况都会遇到。有预案,出事才不慌。
如果你需要搭建量化交易系统,或者现有系统需要升级,可以访问intoquant.com壹信量化官网,提供从架构设计到代码实现的全流程服务。
本章实战笔记
系统是工程,不是算法。量化交易80%的工作是工程,只有20%是策略。不要只研究算法,工程能力同样重要。
风控是独立的一层。不要把风控写在策略里,要独立出来,直接管执行层。策略失效的时候,风控才是最后一道防线。
监控和报警不能省。你不可能24小时盯着屏幕,系统要能自己喊救命。
永远有预案。你觉得不会出的问题,早晚会出。容灾和应急方案,有备无患。
本章核心公式卡 系统可用率目标:99.9% 年停机时间不超过8.76小时
数据清洗五步法: 格式统一 → 异常值检测 → 缺失值处理 → 复权校准 → 时间对齐
四层架构: 数据层 → 策略层 → 执行层 → 风控层 层层独立,风控直连执行层
本章实战清单
系统搭建清单 - 四层架构设计:数据、策略、执行、风控 - 每个市场至少两个数据源,一主一备 - 模块化策略引擎,回测实盘同一套代码 - 独立风控层,事前事中风控齐全 - 三级报警体系,多渠道通知
运维保障清单 - 每日数据备份,配置备份 - 看门狗程序,异常自动重启 - 服务器监控:CPU、内存、磁盘 - 每周一次全链路检查 - 极端情况应急预案,手动平仓渠道
⚠️ 风险提示:本书内容仅为量化研究与知识分享,不构成任何投资建议。套利交易存在基差、费率、流动性、平台与极端行情等风险,历史表现不代表未来收益。投资有风险,入市需谨慎,请自主决策、量力而行。
💡 键盘 ←/→ 翻章 · T 键切换目录