GAFAM株価(起点日を1として)
こうなる。
今年の年初来だとこう(起点が2022/1/1)
2月にFacebook(現Meta)が30%近く株価下落したらしい。
直近1か月だとこう。株価って起点をどこで見るかで全然印象が違う。
作ろうと思ったきっかけ
コレ。こういうグラフをコマンド一発で作りたいなと。
できた。実行。
$ python3 myKINRI26Arg.py 20190101
引数にとった日付(20190101)を起点にグラフを書いてpng画像で保存される。
リーマンショック前夜の2007年01月01日を起点にしてみよう。
Appleって(2007年当時からすると)株価が100倍くらいになってる…?
まだiPhone3Gも発売されてないときだから、そんなもんか。
ソース
ソース(コピペ用)
import pandas as pd
import pandas_datareader as web
import matplotlib.pyplot as plt
# %matplotlib inline
from matplotlib import rcParams
rcParams['figure.figsize']=15,10
rcParams['font.size']=15
import sys
import os
import numpy as np
import datetime
#if len(sys.argv) != 2 or ".pdf" not in sys.argv[1].lower():
if len(sys.argv) != 2:
print(f"Usage: python {sys.argv[0]} 20220101(start date)")
sys.exit()
print(f"引数: {sys.argv[1]}")
#print(sys.argv[1])
myARG1 = sys.argv[1]
# 20220101
# 01234567
myYEARR = myARG1[:4]
myMONTH = myARG1[4:6]
myDATEE = myARG1[6:]
#myDATE = myYEARR + '-' + myMONTH + '-' + myDATEE
myDATE = myYEARR + myMONTH + myDATEE
print(f"開始日:" + myDATE)
start=myDATE
enddd=datetime.date.today()
print(enddd)
fig = plt.figure()
print('GAFAM株価データ')
# ['Adj Close']で列指定しないと
# Open,Close,High,Low,AdjClose 全部出ちゃう
# df_GAFAM = web.DataReader(['AAPL', 'GOOG', 'MSFT'], 'yahoo', start, enddd)
#df_GAFAM = web.DataReader(['AAPL', 'GOOG', 'MSFT'], 'yahoo', start, enddd)['Adj Close']
#df_GAFAM = web.DataReader(['AAPL', 'GOOG', 'MSFT'], 'yahoo', start, enddd).dropna
#df_GAFAM = web.DataReader(['AAPL', 'GOOG', 'MSFT'], 'yahoo', start, enddd)
df_GAFAM = web.DataReader(['AAPL', 'GOOG', 'MSFT','META','AMZN'], 'yahoo', start, enddd)
#df_GAFAM = web.DataReader(['AAPL', 'GOOG', 'MSFT','META','AMZN', 'TSLA'], 'yahoo', start, enddd)
print('kj株価の推移はチェックできますが、そもそもの価格が違うので比較がしにくいです')
print('ので、open、開始価格を揃えて比較してみます。')
df_GAFAM['Adj Close', 'AAPL'] /= df_GAFAM['Adj Close'].loc[df_GAFAM.index[0], 'AAPL']
df_GAFAM['Adj Close', 'GOOG'] /= df_GAFAM['Adj Close'].loc[df_GAFAM.index[0], 'GOOG']
df_GAFAM['Adj Close', 'MSFT'] /= df_GAFAM['Adj Close'].loc[df_GAFAM.index[0], 'MSFT']
df_GAFAM['Adj Close', 'META'] /= df_GAFAM['Adj Close'].loc[df_GAFAM.index[0], 'META']
df_GAFAM['Adj Close', 'AMZN'] /= df_GAFAM['Adj Close'].loc[df_GAFAM.index[0], 'AMZN']
#df_GAFAM['Adj Close', 'TSLA'] /= df_GAFAM['Adj Close'].loc[df_GAFAM.index[0], 'TSLA']
###
# https://docs.pyq.jp/python/pydata/pandas/loc.html
###
#DataFrame.locを使うと行名、列名を利用してデータを取得できます。
#
# Attributes Adj Close ... Volume
# Symbols AAPL GOOG MSFT META ... GOOG MSFT META AMZN
# Date ...
# 2021-12-31 1.000000 1.000000 1.000000 1.000000 ... 17298000.0 18000800.0 12870500.0 47830000.0
# 2022-01-03 1.025004 1.002730 0.995332 1.006511 ... 25214000.0 28865100.0 14537900.0 63520000.0
# 2022-01-04 1.011995 0.998182 0.978265 1.000535 ... 22928000.0 32674300.0 15998000.0 70726000.0
# 2022-01-05 0.985076 0.951437 0.940711 0.963788 ... 49642000.0 40054300.0 20564500.0 64302000.0
# 2022-01-06 0.968632 0.950729 0.933278 0.988435 ... 29050000.0 39646100.0 27962800.0 51958000.0
#
# [5 rows x 30 columns]
#
## #print('web.DataReader(data_source=\'yahoo\',name=\'^GAFAM\',start=yyyymmdd,end=yyyymmdd)[Adj Close]')
## #df_GAFAM = web.DataReader('^GAFAM', 'yahoo', start2, enddd2)
## df_GAFAM = web.DataReader(data_source='yahoo',
## #name='GAFAM',
## name=['AAPL', 'GOOG', 'MSFT'],
## #start=start).dropna()
## start=start)['Adj Close'].dropna()
## #start=start).dropna()['Adj Close']
## #start=start)['Adj Close']
## #end=enddd)['Adj Close']
#df_GAFAM.loc[:,'Adj Close'].plot()
###// df_GAFAM['Adj Close'].plot()
# df_GAFAM['Adj Close'].plot(title='AAPL vs GOOG vs MSFT vs META vs AMZN', grid=True)
df_GAFAM['Adj Close'].plot(title=datetime.datetime.now(), grid=True)
# df_GAFAM.head()
print(df_GAFAM.head())
print('--------------------------')
ax1 = fig.add_subplot(1,1,1)
###ax1 = fig.add_subplot(2,1,1)
##ax1 = fig.add_subplot(3,1,2)
###ax1 = fig.add_subplot(2,1,1)
#ax1 = fig.add_subplot(3,1,1)
#ax1.plot(df_GAFAM,color='blue', lw=3)
ax1.plot(df_GAFAM,color='blue', lw=3, label="df_GAFAM")
#ax1.set_title('GAFAM'.join([str(datetime.datetime.now())]),fontsize=20)
#ax1.set_title(datetime.date.today(),fontsize=20)
plt.legend(bbox_to_anchor=(0, 1), loc='upper left', borderaxespad=1, fontsize=18)
plt.grid(True)
#plt.savefig("myKINRI26_df_GAFAM.png")
plt.savefig("/media/hoge/fuga/myKINRI26_df_GAFAM.png")
print('myKINRI26_df_GAFAM.pngを保存しました')
print('--------------------------')
#print('https://qiita.com/innovation1005/items/5be026cf7e1d459e9562')
print('https://nanjamonja.net/archives/303')