数据读取
由small_q创建,最终由small_q 被浏览 115 用户
在AIStudio中编写的策略,不论是可视化版本还是代码版本,使用的数据来源都是BigQuant的DAI数据平台
DAI数据平台由两个部分组成:
- DAI数据平台的框架是BigQuant自研的分布式高性能数据库,了解数据平台怎么用,可以查看这个链接:数据平台/DAI
- DAI数据平台的内容是覆盖全球金融市场全部资产品类的数据表,了解数据平台中有哪些数据表,可以查看这个链接:https://bigquant.com/data/home
1. 可视化模式下的单表数据读取
数据提取的主要问题,其实就是从哪个表中提取那些字段的数据,并且强调一下数据提取的时间范围,这需要两个模块来完成:
- “输入特征(DAI SQL)”模块:填写从哪个表中提取哪些字段
- “数据抽取(DAI)”模块:填写数据抽取的时间范围
1.1 “输入特征(DAI SQL)”模块
在可视化模式下,我们需要在“输入特征(DAI SQL)”模块中,”表达式-默认数据表”一栏中填入表名,“表达式特征”一栏填入字段名,并且一个字段占一行,结尾不用加任何分隔符
例如,我们想从cn_stock_prefactors这两表中,将close, open, high, low, volume这五个字段提取出来
我们就可以在AIStudio中的画布上,加入一个“输入特征(DAI SQL)”模块中:
- 在“输入模式”的选项中,选择“表达式”
- 在”表达式-默认数据表”一栏填入
cn_stock_prefactors
- 在“表达式特征”一栏填入
close open high low volume
,每个字段占一行 - 在“表达式-其他字段”中,默认填入了
date, instrument
,这个表示要将日期和股票代码也提取出来,这个基本不用修改 - 在“表达式-排序字段”中,默认填入了,这个表示抽取出来的数据,先按照日期排列,再按照股票代码排列,这个只在有排序需求的时候修改
1.2 “数据抽取(DAI)”模块
在编写完“输入特征(DAI SQL)”模块后,我们把“输入特征(DAI SQL)”模块的输出,连接到一个“数据抽取(DAI)”模块的输入上即可
“数据抽取(DAI)”模块中的设置比较简单,我们填写数据的开始时间和结束时间即可
除此之外,“数据抽取(DAI)”模块还有两个参数,开始日期绑定交易日和结束日期绑定交易日,这个参数勾选上以后,提交模拟交易后,时间范围可以随着每天的变化而自动变化,这个是提交模拟交易必选的一个指标
1.3 “输入特征(DAI SQL)”模块与“数据抽取(DAI)”模块的运行结果
在连接了“输入特征(DAI SQL)”模块与“数据抽取(DAI)”模块后,我们运行一下“数据抽取(DAI)”模块,运行成功后,我们可以新建一个代码块,输入m4.data.read()
,将数据提取出来
m4
是“数据抽取(DAI)”模块的编号,这个要根据你的模块编号来变化data
是m4
模块的数据提取结果,它是一个DataSource对象read()
方法会将DataSource对象,转为pandas的DataFrame对象,从而做到结果展示
这样,从单表中进行数据抽取就完成了
2. 可视化模式下的多表数据读取
在进行多表数据提取时,我们可以分以下两种情况:表中字段无重复的情况,表中字段有重复的情况
2.1 表中字段无重复
当提取的表中字段没有重复时,例如:
- 我们想从
cn_stock_bar1d
这张表中提取close
这个字段,从cn_stock_valuation
这张表中提取出total_market_cap float_market_cap
两个字段 - 由于
close
只存在于cn_stock_bar1d
表中,total_market_cap float_market_cap
只存在于cn_stock_valuation
这张表中 - 因此,我们想要提取的字段,单独存在于两张表中,并不重复
- 在这种情况下,我们就可以在“表达式-默认数据表”一栏中填入
cn_stock_bar1d; cn_stock_valuation
,两张表用分号隔开 - 接着我们在“表达式特征”一栏填入
close total_market_cap float_market_cap
,三个字段分别占一行,结尾不加分隔符 - 接着我们接一个“数据抽取(DAI)”模块,就可以把数据提取出来了
- 在这种情况下,我们就可以在“表达式-默认数据表”一栏中填入
2.2 表中字段有重复
当提取的表中字段有重复时,例如:
- 我们想从
cn_stock_bar1d
这张表中提取close
这个字段,从cn_stock_prefactors
这张表中提取出pe_ttm ps_ttm
两个字段 - 由于
close
这个字段既存在于cn_stock_bar1d
表中,又存在于cn_stock_prefactors
,因此我们必须以cn_stock_bar1d.close
的形式强调是cn_stock_bar1d
表中的close
字段 - 在这种情况下,“输入特征(DAI SQL)”这个模块的编写就稍有差异:
- 在“表达式特征”一栏填入
cn_stock_bar1d.close total_market_cap float_market_cap
,三个字段分别占一行,结尾不加分隔符 - 在“表达式-默认数据表”一栏中只填入
cn_stock_valuation
,因为我们需要使用到cn_stock_bar1d
这张表这件事,已经在“表达式特征”一栏中告诉程序了 - 接着我们接一个“数据抽取(DAI)”模块,就可以把数据提取出来了
- 在“表达式特征”一栏填入