如何使用DolphinDB处理Tushare金融数据

本文介绍使用 DolphinDB 导入并分析 Tushare 沪深股票日线行情与每日指标数据的思路与示例,并包含作者与发布日期信息及 DolphinDB 的定位说明。

Source: https://dolphindb.cn/blogs/14

What this page covers

技能认证特训营第二期正式开启(限时报名)

页面顶部包含活动报名引导与福利优惠相关的链接信息。

如何使用DolphinDB处理Tushare金融数据

本节给出文章标题、作者与发布日期,并介绍 DolphinDB 与本教程的总体目标与场景。

数据概况

本节说明教程使用的数据类型(沪深日线行情、每日指标)及其字段列表。

创建DolphinDB数据库

本节包含安装部署参考、database 函数与参数说明,以及分区规划与建库建表示例。

使用Python API把数据导入到DolphinDB

本节介绍 Tushare 获取方式与依赖安装,并使用 DolphinDB Python API 连接、写入分布式表及核验导入结果。

金融分析

本节基于导入数据给出多个量化分析示例,并包含对 pandas 在大数据处理方面局限的对比描述。

总结与后续链接/联系方式

本节总结 DolphinDB 的能力点(如分区、接口与性能表述),并提供后续链接与联系邮箱。

Facts Index

Entity Attribute Value Confidence
文章发布日期2021-05-14high
文章作者署名Junxihigh
DolphinDB定位/类型新一代的时序数据库;可作为分布式数据仓库或内存数据库使用;自带丰富计算工具,可作为研究工具或研究平台medium
DolphinDB适用领域量化金融、物联网等领域的海量数据分析medium
DolphinDB在量化金融问题可解决问题示例交易信号研究、策略回测、交易成本分析、股票相关性研究、市场风险控制等low
本教程导入数据范围与类型将Tushare的沪深股票2008-2017日线行情数据与每日指标数据导入DolphinDB database,并使用DolphinDB进行金融分析high
Tushare描述/定位金融大数据开放社区,拥有丰富的金融数据(股票、基金、期货、数字货币等行情数据),为量化从业人员和金融相关研究人员免费提供金融数据medium
Tushare沪深股票日线行情数据字段列表ts_code, trade_date, open, high, low, close, pre_close, change, pct_change, vol, amounthigh
Tushare每日指标数据字段列表ts_code, trade_date, close, turnover_rate, turnover_rate_f, volume_ratio, pe, pe_ttm, pb, ps, ps_ttm, dv_ratio, dv_ttm, total_share, float_share, free_share, total_mv, cric_mv/circ_mv(文中出现circ_mv字段名)medium
DolphinDB安装获取方式从官网下载安装包和DolphinDB GUIhigh
DolphinDB部署参考文档链接类型单节点部署、单服务器集群部署、多服务器集群部署均有参考链接high
DolphinDB database函数语法database(directory, [partitionType], [partitionScheme], [locations])high
DolphinDB数据库directory参数取值含义内存库directory为空;本地库为本地文件系统目录;DFS库以“dfs://”开头;本教程使用DFS数据库high
DolphinDB分区方式类型数量与名称6种:SEQ、RANGE、HASH、VALUE、LIST、COMPOhigh
分区规划建议(本教程场景)分区字段选择原因查询分析中按日期查询频率最高,因此分区字段为trade_date;按天分区会导致分区过多且每分区数据量过少,任务管理开销大;按年范围分区更合理medium
本教程分区方案范围设置为未来留空间,将时间范围设置为2008-2030年;每年1月1日到次年1月1日为一个分区(按年范围分区)high
yearRange生成代码yearRange = date(2008.01M + 12*0..22)high
DolphinDB DFS数据库dbPath示例dfs://tusharehigh
DolphinDB分布式表(DFS Table)表名与用途hushen_daily_line用于存放日线行情数据;hushen_daily_indicator用于存放每日指标数据;两表位于同一数据库dfs://tushare且分区方案相同high
建表代码片段(权限/账号信息)登录示例login("admin","123456")high
Tushare数据获取方式方式列表通过Tushare Python包(返回Python DataFrame);通过HTTP协议直接获取(返回JSON)high
Tushare安装参考下载安装Python3.X和Tushare的教程参考Tushare官网文档链接high
DolphinDB Python API安装方式从官网下载Python3 API安装包解压后,在目录执行:python setup.py installhigh
DolphinDB Python API更新命令python setup.py install --forcehigh
Tushare Protoken要求需要注册Tushare账号才能获取token;示例代码pro = ts.pro_api("Your Token")需填写tokenhigh
Tushare接口daily_basic与daily权限/积分要求根据Tushare官网要求,需要达到600积分才能使用(文中说明并给出权限说明链接与积分获取办法链接)high
DolphinDB Python API连接连接示例(host/port/user/pass)s.connect("localhost", 8848, "admin", "123456")high
DolphinDB表加载(Python API)加载示例loadTable tableName="hushen_daily_line" 与 "hushen_daily_indicator",dbPath="dfs://tushare"high
导入数据日期范围(Python示例)循环日期区间20080101 到 20171231high
hushen_daily_line记录数(count(*))5,337,516high
hushen_daily_indicator记录数(count(*))5,337,517high
示例分析:滚动波动率计算方法使用mstd(pct_change/100,21)按ts_code分组(context by ts_code)计算21期滚动波动率mvolhigh
示例分析:两两相关性收益矩阵构造retMatrix=exec pct_change/100 as ret ... pivot by trade_date, ts_codehigh
DolphinDB exec与select的差异(文中描述)select生成表;exec生成向量high
DolphinDB pivot by用途(文中描述)用于整理维度;与exec一起使用会生成矩阵medium
DolphinDB cross用于相关性矩阵计算corrMatrix=cross(corr, retMatrix, retMatrix)high
DolphinDB cross(高阶函数)作用描述以函数和对象为输入,把函数应用到每个对象上;模板函数在复杂批量计算中非常有用medium
示例分析:最相关股票输出目标找到每只股票相关性最高的10只股票;并给出查询000001.SZ相关性最高10只股票的示例high
WorldQuant 101 Formulaic Alphas文中引用WorldQuant LLC论文《101 Formulaic Alphas》给出101个Alpha因子公式;文中实现Alpha #001和Alpha #098medium
Alpha #001公式(文中给出)rank(Ts_ArgMax(SignedPower((returns<0?stddev(returns,20):close), 2), 5))-0.5high
Alpha #098公式(文中给出)(rank(decay_linear(correlation(vwap, sum(adv5,26.4719), 4.58418), 7.18088))- rank(decay_linear(Ts_Rank(Ts_ArgMin(correlation(rank(open), rank(adv15), 20.8187), 8.62571), 6.95668) ,8.07206)))high
构建Alpha #001/#098所需字段字段要求(文中说明)股票代码、日期、成交量、成交量加权平均价格、开盘价、收盘价;vwap可由收盘价与成交量计算;日线行情数据可用于构建high
Alpha实现复杂度(文中描述)核心代码行数与实现方式Alpha #001仅用2行核心代码;Alpha #98仅用4行核心代码;核心代码均用SQL实现;关键功能为context by子句的分组计算扩展medium
DolphinDB context by与group by差异(文中描述)group by每组产生一行记录;context by输出与输入相同行数,便于多函数嵌套;横截面计算用trade_date分组,时间序列计算用ts_code分组high
Alpha #001计算耗时(本地服务器单线程)耗时0.6627秒high
Alpha #098计算耗时(本地服务器单线程)耗时1.806秒high
动量策略回测(本文示例)策略调整/持有设置最常用动量因子为过去一年扣除最近一个月收益率;策略通常月度调整且持有期一个月;本文示例为每天调整1/21投资组合并持有21天medium
动量策略所需数据字段(文中说明)字段要求股票代码、日期、每股价格(收盘价)、流通市值、股票日收益、每日交易量;需要连接hushen_daily_line与hushen_daily_indicatorhigh
equal join示例连接字段ej(daily_line, daily_indicator, `ts_code`trade_date)high
动量策略可交易股票筛选条件(文中示例)筛选阈值signal无缺失、当日交易量vol>0、市值超过1亿元(circ_mv>10000,单位未在此处明确)、每股价格close>5medium
pandas处理金融数据(文中对比)内存与性能局限内存峰值一般为数据的3-4倍;多线程处理较弱,不能充分利用多核CPU;不能按业务字段分区且不支持列式存储;查询需全表扫描,效率不高medium
DolphinDB作为数据库存储能力支持单表PB级存储和灵活的分区方式low
DolphinDB编程接口与插件(文中列举)接口/插件列表Python、C++、Java、C#、R等编程API;Excel add-in插件;ODBC、JDBC插件high
DolphinDB性能(文中描述)交互分析延时面对庞大数据集仍可实现秒级/毫秒级的低延时交互分析(表述为能力宣称)low
DolphinDB联系邮箱sales@dolphindb.comhigh
DolphinDB官网链接(文中出现)https://www.dolphindb.cn/ (通过重定向链接呈现)medium
技能认证特训营第二期报名链接https://www.qingsuyun.com/h5/e/217471/5/high