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

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

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

はじめに

前回はやっとVTIチャートに対してFFT、IFFTをブチかましたところ。
問題無く周波数特性が取れ、そこから再度VTIチャートに逆変換できることもできた。
しかし、VTIチャートの周波数特性がちょっと今後の進め方に取って都合が悪いような・・・。

そこは兎も角として、前回のMATLABで実施したFFT、IFFTをPythonでも実施してみる。

登場人物

博識フクロウのフクさん

指差しフクロウ

イラスト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チャートにFFT、IFFTをブチかます。(Python版)

太郎くん
太郎くん

なんか、前回は最後に意味深なこといってたけど、
その前に同様のことをPythonでも出来るようにしておくんだよね?

フクさん
フクさん

そうそう。
ちゃんと毎回Python側も確認していかないと、
MATLABだけで話が進みかねないからね。

太郎くん
太郎くん

(それはフクさんが勝手にMATLABでガシガシ進めちゃうからだな)

Pythonコード

フクさん
フクさん

そして、MATLABコードの流れを元に作って来たPythonコードがこれだ

import numpy as np
import matplotlib.pyplot as plt

VTI=np.loadtxt('VTI.csv',delimiter=',') # 変換用波形読み込み
N=len(VTI)
L=N/2
x=np.linspace(-L,L-1,N)
ft=VTI

fig = plt.figure()

# 変換前波形
ax1 = fig.add_subplot(4, 1, 1)
ax1.plot(x,ft)
ax1.set_title('f(t)')
ax1.grid()

# FFT後にローテーション
Fw=np.fft.fft(ft)
Fw_tmp = np.roll(Fw,int(L))
ax2 = fig.add_subplot(4, 1, 2)
mask = (-50<=x) & (x<=50)
ax2.plot(x[mask],np.abs(Fw_tmp[mask]))
ax2.set_title(r'$F(\omega)$')
ax2.grid()

# 拡大
ax3 = fig.add_subplot(4, 1, 3)
mask = (0<=x) & (x<=10)
ax3.plot(x[mask],np.abs(Fw_tmp[mask]))
ax3.set_title(r'$F(\omega)$')
ax3.grid()

# IFFT前にローテーション
fx=np.fft.ifft(np.roll(Fw_tmp,int(L)))
ax4 = fig.add_subplot(4, 1, 4)
ax4.plot(fx.real, 'r',lw=4 )
ax4.plot(ft,'b',lw=2 )
ax4.set_title('f(x)')
ax4.grid()

plt.show()

動作結果

フクさん
フクさん

で、動作結果がこれ。

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

当然と言えば当然だけど、MATLABの時と同じ結果だね。

フクさん
フクさん

これで、MATLAB、Python(Numpy)で同じレベルで実験を進めて行けそうだ。

太郎くん
太郎くん

あと、csv読み込みはNumpyで出来たんだね。

フクさん
フクさん

他にもcsv読み込みの手段はあるが、
今回はNumpyでやってみた。
ってところだ。

太郎くん
太郎くん

で、前回の謎の発言は?

フクさん
フクさん

それは次回改めて説明しよう。

まとめ

フクさん
フクさん

まとめだよ。

  • Python(Numpy)でVTIチャートにFFT、IFFTをブチかます。
    • MATLABと同一の結果が得られた。
    • これによりMATLABとPython(Numpy)の両方で同じレベルで実験が進められる。
  • Numpyにcsv読み込みの機能がある。
    • 他にも手段はあるが、今回はNumpyで実施。

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

コメント

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