본문 바로가기

개발 프로젝트

[Python] 포트폴리오 최적화 전략 구현과 Plotly로 시각화하기

728x90

경희대학교 금융데이터 분석 시간에 진행한 기말 프로젝트입니다. 교수님께서 너희들만의 포폴 최적화 전략 구현하고 UI로 볼 수 있게 프로그램을 짜라고 하셨고, 저희 팀은 다음의 두 가지 전략을 생각했습니다.

  1. 투자성향 분석을 통한 제약식 추가
  2. 다음 리밸런싱 하기 전까지의 S&P500 수익률 예측치를 바탕으로 제약식 추가
즉, 실물경제 데이터인 GDP(Gross Domestic Product)와 채권 Yeild Spread(U.S.10 Year Treasury-Federal Funds Rate)를 통하여 주식 가격을 예측하여 개인의 투자성향에 따른 맞춤형 포트폴리오를 제안해주는 프로그램입니다.

1번은 '개인 투자자의 투자성향에 따른 금융자산 포트폴리오_ 김지영'님의 논문을 참고하여 사용자의 투자성향에 따라 위험자산(주식)과 안전자산(채권)의 비중을 조절하는 제약식입니다.

2번은 예를 들어 고정 리밸런싱 주기 3개월 마다 추후 3개월의 S&P500 수익률이 기준을 넘으면 과거 S&P500 수익률이 좋았던 시기에 수익률이 가장 높았던 섹터에 대한 비중을 조절하는 제약식입니다.

 

포트폴리오 최적화 시 개인 투자자의 투자 성향 뿐만 아니라 과거의 경제 상황의 산업군 별 수익률 순위와 거래 비용을 최소화하기 위한 Turn Over 제약을 추가하여 개인 투자자의 보다 효과적인 재무 설계와 위험관리를 하고자 하였습니다. 1960년부터 1999년까지의 실물경제 데이터와 금융데이터를 기계학습을 이용하여 훈련시켰으며 이후 2000년부터 2020년 10월까지를 Test 기간으로 설정하였습니다. 리밸런싱 기간은 3개월로 고정하였고 매 리밸런싱 기간마다 해리 마코위츠의 M-V 모델을 바탕으로 제약식을 추가하여 최적의 비중을 산출하고 해당 비중으로 투자를 진행하였습니다. 

 

시연 영상입니다. 직접 실행해보고 싶으신 분들은 하단부에 제 깃헙으로 이동하셔서 Jupyter 파일이랑 엑셀 파일들 다운로드하신 다음에 실행시키시면 됩니다. 

https://youtu.be/eZ0nDQvS10A

 

기술 관련 자세한 내용은 깃헙에서 보실 수 있습니다.