探讨股票数据库的设计
一直以来总是想通过大数据进行统计分析,无奈大部分软件无法提供个性化的功能,而且我很看重财务数据的分析,但是发现大部分软件的财务数据只提供近几年的,而且只能看个股,不能进行统计分析。
经过一段时间的研究,将股票的日线,除权,财务,三大数据都完整的采集到了。全部存盘为excel的格式。然后就可以尽情的进行分析了,无奈本人excel水平有限,准备将数据存入数据库,编程实现数据分析。
至于统计什么,分析什么,我想有了这些数据,就可以尽情的测试自己的想法了。比如财务方面的,可以统计如果连续n年roe大于15%,则接下来的几年roe的在某些区间的概率。或者也可以统计k线中的三只乌鸦后一日的涨跌概率。总之数据有了,剩下的就是随你怎么算了。
本文主要目的,1 讨论一下数据库的设计 2 讨论一下如何设计出随心所欲的分析功能,而不是每一种分析都去编写特定点代码。
数据大概是这样的
1 日线数据(每个股票一个表格)
2 除权数据(每个股票一个表格)
3 财务(每个股票4张表。分为主要指标,资产负债表,利润表,现金流量表)
以上就是各项数据的预览,总数据量从1991年到2016年10月共 1.13G
这些数据最大的特点就是以个股为单位,存在excel表格中,如果进行统计,则需要不断读取磁盘,解析xls文件,而且一个全市场统计就需要读取所有股票数据。这显然是低效的。所以现在考虑存入到数据库中,数据库表格主要分为:
股票代码表(三个字段):
ID,股票代码,股票名称
日线数据表(所有股票存到一张表内)
ID,股票代码,日期,开盘,收盘,最高,最低,成交金额,成交数量
权息信息表(所有股票存到一张表内)
ID,股票代码,日期,分红,送股,配股,配股价,等
财务表(所有股票存到一张表内或者分为4张财务表)
ID,股票代码,日期,每股收益,净利润。。。。。
这样把所有股票的某类数据存到一张表内,优点就是可以统一查询,比如一次性查找某3年roe大于15%的所有股票,如果每个股票一张表,表就会非常多,不利于联合查询。但是缺点可能也会有,比如日线数据按一个股票3000行,3000个股票,就会有9000000条记录,不知道数据库性能会不会出问题。有这方面经验的可以留言讨论一下。
另外就是这些数据可以做哪些比较有意义的分析,我个人比较喜欢概率分析,很多事情是反直觉的。还有就是如何设计用户交互,才能做出通用的分析功能,而不是每一个想法都去编写大量的代码