파이썬으로 Minimum Variance Portfolio를 만들자
Minimum Variance Portfolio의 조건
MVP의 조건은 당연히 변동성의 최소화이다. 이를 수식으로 표현하면 아래와 같다.
$ min $ $\frac12w^T\sum_{} w $
subject to
$ w^T1 = 1 $
이때 $\sum_{}$ 는 Covariance Matrix고 $\frac12w^T\sum_{} w $는 변동성을 표현하는 수식이다. 이때 1/2은 붙여도 되고 안붙여도 무방하다. 1Xn @ nXn @ nX1 의 모양을 가진 행렬 곱셈식이다. 그리고 각 종목의 비중의합은 1이 되도록 제약함수를 둔것이다.
##라그랑지안으로 이 함수를 풀면
$ L = \frac12w^T\sum_{} w - \lambda( w^T1 - 1) $
이 나온다. 이 해를 풀면
$ w = \frac{\sum_{}^{-1}1}{1^T\sum_{}^{-1}1} $ 결과가 나온다.
Minimum Variance Portfolio의 비중을 파이썬으로 구현
pandas와 numpy를 이용하면 간단하게 구할수 있다. 데이터는 이전 포스팅에서 결과값을 사용하면 되겠다.
아래 코드는 12개월 Covariance로 구한것이다.
여기서 문제점이 있는데 numpy의 Inverse함수가 소수점 100번째까지표현할수 없기때문에 행렬과 행렬의 역을 곱해줘도 다시 E로 나오지 않는다.
그래서 Variance가 음수가 나올 가능성이 있다.
참고하시면 되겠습니다.
댓글남기기