❶ 如何搭建自己的股票高频数据库(Python)
二话不说,先上结果。本文阐述了以下几个方面:
下图是编写好的数据接口提取数据的示例。该数据接口支持多标的、多品种(股票、指数一起提取)、多字段、多时间提取。并且支持不复权、后复权、等比前复权提取(前复权不太实用就没有做)。而且速度巨快,没有数据量的限制。如果你也觉得很香,请接着往下看,本文将手把手教你搭建这样的数据库。
数据库搭建需要用到一些第三方库,在各位动手之前请安装:
本文的方法不涉及到常用的数据库(不涉及MySQL、MongoDB),思路非常简单,请各位放心食用。主要是使用pyarrow来加强代码性能。虽然不涉及到常用数据库,但这是我目前能想到的最有效的方法。
正所谓“巧妇难为无米之炊”,想搭建高频数据库,就需要一个数据源获取高频数据。在此,我推荐聚宽作为我们的数据源。 聚宽账号的申请请点这里。新人用户有每日100万条数据,DataFrame的一行算一条,请各位务必珍惜自己的数据量。(不过我是正式用户了,每天两个亿,就不太在意这一点哈哈。)
非会员的100万条数据量能干啥?我们来简单计算以下:每个交易日有240条数据(4个小时,240条分钟k线),假设一年有250个交易日,每只股票每年需要占用60000条数据。也即一日的数据量能够提取一只股票16年(100/6=16.66667)左右的股票分钟数据。相当于数据库的搭建过程还是相当艰难的,每天耗尽数据量只能下载好一只股票的数据。(白嫖是这样的啦,如果有条件可以联系聚宽客服,购买正式账号)
我们这里假设我们的数据库记录2015年至今的股票分钟数据。(当然我自己的数据库记录的是2005年1月1日的全A股分钟数据)这里,我们以贵州茅台(股票代码 600519.XSHG)为例,演示数据的提取与保存。先看看数据如何从接口提取出来(这里需要用到各位申请的聚宽账号):
来看看代码运行的结果。
数据提取后,自然需要把数据保存起来。pandas.DataFrame有很多方便的方法可以将数据保存下来。为做对比,这里将数据保存为csv格式和ftr格式。
相对应的,我们可以用这样的代码将保存好的数据读取进来。虽然pandas有read_feather函数,可以直接将ftr文件读取进来,但这个速度比直接调用pyarrow的更慢一些。考虑到代码性能,这里直接从pyarrow调用read_feather函数。
虽然两种格式都能将数据完整地保存下来,但读取速度上,ftr文件占据着绝对的优势。因此,我们考虑到数据库的性能以及数据库所占空间,我们选择使用ftr格式储存数据。feather正如他的名称,像羽毛一样轻,它所占的空间会比csv更小。这是一种不占空间,读取速度又快的文件格式,太香了!
在前文中我提到了行情数据的提取、保存方法,并强调了一定要提取不复权的数据。这是为了与复权因子结合,还原各种形式的复权数据。至于复权的详细定义,请参看 网络。
随便打开一个股票看盘软件,大致会有3种复权方式,即前复权、不复权、后复权。按照我自己的想法,可以这么理解:
在这样的情况下,如果记录价格数据,记录前复权的数据是最没有意义的,因为隔一段时间,历史的价格就全变了。如果只做收益率相关研究的话,记录后复权数据是可以的。然而,我们这里要搭建数据库,所以采取“记录不复权数据”加上“复权因子”还原的方法。
我们着手提取复权因子。在提取之前,不妨再理顺一下思路:
思路理顺了,我们来看看后复权因子的提取方法:
有了复权因子,如何计算复权价格?请接着看第3节——数据接口编写。
提取了行情数据和复权因子数据,应当找个地方把它们存放起来。我分了两个文件夹来保存我的数据。
在你搜集了足够多只股票的分钟数据后,就能够来到这一步,编写一个数据接口方便调用数据。
数据接口的编写重难点在于股票价格复权的计算。这里同样以贵州茅台(股票代码 600519.XSHG)为例来演示如何进行复权的计算。复权的核心在于下面这个公式:
[公式]
先来看看我们如何提取贵州茅台在一段时间(这里为2015-01-01至2021-09-08)内的后复权分钟数据。(这里千万不能将交易量和交易额一起拿去复权了。只有价格数据需要复权。(我不太确定交易量要不要,要的话我就改一改嘿嘿))
看看代码运行的效果。
那么,等比前复权该如何实现呢?其实很简单,只需要在框定了复权因子的时间后,让复权因子全序列除以最后一个复权因子,即得到前复权因子。将这个前复权因子乘上不复权的价格,即可得到等比前复权的价格数据。
以下是数据接口的全部代码,里面有挺多细节(但挺简单的),我就不再赘述了。
要更新数据库的数据,则是将数据库中的所有数据文件逐个读取进来,取最后一天作为start_date,然后取今天作为end_date。将新数据合并到原有的DataFrame中并保存就完成了数据的更新。数据更新比较耗时,也需要一定的数据量。不过,不论如何,我们来看看数据更新的代码。
在编写完这些代码后,我把这些代码整合成了一个python文件【high_freq_db.py】放在了site-package中,方便以后数据的调用和更新。
亲爱的读者,感谢你读到这里。本文讲述了我搭建我的股票高频数据库的方法。毕竟我的专业是金融而非计算机,难免会有不足的地方,恳请大家在评论区指出。(华工封校了,我也快疯了,所以一天写了两篇东西。。。。)
另外,这个数据库完全搭建起来之后会非常大(行情数据占80GB左右,包含指数和个股ftr文件),维护起来也比较费时费力,就不对外公布了(我也不知道怎么公布【手动捂脸】)。如确有需要,可以和我私信。
再次感谢大家的阅读!
——————————————————
2022年5月27日更新:
有不少小伙伴想要这个数据,目前我已经整理好上传至网络网盘啦。数据和完整代码私聊获取。
获取数据请只用于学习,勿直接用于投资决策!
❷ CSMAR数据库目前支持哪些API接口调用
RMI远程接口。
CSMAR目前只支持RMI接口。
CSMAR是一个经济金融研究数据库。该数据库是国泰安从学术研究的需求出发,借鉴芝加哥大学CRSP、标准普尔Compustat、纽约交易所TAQ、IBES、Thomson等国际知名数据库的专业标准,并结合中国实际国情开发的经济金融型数据库。经过17年的不断积累和完善,CSMAR数据库已涵盖因子研究、人物特征、绿色经济、股票、公司等18大系列,包含130多个数据库、4000多张表、4万多个字段。
❸ 国内有哪些常见的量化交易软件
以下是整理的国内常用的量化交易软件:
一、聚宽JoinQuant
聚宽提供基于IPythonNotebook的研究平台,支持Tick级数据,同时提供API。它支持股票、基金、期货等品种的回测,包括日、分钟、Tick级回测,以及多种实盘交易。平台社区交流活跃,对新手友好,学习资源丰富,回测速度较快。
二、优矿
优矿提供类似IPythonNotebook的研究平台,仅支持使用Python2进行策略研究,同样提供API。它提供2007年以后的沪深港上市公司财务报表数据,以及股票/指数的量化因子库等。支持股票、场内外基金、期货、指数等品种的模拟交易,社区活跃度高,数据丰富,回测速度快。
三、米筐RiceQuant
米筐基于IPythonNotebook的研究平台,支持Python、Matlab、Excel,同时提供API接口。它提供股票、ETF、期货等品种的基本信息及历史数据,支持多种回测类型和交易类型,包括日、分钟级别的模拟交易和期货的实盘交易。社区活跃度高,拥有丰富的开发经验和领先的金融工程模型服务。
四、掘金量化
掘金量化支持多种编程语言,包括Python、Matlab、C、C++、C#,提供API接口。它提供近10年的日/分钟/Tick级别股票数据,以及财务、分红送配、行业、板块等数据。支持多种回测类型和交易类型,包括股票、期货等品种的模拟交易和实盘交易。社区活跃度高,提供一站式量化投研系统。
五、迅投QMT
迅投QMT提供灵活的定制化开发服务,集行情显示、投资研究、策略编写、自动交易等功能于一体的专业策略交易平台。它支持Python和vba编写策略,并兼容多种行情数据来源。支持多种回测类型和交易类型,包括股票、期货等品种的模拟交易和实盘交易,交易速度极快,适用于有打板需求及新股申购需求的客户。
六、恒生PTrade
恒生PTrade智能交易终端提供全方位的交易服务,支持多种功能场景,包括程序化策略交易、日内回转交易、普通交易和策略模型交易。支持多种回测类型和交易类型,包括分钟级和日线级别的实盘交易。
七、Bigquant
Bigquant支持Python语言,提供AI开发策略和API。它提供日/分钟级别的股票、期货、基金等数据,以及新闻、社交等新型数据。支持多种回测类型和交易类型,包括股票、期货等品种的回测和实盘交易,提供秒级的实盘交易信号。
八、GFQuant
GFQuant提供一站式的服务,包括行情、财务、回测和交易等服务。它支持多种回测类型和交易类型,包括日、分钟级别、Tick级别的模拟交易。
九、天勤量化投资平台
天勤量化投资平台提供丰富的数据和工具,帮助用户构建和测试量化交易策略。支持多种回测类型和交易类型,包括股票、期货等品种的模拟交易和实盘交易。
十、果仁网
果仁网界面友好,适合初学者快速上手量化交易,提供基础的量化交易功能和教育资源。支持多种回测类型和交易类型,包括股票、基金的策略的日级回测和实盘交易。
十一、真格量化
真格量化是澎博财经旗下的期货期权实盘量化平台,支持使用Python进行策略研究,提供API。主要提供商品期货、期货期权、金融期货、股票期权等金融衍生品的数据。
十二、开拓者TBQuant
TBQuant是一款支持证券、期货市场的专业金融量化分析交易软件,主要提供期货品种的日、分钟、Tick级回测和模拟交易及全自动期货实盘交易。