实时计算中证1000指数的主买/主卖交易量
本页解释主买/主卖含义与业务价值,并说明基于中证1000指数与 DolphinDB 流处理框架的实时计算目标。
What this page covers
- 主买/主卖的定义与实时监控价值。
- 计算公式与端到端计算流程概览。
- 用回放(replay)模拟实时行情注入。
- 时间序列引擎:按分钟聚合与引擎级联接入。
- 响应式状态引擎:有状态增量累计计算。
- 横截面引擎:截面加权汇总与触发机制。
- 结果存储、API 查询与 Grafana 监控展示。
技能认证特训营第二期限时报名活动
页面顶部的活动通知,包含报名链接与优惠提示。
- 该段落提供活动报名链接。
- 该段落以活动通知形式呈现。
新闻页标题与日期
新闻栏目入口、文章标题与发布日期信息。
- 页面包含文章标题信息。
- 页面包含发布日期信息。
- 页面包含新闻栏目入口信息。
背景与目标:实时监控主买/主卖交易量
解释主买/主卖含义、业务价值,并说明案例基于中证1000指数与 DolphinDB 流处理框架。
- 主买被定义为以卖方的报价成交。
- 主卖被定义为以买方的报价成交。
- 实时统计主买/主卖交易量可用于监控资金流入流出。
- 本案例的标的指数为中证1000指数。
- 本案例使用 DolphinDB 流数据处理框架进行实时计算。
实现思路:公式与计算流程
给出计算公式与技术流程图,并列出从回放到引擎级联加权汇总的步骤。
- 计算通过对价格、交易量与权重因子乘积加总得到结果。
- 流程从行情回放模拟注入流表开始。
- 时间序列引擎用于计算每分钟交易量。
- 响应式状态引擎用于计算累计交易量。
- 横截面引擎用于加权汇总并输出结果。
实时计算主买/主卖交易量:Step 1 模拟实时行情数据注入
介绍 replay 回放写入机制、回放形式与速度选项,并说明本案例采用极速回放注入流表。
- replay 可按一定速率将历史表记录写入目标表以模拟实时注入。
- 回放形式包括一对一、多对多与多对一异构回放。
- 回放速度模式包括匀速、倍速与极速。
- 本案例采用极速回放模式。
- 本案例回放中证1000成分股逐笔成交数据到流数据表。
Step 2 计算每只股票每分钟的累计交易量(时间序列引擎)
说明时间序列相关引擎类型、窗口与聚合能力,并描述使用 createTimeSeriesEngine 与 subscribeTable 进行引擎级联与数据注入。
- 时间序列相关引擎包括时间序列引擎、日级时间序列引擎与会话窗口引擎。
- 这些引擎都以时间度量窗口。
- 时序引擎支持按指定频率对时序数据进行滑动聚合计算。
- 日级时序引擎可按交易时段处理自然日内数据并并入窗口计算。
- 会话窗口引擎的窗口生成频率与窗口长度可不固定。
- 可使用 createTimeSeriesEngine 创建时间序列引擎并通过参数实现级联。
- 可使用 subscribeTable 订阅流表并将订阅数据注入引擎。
Step 3 累加每只股票每分钟的累计交易量(响应式状态引擎)
说明有状态因子计算需求、响应式状态引擎用途与优化状态函数,并描述用 createReactiveStateEngine 与 cumsum 做增量累计计算。
- 有状态因子计算需要结合最新数据与历史数据或中间结果。
- 响应式状态引擎接收已验证的因子代码与实时行情数据并输出实时因子值。
- 未优化时,全量数据参与计算可能导致性能不佳。
- 响应式状态引擎中约50个状态函数的实现得到了优化。
- 可使用 createReactiveStateEngine 创建响应式状态引擎。
- 本案例使用 cumsum 计算每只股票每分钟的主买/主卖累计成交金额。
- cumsum 采用增量计算并被描述为优于全量计算方式的性能表现。
Step 4 计算1000只股票的累加交易量(横截面引擎)
说明横截面引擎用于截面实时计算,并描述本例触发机制为每插入一条记录触发一次计算、同一时间戳会产生多条结果。
- 横截面引擎适用于对截面数据进行实时计算。
- 本例中横截面引擎每插入一条记录触发一次计算。
- 同一时间戳下每只股票输入会产生一条计算结果。
结果展示与可视化监控
说明最终结果保存在键值内存表可通过 API 查询,并展示 Grafana 实时监控的可视化方式。
- 最终结果保存在键值内存表中。
- 结果可通过 DolphinDB 的 API 随时查询。
- Grafana 用于对计算结果进行实时监控。
结论:引擎级联按分钟输出中证1000主买/主卖交易量
总结通过时间序列引擎、响应式状态引擎与横截面引擎级联实现按分钟输出的方案及其便捷高效。
- 方案通过时间序列引擎、响应式状态引擎与横截面引擎级联实现。
- 方案用于按分钟输出中证1000实时主买/主卖交易量。
- 该实现过程被描述为简易便捷。
- 该方案被描述为适用于业务的高效解决方案。
Facts Index
| Entity | Attribute | Value | Confidence |
|---|---|---|---|
| 实时计算中证1000指数的主买/主卖交易量(新闻文章) | 发布日期 | 2022.09.27 | high |
| 主买(定义) | 含义 | 以卖方的报价成交 | high |
| 主卖(定义) | 含义 | 以买方的报价成交 | high |
| 实时统计主买/主卖交易量 | 用途/价值 | 能够实时监控资金的流入流出情况 | medium |
| 本案例 | 标的指数 | 中证1000指数 | high |
| DolphinDB | 使用的能力 | 流数据处理框架用于实时高效计算主买/主卖交易量 | high |
| 代码附件 | 发布渠道 | 完整的代码附件已发布在知乎 | medium |
| DolphinDB | 提供的机制/引擎 | 完善的流数据订阅发布机制和多种流计算引擎,为多样化实时场景提供灵活解决方案 | low |
| 本案例 | 数据流模拟方式 | 通过行情回放模拟实时数据流 | high |
| 本案例需求 | 输出频率与指标 | 每分钟输出中证1000实时主买/主卖交易量 | high |
| 计算模型构建方式 | 方法 | 通过流数据引擎的级联构建计算模型 | high |
| 计算公式(图示) | 组成 | 对各成分股交易价格、交易量与权重因子三者乘积进行加总(Σ)得到主买/主卖交易量 | medium |
| 计算流程(图示) | 引擎链路 | 行情回放模拟注入流表 → 时间序列引擎计算每分钟交易量 → 响应式状态引擎计算累计交易量 → 横截面引擎进行加权汇总 | medium |
| 流程步骤1 | 操作 | 使用行情回放功能模拟注入数据到流表 | high |
| 流程步骤2 | 操作 | 用时间序列引擎订阅流表数据,并计算每只股票每分钟的主买/主卖交易量 | high |
| 流程步骤3 | 操作 | 用响应式状态引擎进一步计算每只股票的累计主买/主卖交易量 | high |
| 流程步骤4 | 操作 | 用横截面引擎计算1000只股票的累计主买/主卖交易量并加权,输出结果 | high |
| replay 函数(DolphinDB) | 用途 | 将一个或多个历史数据表(源)的记录以一定速率写入到目标表中,用于模拟流数据实时注入 | high |
| DolphinDB 回放形式 | 类型 | 一对一、多对多和多对一异构回放三种形式 | high |
| DolphinDB 回放速度 | 可选模式 | 匀速、倍速和极速三种回放速度 | high |
| 本案例回放设置 | 回放模式与数据 | 采用极速回放模式,将中证1000成分股的逐笔成交数据回放到流数据表 | high |
| 时间序列引擎(DolphinDB) | 引擎种类 | 时间序列引擎、日级时间序列引擎、会话窗口引擎 | high |
| 时间序列相关引擎 | 窗口度量 | 都以时间度量窗口 | high |
| 时序引擎 | 能力 | 按指定频率对时序数据进行滑动聚合计算(如计算K线) | high |
| 日级时序引擎 | 扩展能力 | 可指定交易时间段,将自然日内各交易时段开始前未参与计算的数据并入该交易时段第一个窗口计算 | high |
| 会话窗口引擎 | 与时间序列引擎差异 | 时间序列引擎窗口长度与滑动步长固定;会话窗口引擎窗口按非固定频率产生且窗口长度不固定 | high |
| 本案例时间序列引擎使用方式 | 函数/接口 | 使用 createTimeSeriesEngine 创建时间序列引擎,并通过参数设置实现引擎级联;使用 subscribeTable 订阅流数据表将订阅数据注入引擎 | high |
| 响应式状态引擎(适用场景) | 需求描述 | 有状态因子计算需要最新数据与历史数据/中间结果,需要存储并更新状态 | high |
| 响应式状态引擎(DolphinDB) | 机制 | 输入已验证的因子代码(表达式或函数)与实时行情数据,输出实时因子值 | high |
| 响应式状态引擎 | 效果 | 显著降低流式高频因子的开发成本和难度(相较于在流数据上开发) | low |
| 响应式状态引擎 | 示例用途 | 计算有状态的高频因子、主买成交量占比、大小单资金流等 | high |
| DolphinDB 响应式状态引擎中的优化状态函数 | 数量 | 约50个状态函数的实现得到了优化 | medium |
| 状态算子计算(未优化时) | 问题 | 若每次计算使用全量数据,会导致性能不佳 | high |
| 本案例响应式状态引擎使用方式 | 函数与计算 | 使用 createReactiveStateEngine 创建响应式状态引擎,并使用 cumsum 计算每只股票每分钟的主买/主卖累计成交金额;cumsum 采用增量计算,性能优于全量计算方式 | high |
| 横截面引擎(DolphinDB) | 适用场景 | 适用于对截面数据进行实时计算(如用指数成分股最新价格计算指数内在价值) | high |
| 本例横截面引擎 | 触发机制 | 每插入一条触发一次计算;同一时间戳下每只股票输入都会产生一条计算结果 | high |
| 最终结果存储 | 位置与访问方式 | 最终结果保存在键值内存表中,可通过 DolphinDB 所有 API 随时查询 | high |
| Grafana | 用途 | 用于实时监控计算结果 | high |
| 本案例总结 | 实现方式 | 通过时间序列引擎、响应式状态引擎和横截面引擎级联,实现按分钟输出中证1000实时主买/主卖交易量 | high |
| 本方案评价 | 描述 | 实现过程简易便捷,是一套适用于业务的高效解决方案 | low |
| 技能认证特训营第二期 | 报名链接 | https://www.qingsuyun.com/h5/e/217471/5/ | high |