読者です 読者をやめる 読者になる 読者になる

pandasを使ってビットコイン価格と日経平均株価の移動相関を求めた

ynakayamaさんのキータ記事を読む

過去のデータからビッグデータ分析で株価を予測する

とても分かりやすくて勉強になります。記事内で日経平均株価とある銘柄の移動相関を求める方法が書かれており、ビットコイン価格と日経平均株価の移動相関を見てみたい! と思いやってみました。

まずは日経平均とシャープ株の相関を見てみる

株価データ取得

jpstock.py

ynakayamaさんが作られた株価データ取得スクリプトです。以下は2015年9月1日を開始日として、日経平均トヨタ、シャープの株価データを取得しています。

$python jpstock.py 1330 2015-09-01
$python jpstock.py 7203 2015-09-01
$python jpstock.py 6753 2015-09-01

html5libが無いと怒られたらpipインストールしてください。

ImportError: html5lib not found, please install it

$pip install html5lib

取得したデータは以下です。(stock_1330.csv)

Date,Open,High,Low,Close,Volume,Adj Close
2015-09-01,19150.0,19180.0,18580.0,18580.0,177440.0,18580.0
2015-09-02,18270.0,18880.0,18240.0,18500.0,176950.0,18500.0
2015-09-03,18790.0,18890.0,18560.0,18590.0,127990.0,18590.0

移動相関取得処理

ynakayamaさんのキータ記事からです..

import pandas as pd
def rolling_corr_with_N225(stock, window=5):
    d1 = pd.read_csv("".join(["stock_", stock, ".csv"]), index_col=0, parse_dates=True)
    d2 = pd.read_csv("stock_1330.csv", index_col=0, parse_dates=True)
    s1 = d1.asfreq('B')['Adj Close'].pct_change().dropna()
    s2 = d2.asfreq('B')['Adj Close'].pct_change().dropna()
    rolling_corr = pd.rolling_corr(s1, s2, window).dropna()
    return rolling_corr

実行結果

トヨタ日経平均株価の移動相関

import matplotlib.pyplot as plt
roll_cor = rolling_corr_with_N225('7203', 5)
plt.plot(roll_cor)
plt.show()

スクリーンショット 2016-02-06 04.45.12.png

シャープと日経平均株価の移動相関

import matplotlib.pyplot as plt
roll_cor = rolling_corr_with_N225('6753', 5)
plt.plot(roll_cor)
plt.show()

スクリーンショット 2016-02-06 04.46.09.png

トヨタに比べてシャープは相関が低いのが分かります。

ビットコイン価格と日経平均株価の相関を見てみる

ビットコイン価格データ取得

Bitcoin Market Price USDから取得したデータをクリーニングして、stock_btc.csvという名前で保存しました。

stock_btc.csv

Date,Adj Close
2015-09-01,228.32
2015-09-02,230.68
2015-09-03,227.42

実行結果

import matplotlib.pyplot as plt
roll_cor = rolling_corr_with_N225('btc', 5)
plt.plot(roll_cor)
plt.show()

スクリーンショット 2016-02-06 06.01.54.png

シャープよりも相関が低いですね。相関無しの状態ということでしょうか..

まとめ

簡単に移動相関がグラフ化できるので他のペアでも試してみたくなりました(例えばUSDとBTCの相関などいろいろ)。またynakayamaさんの記事にあるような価格予測も今後やってみます。

参考

過去のデータからビッグデータ分析で株価を予測する

jpstock.py

pandas.rolling_corr

pandas.DataFrame.asfreq

Bitcoin Market Price USD

鴻海とシャープ、月内の買収合意めざす

TipMe

TipMe with IndieSquare