初めに
現在保有しているnojima株について、データ解析をしていきたい。
知りたいこと
・nojimaと一番連動率が高い銘柄はどれか
そのために
・いくつかの銘柄との株価連動を可視化する
比較対象銘柄
・Nikkei225
・家電大手
実装手順
・必要な株価データをDFに格納
・比較対象の銘柄の騰落率をDFに追加
・比較対象の銘柄の騰落率の推移を描画
(余力があれば、比較対象を変える)
実装したコード
必要な株価データをDFに格納
内容:ノジマ、日経225、ヤマダ電機の株価データをDFに格納
df_nojima = pandas_datareader.data.DataReader('7419.JP', 'stooq', '2015-01-01')
df_nikkei = pandas_datareader.data.DataReader('^NKX', 'stooq', '2015-01-01')
df_yamada = pandas_datareader.data.DataReader('9831.JP', 'stooq', '2015-01-01')
内容:nojimaの終値と14日移動平均線を折れ線グラフで描画する
df_nojima['SMA'] = df_nojima['Close'].rolling(window=14).mean()
df_nojima['Close'].plot(figsize=(15,6), color="red")
df_nojima['SMA'].plot(figsize=(15,6), color="green")
plt.show()
出力結果:
比較対象の銘柄の騰落率をDFに追加
内容:ノジマと、日経225、ヤマダ電機の騰落率の推移を折れ線グラフで描画
実装したコード:
3銘柄の騰落率のデータをDFに追加
df_nojima['change'] = (((df_nojima['Close'] - df_nojima['Open'])) / (df_nojima['Open']) * 100)
df_nikkei['change'] = (((df_nikkei['Close'] - df_nikkei['Open'])) / (df_nikkei['Open']) * 100)
df_yamada['change'] = (((df_yamada['Close'] - df_yamada['Open'])) / (df_yamada['Open']) * 100)
df_nojima['Close'].plot(figsize=(15,6), color='red')
df_nikkei['Close'].plot(figsize=(15,6), color='blue')
plt.show()
出力結果
感想
株価が10倍近く違うので、連動しているのかがわかりづらいが、とりあえず先を急ぐ。単位の違う2つの値を図式化する方法については、別の機会にやろうと思う。
比較対象の銘柄の騰落率の推移を描画
内容:3銘柄(ノジマ、日経225、ヤマダ電機)の騰落率を1つのグラフに描画
実装したコード
# データマイニング
df_nojima['change'].tail(100).plot(grid=True, figsize=(15,6), color="red")
df_nikkei['change'].tail(100).plot(grid=True, figsize=(15,6), color="blue")
df_yamada['change'].tail(100).plot(grid=True, figsize=(15,6), color="orange")
plt.show()
出力結果
気づくこと
・ノジマ株が最も騰落が激しい
・日経はほとんど横ばい(株価が高いからそのようになるのは当然?)
比較対象の追加
余力があるので、家電小売大手4社とノジマ株の連動性を可視化する。
対象銘柄
- ビックカメラ<3048>
- ケーズホールディングス<8282>
- エディオン<2730>
- 上新電機<8173>
必要な株価データをDFに格納
内容:ノジマ以外の4銘柄の株価データをDFに格納
実装したコード
df_nojima = pandas_datareader.data.DataReader('7419.JP', 'stooq', '2015-01-01')
df_bic = pandas_datareader.data.DataReader('3048.JP', 'stooq', '2015-01-01')
df_case = pandas_datareader.data.DataReader('8282.JP', 'stooq', '2015-01-01')
df_edion = pandas_datareader.data.DataReader('2730.JP', 'stooq', '2015-01-01')
df_joshin = pandas_datareader.data.DataReader('8173.JP', 'stooq', '2015-01-01')
比較対象の銘柄の騰落率をDFに追加
実装したコード
df_nojima['change'] = (((df_nojima['Close'] - df_nojima['Open'])) / (df_nojima['Open']) * 100)
df_bic['change'] = (((df_bic['Close'] - df_bic['Open'])) / (df_bic['Open']) * 100)
df_case['change'] = (((df_case['Close'] - df_case['Open'])) / (df_case['Open']) * 100)
df_edion['change'] = (((df_edion['Close'] - df_edion['Open'])) / (df_edion['Open']) * 100)
df_joshin['change'] = (((df_joshin['Close'] - df_joshin['Open'])) / (df_joshin['Open']) * 100)
比較対象の銘柄の騰落率の推移を描画
内容:比較対象の4銘柄とノジマの騰落率をグラフ化(2つずつに分けて実行)
df_nojima['change'].tail(100).plot(grid=True, figsize=(15,6), color="red")
df_bic['change'].tail(100).plot(grid=True, figsize=(15,6), color="blue")
df_case['change'].tail(100).plot(grid=True, figsize=(15,6), color="orange")
plt.show()
出力結果
気づいたこと
・ノジマが一番騰落率が高い
・3銘柄とも連動している箇所が多い(特に、青とオレンジ{ビックカメラとケーズ電気}の連動率が高い)
df_nojima['change'].tail(100).plot(grid=True, figsize=(15,6), color="red")
df_edion['change'].tail(100).plot(grid=True, figsize=(15,6), color="blue")
df_joshin['change'].tail(100).plot(grid=True, figsize=(15,6), color="orange")
plt.show()
出力結果
気づいたこと
・ノジマの騰落率が最も高い
・ノジマ以外の2銘柄の騰落率が小さくて、あまり連動しているかがわからない
まとめ
なんかデータ解析してる!と感じながら、楽しんでできた。ただ、問題は、いくつかある。
- 株価が離れた銘柄を比較検討するのには、もう一工夫が必要
- 騰落率の高い銘柄と低い銘柄を比較検討するのにも、もう一工夫が必要
という、グラフの可視化における超初歩的な教訓を肌で実感した。Excelとかでも、桁の違う2つのデータをグラフ化するときに、横軸を2つ設定するなど工夫が必要なように、pythonを使っての可視化も同様に一工夫が必要であることがわかった。
当初知りたかった、「ノジマと最も連動率が高い銘柄」だが、該当なし。(笑)
なんのための時間だった!?となっているが、
値の違うデータの取り扱い注意!
というデータ解析におけるとっても大切な教訓を得られたと考え、今回は終了。