この記事では、Python言語とNumPyを用いて、回帰分析による曲線近似(非線形フィッティング)で日経平均株価の予測を行ってみた結果とソースコード付きで解説します。
曲線近似で株価予測
PythonモジュールNumPyを用いた、回帰分析による曲線近似(非線形フィッティング)は下記事で紹介しています。 【NumPy】回帰分析で曲線近似(非線形フィッティング)
今回は、これを応用して簡単な株価予測をしてみました。 内容は、日経平均株価(終値)の前日から上昇するか、それとも下降するかの予想です。
処理手順
プログラムの処理手順は以下の通りです。
①日経平均株価の1年分のデータ(CSVファイル)を読み込む。 ②回帰分析で曲線近似(非線形フィッティング)を行う。 ③曲線のデータの勾配を1日ずつ求める。(終値の前日比) ④勾配の値を3値化する。(前日差がプラスなら1, マイナスなら-1, 不変なら0) ⑤ ①~④の処理を2つの年に対して行い、3値化データを2つ作成する。 ⑥ 3値化したデータ2つを比較して、一致している要素数(当たりの個数)を計算します。 ⑦ 当たりの確率を求めてパーセント表示します。
ソースコード
サンプルプログラムのソースコードです。(2次の場合)
# -*- coding: utf-8
import numpy as np
# 回帰分析(x, y)
def fitting(x, f):
# xの値を生成
x = np.linspace(1, len(f), len(f))
# フィッティング
a1, a2, a3, b = np.polyfit(x, f, 3)
# フィッティング関数
fh = a1 * x**3 + a2 * x**2 + a3 * x + b
# 勾配を計算
dfh = np.gradient(fh)
# 3値化(前日の終値よりプラス:1, 変化なし:0, マイナス:-1)
dfh[dfh > 0] = 1
dfh[dfh == 0] = 0
dfh[dfh
■使用したデータ(日経平均株価のデータ) 2013年分:nikkei13.csv 2014年分:nikkei14.csv 2015年分:nikkei15.csv 2016年分:nikkei16.csv
※株価データの入手は下記サイトを参考に行いました。 【日経平均株価】過去データ(CSV)をダウンロード
実行結果
サンプルプログラム実行結果です。 今回は、2013年~2016年のデータを用いて、6パターンの比較を行いました。
| 比較対象 | 当たり率[%] |
|---|---|
| 2013年と2014年 | 69.262 |
| 2014年と2015年 | 22.951 |
| 2015年と2016年 | 27.459 |
| 2014年と2016年 | 80.738 |
| 2013年と2015年 | 53.689 |
| 2013年と2016年 | 50.0 |
平均:50.683166666666665[%]
近似曲線がシンプルすぎるので、うまく行く場合と、そうでない場合の差が激しいです。 〇〇年と△△年の株価の動きがどれだけ似ているかの指標くらいには使える? この方法でやるなら、10年分くらいの近似曲線を求めて平均したりすれば少しはマシになるかもしれません。
まだフーリエ変換を用いた予測の方が使えるかもしれません。
関連ページ



コメント