【NumPy】高速フーリエ変換で日経平均株価の予測

この記事では、Python言語とNumPyを用いて、高速フーリエ変換(FFT)で株価予測をしてみた結果をソースコード付きで解説します。

高速フーリエ変換で株価予測

PythonモジュールNumPyを用いて、高速(逆)フーリエ変換によるサンプルデータの平滑化(ノイズ除去)は下記事で紹介しています。
【NumPy】高速逆フーリエ変換とローパスフィルタでノイズ除去

今回は、これを応用して簡単な株価予測をしてみました。
内容は、日経平均株価(終値)の前日から上昇するか、それとも下降するかの予想です。

処理手順

プログラムの処理手順は以下の通りです。

①日経平均株価の1年分のデータ(CSVファイル)を読み込む。
②高速フーリエ変換を行う。
③カットオフ周波数(fc)より高い周波数成分をカットする。(ローパスフィルタで0にする)
④逆高速フーリエ変換する。
⑤変換後のデータの勾配を求める。(終値の前日比)
⑥勾配の値を3値化する。(前日差がプラスなら1, マイナスなら-1, 不変なら0)
⑦ ①~⑥の処理を2つの年に対して行い、3値化データを2つ作成する。
⑧ 3値化したデータ2つを比較して、一致している要素数(当たりの個数)を計算します。
⑨ 当たりの確率を求めてパーセント表示します。

ソースコード

サンプルプログラムのソースコードは下記の通りです。


■使用したデータ(日経平均株価のデータ)
2013年分:nikkei13.csv
2014年分:nikkei14.csv
2015年分:nikkei15.csv
2016年分:nikkei16.csv

実行結果

サンプルプログラム実行結果は下記の通りです。
今回は、2013年~2016年のデータを用いて、6パターンの比較を行いました。

2013年と2014年の比較…48.77 [%]
2014年と2015年の比較…49.18 [%]
2015年と2016年の比較…60.246 [%]
2014年と2016年の比較…47.951 [%]
2013年と2015年の比較…55.328 [%]
2013年と2016年の比較…56.557 [%]
平均:53.005[%]

一応、当たりの確率の方が高くなりました。
今回は日経平均株価に対して1日ずつ予測しました。
サンプルデータの数を増やす、株価の動きが例年似ている決算月、ボーナス支給月、安定した銘柄を対象にするなどで予測すれば良い結果が出るかもしれません。

関連ページ

Pythonで株・投資信託のデータ分析【超入門】
Pythonを用いて株・投資信託のデータを分析し、値動きを予測する方法をソースコード付きで解説します。

コメント