다음은 깃허브에 저장된 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 ) )
    신간 소식 구독하기
    뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.