最初にひとこと

長かった・・・・

このコード書くのに、まず環境変数の定義から始まって、1日がかかりになってしまいました。

何も知らない、ド素人が、気合だけで、いちから、Pythonで各アセットの年初来の騰落率をグラフ化してみました。

以下は、あまり参考にならないコードです。なぜか、ヤフーファイナンスからデータを持ってくるパッケージが壊れてしまったので、別のサイトからデータを引っ張ってきています。

プログラムの実行が30秒で終わるからといって、負荷をかけるのはやめましょう。どこからもダウンロードさせてもらえなくなってしまいます。

なお、このプログラムの実行には、まず、Pythonの環境変数の定義から始まって、下記のパッケージのinstallが必要です。

  • investpy
  • pandas
  • numpy
  • matplotlib

Investpyでデータ取得

import investpy
import pandas as pd
import numpy as np

BTC = investpy.get_crypto_historical_data(crypto='bitcoin', from_date='01/01/2020', to_date='31/12/2020')
BTC = BTC.drop(['Currency'], axis = 1)
BTC.to_csv('D:/btc.csv')

DJI = investpy.get_index_historical_data(index='dow 30', country='united states', from_date='01/01/2020', to_date='31/12/2020')
DJI = DJI.drop(['Currency'], axis = 1)
DJI.to_csv('D:/DJI.csv')

NK225 = investpy.get_index_historical_data(index='Nikkei 225', country='japan', from_date='01/01/2020', to_date='31/12/2020')
NK225 = NK225.drop(['Currency'], axis = 1)
NK225.to_csv('D:/NK225.csv')

GOLD = investpy.etfs.get_etf_historical_data(etf='SPDR Gold Shares', country='united states', from_date='01/01/2020', to_date='31/12/2020')
GOLD = GOLD.drop(['Currency'], axis = 1)
GOLD.to_csv('D:/GOLD.csv')

AMD = investpy.stocks.get_stock_historical_data(stock='AMD', country='united states', from_date='01/01/2020', to_date='31/12/2020')
AMD = AMD.drop(['Currency'], axis = 1)
AMD.to_csv('D:/AMD.csv')

Pandasでダウンロードしたデータを結合

import pandas as pd
import numpy as np

d1 = pd.read_csv('D:/btc.csv', index_col=0,usecols=[0,4])
d1 = d1.rename(columns={'Close': 'BTCUSD'})

import pandas as pd
import matplotlib.pyplot as plt
d2 = pd.read_csv('D:/DJI.csv', index_col=0,usecols=[0,4])
d2 = d2.rename(columns={'Close': 'DJI'})

import pandas as pd
import matplotlib.pyplot as plt
d3 = pd.read_csv('D:/NK225.csv', index_col=0,usecols=[0,4])
d3 = d3.rename(columns={'Close': 'NK225'})

import pandas as pd
import matplotlib.pyplot as plt
d4 = pd.read_csv('D:/GOLD.csv', index_col=0,usecols=[0,4])
d4 = d4.rename(columns={'Close': 'SPDR GLD'})

import pandas as pd
import matplotlib.pyplot as plt
d5 = pd.read_csv('D:/AMD.csv', index_col=0,usecols=[0,4])
d5 = d5.rename(columns={'Close': 'AMD'})

df= d1.join([d2, d3, d4, d5], how='inner')

print(E1.head())

print(E1.tail())

Matplotlibでグラフを描画

import matplotlib.pyplot as plt

df = df.set_index('Date')

df_all=(1+df.pct_change()).cumprod()

df_all.plot(figsize=(8,6),fontsize=10)

plt.legend(loc='center left', bbox_to_anchor=(1, 0.5), fontsize=10) 

plt.xticks(rotation =90)
plt.xticks( np.arange(min(x),200,step=5) )

plt.xlabel('')

plt.tight_layout()

plt.show()

成果物

思いのほか、ビットコインとゴールドが伸びています。年初来では、コロナショック後の株価指数の回復がいまいちでした。もちろん、個別材料があるアメリカの優良大型銘柄が、一番反発しています。ここからは、やはり少ない銘柄をねらってストックピッキングしかない気が・・・。

あと、こんなことになるなら、もう少し、短くコーディングできるようにならないと、Pythonはあまり役に立ちそうにありません。

image


ちなみに、ビットコインがピークを打った2018年始からの比較だとこうなる。やはり、アメリカの個別株か。

2018