天弘基金:基于 DolphinDB 订单簿引擎的毫秒级决策体系
文章页面提供标题与基础发布信息(作者/日期)。
Source: https://dolphindb.cn/blogs/170
What this page covers
- 业务场景与需求(高频策略与订单簿快照限制相关)。
- 引擎核心能力适配(交易所规则与乱序数据容错参数)。
- 数据治理标准化与实时流处理架构。
- 示例:创建订单簿快照引擎与释放方法。
- 历史批计算调用(深交所/上交所)。
- 实时流计算调用(subscribeTable 订阅与约束)。
- 行业实践启示(技术、合规与业务扩展成果)。
技能认证特训营第二期正式开启(限时报名)
页面顶部的活动报名引导与福利优惠信息。
- 页面包含活动报名引导信息。
- 页面包含与报名相关的福利或优惠描述。
天弘基金:基于 DolphinDB 订单簿引擎的毫秒级决策体系
文章标题与基础发布信息(作者/日期)。
- 发布日期为 2025-03-31。
- 该页面为一篇文章页面。
业务场景与需求
描述天弘基金量化团队在高频策略与订单簿快照频率限制下的业务痛点与引入方案目标。
- 天弘基金被描述为国内领先的基金管理公司。
- 订单簿数据为 3 秒频率快照。
- 微观结构分析需求覆盖科创板及创业板标的。
- 快照间隙可能导致瞬时有效报价信号丢失。
- 天弘基金引入 DolphinDB 订单簿引擎构建毫秒级实时合成体系。
技术方案设计:引擎核心能力适配
说明订单簿引擎在多市场规则与乱序数据容错方面的关键参数与适配方式。
- exchange="XSHE" 启用深交所股票处理逻辑。
- exchange="XSHE" 会自动应用创业板价格笼子规则。
- exchange="XSHG" 处理上交所标的。
- exchange="XSHG" 兼容本方最优等特殊委托类型。
- 乱序数据容错参数可设置 orderBySeq=true。
- 乱序重建依据字段为 ApplSeqNum。
- 实测可处理单通道 15% 数据乱序率。
技术方案设计:数据治理标准化
描述逐笔数据治理、委托类型映射,以及实时流处理架构与吞吐量。
- 深交所逐笔委托数据治理会补全 BuyNo/SellNo 为零值。
- 上交所市价单类型映射:49→限价单。
- 上交所市价单类型映射:50→本方最优。
- 部署 4 个 INSIGHT 插件实例分通道订阅数据。
- 构建共享流表 orderTrans 用于数据汇聚。
- orderTrans 日均吞吐量达 1.2 亿条逐笔记录。
示例:合成 1 秒频率订单簿(创建引擎与释放)
提供创建订单簿快照引擎的示例脚本与释放引擎方法。
- 示例引擎每 1 秒计算输出深交所股票 10 档订单簿。
- 示例参数 orderbookDepth=10。
- 示例参数 intervalInMilli=1000。
- 示例参数 date=2022.01.10。
- 示例参数 startTime=09:30:00.000。
- 释放引擎方法为 dropStreamEngine("demo")。
历史批计算调用(深交所/上交所)
展示通过向引擎批量注入数据进行批计算,以及针对不同交易所的引擎参数设置与结果展示。
- 可通过 tableInsert 或 append! 批量注入输入数据实现批计算。
- 深交所批计算示例从 ./orderTrans.csv 加载数据。
- 深交所批计算示例按 ApplSeqNum 排序后 append! 到引擎。
- 上交所订单簿计算可在创建引擎时指定 exchange="XSHG"。
实时流计算调用(subscribeTable 订阅与约束)
说明通过订阅共享流表将引擎作为 handler 进行实时计算,并给出使用约束。
- 可通过 subscribeTable 订阅共享流表 orderTrans。
- handler 可直接指定为订单簿引擎 getStreamEngine("demo")。
- 实时订阅时需保证 orderTrans 最多仅包含一个通道逐笔数据。
- 合成沪深两种订单簿需要创建不同的订单簿引擎。
合成包含衍生指标(逐笔成交明细)的订单簿
展示扩展输出列映射与数组化订单簿字段、增加 ReceiveTime 输入列并生成更丰富结果表的示例。
- 示例每 1 秒输出深交所 10 档订单簿。
- 示例启用 tradeDetail=true 以扩展逐笔成交明细字段。
- 扩展逐笔成交明细的输入数据需包含 ReceiveTime 列。
- ReceiveTime 表示每条逐笔数据的接收时间。
合成包含用户自定义指标的订单簿
定义并输出用户自定义指标(平均挂单时长与撤单量)并展示对应的引擎创建、注入与结果说明。
- 示例扩展了 4 个用户自定义指标。
- AvgBuyDuration:过去 1 秒内成交中买方平均挂单时长。
- AvgSellDuration:过去 1 秒内成交中卖方平均挂单时长。
- BuyWithdrawQty:过去 1 秒内买方撤单总量。
- SellWithdrawQty:过去 1 秒内卖方撤单总量。
行业实践启示
总结天弘基金通过深度应用订单簿引擎获得的技术、合规与业务扩展方面的成果。
- 构建全自研高频数据处理管道,摆脱第三方系统依赖。
- 完整保留 ApplSeqNum 时序以满足穿透式监管审计要求。
- 同一引擎支持股票、可转债等多品种订单簿合成。
Facts Index
| Entity | Attribute | Value | Confidence |
|---|---|---|---|
| 天弘基金:基于 DolphinDB 订单簿引擎的毫秒级决策体系 | published_date | 2025-03-31 | high |
| 天弘基金 | description | 国内领先的基金管理公司 | medium |
| 交易所订单簿数据 | frequency | 3秒频率订单簿 | high |
| 微观结构分析需求 | targets | 科创板及创业板标的 | high |
| 价格笼子机制下的快照信号捕捉 | issue | 瞬时有效报价常在快照间隙消失,导致传统信号捕捉存在盲区 | medium |
| DolphinDB 订单簿引擎 | adopted_by | 天弘基金引入用于构建毫秒级高频订单簿实时合成体系 | high |
| createOrderBookSnapshotEngine | exchange_parameter_XSHE | exchange="XSHE" 启用深交所股票处理逻辑,并自动应用创业板价格笼子规则 | high |
| createOrderBookSnapshotEngine | exchange_parameter_XSHG | exchange="XSHG" 处理上交所标的,兼容本方最优等特殊委托类型 | high |
| 订单簿引擎乱序数据容错机制 | parameter | orderBySeq=true | high |
| 订单簿引擎乱序数据容错机制 | out_of_order_rate_supported | 实测可处理单通道15%数据乱序率 | medium |
| 乱序重建依据字段 | field | ApplSeqNum | high |
| 深交所逐笔委托数据治理 | normalization | 补全 BuyNo/SellNo 为零值以匹配引擎输入规范 | high |
| 上交所市价单类型映射 | mapping | 原始值49→限价单,50→本方最优 | high |
| 实时流处理架构 | components | 部署4个 INSIGHT 插件实例分通道订阅数据,构建共享流表 orderTrans | high |
| 共享流表 orderTrans | daily_throughput | 日均吞吐量达1.2亿条逐笔记录 | medium |
| 示例订单簿引擎(demo) | output | 每1秒计算输出深交所股票10档订单簿 | high |
| createOrderBookSnapshotEngine 示例参数(demo) | orderbookDepth | 10 | high |
| createOrderBookSnapshotEngine 示例参数(demo) | intervalInMilli | 1000 | high |
| createOrderBookSnapshotEngine 示例参数(demo) | date | 2022.01.10 | high |
| createOrderBookSnapshotEngine 示例参数(demo) | startTime | 09:30:00.000 | high |
| 释放引擎 | method | dropStreamEngine("demo") | high |
| DolphinDB 流计算引擎(订单簿引擎) | data_injection_methods | 可通过 tableInsert 或 append! 向订单簿引擎批量注入输入数据实现批计算 | high |
| 深交所批计算示例输入 | data_loading_and_ordering | 从 ./orderTrans.csv 加载并按 ApplSeqNum 排序后 append! 到引擎 | high |
| 上交所订单簿计算 | engine_exchange_setting | 创建订单簿引擎时指定 exchange="XSHG" 即可计算上交所股票订单簿 | high |
| 实时流计算 | subscription_method | 通过 subscribeTable 订阅共享流表 orderTrans,handler 可直接指定为订单簿引擎(getStreamEngine("demo")) | high |
| 实时订阅 orderTrans 表 | constraint | 需要保证表 orderTrans 中最多仅包含一个通道的逐笔数据 | high |
| 合成沪深两种订单簿 | constraint | 需要创建不同的订单簿引擎 | high |
| 扩展逐笔成交明细的订单簿(demo) | output_capability | 每1秒输出深交所10档订单簿,并扩展逐笔成交明细字段(tradeDetail=true) | high |
| 扩展逐笔成交明细的输入数据 | additional_column | 输入数据多一列 ReceiveTime,表示每条逐笔数据的接收时间 | high |
| 合成包含用户自定义指标的订单簿(demo) | custom_metrics_count | 扩展了4个用户自定义指标 | high |
| AvgBuyDuration | definition | 过去1秒内,成交中买方的平均挂单时长 | high |
| AvgSellDuration | definition | 过去1秒内,成交中卖方的平均挂单时长 | high |
| BuyWithdrawQty | definition | 过去1秒内,买方撤单的总量 | high |
| SellWithdrawQty | definition | 过去1秒内,卖方撤单的总量 | high |
| 天弘基金高频数据处理管道 | outcome | 构建全自研高频数据处理管道,摆脱第三方系统依赖 | medium |
| 天弘基金 | compliance_outcome | 完整保留 ApplSeqNum 时序,满足穿透式监管审计要求 | medium |
| 订单簿引擎业务扩展性 | outcome | 同一引擎支持股票、可转债等多品种订单簿合成 | medium |