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

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

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

はじめに

前回までで、個別株に対して収支シミュレーションを実施した。
知ってるチャートに対してではあるが、特徴を拾った上で収益がでそうな気配はある。
一応、当初のやりたいことはやった感じではあるが・・・。

登場人物

博識フクロウのフクさん

指差しフクロウ

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

さらに突き詰めることは可能なのか?

フクさん
フクさん

一応、個別株に対しても収支シミュレーションをしたし、
当初の目的は達成かな。

太郎くん
太郎くん

まぁそうなんだけど、ちょっと気になることがあるんだよね。

フクさん
フクさん

(珍しいな。こういうことはさっさと終わらせようとする傾向が強い太郎くんが。)

フクさん
フクさん

何が気になるの?

太郎くん
太郎くん

今回は10[Hz]を中心とした
9~11[Hz]の範囲でバンドパスフィルタした波形だったと思うのだけど、
そもそもとして10[Hz]を中心で良かったのかな?って。

フクさん
フクさん

どういうこと?
11[Hz]や9[Hz]を中心にした方がより良い。って印象を持ってるって事?

太郎くん
太郎くん

そういうことじゃなくて、
「実は9.7[Hz]が中心の方がより良い!」
とかあるのかなって思って。

フクさん
フクさん

なるほど。
周波数分布の精度の話か。

周波数分布の小数点以下は拾えるのか?

フクさん
フクさん

FFT、IFFTの性質上、入力サンプリング期間に対して整数倍の周波数しか取り出せない

太郎くん
太郎くん

やっぱダメかぁ。

フクさん
フクさん

ただ、入力サンプリングの長さを2倍にし、
9[Hz]の周波数は元の1倍の時の4.5[Hz]相当の特性。
とは言えるね。

太郎くん
太郎くん

と言うことは、9.7[Hz]あたりを見ようと思ったら
入力サンプリングを10倍にして、97[Hz]が元の9.7[Hz]相当。
ってことか。

フクさん
フクさん

そうなるね。
まぁ問題はどうやって入力サンプリング期間を引き延ばすかってところだけど。

太郎くん
太郎くん

うーん、前後に0を入れちゃうとか?

フクさん
フクさん

それも一つのやり方だな。

フクさん
フクさん

実際FFTも本来であれば2のべき乗の入力サンプリング期間である必要はあったけど、
MATLAB,Python(Numpy)は特に「2のべき乗」については気にしなかったよね?

太郎くん
太郎くん

あ、そういえば、「2のべき乗」があるはずだけど、特にそこで引っかかることはなかったな。

フクさん
フクさん

それぞれのFFT関数の中で2のべき乗になるように0埋めして自動で長さ調整されてるってことだな。

太郎くん
太郎くん

なるほど。
それで気にしなくて良かったのか。

0埋めの問題

フクさん
フクさん

この0埋め、ちょっと問題がある。

太郎くん
太郎くん

そうなの?

フクさん
フクさん

元の入力サンプリングの波形が変わってしまうんだよね。

太郎くん
太郎くん

まぁ0埋めしちゃうからね・・・。

フクさん
フクさん

ちょっと0埋めする程度ならそれほど問題にはならないだろうが、
元のサンプリングを2倍3倍、ましてや10倍にするような0埋めをしたら、それはもう別物だな。

太郎くん
太郎くん

確かに!

フクさん
フクさん

対策としては、入力サンプリングの外側を0埋めするのではなく、
サンプリング間を補間する考え方もあるが。

太郎くん
太郎くん

結構めんどそうだな。
なんかいい方法ないの?

フクさん
フクさん

まぁそこは次回説明しよう。

太郎くん
太郎くん

(うーん、変に疑問に思わず、さっさと終わらせておけばよかったかなぁ)

まとめ

フクさん
フクさん

まとめだよ。

  • さらに適切な周波数を特定できないか検討。
    • 10[Hz]じゃなくて9.7[Hz]が実はより適切だったかも。とか。
  • 入力サンプリング期間を延ばせば、見た目の周波数より細かい周波数特性は出せる。
    • 問題は期間の伸ばし方。
      • 0埋めで伸ばす場合、0埋めがあまり多すぎると元データと乖離する。
      • サンプリング間の補間もまぁまぁメンドイ。

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

コメント

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