量化数据分析

如何用FAI集群快速开发分钟数据——以开盘15分钟成交量因子开发为例

由bq9e696k创建,最终由bq9e696k 被浏览 38 用户

\

1.为什么计算开盘15分钟成交量因子?

开盘15分钟是市场交易最活跃的时段之一,也是换手率计算基础,开盘15分钟总成交量是计算开盘15分钟换手率的核心数据,而换手率能进一步反映市场参与度和流动性。

具有以下显著特征:

信息集中释放:隔夜消息、政策变化、公司公告等信息在开盘前集中发酵,导致开盘初期交易情绪高涨。

价格发现关键期:市场通过开盘阶段的交易行为对资产进行定价,成交量与价格的动态关系能反映市场对标的的短期预期。

短期趋势信号:开盘阶段的交易量常与当日整体交易量高度相关,可作为判断市场活跃度和趋势强度的重要指标。

==如果想直接使用开盘前15分钟成交量数据,可在数据平台搜索开盘15分钟总换手的股数量(first_15m_total_volume)进行订阅,从2009-01-01至今,每天更新数据==

数据库链接:https://bigquant.com/data/manager/datasources/first_15m_total_volume

2. 开盘15分钟换手率定义

开盘15分钟换手率=开盘15分钟成交量/流通股本×100%



示例: 假设某股票开盘 15 分钟成交量为500万股,流通股本为2亿股,则其开盘 5分钟换手率为: 5,000,000/200,000,000×100%=2.5%

3. 为什么使用FAI集群开发分钟因子

在金融科技领域,分钟级数据开发面临的核心挑战之一是数据处理时效性与量化交易对时间精度的严苛要求之间的矛盾。特别是在高频交易场景中,毫秒级的时间差异可能直接决定交易的盈亏,因此优化数据处理流程、提升时间效率成为技术攻坚的关键。

4.如何使用FAI集群开发因子

步骤1 进入编写策略页面后,点击左栏中的最后一个插件,进入FAI集群开发

步骤2 点击启动集群,参考示例代码,在单元格内引入fai sdk,输入集群名称和token。可参考示例代码获得相应的集群名称和token

==一定要先点击启动集群!==

\

5.通过FAI集群开发分钟因子(较快)

==记得先手动开启集群,并初始化cluster和token(填写自己新建的集群的相应内容)==

5.1 演示代码

https://bigquant.com/codesharev3/8a8613e2-59b3-4d1a-aadc-06a3bdde9ec9

通过上述代码,你就获得了开盘15分钟成交量因子(first_15m_total_volume)。==计算开盘15分钟换手率因子只需要再和流动股本相除即可获得(在常规因子开发方法中可参考具体的sql语句计算方法)==

==使用完FAI集群后,记得手动关闭集群,否则会账户占用资源!==


\

6. 常规因子开发方法(速度较慢)

步骤 1:获取开盘15分钟成交量 获取股票分钟数据 cn_stock_bar1m

通过计算每个交易日的开盘15分钟volume之和,得到开盘15分钟成交量数据

代码:

数据效果:

First_15m_total_volume即为开盘15分钟成交量

步骤 2:获取流通股本数据并计算开盘15分钟换手率数据

流通股本是指上市公司已发行且可在二级市场自由交易的股份数量(单位:股)。

可从BigQuent数据平台预计算因子(cn_stock_prefactors)数据库的a_float_shares获得。

计算开盘15分钟换手率涉及到开盘15分钟总交易量和流通股本数据,这里假设已自行加工好开盘15分钟总交易量数据,也可订阅BigQuent数据平台开盘15分钟总换手的股数量(first_15m_total_volume)数据库。

代码:

数据效果:

6.1演示代码

https://bigquant.com/codesharev3/56135145-8cca-4b81-b6d0-ed87267c222e

7. 如何上传自己开发的因子数据

7.1 上传数据集

配置好下列代码即可,具体包括data_source_id 、result_df、unique_together(一般是"date", "instrument")

import dai
import pandas as pd
# 指定数据表的唯一标识符
data_source_id = "xxxx"

# 将 DataFrame 写入数据表中
dai.DataSource.write_bdb(data=result_df, id=data_source_id, unique_together=["date", "instrument"])

# 确认上传成功后,您可以读取回数据确认
df = dai.DataSource(data_source_id).read_bdb(as_type=pd.DataFrame)
print(df)

7.2 更新数据集

核心是insert_bdb函数,追加数据

https://bigquant.com/codesharev3/d93d319b-9434-4700-8a41-e3e2369c5510

==单独开一个文件,使用上述代码,让后点击提交模拟==

{link}