【連続系】MATLAB、Pythonで株価予測 その78【フーリエ変換⑮】

【連続系】MATLAB、Pythonで株価予測 その78【フーリエ変換⑮】 株価予測
【連続系】MATLAB、Pythonで株価予測 その78【フーリエ変換⑮】

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

はじめに

前回は、ATLABとPython(Numpy)のフーリエ変換、逆フーリエ変換for文無し版の動作確認を実施。
共に問題無く動作した。
for文無しにはできるが、元のfor文あり版で今後は進めて行く。

前回まではシンプルなsin波の合成波形だったが、
今回からは、具体的な個別株のデータを入れていく。

登場人物

博識フクロウのフクさん

指差しフクロウ

イラスト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

今後の予定

太郎くん
太郎くん

とりあえず、FFTじゃない本当のフーリエ変換ベースのコードはできたわけだけど、
今後はどうする?
もう個別株を入れちゃう?

フクさん
フクさん

そうだね。
まずは、フーリエ変換後の逆フーリエ変換をして元波形に戻るか。
その後に、抽出したい周波数範囲を特定。
最後にFFT、IFFTでやったのと同じく極大値、極小値のタイミングとその時の単価特定。
って感じだな。

太郎くん
太郎くん

まぁ着実に固めて行った方が良いね。

フクさん
フクさん

なんかしくじってる可能性もあるし。

太郎くん
太郎くん

しかし、この手のプログラムでしくじってるとかあると問題特定とかできるのか?

フクさん
フクさん

基本は数式から見直すことになるね。

太郎くん
太郎くん

そうだよねー。
ブレークポイント貼ってステップ実行で確認とかってタイプのデバッグにはならないよねぇ。

フクさん
フクさん

それができないことが欠点とも言えるし、
それをしなくても良いことが利点とも言えるから、
どっちもどっちだな。

太郎くん
太郎くん

(これを利点と言えるレベルになりたい・・・。)

MATLABコード修正箇所

太郎くん
太郎くん

で、今回もコード修正が入るのかな?

フクさん
フクさん

ほぼ変化はないな。
MATLAB内で波形を作るか、csvファイルから読み取るかの差だけだな。
念のため差分を書くとこんな感じだ。

L=pi;     % 波形の期間(-L~L)
w_max = 20; % 取りたい最大周波数
x=linspace(-L,L,255);
ft=sin(x)+sin(3*x)+sin(7*x); % 変換用波形読み込み
N=length(ft); % 波形のplot数取得

L=pi;     % 波形の期間(-L~L)
w_max = 125; % 取りたい最大周波数
stock=csvread('TM1.csv'); % 変換用波形読み込み
N=length(stock); % 波形のplot数取得
ft=stock-mean(stock); % 波形を行ベクトルへ
ft=ft';
太郎くん
太郎くん

csvreadでよむだけだね。
で、csvの並び的に列ベクトルになるから、
ft=ft’
行ベクトルに転置してるだけか。

フクさん
フクさん

そうそう。
これで前回のコード構成を変更せずに使いまわせる。

太郎くん
太郎くん

いつもそうなんけど、
列ベクトルをデフォルトとして扱うべきか
行ベクトルとデフォルトとして扱うべきかは悩むね。

フクさん
フクさん

数学的には列ベクトルをデフォルトとすべきっぽいが、
MATLABのベクトル、数列を生成する機能のほとんどが行ベクトルなんだよね。
だから、MATLABに於いては行ベクトルをデフォルトとした方が利便性は高いな。

太郎くん
太郎くん

なるほど。
ツール側の性格に合わせた方がトータルでは楽そうってことか。

まとめ

フクさん
フクさん

まとめだよ。

  • 今後の予定について検討。
    • 個別株の波形に対して以下を実施。
      • フーリエ変換後の逆フーリエ変換をして元波形に戻るか。
      • 抽出したい周波数範囲を特定。
      • 極大値、極小値のタイミングとその時の単価特定。
  • MATLABの場合、行ベクトルをデフォルトとした方が利便性が高い。

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

コメント

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