【NumPy】移動平均線・重回帰分析による株価予測の正答率

この記事では、Python言語とNumPyを用いて、移動平均線(MA)と重回帰分析(多変量解析)で株価予測した結果の正答率を求める方法をソースコード付きで解説します。

重回帰分析(多変量解析)で株価分析

前回の記事では、前日の移動平均線(5日線、25日線、75日線、200日線)を説明変数として、重回帰分析で株価を予測してみました。

前回の記事はこちら
参考 【NumPy】移動平均線と重回帰分析で株価予測

今回は、作成したモデル式を用いて、日経平均株価(終値)が上昇・不変・下落のいずれの動きを示すかを1日ずつ予測してみました。 そして、予測値と実測値を比較して正答率を求めました。

ソースコード

サンプルプログラムのソースコードです。

# -*- coding: utf-8
import numpy as np
import matplotlib.pyplot as plt

# 移動平均線の計算(データ, 日数)
def move_average(data, day):
    return np.convolve(data, np.ones(day)/float(day), 'valid')

# 重回帰分析(偏回帰係数の計算)
def stat(y, x):
    x = np.vstack([np.ones(x.shape[1]), x]) # 定数項, 説明変数
    return np.linalg.lstsq(x.T, y)[0]       # 偏回帰係数

# 前日から上昇・下落のチェック
def ud(f):
    # 勾配を計算
    df = np.gradient(f)
    # 前日から上昇なら1, 不変なら0, 下降なら-1
    df[df > 0] = 1
    df[df == 0] = 0
    df[df 
使用したデータ(日経平均株価のデータ)
2014年分 nikkei15.csv
2015年分 nikkei15.csv
2016年分 nikkei16.csv

※株価データの入手は下記サイトを参考に行いました。 【日経平均株価】過去データ(CSV)をダウンロード

実行結果

サンプルプログラムの実行結果は以下の通りです。

正答率:68.852 [%]

単回帰分析バージョンは下記事で解説しています。 【NumPy】移動平均線・単回帰分析による株価予測の正答率

関連ページ

404 NOT FOUND | Python超入門部
記事の監修者
西住技研

プログラミング言語「Python」を研究、仕事、趣味でデータ分析や作業自動化などに活用してきたノウハウを情報発信しています。
筆者の詳しいプロフィールやお問合せはこちらのページまで。
YoutubeX(旧Twitter)でも情報発信中です!

西住技研をフォローする
NumPy

コメント