더북(TheBook)

다음은 깃허브에 저장된 CSV 파일을 읽어서 베타를 계산하는 코드다.

import pandas as pd

# sqrt( ) 함수를 사용하기 위해 math 모듈을 임포트한다
import math

# 깃허브에 저장된 파일을 읽어들인다
url = 'https://raw.githubusercontent.com/jimsjoo/gilbut_portfolio/master/portfolioAB.csv'
df = pd.read_csv( url )

# 파일에는 KOSPI, PortA, PortB라는 컬럼명이 있고, 그 이하에는 일자별 포트폴리오의 가치가 저장돼 있다
# 세 개 컬럼의 일간수익률을 계산하기 위해 pct_change( ) 함수를 사용한다
returns = df[ [ 'KOSPI', 'PortA', 'PortB' ] ].pct_change( )

 

# 일간수익률에 을 곱해 연율화한다

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' ]

# 시장포트폴리오, KOSPI 수익률의 분산을 계산한다
var_m = returns[ 'KOSPI' ].var( )

# 포트폴리오 A와 B의 베타를 계산한다
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 ) )
신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.