為替相場の変動を周波数分析してみると周期性は見えてくるか(2/2)
前回は繰り返し、つまり、周期性があるかどうかを解析してみましたが、思ったような結果が出ませんでした。そこで変動エネルギーの一番大きいn=1の意味を考えてみましょう。
FFTの周波数分析の意味を考えるとn=1の変動は三角関数の1周期分を意味します。つまり1周期内の必ず、最大と最小があると言うことを意味します。
FFTの結果は複素数で出力されます。出力をFnとすると
Fn=a1×cos(ω1×t)+i・b1×sin(ω1×t)
絶対値が|a1|>>|b1|、|a1|<<|b1|の場合はサイン、コサイン波形に近づきます。
例えば、|a1|>>|b1|の場合は最大値、或いは最小値が来ることになるので相場が反転する可能性が高くなると言うことを示しています。つまりエントリーとしては「逆張り」
また、|a1|<<|b1|の場合はトレンドが現れてくるので、「順張り」がリーズナブルな取引手法になりそうです。
この条件を複素数の偏角で表してみると
|a1|>>|b1| ⇒偏角 0 or 180
|a1|<<|b1| ⇒偏角 90 or 270
実際のデータでは上図のように変化します。FFTはオーバーラップ50%で計算しているのでサイン関数のように周期的に変化をしていればFFT毎に位相差が「180°」になります。
条件として
上図から検索して「位相差も180°前後が連続する」
下図から検索して「発生確率エネルギー高い状態が連続する」
この場合はエントリーして取引を行うのも面白いのかもしれません。
折角、STFT処理をしたので一般的な表示方法のスペクトグラム表示にしてみましょう。縦軸は一番下がn=1、一番上がn=15に、横軸は右へ行くほど過去のデータを表します。一般的には信号強弱は対数ですが、余計に時間がかかりそうなのでリニアで計算しています。
信号強度は「赤(強 発生確率=1) ⇔ 青(弱、発生確率=0)」で表していますが、発生確率が殆ど1/3以下なので、ここの表示では発生確率=1/3以上は赤(強)にしています。
試しに一般的なグラフ表示をベースにVBAを利用して作ってみましたが、40秒ほど必要でした。一瞬、フリーズしたかと思いました。