연복리수익률(Compound Annual Growth Rate, CAGR) 구하는 방법

3 minute read

정량적으로 만든 사고파는 전략이 얼마나 효과가 있는지를 과거 데이터로 테스트한다. 이걸 백테스팅이라고 하는데, 여기에 빠지지 않고 등장하는 값이 있다.

연평균 성장률(年平均成長率, compound annual growth rate, CAGR)은 시간이 지남에 따라 일정한 비율의 반환(수익)을 제공하는 등비수열 비율에 대한 비즈니스, 투자 용어이다. CAGR은 회계학 용어는 아니지만 소득, 가입 사용자 등의 비즈니스적 일부 요소를 기술하기 위해 사용된다.

연평균 성장률 - ko.wikipedia.org

바로 CAGR이다. 연평균 성장률 혹은 연 복리 수익률이라고 한다. 원금의 두 배가 되는 시간을 계산할 수 있는 72의 법칙에서도 이 CAGR을 사용한다. 만약 연이율 8%라고 한다면 72를 8로 나눈다. 몫은 9다. 단위는 년이므로 총 9년이 걸린다는 계산이다. 연이율 8%로 받은 이자를 모두 재투자해야 이 계산이 맞다. 여기서 8%가 바로 CAGR이다.

연 복리수익률(CAGR)을 구하는 방법

다시 72의 법칙을 생각해 보자. 연 복리 수익률을 8%라고 한다면 \((1.08)^x=2\) 식에서 x 값을 구하면 자산이 두 배가 되는 시간을 구할 수 있다.

자연로그를 양변에 취하고 \({x}\) 를 좌변에 두게 정리하면 다음과 같은 식이 된다.

\begin{equation} x = \frac{\ln(2)}{\ln(1.08)} \end{equation}

계산하면 x는 9.006468342. 72 법칙은 쉽게 외울 수 있게 디자인한 훌륭한 법칙이다.

이제 식을 정규화해 본다. \(t_0\) 를 시작 시각, \(t_1\) 을 종료 시각이라고 정의한다. 그렇다면 \(t_n-t_0\) 는 투자 기간이 된다.

\begin{equation} \left( {CAGR}(t_0,t_n) + 1 \right) ^{t_n-t_0} = \frac{V(t_n)}{V(t_0)} \end{equation}

이런 식을 만들 수 있다. \({CAGR}(t_0,t_n)\) 은 투자 기간 연 복리 수익률을 뜻한다. 위 계산을 예로 든다면 0.08 이다. \(V(t_n)\) 는 회수 자산이고 \(V(t_0)\) 는 투자 자산이다.

연 복리 수익률을 구하는 공식을 만들려면 \({CAGR}(t_0,t_n)\) 만 좌변에 남게 정리하면 된다.

\begin{equation} {CAGR}(t_0,t_n) = \left( \frac{V(t_n)}{V(t_0)} \right)^\frac{1}{t_n-t_0} - 1 \end{equation}

연 복리 수익률을 구하는 공식이다.

누적 수익률(cumulative return)을 구하는 방법

100만 원이 1,000만 원이 되는데, 5년이 걸린다. 그렇다면 연 복리 수익률은 얼마인가?

\begin{equation} {CAGR} = \left( \frac{10000000}{1000000} \right)^\frac{1}{5} - 1 \end{equation}

이제 공식이 있으니깐 숫자를 넣고 계산하면 연 복리 수익률을 구할 수 있다.

시작 시점의 자산과 종료 시점의 자산을 알고 있으면 저렇게 구할 수 있는데, 그걸 모르면 어떻게 구할 수 있을까? 예를 들어 3년 동안 1년에 한 번씩만 주식 거래를 하는 알고리즘을 세웠고 백테스팅으로 한 번 거래할 때, 수익률을 계산했다고 치자. 이런 경우에는 어떻게 계산하면 될까?

다시 연 복리 수익률 공식을 살펴보자.

\begin{equation} {CAGR}(t_0,t_n) = \left( \frac{V(t_n)}{V(t_0)} \right)^\frac{1}{t_n-t_0} - 1 \end{equation}

실제 자산 가격을 사용하는 건 \(\frac{V(t_n)}{V(t_0)}\) 식이다. 회수 자산을 투자 자산으로 나눈 값이 필요하다. 즉 비율(proportion)을 구할 수 있다면 투자 자산과 회수 자산을 몰라도 된다.

여기서 \(\frac{V(t_n)}{V(t_0)}\) 값을 누적 수익률로 구할 수 있다. 누적 수익률에 1을 더한 값이기 때문이다. 예를 들어 누적 수익률이 10%라면 \(\frac{V(t_n)}{V(t_0)}\) 값은 \(1 + 0.1\) 이 된다. 수익률로 누적 수익률을 구할 수 있다면 연 복리 수익률을 구할 때, 정확한 투자 자산과 회수 자산을 몰라도 된다.

위에서 말한 3년 동안 1년에 한 번씩 주식 거래를 하는 알고리즘을 생각해 보자. 백테스팅을 했을 때, 다음과 같은 수익률이 나왔다.

거래 번호 날짜 수익률
1 2023-01-02 20%
2 2024-01-02 -5%
3 2025-01-02 15%

누적 수익률은 어떻게 구할까? \({1}\) 을 투자한다면 1번 거래를 마치면 총금액은 \(1 \times 1.2\) 가 된다. 모두 재투자를 한다면 2번 거래를 마칠 경우 \(1 \times 1.2 \times 0.95\) 가 된다. 3번 거래까지 마치면? \(1 \times 1.2 \times 0.95 \times 1.15\) 가 된다. 시작 시점의 자산에서 수익이 몇 퍼센트가 생겼는지 계산해야 하기에 결과값에서 \(1\) 을 빼줘야 한다.

\begin{equation} 1 \times 1.2 \times 0.95 \times 1.15 - 1 = 0.311 \end{equation}

누적 수익률은 31.1%이다.

\begin{equation} 0.09446252892 = \left( 1 + 0.311 \right)^\frac{1}{3} - 1 \end{equation}

연 복리 수익률은 9%가 나온다.

마치며

연 복리 수익률(CAGR)을 구하는 걸 살펴봤다.

\begin{equation} {CAGR}(t_0,t_n) = \left( \frac{V(t_n)}{V(t_0)} \right)^\frac{1}{t_n-t_0} - 1 \end{equation}

이제 이 공식이 친근해 보일지 모르겠다. 적어도 나는 이 글을 쓰면서 여러 번 봐서 아주 친해졌다. 백테스트를 할 때는 수익률을 기반으로 계산한다. 그래서 CAGR 공식에 넣을 투자 자산과 회수 자산의 값으로 뭘 넣으면 되는지 막막해진다. 비율로 들어가는 것이니 수익률로 계산할 수 있는 누적 수익률을 대신 넣어서 계산하면 된다.

링크