米国株間で株価を比較する

日本株であれば、株探などのチャート比較機能を使うことで企業間の株価を比較することができる。だが、米国株で同様の比較をできるサイトを私は知らない。

たまたま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社が上限のようである。プログラムを実行すると、以下のような出力が得られる。

スクリーンショット 2020-06-23 18.15.12


もしかしたら、今後テクニカル指標のプロットにも対応させるかもしれない。そして書き終えてから知ったのだが、このサイトでダウとのチャートの比較などができるらしい。