股票价格变化前后相关性分析工具
使用方法
准备文件data_stocks.csv,格式(至少每个股票需要100个样本数据):
时间,股票A,股票B
"2020-01-01",120.01,98.12
"2020-01-02",126.01,98.01
"2020-01-03",124.5,100.12
在终端执行
$ python data_process.py
效果
以下是我运行时输出的部分结果
文件 "data_stocks.csv" 一共有 502 列。
分析第 2 列的数据
卡方检验的表格:
3394 3416 6810
3255 3236 6491
6649 6652 13301
连续增加的概率是 25.516878 %
先减少后增加 25.682280 %
先增加后减少 24.471844 %
连续减少的概率是 24.328998 %
卡方统计量是:0.12601078613703862
有百分之 0.000 的把握认为第 2 列的数据前后变化存在关联关系
--------------------完成--------------------
分析第 3 列的数据
卡方检验的表格:
2691 2840 5531
2836 2656 5492
5527 5496 11023
连续增加的概率是 24.412592 %
先减少后增加 25.764311 %
先增加后减少 25.728023 %
连续减少的概率是 24.095074 %
卡方统计量是:9.826308069266396
有百分之 99.500 的把握认为第 3 列的数据前后变化存在关联关系
--------------------完成--------------------
原理
data_stocks.csv是包含待分析数据的csv格式文件,包含表头,表头是第一行且其它行都是数字组成的数据,且不存在空的内容。每一行的列数都是一样的。这些数据就是股票的价格,每一列就是一个股票,每一列的行从上到下按时间从早到晚顺序排列。其中第一列是时间,时间不会被分析。
对data_stocks.csv的数据进行提取分析,过程如下:每一列单独分析一次,如果有k列就分析k次。第一列是时间,第一列不会被分析,也就是分析的列k>1且k1且I>100,使得至少有一个股票被处理,被处理的数据大于99个,因为比较大的数据量可以使统计结果相对合理。
处理过程是:每次分析按顺序取三行数据出来(数据不重复使用,最后不够三个的丢弃),第i、i+1和i+2行,那么存在事件A:i+1行的值大于i行,事件B:i+2行的值大于i+1行(暂时不考虑存在不增不减的样本)。如果股票的价格的变化与先前的价格变化无关,对事件A和B进行独立性检验的结果应该是A和B彼此没有联系,相反如果股票价格变化前后有关系,那么事件A和B就不是独立的。这里用来分析独立性的依据是卡方统计量。