日経平均ボラティリティー・インデックス(日経平均VI)を高速フーリエ変換したが、なんもなかった

なんもなかった。が、なんもなかったなりの備忘録。

データの取得

Quandle経由で取得。元のソースはコメントに記載。
PLOTを見る限り、ちゃんとした元の値っぽい。

library("Quandl")
# Sorce: https://www.quandl.com/data/NIKKEI/VLTL-Nikkei-Stock-Average-Volatility-Index
# Download Nikkei VI
vi <- Quandl("NIKKEI/VLTL")
# Plot
plot(vi$Date, vi$Close)

データをスケーリング(平均を0化のみ)し、FFTかけてPLOT。
データ自体はFFTの掟的にナイキスト周波数以降はぶった切ってる。
この図から見るに、低周波数=長周期が支配的っぽい。

# Scaling
x <- vi$Close - mean(vi$Close)
# FFT and convert into powerspectrum
vi_fft <- (abs(fft(x))^2)[1:(nrow(vi)/2)]
# Frequency range
f <- (seq(0, nrow(vi)-1, 1)/(nrow(vi)))[1:(nrow(vi)/2)]
#Plot frequency v.s. power spectrum(1)
plot(f, vi_fft)

↑が見づらいので、高周波数領域をやや削る。

#Plot frequency v.s. power spectrum(2)
plot(f[1:100], vi_fft[1:100])

周波数だとわかりにくいので、周波数→時間(周期)での表示に変換
500日強の周期を持つ波が強そうだが、これはノイズのlevel?&トレーディング的にそんなに待てないので、放置で。。。

#Plot frequency v.s. power spectrum
plot(1/f[1:100], vi_fft[1:100])

もうちょっと周期の短いところだけをPLOT。
う、うーん解釈に苦しむスペクトルだ。

#Plot frequency v.s. power spectrum
plot(1/f[5:100], vi_fft[5:100])

おしまい。

FFTのチェック

横軸の扱いがちょっと怪しいので確認。
周期123の正弦波のピークがちゃんとそこに立ってるかを確認(図示)。

# FFT check
T <- 123
t <- (0:500)
f <- (0:500)/500
wave = sin(2*pi*t/T)
plot(1/f[1:50], abs(fft(wave))[1:50])

ついでに値も念のため確認。おおよそ対応する日にち(125日)にピークがあるので、あってるだろと。

> 1/f[1:50]
 [1]       Inf 500.00000 250.00000 166.66667 125.00000 100.00000  83.33333  71.42857  62.50000  55.55556  50.00000  45.45455
[13]  41.66667  38.46154  35.71429  33.33333  31.25000  29.41176  27.77778  26.31579  25.00000  23.80952  22.72727  21.73913
[25]  20.83333  20.00000  19.23077  18.51852  17.85714  17.24138  16.66667  16.12903  15.62500  15.15152  14.70588  14.28571
[37]  13.88889  13.51351  13.15789  12.82051  12.50000  12.19512  11.90476  11.62791  11.36364  11.11111  10.86957  10.63830
[49]  10.41667  10.20408
> abs(fft(wave))[1:50]
 [1]   1.8103671   2.9863890   6.1342361  14.6075087 246.2353106  21.4560098  11.1087158   7.7422349   6.0391541   4.9956202
[11]   4.2832646   3.7621472   3.3622089   3.0443135   2.7847859   2.5684082   2.3849216   2.2271388   2.0898629   1.9692353
[21]   1.8623257   1.7668661   1.6810707   1.6035134   1.5330400   1.4687057   1.4097291   1.3554581   1.3053438   1.2589205
[31]   1.2157905   1.1756122   1.1380900   1.1029669   1.0700187   1.0390482   1.0098819   0.9823661   0.9563642   0.9317544
[41]   0.9084279   0.8862869   0.8652434   0.8452180   0.8261388   0.8079406   0.7905640   0.7739551   0.7580643   0.7428466