バックナンバーはこちら。
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埋めがあまり多すぎると元データと乖離する。
- サンプリング間の補間もまぁまぁメンドイ。
- 問題は期間の伸ばし方。
バックナンバーはこちら。
コメント