【コピペOK】Pythonで米国株の株価データを取得してリターンを比較する方法
・気になっている銘柄の株価データをパパッと比較したい
・Python で金融データの分析をやってみたい
・自分が購入した個別株の株価の長期推移を知りたい
こういった方向けに記事を書いていきます。
今回作るのは
ユーザーが指定した期間に指定した複数の米国個別株にどれくらい値動きがあったかをグラフで比較するPythonコード
です。
要するに欲しい株価データの推移を可視化するプログラムですね。
自動売買 bot を作るにせよ、何らかのテクニカル分析をするにせよ株価データがなければ始まりません。
Python初心者にとってはとりあえずまずはじめに触れておいて損はないプログラムです。
例えば「2020年1月1日から2020年10月12日のGAFAMの株価推移の比較が欲しいなあ」と思ったとします。
そんな時はこのプログラムを実行すればこんな感じの画像が生成されます。
GAFAMの中ではこの期間中 Amazon が一番株価を伸ばしていたことがすぐにわかります。
これを生成するコードが下記です。
import pandas_datareader.data as web
import datetime as datetime
import matplotlib.pyplot as plt
import pandas as pd
#データ期間と銘柄(ティッカーシンボル)を指定する
start=datetime.datetime(2020,1,1)
end =datetime.datetime(2020,10,12)
tickers = ["AAPL","FB","GOOGL","AMZN","MSFT"]
print("データ取得を開始します。デフォルトの取得先はyahoo financeです")
print("取得期間: "+str(start)+" ----> "+str(end))
all_data = web.DataReader(tickers,
'yahoo',
start=start,
end=end)
print("データ取得が完了しました")
print("結果をまとめています")
#今回は調整済み終値のみ使うので、改めてdfに格納
df = all_data["Adj Close"]
#リターンを計算
df=df/df.iloc[0]
#日付の列を加える
df["Date"] = all_data.index
print(df.dtypes)
df.set_index(["Date"],inplace=True)
#リターンの大きい銘柄順に並び替える
df=df.sort_values(df.index[-1],axis=1,ascending=False)
#プロット
pd.set_option("display.max_rows",None)
df.plot()
#画像保存
plt.savefig("result.png")
#数値データ保存
df.to_csv("result.csv")
print("完了しました。")
print("result.pngに各銘柄の株価推移グラフを、result.csvに数値データを書き込みました")
初めの方にあるstart,endで調査したい期間を指定し、tickersで興味がある銘柄のティッカーシンボルを入力してください。
この二つを書き換えるだけですぐに動くはずです。
(コピペして色々改造して遊んでみるとpandasに対する理解が深まるかもです)
注)
1. モジュールが見つかりません的なエラーが出るときは、pipで適宜インストールするとオッケーです。
2. AttributeError: 'numpy.datetime64' object has no attribute 'toordinal'
というエラーが出る場合はmatplotlibのバージョンが古いのかもしれません。最新版をインストールしてやってみてください
3. 将来的にyahooファイナンスの仕様が変更されると、このコードは上手く動かなくなる可能性があります。
普段は株式投資ブログやnoteで投資に関する記事を書いています。
よろしければ一度見てみてください(^^)b
Is it OK?