import numpy as np
beta52 = [1.38, 0.47, 1.02]
investment = [5, 2, 3]
sumOfInvestment = sum(investment)
weights = [ w/sumOfInvestment for w in investment ]
beta = np.dot(beta52, weights)
print('The portfolio beta is {0:0.2f}'.format(beta))
The portfolio beta is 1.09
beta = 1.09
rf = 4
marketReturn = 10
expReturnPortfolio = rf + (marketReturn - rf) * beta
print('The expection return of the portfolio is {0:0.2f}'.format(expReturnPortfolio))
The expection return of the portfolio is 10.54
# 본인의 구글드라이브 루트에 저장된 portfolioAB.csv를 읽어 오는 방법
# 추천안함
from google.colab import drive
import pandas as pd
# 구글드라이브를 코랩에 마운트한다
drive.mount('/content/gdrive')
df=pd.read_csv('gdrive/My Drive/portfolioAB.csv')
df.head()
# 깃허브(github.com)에 저장된 portfolioAB.csv를 읽어 오는 방법
# url은 저자의 깃허브에 저장된 portfolioAB.csv이다
# 구글이나 야후파이낸스가 아닌 자신의 파일을 올리려면
# 이 방법은 강력 추천한다
import pandas as pd
url ='https://raw.githubusercontent.com/jimsjoo/gilbut_portfolio/master/portfolioAB.csv'
df = pd.read_csv(url)
df.head()
Date | KOSPI 200 | Portfolio A | Portfolio B | |
---|---|---|---|---|
0 | 2014-04-08 | 1993.03 | 1058.29 | 1008.29 |
1 | 2014-04-09 | 1998.95 | 1058.77 | 1008.85 |
2 | 2014-04-10 | 2008.61 | 1059.77 | 1010.05 |
3 | 2014-04-11 | 1997.44 | 1058.78 | 1008.86 |
4 | 2014-04-12 | 1997.44 | 1060.70 | 1010.96 |
# 파일을 업로드하여 portfolioAB.csv 읽어 들임
# 매번 사용할때 마다 업로드를 하는 번거러움이 있다
# 추천안함
import pandas as pd
from google.colab import files
import io
uploaded = files.upload()
df = pd.read_csv(io.BytesIO(uploaded['portfolioAB.csv']))
Saving portfolioAB.csv to portfolioAB (5).csv
# 읽어들인 데이터(df)의 앞부분을 출력한다
df.head()
Date | KOSPI 200 | Portfolio A | Portfolio B | |
---|---|---|---|---|
0 | 2014-04-08 | 1993.03 | 1058.29 | 1008.29 |
1 | 2014-04-09 | 1998.95 | 1058.77 | 1008.85 |
2 | 2014-04-10 | 2008.61 | 1059.77 | 1010.05 |
3 | 2014-04-11 | 1997.44 | 1058.78 | 1008.86 |
4 | 2014-04-12 | 1997.44 | 1060.70 | 1010.96 |
# 'KOSPI', 'PortA', 'PortB'의 수익률을 계산한다
returns = df[['KOSPI', 'PortA', 'PortB']].pct_change()
returns
# 앞서 읽어 들인 포트폴리오 수익률의 변동성, 공분산, 베타를 계산한다
import math
vol_m = returns['KOSPI'].std() * math.sqrt(250)
vol_A = returns['PortA'].std() * math.sqrt(250)
vol_B = returns['PortB'].std() * math.sqrt(250)
print('KOSPI200 일간변동성: {:0.2%}'.format(vol_m))
print('Portfolio A 일간변동성: {:0.2%}'.format(vol_A))
print('Portfolio B 일간변동성: {:0.2%}'.format(vol_B))
covs = returns.cov()
cov_mA = covs.loc['KOSPI', 'PortA']
cov_mB = covs.loc['KOSPI', 'PortB']
var_m = returns['KOSPI'].var()
beta_A = cov_mA / var_m
beta_B = cov_mB / var_m
print('Portfolio A의 beta: {:.4f}'.format(beta_A))
print('Portfolio B의 beta: {:.4f}'.format(beta_B))
KOSPI200 일간변동성: 9.83% Portfolio A 일간변동성: 4.15% Portfolio B 일간변동성: 4.76% Portfolio A의 beta: 0.0154 Portfolio B의 beta: 0.0186