주식투자

[데이터 분석 10] 특정 포트폴리오를 평균-분산 그래프에 표시해 보자 (구글 시트 편)

오렌지사과키위 2025. 1. 8. 17:49

이전 글에서 세 가지 자산을 혼합하여 평균-분산 그래프에 나타내는 방법을 소개하였습니다. 이 글에서는 만들어진 평균-분산 그래프에서 몇몇 특정한 위치의 포트폴리오를 강조하는 방법을 알아봅니다. 이전 글: [데이터 분석 9] 세 자산의 혼합 포트폴리오를 평균-분산 그래프에 나타내 보자 (구글 시트 편)

참고: 이 연재는 책 <왜 위험한 주식에 투자하라는 걸까? - 장기 투자와 분산 투자에 대한 통계학적 시각>에서 소개한 주요 분석 방법을 구글 시트로 적용해 보는 부록의 성격을 가집니다. 책의 초고에 해당되는 블로그 글이나 읽기 편하게 정리하고 편집한 책을 한두 번 차근차근 읽어 분석 방법의 의미를 이해한 후에 보면 더욱 좋습니다. 연재 그 자체만으로도 따라 하기에 별 무리가 없는 수준으로 설명하려고 하지만, 세부적인 설명이 일부 생략되어 있을 수 있고, 분석 방법을 이해한 상태에서 보면 좀 더 도움이 될 수 있기 때문입니다.

주의: 이 글은 특정 상품 또는 특정 전략에 대한 추천의 의도가 없습니다. 이 글에서 제시하는 수치는 과거에 그랬다는 기록이지, 앞으로도 그럴 거라는 예상이 아닙니다. 분석 대상, 기간, 방법에 따라 전혀 다른 결과가 나올 수 있습니다. 데이터 수집, 가공, 해석 단계에서 의도하지 않은 오류가 있을 수 있습니다. 일부 설명은 편의상 현재형으로 기술하지만, 데이터 분석에 대한 설명은 모두 과거형으로 이해해야 합니다.

특정 포트폴리오 판별을 위한 시트 정돈

최소 분산 포트폴리오와 최대 샤프 비율(Sharpe Ratio) 포트폴리오 두 가지와 개인이 직접 지정한 커스텀 포트폴리오 하나를 평균-분산 그래프에 나타내 보겠습니다.

최소 분산 포트폴리오는 변동성이 가장 낮은 포트폴리오이기에, 수익률을 희생하면 어느 정도까지 안정성이 낮아질 수 있는 추정하는데 사용할 수 있습니다.

최대 샤프 비율 포트폴리오는 투자 효율 지표의 하나인 샤프 비율이 최대화된 포트폴리오입니다. 평균-분산 최적화(Mean-Variance Optimization, MVO) 결과물과 동일합니다. 다만 여기서는 2% 단위로 포트폴리오 비중을 조절했기에, MVO 결과와 미미하게 다를 수 있습니다. 샤프 비율은 장기 투자 시 위험이 제대로 표현되지 않는 한계가 있기에 이를 고려해서 투자에 참고해야 합니다. 참고: [초급 12] 다시 보자! 샤프 비율! (투자 기간과 투자 비중에 따른 기대 수익률과 불확실성을 평균-분산 그래프에 나타내 보자.)

특정 위치의 포트폴리오를 찾기 위해 VLOOKUP() 함수를 사용할 수 있습니다. 이 함수는 지정한 범위에서 첫 번째 칼럼을 키(key)로 하여 검색을 하고, 찾은 행에서 k번째 칼럼의 값을 찾아줍니다. 최소 분산 포트폴리오는 분산(또는 표준 편차)이 최소인 포트폴리오이고, 최대 샤프 비율 포트폴리오는 샤프 비율이 최대인 포트폴리오입니다. 각각을 키로 사용하기 위해 그래프를 그리는 데이터 기준으로 왼쪽에 위치시키면 다음과 같이 됩니다.

특정 포트폴리오를 평균-분산 그래프에 표시하기 위해 정돈한 시트

시트 전체 내용을 볼 수 있게 조금 넓게 잡았습니다. 보라색 배경 영역이 Std가 평균-분산 그래프에서 x축으로 사용할 표준 편차입니다. 그 오른쪽에 연한 노란색 배경 영역이 y축 값으로 사용할 평균입니다. 그 오른쪽 진한 노란색 배경의 영역이 평균-분산 그래프에 표시되는 점에 붙일 라벨입니다. 이 세 영역이 구글 시트에서 분산형 차트를 그릴 때 사용하는 전체 데이터 영역입니다.

표준 편차 옆에 연한 하늘색 배경의 영역이 있습니다 샤프 비율을 구한 것입니다. 그림에서는 (포트폴리오 수익률 - 예금 금리) / 표준 편차로 계산했습니다. 표준 편차와 샤프 비율은 각각 최소 분산 포트폴리오와 최대 샤프 비율 포트폴리오를 찾는데 키로 사용할 것이기에, 그래프 데이터 영역의 가장 왼쪽 또는 왼쪽 바깥 영역에 두었습니다.

맨 왼쪽 위에 회색 배경으로 각각 MIN() 함수와 MAX() 함수로 찾은 가장 작은 표준 편차와 가장 큰 샤프 비율이 표시되어 있습니다. 이 값으로 포트폴리오를 찾을 것입니다. 오른쪽 회색 영역은 포트폴리오의 투자 비중입니다. 지난 글에서는 이 영역이 그래프 데이터 왼쪽에 있었는데 오른쪽으로 옮겼습니다.

데이터 영역을 보면 SPY, TLT, GLD, Bank는 이전과 동일합니다. 추가된 열은 Min Std(최소 분산 포트폴리오), MVO(최대 샤프 비율 포트폴리오), Custom(커스텀 포트폴리오)입니다. 그 아래는 이전에 계산했던 두 개 또는 세 개의 자산을 혼합한 포트폴리오가 나열되어 있습니다.

포트폴리오 검색

다음 그림은 최소 분산 포트폴리오를 검색한 것입니다. 왼쪽 상단 최소 표준 편차를 이용하여 VOOKUP() 함수를 이용해서 찾습니다. 지정한 영역에서 8번째 칼럼이 평균이기에 8을 넣었고, 키가 정렬되지 않은 데이터이기에 FALSE로 지정했습니다.

최소 분산 포트폴리오를 찾아 평균을 채우는 예

다음 그림은 최대 샤프 비율 포트폴리오를 찾아 SPY의 투자 비중을 채우는 예입니다. 샤프 비율을 키로 사용할 것이기에, 검색 범위를 왼쪽으로 한 칼럼 늘였고, 자산 비중을 넣을 것이기에 오른쪽으로는 세 칼럼 늘려 영역을 지정했습니다.

최대 샤프 비율 포트폴리오를 찾아 SPY 투자 비중을 채우는 예

커스텀(Custom)은 사용자가 직접 투자 비중을 입력하는 경우입니다. 사용자가 입력한 투자 비중 또는 발견한 포트폴리오의 투자 비중을 이용해서 라벨을 만들면 그래프에서 볼 때 편리할 수 있습니다. 다음과 같이 사용할 수 있습니다.

=CONCATENATE(L8, ": ", TO_TEXT(Z8), "+", TO_TEXT(AA8), "+", TO_TEXT(AB8))

자산(Asset) 칼럼의 글자에다 세 자산의 비중을 붙여 라벨이 만들어집니다.

평균-분산 그래프 결과

다음은 이렇게 정돈한 데이터를 이용하여 평균-분산 그래프를 그린 결과입니다.

정돈된 데이터를 이용한 평균-분산 그래프

최소 분산 포트폴리오(Min Std)는 SPY, TLT, GLD에 각각 38%, 46%, 16%로 투자 비중을 설정한 경우였습니다. SPY에 대한 TLT와 GLD의 변동성 상쇄 효과가 상당히 컸기에, TLT와 GLD 투자 비중이 꽤 높았습니다.

최대 샤프 비율 포트폴리오(MVO)는 SPY, TLT, GLD에 각각 50%, 18%, 32%로 투자 비중을 설정한 경우였습니다. 최소 분산 포트폴리오와 비교한다면, SPY와 GLD 비중은 높아졌고, TLT 비중은 낮아졌습니다. TLT가 SPY와 GLD에 대한 변동성 상쇄 효과는 높았겠지만, 수익률이 높지 않았기에 비중이 높게 설정되지 않은 것으로 볼 수 있습니다. 이 지점을 예금(Bank)과 연결하면, 초록색 전체 포트폴리오 영역에 대한 접선이 됩니다. 참고: [초급 22] 포트폴리오 최적화란? (세 가지 이상의 자산을 섞으면? 점 + 점 = 선, 점 + 선 = 면)

커스텀 항목은 SPY 50%, TLT 40%, GLD 10%로 투자한 포트폴리오입니다. 그래프에서 알 수 있듯이 커스텀은 최대 샤프 비율 포트폴리오(MVO)와 비슷한 표준 편차를 가졌지만 수익률이 낮아 조금 아래에 있습니다. 큰 차이는 아니었지만, TLT의 장기 수익률이 낮았기 때문입니다.

정리하며

평균-분산 그래프에 투자자가 관심이 있는 특정 포트폴리오를 표시하는 방법에 대해 알아보았습니다. 구글 시트의 분산형 차트가 인터렉티브(interative)한 데이터 표현(data visualization) 툴은 아니기에 다소 불편함이 있기는 하지만, 기초적인 분석에는 어느 정도 유용하게 사용할 수 있습니다.

구글 시트를 이용하여 평균-분산 그래프를 그리는 방법에 대한 이야기는 어느 정도 마무리가 된 듯합니다. 이어지는 연재에서는 환율 효과와 자산 간 상관성을 살펴보는 방법을 소개합니다.

이어지는 글: [데이터 분석 11] 환율을 고려해서 환노출 주가를 계산하고 평균-분산 그래프에서 환헤지와 비교해 보자 (구글 시트 편)

목록: 자산 배분 분석 방법과 사례 글 모음 [목록] (순서대로 차근차근 읽기를 권합니다)

함께 읽으면 좋은 글:

도움이 되었다면, 이 글을 친구와 공유하는 건 어떻까요?

facebook twitter kakaoTalk naver band