포트폴리오 구성 및 백테스팅

Python으로 시작하는 포트폴리오 리스크 관리

Dakota Wixom

Quantitative Analyst | QuantCourse.com

포트폴리오 수익률 계산

포트폴리오 수익률 공식:

$$ R_p = R_{a_1} w_{a_1} + R_{a_2} w_{a_2} + ... + R_{a_n} w_{a_1} $$

  • $ R_p$: 포트폴리오 수익률
  • $ R_{a_n}$: 자산 n의 수익률
  • $ w_{a_n}$: 자산 n의 비중
Python으로 시작하는 포트폴리오 리스크 관리

StockReturns가 주식 수익률 pandas DataFrame일 때, 포트폴리오 비중에 따른 수익률 계산 방법:

import numpy as np
portfolio_weights = np.array([0.25, 0.35, 0.10, 0.20, 0.10])
port_ret = StockReturns.mul(portfolio_weights, axis=1).sum(axis=1)
port_ret
Date
2017-01-03    0.008082
2017-01-04    0.000161
2017-01-05    0.003448
         ...
StockReturns["Portfolio"] = port_ret
Python으로 시작하는 포트폴리오 리스크 관리

Python에서 균등 가중 포트폴리오

StockReturns가 주식 수익률 pandas DataFrame일 때, 균등 가중 포트폴리오 수익률 계산 방법:

import numpy as np
numstocks = 5
portfolio_weights_ew = np.repeat(1/numstocks, numstocks)
StockReturns.iloc[:,0:numstocks].mul(portfolio_weights_ew, axis=1).sum(axis=1)
Date
2017-01-03    0.008082
2017-01-04    0.000161
2017-01-05    0.003448
         ...
Python으로 시작하는 포트폴리오 리스크 관리

Python에서 포트폴리오 수익률 시각화

Python에서 일별 수익률 시각화:

StockPrices["Returns"] = StockPrices["Adj Close"].pct_change()
StockReturns = StockPrices["Returns"]
StockReturns.plot()

Python으로 시작하는 포트폴리오 리스크 관리

포트폴리오 누적 수익률 시각화

여러 포트폴리오의 누적 수익률 시각화:

import matplotlib.pyplot as plt
CumulativeReturns = ((1 + StockReturns).cumprod() - 1)
CumulativeReturns[["Portfolio","Portfolio_EW"]].plot()

Python으로 시작하는 포트폴리오 리스크 관리

시가총액

Python으로 시작하는 포트폴리오 리스크 관리

시가총액

시가총액: 상장 주식의 총 가치.

Market cap이라고도 합니다.

Python으로 시작하는 포트폴리오 리스크 관리

시가총액 가중 포트폴리오

주식 n의 시가총액 비중 계산:

$$ w_{mcap_n} = \frac{mcap_n}{ \sum_{i=1}^n mcap_i } $$

Python으로 시작하는 포트폴리오 리스크 관리

Python에서 시가총액 비중 계산

각 기업의 시가총액 데이터가 있을 때, Python에서 시가총액 비중을 계산하는 방법:

import numpy as np
market_capitalizations = np.array([100, 200, 100, 100])
mcap_weights = market_capitalizations/sum(market_capitalizations)
mcap_weights
array([0.2, 0.4, 0.2, 0.2])
Python으로 시작하는 포트폴리오 리스크 관리

연습해 봅시다!

Python으로 시작하는 포트폴리오 리스크 관리

Preparing Video For Download...