기간별 수익률(%)과 보유 기간(년·개월)을 오래된 기간부터 차례로 입력하세요. 2개 기간 이상이면 계산할 수 있습니다(최대 20개 기간). 투자 전체의 누적 수익률과, 1년당으로 바꾼 연평균 수익률(기하평균)을 계산합니다.
이 페이지에서 할 수 있는 것
- ‘1년째는 +10%, 다음 5개월은 −2%…’처럼 기간별 수익률(%)과 보유 기간(년·개월)으로 투자 전체의 누적 수익률과 연평균 수익률을 계산합니다
- 연평균 수익률은 들쭉날쭉한 기간별 수익률을 고르게 해서 ‘해마다 같은 몇 %로 계속 불어난 것과 같은가’로 바꾼 값(기하평균의 연 수익률)입니다. 보유 기간이 다른 투자끼리 공평하게 비교할 수 있습니다
- ‘평균 +25%인데 번 게 없다’가 일어나는 산술평균과의 차이(이 페이지에서 가장 중요한 점)도 공식 카드로 쉽게 해설합니다
- 100만 원으로 시작했을 때의 기간별 잔액 추이표와, 실제 잔액과 연평균 수익률로 일정하게 성장했을 때의 곡선을 겹친 그래프도 보여 줍니다
이 계산은 어디에 쓰일까요?
‘1년째 +10%, 2년째 −5%, 3년째 +20%’처럼 성적이 들쭉날쭉할 때, 펀드의 자산운용보고서나 ETF 자료에 나오는 연평균 수익률은 이 페이지와 같은 기하평균으로 계산됩니다.
자신의 투자 성적을 연 기준으로 바꿀 수 있으면 펀드끼리 비교하거나 목표(예: 연 5%)와 맞춰 보는 일을 같은 기준으로 할 수 있습니다. 다만 중간에 적립이나 인출을 했다면 금액가중수익률(IRR)로 보는 것이 정확합니다.
−50%와 +100%의 산술평균은 +25%이지만, 실제 자산은 100만 원 → 50만 원 → 100만 원으로 번 것이 없습니다. 성적의 등락이 클수록 산술평균은 실제보다 좋아 보입니다.
‘평균 수익률 ○%’라는 광고나 기사를 보면 그것이 산술평균인지 기하평균(연 기준)인지를 의심해 보세요. 이 지식 하나만으로도 부풀린 숫자에 속기 어려워집니다.
‘3년 만에 매출이 1.5배’를 연 기준으로 바꾸면 \(1.5^{1/3} - 1 \fallingdotseq 14.5\%\)입니다. 이 값을 CAGR(연평균 성장률)라고 하며, 사업계획서, 실적 발표 자료, IR 자료에서 표준적으로 쓰입니다.
기간이 다른 사업이나 회사의 성장을 ‘1년당’으로 맞춰 비교할 수 있으므로, 비즈니스 자료를 만들거나 기업을 분석할 때 자주 쓰이는 계산입니다.
과거 성적으로 연평균 수익률을 구해 두면 연금저축이나 IRP 등에서 ‘이대로라면 20년 뒤에 얼마가 될까’를 복리 계산으로 어림할 수 있습니다(예: 연 5%라면 20년에 약 2.65배).
다만 과거의 평균 수익률이 미래를 보장하지는 않습니다. 계획에서는 조금 낮은 연 수익률로도 계산해 두고 폭을 두고 생각하는 것이 안전합니다.
‘2년에 +30%였던 A’와 ‘3년 반에 +50%였던 B’는 어느 쪽이 효율적이었을까요? 누적 수익률 그대로는 비교할 수 없지만, 연 기준으로 바꾸면 A는 약 14.0%, B는 약 12.3%로 A가 더 효율적이었다는 것을 알 수 있습니다.
보유 기간이 개월 단위로 어중간해도 이 페이지의 계산이라면 그대로 연 기준으로 맞출 수 있습니다.
공식과 그래프
용어·기호 해설
기호
| \(r_i\) | 알 아이 | \(i\)번째 기간의 수익률. 그 기간에 자산이 몇 % 늘었는지(줄었는지)를 나타냅니다. 계산에서는 %를 소수로 바꿔서 씁니다(+10%이면 0.1, −5%이면 −0.05). |
| \(y\), \(m\) | 와이 / 엠 | 보유 기간의 입력값. \(y\)는 연수, \(m\)은 개월 수입니다. (예: 1년 2개월이면 \(y=1\), \(m=2\)) |
| \(h_i\) | 에이치 아이 | \(i\)번째 기간의 보유 기간을 햇수로 바꾼 값. \(h = y + m \div 12\)로 구합니다. (예: 1년 2개월 → 약 1.17년) |
| \(B_0\), \(B_i\), \(B_n\) | 비 영 / 비 아이 / 비 엔 | 잔액(Balance). \(B_0\)은 처음 금액, \(B_i\)는 \(i\)번째 기간 말의 잔액, \(B_n\)은 마지막 기간 말의 잔액입니다. 이 페이지의 추이표는 처음 금액 100만 원으로 계산합니다. |
| \(T\) | 티 | 총 보유 기간(년). 기간별 \(h_i\)를 모두 더한 값입니다. (예: 1년 + 1년 + 6개월 → \(T = 2.5\)년) |
| \(R\) | 알(대문자) | 누적 수익률. 전체 기간을 통틀어 자산이 몇 % 늘었는지(줄었는지)입니다. |
| \(r_{avg}\) | 알 애버리지 | 연평균 수익률. 들쭉날쭉한 기간별 수익률을 ‘해마다 같은 몇 %’로 바꾼 값으로, 이 페이지 계산의 주인공입니다. avg는 평균을 뜻하는 영어 average의 줄임말입니다. |
| \(x^{1/T}\) | 엑스의 티분의 일제곱 | \(x\)의 \(T\)제곱근. ‘\(T\)제곱하면 \(x\)가 되는 수’입니다. (예: \(1.21^{1/2} = \sqrt{1.21} = 1.1\)) 공학용 계산기나 Excel의 ‘^(1/T)’로 계산할 수 있습니다. |
용어
| 수익률 | 투자한 돈이 그 기간에 몇 % 늘었는지(줄었는지)를 나타내는 값입니다. 영어로는 리턴(return)이라고 합니다. 손해 본 기간은 마이너스 수익률이 됩니다. |
| 누적 수익률 | 전체 기간을 통틀어 합계 이익(손실)을 %로 나타낸 값입니다. 걸린 햇수를 생각하지 않으므로 기간이 다른 투자끼리 비교하는 데는 맞지 않습니다. |
| 연평균 수익률 | 누적 수익률을 ‘해마다 같은 몇 %로 계속 불어난 것과 같은가’로 바꾼 값입니다(연환산 수익률이라고도 합니다). 햇수를 맞춰 비교할 수 있어 투자 성적을 나타내는 표준으로 쓰입니다. |
| 기하평균 | 곱셈으로 이어지는 양의 평균입니다. \(n\)개의 값을 모두 곱해서 \(n\)제곱근을 구합니다. 수익률처럼 배율로 쌓이는 양의 평균은 산술평균이 아니라 기하평균으로 구하는 것이 올바른 방법입니다. |
| 산술평균 | 모두 더해서 개수로 나누는 보통의 평균입니다. 수익률의 평균에 쓰면 등락이 클수록 실제보다 좋은 숫자로 보입니다(−50%와 +100%의 산술평균은 +25%이지만 실제 이익은 0입니다). |
| 복리 | 늘어난 몫도 원금에 넣어서 다음 기간에는 그 전체가 불어나는 구조입니다. 이 페이지의 계산은 ‘이전 기간 말의 잔액이 다음 기간의 원금이 되는’ 복리를 전제로 합니다. |
| 연환산 | 기간이 제각각인 성적을 ‘1년에 몇 %인가’로 맞추는 것입니다. 6개월에 +3%와 2년에 +10% 같은 성적도 연 기준으로 바꾸면 공평하게 비교할 수 있습니다. |
| CAGR(연평균 성장률) | Compound Annual Growth Rate의 줄임말입니다. 이 페이지의 연평균 수익률과 완전히 같은 계산이며, 기업의 매출이나 이용자 수 같은 성장률을 연 기준으로 나타낼 때 자주 쓰는 이름입니다. |
| 금액가중수익률 | 중간의 입금·출금까지 생각해서 ‘내 돈이 실제로 얼마나 일했는가’를 나타내는 수익률(IRR·내부수익률과 같은 계산)입니다. 적립식 투자처럼 중간에 돈을 넣고 뺀 경우의 수익률은 이 페이지의 계산이 아니라 이쪽이 알맞습니다. 이런 입출금을 생각하지 않는 이 페이지의 수익률은 시간가중수익률이라고도 합니다. |
먼저 알아 두면 좋은 내용
이 페이지의 계산을 ‘뜻을 알고’ 쓸 수 있도록, 먼저 알아 두면 좋은 내용을 정리했습니다.
| 비와 비율·백분율(초등학교 6학년, 11~12세) |
|
| 분수와 소수(초등학교 5~6학년, 10~12세) |
|
| 정수와 유리수(중학교 1학년, 12~13세) |
|
| 거듭제곱·지수(중학교 1학년, 12~13세) |
|
| 거듭제곱근·지수의 확장(고등학교 수학 I) |
|
| 복리의 생각(고등학교 수학·경제) |
|
Excel로 계산하는 방법
| 보유 기간: 년 | 1 |
| 보유 기간: 개월 | 2 |
| 햇수로 바꾼 보유 기간(년) | =B1+B2/12 |
| 이전 기간 말의 잔액(원) | 1000000 |
| 그 기간의 수익률(%) | 10 |
| 햇수로 바꾼 보유 기간(년) | 2 |
| 기간 말의 잔액(원) | =B1*(1+B2/100)^B3 |
| 처음 금액(원) | 1000000 |
| 마지막 잔액(원) | 1320000 |
| 누적 수익률(%) | =(B2/B1-1)*100 |
| 처음 금액(원) | 1000000 |
| 마지막 잔액(원) | 1320000 |
| 총 보유 기간(년) | 2 |
| 연평균 수익률(%) | =((B2/B1)^(1/B3)-1)*100 |
첫 번째 표는 1 + 2 ÷ 12로 약 1.17년, 두 번째 표는 1,000,000 × 1.1 × 1.1 = 1,210,000원이 됩니다.
세 번째 표는 32%, 네 번째 표는 약 14.89%로 표시됩니다. B열을 자신의 숫자로 바꾸기만 하면 쓸 수 있습니다.
Google 스프레드시트로 계산하는 방법
| 보유 기간: 년 | 1 |
| 보유 기간: 개월 | 2 |
| 햇수로 바꾼 보유 기간(년) | =B1+B2/12 |
| 이전 기간 말의 잔액(원) | 1000000 |
| 그 기간의 수익률(%) | 10 |
| 햇수로 바꾼 보유 기간(년) | 2 |
| 기간 말의 잔액(원) | =B1*(1+B2/100)^B3 |
| 처음 금액(원) | 1000000 |
| 마지막 잔액(원) | 1320000 |
| 누적 수익률(%) | =(B2/B1-1)*100 |
| 처음 금액(원) | 1000000 |
| 마지막 잔액(원) | 1320000 |
| 총 보유 기간(년) | 2 |
| 연평균 수익률(%) | =((B2/B1)^(1/B3)-1)*100 |
Python으로 계산하는 방법
# (수익률 %, 보유 기간의 연수, 보유 기간의 개월 수)를 오래된 기간부터 차례로 늘어놓는다
periods = [(10, 1, 2), (-2, 0, 5), (15, 2, 3)]
start_balance = 1000000 # 처음 금액(원)
balance = start_balance
total_years = 0
for return_percent, years, months in periods:
holding_years = years + months / 12 # 햇수로 바꾼 보유 기간
total_years += holding_years
balance *= (1 + return_percent / 100) ** holding_years # 복리 체인
print(f"수익률 {return_percent}%로 {holding_years:.4f}년 → 잔액 {balance:,.0f}원")
cumulative_return = (balance / start_balance - 1) * 100
average_return = ((balance / start_balance) ** (1 / total_years) - 1) * 100
print(f"누적 수익률: {cumulative_return:.2f}%")
print(f"연평균 수익률: {average_return:.2f}%")
print(f"총 보유 기간: {total_years:.4f}년")
LaTeX 등 수식 언어로 쓰는 법(복사 가능)
h = y + m ÷ 12
h = y + \dfrac{m}{12}
<math xmlns="http://www.w3.org/1998/Math/MathML" display="block">
<mrow>
<mi>h</mi>
<mo>=</mo>
<mi>y</mi>
<mo>+</mo>
<mfrac>
<mi>m</mi>
<mn>12</mn>
</mfrac>
</mrow>
</math>
h = y + m / 12
y + m/12
h := y + m/12;
h = y + m/12;
h = y + m/12
B_i = B_{i-1} \times (1 + r_i)^{h_i}
<math xmlns="http://www.w3.org/1998/Math/MathML" display="block">
<mrow>
<msub><mi>B</mi><mi>i</mi></msub>
<mo>=</mo>
<msub><mi>B</mi><mrow><mi>i</mi><mo>−</mo><mn>1</mn></mrow></msub>
<mo>×</mo>
<msup>
<mrow><mo>(</mo><mn>1</mn><mo>+</mo><msub><mi>r</mi><mi>i</mi></msub><mo>)</mo></mrow>
<msub><mi>h</mi><mi>i</mi></msub>
</msup>
</mrow>
</math>
B_i = B_(i-1) (1 + r_i)^(h_i)
bprev (1 + r)^h
B := Bprev*(1 + r)^h;
B = Bprev*(1 + r)^h;
B_i = B_(i−1) (1 + r_i)^(h_i)
R = Bₙ ÷ B₀ − 1
R = \dfrac{B_n}{B_0} - 1
<math xmlns="http://www.w3.org/1998/Math/MathML" display="block">
<mrow>
<mi>R</mi>
<mo>=</mo>
<mfrac>
<msub><mi>B</mi><mi>n</mi></msub>
<msub><mi>B</mi><mn>0</mn></msub>
</mfrac>
<mo>−</mo>
<mn>1</mn>
</mrow>
</math>
R = (B_n) / (B_0) - 1
bn/b0 - 1
R := Bn/B0 - 1;
R = Bn/B0 - 1;
R = B_n/B_0 − 1
r_{avg} = \left(\dfrac{B_n}{B_0}\right)^{1/T} - 1
<math xmlns="http://www.w3.org/1998/Math/MathML" display="block">
<mrow>
<msub><mi>r</mi><mi>avg</mi></msub>
<mo>=</mo>
<msup>
<mrow>
<mo>(</mo>
<mfrac>
<msub><mi>B</mi><mi>n</mi></msub>
<msub><mi>B</mi><mn>0</mn></msub>
</mfrac>
<mo>)</mo>
</mrow>
<mrow><mn>1</mn><mo>/</mo><mi>T</mi></mrow>
</msup>
<mo>−</mo>
<mn>1</mn>
</mrow>
</math>
r_(avg) = ((B_n) / (B_0))^(1/T) - 1
(bn/b0)^(1/T) - 1
r_avg := (Bn/B0)^(1/T) - 1;
r_avg = (Bn/B0)^(1/T) - 1;
r_avg = (B_n/B_0)^(1/T) − 1
ChatGPT 에게 물어서 계산하는 방법
당신은 투자 계산 도우미입니다. 다음 계산을 반드시 Python 코드를 실제로 실행해서 하고, 실행 결과의 숫자만을 근거로 답해 주세요(암산이나 추측으로 답하지 마세요). 어떤 투자의 성적은 오래된 기간부터 차례로 다음과 같았습니다. - 수익률 +10%로 1년 2개월 - 수익률 −2%로 5개월 - 수익률 +15%로 2년 3개월 보유 기간은 ‘연수 + 개월 수 ÷ 12’로 햇수로 바꾸고, 잔액은 복리(이전 기간 말의 잔액이 다음 기간의 원금)로 이어진다고 합니다. 다음 값을 각각 구해 주세요. 1. 누적 수익률(%, 소수 둘째 자리까지) = 전체 기간의 배율 − 1 2. 연평균 수익률(%, 소수 둘째 자리까지) = 전체 기간의 배율의 (1/총 보유 기간)제곱 − 1(기하평균) 3. 총 보유 기간(년) 4. 100만 원으로 시작했을 때 기간별 기간 말 잔액(원) 계산에 사용한 공식과 실행 결과의 숫자를 보여 주세요.
사용법
-
1숫자 입력계산하고 싶은 숫자를 입력란에 입력합니다
-
2계산‘계산’ 버튼을 누릅니다
-
3결과 확인계산 결과가 바로 표시됩니다. 계산의 원리와 공식 해설도 같은 페이지에서 확인할 수 있습니다
DataChef의 특징
전문 지식 없이도 직관적이고 간단하게 사용
개인정보를 등록하지 않고도 이용할 수 있습니다
"다운로드"를 누르면 파일이 자동으로 삭제됩니다
출처 표기 불필요
상업적 이용 허가 연락도 필요 없습니다