要做股票的量化分析,首先需要有股票相关数据的支持,而且需要保存为容易被读取和调用的格式。这是后续开展各种数据分析工作的基础。
本文接下来简单介绍一下笔者所用到的数据来源,以飨读者。
1.tushare
Tushare在运行三年之后(原址:http://tushare.org/),发布了Pro版本,网址为:http://tushare.pro。
旧版本的时候是免费、开源的Python财经数据接口包。而新版本Pro虽然也号称是开源免费的,但是实际上许多API接口需要有所谓的积分才能调用,如果积分不够则无法调用或者会被限制频率。
而获取积分的方式就是花钱赞助、网文推荐等多种方式。笔者此处不放出自己的推荐连接,感兴趣的网友可以自行前往试用。
2.baostock
证券宝http://baostock.com 是一个免费、开源的证券数据平台(无需注册),提供python api接口获取证券数据信息。
3.自主采集数据
上述两种方式,都是调用相关的API接口,不论是否受到积分的限制,至少受限于网络,需要联网下载数据。对于笔者经常做数据分析而言不是很便利。思来想去,还是要把主动性/决定权放在自己手里,免得哪天突然无法下载数据了。
对于如何在本地保存数据,笔者颇费思量:
1).最开始考虑使用本地部署MySQL数据库用于存储股票交易数据,然后通过调用数据库接口进行数据提取,但是因为交易数据量太多,尤其是3秒钟的tick交易明细记录太过庞大,导致性能不佳,遂放弃此种考虑
2).因为数据量庞大而放弃MySQL数据库,那么是否有其他的数据库类型可以满足股票交易数据存储与查询提取的需求呢?笔者看到有一个列式数据库clickhouse,遂对该软件进行尝试,虽然性能有所提升,但是仍然觉得不甚满意。
3).上述两种究其原因在于性能不佳,而性能不佳在于数据量庞大,因此如果能够围绕降低数据量做一些工作来提升工作效率那是最好的。但是降低数据量此处并不意味着对数据质量有所降低要求,而是因为股票数据自有其特点:每只股票的交易数据之间实际上可以看做是独立的。也就是说可以根据每只股票的不同,单独来存放相关数据。首先想到的是针对每只股票创建一个数据库,其中存放日线数据、分钟线数据等,但是这也意味着需要4千多个数据库。思虑之下,笔者认为可以采用文本的存储方式,首先以股票编码为目录,每只股票单独一个文件目录,每个目录下存放该股票的日线数据、分钟数据明细等。通过测试,此种方式完全满足笔者的实际需求。因此到目前为止,笔者一直在采用此种方式。
该方式的优势在于:数据完全独立可控(因为放在本地存储,想什么时候读取都可以,无需网络,无需积分),而且针对每只股票单独成目录,有效降低了查询的数据量,提高了数据读取性能。
而缺点在于:需要笔者自己维护数据更新的工作,例如每个交易日结束之后,需要更新每只股票的日线数据,需要下载每只股票的详细交易明细数据以及时不时的更新股票基本信息、新发布股票信息等等。针对这些缺点,笔者唯有自己动手,丰衣足食,通过自己编写程序然后每天定期运行的方式来维护相关数据的更新。
4、efinance
参考文档:https://zhuanlan.zhihu.com/p/388088384
5、akshare
参考文档:https://github.com/akfamily/akshare