주식투자

[데이터 분석 3] 주가 데이터에서 수익률 통계량을 뽑아보자 (구글 시트 편)

오렌지사과키위 2025. 1. 6. 12:45

이제 어떠한 방식으로든 분석하고자 하는 종목의 TR 데이터를 구했습니다. TR 데이터는 다른 통계량을 추출하는데 기반이 되는 데이터입니다. (상황에 따라서는 PR 데이터만 얻을 수 있는 자산도 있을 수 있습니다.) 투자자는 날짜별로 하나씩 수백 또는 수천 개의 값이 있는 데이터를 요약해서 투자에 참고할 수 있는 몇 개의 수치로 정리해야 합니다.

대부분의 투자자가 1차적으로 관심을 가지는 통계량은 두 가지 부류입니다. 하나는 수익이 얼마나 컸느냐라는 것이고, 다른 하나는 얼마나 위험했느냐는 것입니다. 전자인 수익 지표로는 누적 수익률, CAGR(연평균 성장률), 1년 산술 평균 수익률 등이 있고, 후자인 위험 지표로는 MDD, 표준 편차 등이 있습니다.

어떤 지표를 볼 지는 투자자가 결정하는 것입니다. 위험에 민감하지 않은 투자자라면 수익 지표가 얼마나 높은지에 집중할 것이고, 반대로 위험에 민감한 투자자라면 여러 위험 지표를 신중하게 살펴볼 것입니다. 본인에게 적합한 지표가 없다고 느낀다면, 고안해서 만들 수도 있습니다.

남들도 많이 사용하는 데이터 분석 방법과 지표는 있을 수 있지만, 정답은 없습니다. 투자에서 과거 데이터 분석은 투자자의 환경과 관점이 큰 영향을 미칩니다. 애초에 과거 데이터를 분석하는 이유가 미래를 위한 투자 결정에 도움을 얻기 위함이고, 투자자마다 투자 목적이 다르기 때문입니다. 이 때문에 동일한 통계량을 보더라도 투자자는 각자 다른 투자 결정을 내릴 수 있습니다. 참고: 통계학적로 보면 주관적 확률론으로 볼 수 있습니다.  

몇 가지 수익 지표를 계산해 봅니다.

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

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

CAGR 계산하기

다음은 미국 S&P 500 지수를 추종하는 SPY의 1993년 1월 29일부터 2024년 12월 31일까지 31년 11개월치 TR 데이터입니다. 제 경우에는 파이썬을 이용하여 TR 데이터를 구했습니다. 데이터 라이선스가 정확히 어떻게 되는지 몰라 제가 구한 데이터를 공유하지는 않습니다. 각자 자신의 방법으로 얻으셔야 합니다. 데이터를 어떻게 처리하는지에 대해서만 알면 충분한 분은 GOOGLEFINANCE() 함수로 PR 데이터를 얻어 작업해 보면 됩니다. 참고: [데이터 분석] 주가 데이터를 불러와서 그래프로 그려보자 (구글 시트 편)

SPY의 2024년까지의 TR 데이터

FIRST DATE와 LAST DATE 셀에 MIN(), MAX() 함수를 이용하여 데이터에서 가장 오래된 날짜와 가장 최근 날짜를 찾았습니다. 날짜는 모두 날짜 형식으로 변환한 상태입니다. 개인적으로 분석 기간이 늘어나는 상황을 고려해서 범위를 지정할 때 마지막 데이터 셀 대신 더 큰 값을 사용합니다. 위에서는 A8044 대신 A9999를 사용했습니다. 참고: 이 연재에서는 날짜를 오름차순으로 정렬해서 사용합니다. 경우에 따라서는 날짜가 내림차순으로 정렬된 데이터가 더 편리할 수 있습니다.

보편적으로 사용하는 수익 지표의 하나는 CAGR(Compound Annual Growth Rate, 연평균 성장률)입니다. CAGR은 자산의 최종 가격과 최초 가격의 비를 이용하여 연단위 복리 수익률로 환산한 값입니다. 다음과 같은 구할 수 있습니다.

(최종 가격 / 최초 가격) ^ (1 / 투자 기간) - 1

최종 가격을 최초 가격으로 나누면 자산이 몇 배가 되었는지 자산비를 알 수 있습니다. 여기에 캐럿(^)으로 표시된 1 / 투자 기간으로 지수승을 구하면 단위 투자 기간의 복리 자산비를 구할 수 있습니다. 이렇게 구한 값에서 1을 빼면 복리 수익률로 환산됩니다.

다음과 같이 단위 기간을 1년으로 두고 투자 기간이 얼마인지 알기 위해서는 두 날짜를 빼면 됩니다. 일단위로 나오니 1년 평균 일수인 365.25로 나누면 몇 년에 해당되는지 알 수 있습니다. 예제에서는 =(B2-B1) / 365.25 수식을 사용했습니다. 31.9년이 나옵니다.

투자 연수와 CAGR을 구한 결과
투자 연수와 CAGR을 구한 결과

구한 투자 기간(년), 최초 가격, 최종 가격을 이용하면 CAGR을 구할 수 있습니다. POW() 함수를 쓰면 됩니다. -1은 자산비를 수익률로 환산하기 위해서입니다. SPY는 연평균 10.45% 복리로 상승했습니다.

1년 산술 평균 수익률 계산하기

CAGR은 자산의 성과를 비교하는데 무난한 지표입니다. 특히 장기 투자를 계획하는 경우 CAGR은 1년 복리 수익률로 간주할 수 있습니다. 평균-분산 분석에서도 CAGR을 사용해도 되지만, 1년 산술 평균 수익률이 좀 더 적합할 수 있습니다. 평균-분산 그래프에서 자산의 성과를 선형적으로 분석하기에는 1년 산술 평균 수익률과 표준 편차가 편리하기 때문입니다.

다음은 250거래일을 1년으로 간주하고 SPY의 1년 수익률을 구한 결과입니다.

SPY의 250거래일 수익률
SPY의 250거래일 수익률

미국의 경우 1년 거래일수가 252일 정도입니다. 유럽은 이보다 조금 작아 250거래일 정도에 가깝고, 한국은 공휴일이 며칠 더 있기에 약간 더 작습니다. 미국과 한국의 공통 거래일만 추출하면 240거래일 정도가 됩니다. 구글 시트로는 해 보지 않았지만, 정확하게 1년을 기준으로 수익률을 구하려면 복잡해질 수 있습니다. 파이썬으로도 구현하기 번거롭습니다.

이러한 이유로 데이터 처리에 편리하고 실제와 큰 차이가 없는 250거래일을 사용합니다. 간혹 252거래일을 사용하는 경우도 있습니다. 252거래일은 미국의 1년 거래일수에 가깝고, 1개월을 21거래일로 간주할 수 있어 월단위 분석에 다소 편리하기 때문입니다. 이 연재에서는 연단위로 대부분의 데이터를 살펴보기에 250거래일 사용합니다. 참고: 스프레드시트 활용에 익숙한 분은 거래일을 며칠로 둘 것인지를 인자로 사용해서 원하는 값으로 설정 또는 변경할 수 있을 것입니다.

매거래일 기준으로 1년 수익률을 구했으니, 평균값, 최댓값, 최솟값을 구할 수 있습니다. 각각 AVEREAGE(), MAX(), MIN() 함수를 사용하면 됩니다.

SPY 1년(250거래일) 수익률의 산술 평균, 최대, 최소
SPY 1년(250거래일) 수익률의 산술 평균, 최대, 최소

1년 수익률의 산술 평균은 11.7%입니다. 계산에 사용한 기초 데이터가 조금 다르긴 하지만, 복리 평균이라 할 수 있는 CAGR보다 대개 작은 값이 나옵니다. 1년 최대 수익률과 최소 수익률은 77.5%와 -47.4%였습니다. SPY에 1년간 투자했을 때, 반토막이 난 적이 있었다는 뜻입니다. 1년 산술 평균 수익률과 CAGR의 의미 차이에 대해서는 평균-분산(Mean-Variance) 그래프 해석 방법 및 주의 사항을 참고하기 바랍니다.

정리하며

SPY 가격 데이터를 이용하여 수익 지표인 CAGR, 1년 산술 평균, 최대, 최소 수익률을 구해 보았습니다.

이어지는 글: [데이터 분석 4] 주가 데이터에서 위험 지표인 MDD를 뽑아보자 (구글 시트 편)

목록: 자산 배분 분석 방법과 사례 글 모음 [목록]

함께 읽으면 좋은 글:

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

facebook twitter kakaoTalk naver band