米国株間で株価を比較する
日本株であれば、株探などのチャート比較機能を使うことで企業間の株価を比較することができる。だが、米国株で同様の比較をできるサイトを私は知らない。
たまたまyfinanceなるPython packageを知ったので、練習がてらこれを用いたスクリプトを書いてみた。
import numpy as np
import yfinance as yf
import os, sys, requests, datetime
import matplotlib.pyplot as plt
def get_start_date():
print("### Input the beginning date of your chart.")
try:
s_y, s_m, s_d = map(int, input().split())
except (AttributeError, ValueError):
print("Warning: Your chart will start on 2000/1/1 due to the invalid date...")
s_y, s_m, s_d = 2000, 1, 1
return datetime.date(s_y, s_m, s_d)
def get_last_date():
print("### Input the last date of your chart.")
try:
l_y, l_m, l_d = map(int, input().split())
except (AttributeError, ValueError):
print("Warning: Your chart will end today due to the invalid date...")
dt_now = datetime.datetime.now()
l_y, l_m, l_d = dt_now.year, dt_now.month, dt_now.day
return datetime.date(l_y, l_m, l_d)
def get_stock_code():
print("### Input stock codes.")
code = input().split()
return code
#s_date = get_start_date()
s_date = datetime.date(2015, 1, 1)
#l_date = get_last_date()
l_date = datetime.date(2020, 6, 1)
#c_list = get_stock_code()
c_list = ["PEP", "AAPL", "DIS"]
data = yf.download(c_list, start=s_date, end=l_date)["Adj Close"]
data.plot(figsize=(14, 10), fontsize=16)
plt.legend(loc="upper left", fontsize=18)
plt.xlabel("Date", fontsize=24)
plt.ylabel("Stock price [US Dollar]", fontsize=24)
plt.grid(True)
plt.show()
動作確認済み環境:Python 3.7.7 operated by macOS Mojave (10.14.6)
# なぜかコメントアウトのあたりの改行がバグっている。。。
不要なpackageもimportしているが、気にしてはいけない。色々あったのだ。とりあえずはyfinanceとmatplotlibさえ動作すれば問題ないはずである。
チャートの開始日、終了日、比較する銘柄をインタラクティブに指定することもできる。その場合は各変数のコメントアウトする部分を変えれば良い。
デフォルトでは、2015/1/1から2020/6/1までのアップル、ペプシコ、ウォルトディズニーという謎の異種混合企業間での株価比較が行われる。比較する企業はどうやら3社が上限のようである。プログラムを実行すると、以下のような出力が得られる。
もしかしたら、今後テクニカル指標のプロットにも対応させるかもしれない。そして書き終えてから知ったのだが、このサイトでダウとのチャートの比較などができるらしい。