top of page
  • 執筆者の写真bookloveru2

pythonで株価分析⑪【コピペで3秒。1クリック❕ ポートフォリオ管理】

更新日:2021年11月1日

皆様、こんにちは。

今回は、大人気シリーズ「pythonで株価分析してみた」の第11弾です❕




表題の通り、

『コピペで3秒。1クリック』でポートフォリオが管理できます('ω')ノ

ホールド中の銘柄をいくらで購入し、今いくらになっているのか?所有銘柄の相関は?などなど。

ご用意いただくのは、何の銘柄を何ドルで何株買ったのか❓を書いた紙だけです!




今回も、コピペで行ける様、しっかりとpythonコードの解説をしていきますので、グーグルコラボのご準備をお願い致します。


では、早速行ってみましょう!(^^)!

 

目次

 


❶ コピペ用pythonコード

#@title コピペで3秒。1クリック❕ ポートフォリオ管理
import datetime
import fix_yahoo_finance as yf
import matplotlib.pyplot as plt
import requests
import argparse
import numpy as np
import seaborn as sns
%matplotlib inline
import warnings
warnings.filterwarnings('ignore')
 
#スタート日を決める
number = "2018-1-1" #@param {type:"string"}
 
#銘柄コード
start = number
end = datetime.date.today()
code1 = "DPZ" #@param ["AAPL"] {allow-input: true}
code2 = "MCD" #@param ["AMD"] {allow-input: true}
code3 = "GOOG" #@param ["MSFT"] {allow-input: true}
code4 = "KO" #@param ["FB"] {allow-input: true}
code5 = "BUD" #@param ["JNJ"] {allow-input: true}
code6 = "YUM" #@param ["JNJ"] {allow-input: true}
code7 = "BYND" #@param ["JNJ"] {allow-input: true}
codelist = [code1,code2,code3,code4,code5,code6,code7]
#終値取得(data2に終値を取り込み))
data2 = yf.download(codelist, start=start, end=end)["Adj Close"]
#取得単価
price1 =  0#@param {type:"number"}
price2 =  0#@param {type:"number"}
price3 =  0#@param {type:"number"}
price4 =  0#@param {type:"number"}
price5 =  95.46#@param {type:"number"}
price6 = 0 #@param {type:"number"}
price7 =  0#@param {type:"number"}
#保有数量
code1stock =  0#@param {type:"number"}
code2stock =  0#@param {type:"number"}
code3stock =  0#@param {type:"number"}
code4stock =  0#@param {type:"number"}
code5stock =  425#@param {type:"number"}
code6stock =  0#@param {type:"number"}
code7stock =  0#@param {type:"number"}
#取得価額。保有数量×取得単価
mypf1 = code1stock * price1
mypf2 = code2stock * price2
mypf3 = code3stock * price3
mypf4 = code4stock * price4
mypf5 = code5stock * price5
mypf6 = code6stock * price6
mypf7 = code7stock * price7
mypf = mypf1 + mypf2 + mypf3 + mypf4 + mypf5 + mypf6 + mypf7

#prに時価総額を格納 終値行列×保有数量
pr1 = data2[code1] * code1stock
pr2 = data2[code2] * code2stock
pr3 = data2[code3] * code3stock
pr4 = data2[code4] * code4stock
pr5 = data2[code5] * code5stock
pr6 = data2[code6] * code6stock
pr7 = data2[code7] * code7stock
pf = pr1 + pr2 + pr3 + pr4 + pr5 + pr6 +pr7
marketprice = pf.iloc[-1]

#損益状況
profit = marketprice - mypf

par = round(((1 - (marketprice / mypf)) * -100), 1)
#グラフの箱サイズ
pf.plot(label = "MY Portfolio", kind = 'area', alpha = 1, figsize = (8,6), fontsize = 16, stacked=True,cmap='cool',grid = True)

 
#パーセント表示変形
df_all=((1+data2.pct_change()).cumprod())
#グラフの箱サイズ
df_all.plot(figsize=(8,6),fontsize=16)
#凡例の位置
plt.legend(loc = 'upper left', bbox_to_anchor=(0, 1), borderaxespad=0, fontsize=16)  
plt.grid(True)

 
# 株価を標準化
std = data2.apply(lambda x: (x-x.mean())/x.std(), axis=0).fillna(0)
std.plot(figsize=(4,4),fontsize=18)
plt.legend(loc = 'upper left', bbox_to_anchor=(0, 1), borderaxespad=0, fontsize=18)
plt.grid(True)

 
#データを対前日比の株価変動率に変換しstdpctに格納
stdpct = data2.pct_change().dropna() * 100
#営業日ごとの株価変動率をプロット 
stdpct.plot(label = True ,figsize = (8,6),marker = 'o',fontsize = 16)
plt.legend(loc = 'upper left', bbox_to_anchor=(0, 1), borderaxespad=0, fontsize=16) 
plt.grid(True)

 
#株価変動率の基本統計量を取得 
stastics = round(stdpct.describe(),2)
#統計量をグラフ化
fig, ax = plt.subplots(figsize=(8,6))
ax.axis('off')
ax.axis('tight')
ax.table(cellText=stastics.values,
         colLabels=stastics.columns,
         rowLabels=stastics.index,
         loc='center',
         bbox=[0,0,1,1])
 
 #seabornで箱ひげ図を作成 箱ひげ図は、ボックス内の線が平均値を表し、色がついたボックス内の値動きになる確率が50%であることを示しています。
#ボックスから突き出たヒゲの範囲まででほぼ100%の値動きを示していますが、髭の長さが箱の1.5倍を超えるようなデータは外れ値としてヒゲを突き抜けてプロットされています。
#ボックスが値0以上の場合、ほぼ値下がりがなく、上昇していることを意味する。
plt.figure(figsize=(10, 7))
sns.boxplot(data = stdpct,fliersize = 6,width = 0.5)
sns.set_context("talk",font_scale = 1)
plt.grid(True)

#ヒートマップにて相関関係を表示
plt.figure(figsize=(15, 6))
stdpct1 = stdpct.dropna()
sns.set(style="white") 
sns.heatmap(stdpct1.corr(),annot = True)

print("元金は" + str(mypf) +"ドル。" + "現在の時価総額は、" + str(marketprice) +"ドルです。" + "評価損益は、" + str(profit) + "ドルです。" + str(par) + "%" )


❷ 使い方

下記の通りです(*^-^*)👇

①株の購入日か分析を開始したい日付を入力。

②銘柄と株数を入力。

③左上の三角の矢印▽を押す。

以上



すると、下記のグラフが自動で描画されます。👇

まず、元金。続いて時価総額。評価損益。

その次は各銘柄の値動き。



これは、株価を標準化した後のパーセント表示👇




標準化後の基本統計量と箱ひげ図。統計量はパーセント表記👇



最後に描画されるのが相関係数👇

以上です(`・ω・´)ゞ


pythonでプログラミングがしたい!! 
pythonを学びたい!という方には、
オンラインプログラミング教室『Aidemy アイデミー』がお勧めです。
ご自身でプログラム環境を用意する必要は無く、サイトへアクセスするだけです。  創業者は東京大学工学部卒の石川聡彦さん。
著書に『人工知能プログラミングのための数学がわかる本』(KADOKAWA/2018年)など。  
無料で、お試しもできますので安心です。
お時間ある方は下記リンクを覗いてみてはいかがでしょうか(*'ω'*)






閲覧数:556回0件のコメント
bottom of page