matlab中利用快速傅里叶变换对股票价格进行频域分析
在学习matlab的快速傅里叶变换时,发现可以用他来对股票进行相对简单的快速处理,以判断股票价格的周期规律。
采集股票信息
本文重点在于快速傅里叶变换来处理股票价格周期,对于股票价格的采集不做过多描述。本文利用中兴通讯从1999年9月13日到2020年11月14日的收盘价作为数据基础进行研究。
matlab读取后进行plot,显示如下(横坐标未进行日期标注,仅按数据序列进行了简单的排列):
快速傅里叶变换
得到收盘价后,对价格进行快速傅里叶变换,并转化成单边谱,采样频率设置为每年260次,得到如下趋势:
从上面三张图可以看出来,中兴通讯从1999年9月13日到2020年11月14日价格波动中,波动的中心点为27.03元,相对波动值比较大的周期是9.93年(频率为0.1007/年),3.31年(频率为0.3021/年)和0.94年(频率为1.057/年),9.93年周期的波动范围是10.74元,3.31年的波动范围是3.51元,0.94年的波动范围是2.124元。
以上分析仅是用快速傅里叶变换做的初步分析,对于数据的深度挖掘可以在此方法上进一步延伸。
matlab代码如下:
b=load('ZXTX.txt');
Fs = 250; % Sampling frequency
T = 1/Fs; % Sampling period
L = length(b); % Length of signal
if mod(L,2)~=0
a=b(1:end-1);
L=L-1;
else
a=b;
end
Y = fft(a);
P2 = abs(Y/L); % 2-sides spectrum
P1 = P2(1:L/2+1); % fetch half of P2
P1(2:end-1) = 2*P1(2:end-1);
f = Fs*(0:(L/2))/L;
plot(f,P1);
关于快速傅里叶变换及双边谱及单边谱的内容可参考以下内容:
关于实信号的双边谱和单边谱
负频率与双边频谱(信号与系统的基本概念)