日本株と米国株の組み合わせの株価を取得したいですが、下記のコードをいれても「SyntaxError: invalid syntax」と表示されてしまいます。
ユニクロなら、「9983.T」で取得をできるとおもったのですが、取得できませんでした。なにが違うのでしょうか?
python
1コード 2import numpy as np 3import pandas_datareader.data as web 4import pandas as pd 5import matplotlib.pyplot as plt 6import scipy.stats as ss 7from matplotlib.animation import FuncAnimation 8import japanize_matplotlib 9import pandas_datareader.data as web #データのダウンロードライブラリ 10 119983.T=web.DataReader("9983.T", "yahoo","2020/1/1")['Adj Close'] 12MSFT=web.DataReader("MSFT", "yahoo","2020/1/1")['Adj Close'] 13AMZN=web.DataReader("AMZN", "yahoo","2020/1/1")['Adj Close'] 14 15 169983.T=9983.T/9983.T.iloc[0]#株価の指数化 17 18ln9983.T=np.log(9983.T) 19dln9983.T=ln9983.T.diff().dropna() 20 21MSFT=MSFT/MSFT.iloc[0] 22MSFT 23lnMSFT=np.log(MSFT) 24dlnMSFT=lnMSFT.diff().dropna() 25 26AMZN=AMZN/AMZN.iloc[0] 27AMZN 28lnAMZN=np.log(AMZN) 29dlnAMZN=lnAMZN.diff().dropna() 30 31def portfolio_rebalance(tsd1,tsd2,tsd3): 32 port=pd.concat([tsd1,tsd2,tsd3],axis=1).dropna() 33 port.columns=('p1','p2','p3') 34 port['a1']=0 35 port['a2']=0 36 port['a3']=0 37 port['v']=1 38 39 n=len(port) 40 41 p1=port['p1'].iloc[0] 42 p2=port['p2'].iloc[0] 43 p3=port['p3'].iloc[0] 44 v=port['v'].iloc[0] 45 46 a1=float(v*0.418/p1) 47 a2=float(v*0.363/p2) 48 a3=float(v*0.219/p3) 49 50 port.iloc[0,3]=a1 51 port.iloc[0,4]=a2 52 port.iloc[0,5]=a3 53 54 for i in range(1,len(port)): 55 p1=port['p1'].iloc[i]#今日のAAPLの株価 56 p2=port['p2'].iloc[i]#今日のMSFTの株価 57 p3=port['p3'].iloc[i]#今日のAMZNの株価 58 59 p1_0=port['p1'].iloc[i-1]#前日のAAPLの株価 60 p2_0=port['p2'].iloc[i-1]#前日のMSFTの株価 61 p3_0=port['p3'].iloc[i-1]#前日のAMZNの株価 62 63 a1_0=port['a1'].iloc[i-1]#前日のAAPLの保有株数 64 a2_0=port['a2'].iloc[i-1]#前日のMSFTの保有枚数 65 a3_0=port['a3'].iloc[i-1]#前日のAMZNの保有枚数 66 67 v_0=port['v'].iloc[i-1]#前日のリバランスポートフォリオの価値 68 69 #v=a1_0*(p1-p1_0)+a2_0*(p2-p2_0)+v_0#今日のリバランスポートフォリオの価値 70 71 v=a1_0*p1+a2_0*p2+a3_0*p3#今日のリバランスポートフォリオの価値 72 73 port.iloc[i,6]=v#リバランスポートフォリオの価値のアップデート 74 75 76 port.iloc[i,3]=a1#AAPLの株数のアップデート 77 port.iloc[i,4]=a2#MSFTの株数のアップデート 78 port.iloc[i,5]=a3#AMZNの株数のアップデート 79 80 port['v2']=port.p1/3+port.p2/3+port.p3/3#リバランスの無いポートフォリオの価値 81 return port 82port=portfolio_rebalance(9983.T,MSFT,AMZN) 83 84plt.figure(figsize=(15, 15), dpi=50)#グラフの大きさ 85 86#下記の内容は対数変換されたデータをプロット 87# lnport.v.plot(label="効率的フロンティア",linewidth=1.0) 88# lnport.v2.plot(label="ウェイトを3等分",linewidth=1.0) 89# lnAAPL.plot(label='AAPL',style='-.',fontsize=30)#目盛りの文字の大きさを変更 90# lnMSFT.plot(label='MSFT',linestyle='--',fontsize=30)#目盛りの文字の大きさを変更 91# lnAMZN.plot(label='AMZN',linestyle='--',fontsize=30)#目盛りの文字の大きさを変更 92 93 94#下記は元のプロット 95port.v.plot(label="効率的フロンティア",linewidth=1.0) 96port.v2.plot(label="ウェイトを3等分",linewidth=1.0) 97 989983.T.plot(label='9983.T',linestyle="solid",fontsize=30)#目盛りの文字の大きさを変更 99MSFT.plot(label='MSFT',linestyle="solid",fontsize=30)#目盛りの文字の大きさを変更 100AMZN.plot(label='AMZN',linestyle="solid",fontsize=30)#目盛りの文字の大きさを変更 101 102plt.margins(x=0) 103plt.legend(loc="upper left",fontsize=30) 104plt.grid(True) 105plt.title("3銘柄と効率的フロンティアのパフォーマンス",fontsize=40) 106plt.show()
こちらの質問が複数のユーザーから「過去の低評価」という指摘を受けました。
回答1件
あなたの回答
tips
プレビュー
下記のような回答は推奨されていません。
このような回答には修正を依頼しましょう。
また依頼した内容が修正された場合は、修正依頼を取り消すようにしましょう。
2022/02/20 06:05
2022/02/20 06:10
2022/02/20 08:52