【VTI】MATLAB、Pythonで株価予測 その38【周波数解析②】

【VTI】MATLAB、Pythonで株価予測 その38【周波数解析②】 株価予測
【VTI】MATLAB、Pythonで株価予測 その38【周波数解析②】

バックナンバーはこちら。
https://www.simulationroom999.com/blog/stock-predict-matlabpython-backnumber/

はじめに

前回は今後の方針としてVTIの周波数特性を見て見る流れを考えた。
と言っても、やってみないとわからないので、結論としては行き当たりばったり方式。

というわけで、今回はおもむろにVTIチャートにFFTをぶちかます。

登場人物

博識フクロウのフクさん

指差しフクロウ

イラストACにて公開の「kino_k」さんのイラストを使用しています。
https://www.ac-illust.com/main/profile.php?id=iKciwKA9&area=1

エンジニア歴8年の太郎くん

技術者太郎

イラストACにて公開の「しのみ」さんのイラストを使用しています。
https://www.ac-illust.com/main/profile.php?id=uCKphAW2&area=1

VTIチャートをちょっと加工

太郎くん
太郎くん

じゃー、VTIチャートにFFTをブチかましてみよう!

フクさん
フクさん

ちょい待ち!

太郎くん
太郎くん

何?まだ何かあるの?

フクさん
フクさん

VTIチャートの日数が現状だと251日になってると思うのだけど、
サンプリング数が奇数だとローテーションする際に少し都合が悪い
よって、偶数の250日としてFFTを掛ける。

まぁ偶数か奇数か確認してローテーションの数値を調整すれば良いのだけど、メンドイのでデータ側を弄ろう。

太郎くん
太郎くん

じゃー、最後の251日目を削っておくねー。

VTIチャートにFFT、IFFTをブチかます。(MATLAB版)

フクさん
フクさん

VTIチャートに対するFFT、IFFTは以下のコードになる。

VTI=csvread('VTI.csv'); % VTIチャート読み込み
N=length(VTI);
L=N/2;
x=linspace(-L,L-1,N);
ft=VTI;

% 変換前波形
subplot(4,1,1)
plot(ft)
title('f(t)');
grid();

% FFT後にローテーション
Fw=fft(ft);
Fw_tmp=circshift(Fw,fix(L));
subplot(4,1,2);
mask = (-50<=x & x<=50);
plot(x(mask),abs(Fw_tmp(mask)));
title('F(\omega)');
grid();

% 拡大
subplot(4,1,3);
mask = (0<=x & x<=10);
plot(x(mask),abs(Fw_tmp(mask)));
title('F(\omega)');
grid();

% IFFT前にローテーション
fx = (ifft(circshift(Fw_tmp,fix(L))));
subplot(4,1,4);
plot(real(fx),'r','LineWidth',4);
hold on;
plot(ft,'b','LineWidth', 2);
title('f(x)');
grid();

結果

フクさん
フクさん

そして結果だ。

VTIチャートにFFT,IFFTを実施(MATLAB版)、f(t)、F(ω)、f(x)
太郎くん
太郎くん

一番下のグラフが赤線がIFFTの結果、青線が元のVTIチャートだよね?

完全に重なってて、ぱっと見だと紫に見えるけど。

フクさん
フクさん

そうだよ。

太郎くん
太郎くん

ばっちり重なってるからVTIチャートに対してFFT、IFFTは問題無く使えるってことだね。

完全に重なってて、ぱっと見だと紫に見えるけど。

フクさん
フクさん

そうなるな。
しかし、これは・・・。

なんとなく嫌な感じ

太郎くん
太郎くん

何?ちゃんと動いていて問題なさそうだけど、なんかあるの?

フクさん
フクさん

FFT、IFFTに関しては問題無い。
問題はVTIチャートの周波数特性だな。

太郎くん
太郎くん

ちゃんとIFFTで戻ってるからちゃんとした特性だと思うのだけど?

フクさん
フクさん

まぁ、ここらへんはPython側で同じことを実施した後に突き詰めていこう。

太郎くん
太郎くん

(不安なまま放置される僕の気持ちは・・・。)

まとめ

フクさん
フクさん

まとめだよ。

  • FFTの出力をローテーションしている都合、サンプリング数は偶数が望ましい。
    • 頑張って調整すれば奇数でも行けるはずだがメンドイのでやらない。
  • 無事、VTIチャートの周波数特性及びそこからのVTIチャートへの逆変換ができた。
    • しかし、VTIチャートの周波数特性自体に何かしら問題が・・・。

バックナンバーはこちら。

コメント

タイトルとURLをコピーしました