다음은 깃허브에 저장된 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 ) )