기간 수 N·연이율 I/Y·현재가치 PV·매기 납입액 PMT·미래가치 FV의 5칸 중 구하고 싶은 1칸만 비워 두고, 나머지 4칸에 숫자를 입력해 주세요. 비워 둔 칸을 역산합니다.
이 페이지에서 할 수 있는 것
- 기간 수 \(N\)·연이율 \(I/Y\)·현재가치 \(PV\)·매기 납입액 \(PMT\)·미래가치 \(FV\)의 5개 중 4개를 넣으면 나머지 1개를 역산할 수 있습니다(BA II Plus나 HP 12C 같은 재무용 계산기의 ‘5키 TVM’과 같은 설계입니다)
- 부호 규칙도 재무용 계산기와 같습니다. 나에게서 나가는 돈(맡기기·적립하기·갚기)은 마이너스, 나에게 들어오는 돈(빌리기·받기)은 플러스로 입력합니다. 예: 매년 2,000원씩 적립한다면 PMT = -2000
- 납입 시점(기말 = 일반적인 대출 상환이나 적립 / 기초)과 P/Y(1년당 납입 횟수)·C/Y(1년당 복리 횟수)를 설정할 수 있습니다
- 구한 값과 함께 매기 납입액의 합계와 이자 합계도 표시합니다. 기간 수가 20 이내의 정수일 때는 기간별 ‘이자·잔액’ 추이표도 나옵니다
- 잔액 추이 그래프가 함께 나옵니다. 공식의 쉬운 해설과 Excel(FV·PV·PMT·RATE·NPER 함수)·Google 스프레드시트·Python에 복사해 쓸 수 있는 수식도 이 페이지에 정리되어 있습니다
이 계산은 어디에 쓰일까요?
재무관리나 AFPK·CFP 공부에서 외우기 쉬운 ‘6가지 계수’(일시금의 미래가치계수·현재가치계수, 연금의 미래가치계수·연금의 현재가치계수, 감채기금계수, 자본회수계수)는 사실 모두 이 TVM 방정식의 변형입니다. 예를 들어 일시금의 미래가치계수는 \((1+i)^N\) 그 자체이고, 연금의 미래가치계수는 \(\dfrac{(1+i)^N-1}{i}\)입니다.
이 페이지에서 숫자를 바꿔 가며 확인하면 6가지를 따로따로 외우는 대신 ‘하나의 식을 달리 읽은 것’으로 이해할 수 있어 응용 문제에도 강해집니다.
‘3억 원을 연 4%(고정)·30년 원리금균등상환으로 빌린다’는 PV = +300,000,000·N = 360(30년 × 12회)·매월 납입(P/Y = C/Y = 12)·FV = 0으로 두고 PMT를 푸는 계산입니다. 답은 매월 약 1,432,246원이고, 총상환액은 약 5억 1,561만 원, 이자 합계는 약 2억 1,561만 원이 됩니다.
금액의 구조가 식으로 보이면 ‘대출금·금리·기간 중 어느 것이 얼마나 영향을 주는지’를 직접 확인할 수 있습니다. 실제 대출에는 중도상환수수료·보증료·금리 변동 등이 있으므로 정확한 상환액은 금융회사의 계산으로 확인하세요.
‘매년 1,200만 원씩 20년 동안 받으려면, 연 2%로 운용할 수 있을 때 처음에 얼마가 필요한가’는 PMT = +12,000,000·N = 20·FV = 0으로 두고 PV를 푸는 계산으로, 답은 약 1억 9,622만 원(PV = −196,217,200원 = 처음에 내는 돈)입니다.
받는 총액은 2억 4,000만 원이므로 차액인 약 4,378만 원을 운용 수익이 채우는 셈입니다. ‘수익률이 바뀌면 필요한 금액이 얼마나 바뀌는지’를 숫자로 확인할 수 있다는 것은 노후 자금을 생각할 때 큰 판단 자료가 됩니다(실제 운용에서는 수익률이 일정하지 않고 원금 손실 가능성도 있습니다).
‘매월 50만 원을 연 3%(월복리)로 적립해서 5,000만 원이 되는 것은 언제인가’는 PMT = −500,000·FV = +50,000,000·P/Y = C/Y = 12로 두고 N을 푸는 계산으로, 답은 약 89.4개월(약 7.4년)입니다.
금리 0%라면 100개월 걸릴 것이 이자 덕분에 약 10개월 일찍 도달한다는 ‘이자의 효과’까지 숫자로 볼 수 있는 것이 N 역산의 재미입니다.
‘3,000만 원짜리 자동차를 연 4%·60개월 할부로 산다’면 PV = +30,000,000·N = 60·P/Y = C/Y = 12·FV = 0으로 두고 PMT를 풀면 월 약 552,496원, 총납입액은 약 3,315만 원입니다. 차액인 약 315만 원이 이자에 해당합니다.
반대로 ‘월 납입액과 총액만 제시된’ 경우에는 I/Y를 역산하면 실제 연이율을 알아낼 수 있습니다. 자동차 할부·리스, 휴대폰 단말기 할부 등을 비교할 때 도움이 되는 생각입니다.
공식과 그래프
용어·기호 해설
기호
| \(PV\) | 피브이(현재가치) | 현재가치(Present Value)입니다. 지금 시점에 움직이는 돈으로, 빌리거나 받으면 플러스, 맡기거나 투자하면 마이너스로 나타냅니다. |
| \(FV\) | 에프브이(미래가치) | 미래가치(Future Value)입니다. 기간의 마지막 시점에 움직이는 돈으로, 만기에 받으면 플러스, 마지막에 내면 마이너스로 나타냅니다. |
| \(PMT\) | 페이먼트 | 매기 납입액(Payment)입니다. 매기 반복해서 움직이는 돈으로, 적립이나 상환처럼 나에게서 나가는 돈은 마이너스, 월세 수입처럼 들어오는 돈은 플러스로 나타냅니다. |
| \(N\) | 엔 | 기간 수(납입 횟수)입니다. 이자가 붙는 기간의 수로, 연 1회 납입이면 햇수와 같지만 매월 납입(P/Y = 12)에서는 개월 수로 셉니다(10년이면 \(N = 120\)). |
| \(I/Y\) | 아이 와이 | 연이율(Interest per Year)입니다. 1년당 이율을 %로 나타낸 것으로, 재무용 계산기의 키 이름을 그대로 쓴 것입니다. |
| \(P/Y\) | 피 와이 | 1년당 납입 횟수(Payments per Year)입니다. 1년에 \(PMT\) 납입이 몇 번 있는지로, 연 1회 납입이면 1, 매월 납입이면 12입니다. |
| \(C/Y\) | 씨 와이 | 1년당 복리 횟수(Compounding per Year)입니다. 이자가 원금에 합쳐지는 횟수로, 보통은 \(P/Y\)와 같은 값입니다. 다르면 복리 주기를 납입 주기로 환산해 계산합니다. |
| \(i\) | 아이(소문자) | 1기당 이율을 소수로 나타낸 것입니다. 연 1회 납입이면 연이율 그 자체(6%라면 \(i = 0.06\)), 매월 납입이면 월 단위로 바꾼 이율입니다. |
| \(g\) | 지 | 납입 시점을 나타내는 스위치입니다. 기초 납입이면 \(g = 1\), 기말 납입이면 \(g = 0\)으로 하고, 기초 납입일 때 \(PMT\) 항에 \((1+i)\)를 한 번 더 곱합니다. |
| \(\ln\) | 자연로그(엘엔) | 자연로그입니다. ‘몇 번 곱하면 이 배율이 되는지’를 꺼내는 도구로, 기간 수 \(N\)의 역산에 씁니다. |
용어
| 화폐의 시간가치(TVM) | ‘지금의 1만 원은 미래의 1만 원보다 가치가 높다’는 생각(Time Value of Money)입니다. 지금 있는 돈은 운용해서 이자를 얻을 수 있기 때문이며, 재무관리의 바탕이 되는 생각입니다. 이 페이지의 방정식은 이 생각을 하나의 식으로 정리한 것입니다. |
| 현재가치 | 미래의 돈을 ‘지금 돈으로 바꾸면 얼마인지’로 나타낸 금액입니다. 예를 들어 연이율 2%라면 1년 뒤의 102만 원은 지금의 100만 원과 같은 가치입니다. |
| 미래가치 | 지금의 돈이나 매기의 적립이 이자를 포함해 미래에 얼마가 되는지를 나타낸 금액입니다. |
| 할인 | 미래의 돈을 현재가치로 바꾸는 계산을 말합니다. 미래의 금액을 \((1+i)^N\)으로 나누므로 ‘할인한다’고 합니다. 이자를 붙이는 계산(복리)과 정반대 방향입니다. |
| 연금의 미래가치계수 | 매기 1원씩 적립했을 때 이자를 포함해 미래에 얼마로 쌓이는지를 나타내는 배율(\(\dfrac{(1+i)^N - 1}{i}\))을 말합니다(연금 종가계수, FVIFA). 재무관리·재무설계에서 배우는 ‘6가지 계수’의 하나로, 매기 납입액에 곱해서 씁니다. |
| 연금의 현재가치계수 | 매기 1원씩 받을 권리가 지금 돈으로 얼마인지를 나타내는 배율(\(\dfrac{1-(1+i)^{-N}}{i}\))을 말합니다(연금 현가계수, PVIFA). 연금이나 주택담보대출(대출금과 매회 상환액의 관계) 계산에 쓰는, 연금의 미래가치계수의 현재가치판입니다. |
| 현금흐름 | 돈이 들어오고 나가는 흐름을 말합니다. TVM에서는 ‘언제·얼마를·어느 방향으로’ 돈이 움직이는지만 보고, 방향을 부호(플러스·마이너스)로 나타냅니다. |
| 부호 규칙 | 나에게서 나가는 돈(맡기기·적립하기·갚기)은 마이너스, 나에게 들어오는 돈(빌리기·받기)은 플러스로 나타내는 규칙입니다. 재무용 계산기나 Excel의 재무 함수와 같으며, 이 규칙 덕분에 대출·적립·연금을 모두 같은 하나의 방정식으로 다룰 수 있습니다. |
| 기말 납입 | 매기 납입(PMT)을 각 기간의 끝에 하는 방식입니다. 일반적인 대출 상환이나 적립은 이쪽이며, 이 페이지의 초기 설정도 기말 납입입니다. |
| 기초 납입 | 매기 납입(PMT)을 각 기간의 처음에 하는 방식입니다. 같은 납입액이라도 1기분 일찍 이자가 붙기 시작하므로 \(PMT\) 항에 \((1+i)\)를 한 번 더 곱해 계산합니다. 월세를 미리 내는 것 같은 ‘선납’이 이 형태입니다. |
| 재무용 계산기 | TVM 계산 전용 키(N·I/Y·PV·PMT·FV)가 있는 계산기(금융 계산기)입니다. BA II Plus(텍사스 인스트루먼트)와 HP 12C가 유명하며, CFA·CFP 등의 시험과 실무에서 쓰입니다. 이 페이지는 같은 5키 방식의 웹 버전입니다. |
| 수치해법(이분법) | 식 변형으로 답을 꺼낼 수 없을 때 ‘답이 있는 구간을 반씩 좁혀 가며’ 근삿값을 구하는 방법입니다. 연이율 I/Y의 역산은 N차 방정식을 푸는 것이 되어 공식이 없으므로, 이 페이지도 이분법으로 계산합니다. |
먼저 알아 두면 좋은 내용
이 페이지의 계산을 ‘의미를 이해하고’ 쓸 수 있도록, 먼저 알아 두면 좋은 내용을 정리했습니다.
| 정수와 유리수(양수와 음수, 중학교 1학년, 12~13세) |
|
| 비율과 백분율(초등학교 6학년, 11~12세) |
|
| 거듭제곱(중학교 1학년, 12~13세) |
|
| 복리의 기본(이 사이트의 ‘복리 계산기’ 페이지) |
|
| 로그(고등학교 수학Ⅰ, 심화) |
|
Excel로 계산하는 방법
| 1기당 이율(6%라면 0.06) | 0.06 |
| 기간 수 N | 10 |
| 매기 납입액 PMT | -2000 |
| 현재가치 PV | 20000 |
| 미래가치 FV | =FV(B1,B2,B3,B4,0) |
| 1기당 이율(6%라면 0.06) | 0.06 |
| 기간 수 N | 10 |
| 현재가치 PV | 20000 |
| 미래가치 FV | 0 |
| 매기 납입액 PMT | =PMT(B1,B2,B3,B4,0) |
| 기간 수 N | 5 |
| 매기 납입액 PMT | 0 |
| 현재가치 PV | -1000 |
| 미래가치 FV | 1500 |
| 1기당 이율 | =RATE(B1,B2,B3,B4) |
| 1기당 이율(8%라면 0.08) | 0.08 |
| 매기 납입액 PMT | 0 |
| 현재가치 PV | -1000 |
| 미래가치 FV | 2000 |
| 기간 수 N | =NPER(B1,B2,B3,B4) |
| 1기당 이율(5%라면 0.05) | 0.05 |
| 기간 수 N | 20 |
| 매기 납입액 PMT | -100 |
| 미래가치 FV | 0 |
| 현재가치 PV | =PV(B1,B2,B3,B4,1) |
첫 번째 표는 B5에 -9,455.36, 두 번째는 -2,717.36, 세 번째는 약 0.0845(연이율 8.447%. 셀 서식을 백분율로 하면 보기 쉽습니다), 네 번째는 약 9.006, 다섯 번째는 1,308.53이 됩니다.
FV·PMT·PV의 마지막 인수는 납입 시점으로, 0(생략) = 기말 납입, 1 = 기초 납입입니다. 매월 납입이라면 이율에 ‘연이율 ÷ 12’, 기간 수에 ‘개월 수’를 넣습니다.
Google 스프레드시트로 계산하는 방법
| 1기당 이율(6%라면 0.06) | 0.06 |
| 기간 수 N | 10 |
| 매기 납입액 PMT | -2000 |
| 현재가치 PV | 20000 |
| 미래가치 FV | =FV(B1,B2,B3,B4,0) |
| 1기당 이율(6%라면 0.06) | 0.06 |
| 기간 수 N | 10 |
| 현재가치 PV | 20000 |
| 미래가치 FV | 0 |
| 매기 납입액 PMT | =PMT(B1,B2,B3,B4,0) |
| 기간 수 N | 5 |
| 매기 납입액 PMT | 0 |
| 현재가치 PV | -1000 |
| 미래가치 FV | 1500 |
| 1기당 이율 | =RATE(B1,B2,B3,B4) |
| 1기당 이율(8%라면 0.08) | 0.08 |
| 매기 납입액 PMT | 0 |
| 현재가치 PV | -1000 |
| 미래가치 FV | 2000 |
| 기간 수 N | =NPER(B1,B2,B3,B4) |
| 1기당 이율(5%라면 0.05) | 0.05 |
| 기간 수 N | 20 |
| 매기 납입액 PMT | -100 |
| 미래가치 FV | 0 |
| 현재가치 PV | =PV(B1,B2,B3,B4,1) |
Python으로 계산하는 방법
import math
# 구하고 싶은 칸을 None으로 둡니다(이 예에서는 fv를 구합니다)
n = 10 # 기간 수 N(납입 횟수)
annual_rate = 6 # 연이율 I/Y(%)
pv = 20000 # 현재가치 PV(들어오는 돈 = 플러스, 나가는 돈 = 마이너스)
pmt = -2000 # 매기 납입액 PMT
fv = None # 미래가치 FV
is_beginning = False # True=기초 납입, False=기말 납입
g = 1 if is_beginning else 0
# 1기당 이율(연 1회 납입. 매월 납입이라면 12로 나누고 n도 개월 수로). 이율을 구할 때는 None으로 둡니다
i = annual_rate / 100 if annual_rate is not None else None
def tvm_left_side(i_, n_, pv_, pmt_, fv_):
"""TVM 방정식의 좌변(답에서는 0이 됩니다)"""
if abs(i_) < 1e-12:
return pv_ + pmt_ * n_ + fv_
growth = (1 + i_) ** n_
return pv_ * growth + pmt_ * (1 + i_ * g) * (growth - 1) / i_ + fv_
if fv is None:
fv = -(pv + pmt * n) if abs(i) < 1e-12 else -(pv * (1 + i) ** n + pmt * (1 + i * g) * ((1 + i) ** n - 1) / i)
print(f"미래가치 FV = {fv:,.2f}")
elif pv is None:
pv = -(fv + pmt * n) if abs(i) < 1e-12 else -(fv + pmt * (1 + i * g) * ((1 + i) ** n - 1) / i) / (1 + i) ** n
print(f"현재가치 PV = {pv:,.2f}")
elif pmt is None:
pmt = -(pv + fv) / n if abs(i) < 1e-12 else -(pv * (1 + i) ** n + fv) / ((1 + i * g) * ((1 + i) ** n - 1) / i)
print(f"매기 납입액 PMT = {pmt:,.2f}")
elif n is None:
if abs(i) < 1e-12:
n = -(pv + fv) / pmt
else:
k = pmt * (1 + i * g) / i
n = math.log((k - fv) / (pv + k)) / math.log(1 + i)
print(f"기간 수 N = {n:.3f}")
else:
# 연이율은 식 변형으로 꺼낼 수 없으므로 이분법으로 찾습니다(입력에 따라 해가 없을 수도 있습니다)
low, high = -0.9999, 10.0
if tvm_left_side(low, n, pv, pmt, fv) * tvm_left_side(high, n, pv, pmt, fv) > 0:
raise SystemExit("이 범위에는 해가 없습니다. 돈의 방향(부호)을 확인해 주세요")
for _ in range(200):
mid = (low + high) / 2
if tvm_left_side(low, n, pv, pmt, fv) * tvm_left_side(mid, n, pv, pmt, fv) <= 0:
high = mid
else:
low = mid
i = (low + high) / 2
print(f"연이율 I/Y = {i * 100:.3f} %")
total_interest = abs(pv + pmt * n + fv)
print(f"이자 합계 = {total_interest:,.2f}")
LaTeX 등 수식 언어로 쓰는 법(복사 가능)
PV(1 + i)ᴺ + PMT × ((1 + i)ᴺ − 1)/i + FV = 0
PV(1+i)^{N} + PMT \cdot \dfrac{(1+i)^{N}-1}{i} + FV = 0
<math xmlns="http://www.w3.org/1998/Math/MathML" display="block">
<mrow>
<mi>PV</mi>
<msup>
<mrow><mo>(</mo><mn>1</mn><mo>+</mo><mi>i</mi><mo>)</mo></mrow>
<mi>N</mi>
</msup>
<mo>+</mo>
<mi>PMT</mi>
<mo>⋅</mo>
<mfrac>
<mrow>
<msup>
<mrow><mo>(</mo><mn>1</mn><mo>+</mo><mi>i</mi><mo>)</mo></mrow>
<mi>N</mi>
</msup>
<mo>−</mo>
<mn>1</mn>
</mrow>
<mi>i</mi>
</mfrac>
<mo>+</mo>
<mi>FV</mi>
<mo>=</mo>
<mn>0</mn>
</mrow>
</math>
PV(1+i)^N + PMT((1+i)^N-1)/i + FV = 0
pv (1 + i)^n + pmt ((1 + i)^n - 1)/i + fv == 0
pv*(1 + i)^n + pmt*((1 + i)^n - 1)/i + fv = 0;
pv*(1 + i)^n + pmt*((1 + i)^n - 1)/i + fv == 0
PV(1+i)^N + PMT((1+i)^N-1)/i + FV = 0
FV = −(PV(1 + i)ᴺ + PMT × ((1 + i)ᴺ − 1)/i)
FV = -\left( PV(1+i)^{N} + PMT \cdot \dfrac{(1+i)^{N}-1}{i} \right)
<math xmlns="http://www.w3.org/1998/Math/MathML" display="block">
<mrow>
<mi>FV</mi>
<mo>=</mo>
<mo>−</mo>
<mrow>
<mo>(</mo>
<mi>PV</mi>
<msup>
<mrow><mo>(</mo><mn>1</mn><mo>+</mo><mi>i</mi><mo>)</mo></mrow>
<mi>N</mi>
</msup>
<mo>+</mo>
<mi>PMT</mi>
<mo>⋅</mo>
<mfrac>
<mrow>
<msup>
<mrow><mo>(</mo><mn>1</mn><mo>+</mo><mi>i</mi><mo>)</mo></mrow>
<mi>N</mi>
</msup>
<mo>−</mo>
<mn>1</mn>
</mrow>
<mi>i</mi>
</mfrac>
<mo>)</mo>
</mrow>
</mrow>
</math>
FV = -(PV(1+i)^N + PMT((1+i)^N-1)/i)
fv = -(pv (1 + i)^n + pmt ((1 + i)^n - 1)/i)
fv := -(pv*(1 + i)^n + pmt*((1 + i)^n - 1)/i);
fv = -(pv*(1 + i)^n + pmt*((1 + i)^n - 1)/i);
FV = -(PV(1+i)^N + PMT((1+i)^N-1)/i)
N = ln(−FV/PV) / ln(1 + i)
N = \dfrac{\ln\left(-\dfrac{FV}{PV}\right)}{\ln(1+i)}
<math xmlns="http://www.w3.org/1998/Math/MathML" display="block">
<mrow>
<mi>N</mi>
<mo>=</mo>
<mfrac>
<mrow>
<mi>ln</mi>
<mrow>
<mo>(</mo>
<mo>−</mo>
<mfrac><mi>FV</mi><mi>PV</mi></mfrac>
<mo>)</mo>
</mrow>
</mrow>
<mrow>
<mi>ln</mi>
<mrow><mo>(</mo><mn>1</mn><mo>+</mo><mi>i</mi><mo>)</mo></mrow>
</mrow>
</mfrac>
</mrow>
</math>
N = ln(-FV/PV) / ln(1+i)
n = Log[-fv/pv]/Log[1 + i]
n := ln(-fv/pv)/ln(1 + i);
n = log(-fv/pv)/log(1 + i);
N = ln(-FV/PV)/ln(1+i)
PV + PMT × N + FV = 0
PV + PMT \cdot N + FV = 0
<math xmlns="http://www.w3.org/1998/Math/MathML" display="block">
<mrow>
<mi>PV</mi>
<mo>+</mo>
<mi>PMT</mi>
<mo>⋅</mo>
<mi>N</mi>
<mo>+</mo>
<mi>FV</mi>
<mo>=</mo>
<mn>0</mn>
</mrow>
</math>
PV + PMT * N + FV = 0
pv + pmt n + fv == 0
pv + pmt*n + fv = 0;
pv + pmt*n + fv == 0
PV + PMT N + FV = 0
ChatGPT 에게 물어서 계산하는 방법
당신은 재무 계산(화폐의 시간가치, TVM) 도우미입니다. 다음 계산을 반드시 Python 코드를 실제로 실행해서 하고, 실행 결과의 숫자만을 근거로 답해 주세요(암산이나 추측으로 답하지 마세요). 표준 TVM 방정식 PV(1+i)^N + PMT(1+i*g)*((1+i)^N - 1)/i + FV = 0을 씁니다(g=1은 각 기간의 처음에 납입, g=0은 끝에 납입). 부호 규칙은 재무용 계산기와 같습니다. 나에게서 나가는 돈은 마이너스, 나에게 들어오는 돈은 플러스입니다. 20,000원을 연이율 6%로 빌려(PV = +20000) 매년 같은 금액을 10년 동안 각 해의 끝(기말)에 갚아 모두 상환합니다(FV = 0). 다음 값을 각각 구해 주세요. 1. 매년의 상환액 PMT 2. 상환액의 합계(PMT × 10) 3. 이자 합계(|PV + PMT×N + FV|) 계산에 쓴 식과 실행 결과의 숫자를 보여 주세요.
사용법
-
1숫자 입력계산하고 싶은 숫자를 입력란에 입력합니다
-
2계산‘계산’ 버튼을 누릅니다
-
3결과 확인계산 결과가 바로 표시됩니다. 계산의 원리와 공식 해설도 같은 페이지에서 확인할 수 있습니다
DataChef의 특징
전문 지식 없이도 직관적이고 간단하게 사용
개인정보를 등록하지 않고도 이용할 수 있습니다
"다운로드"를 누르면 파일이 자동으로 삭제됩니다
출처 표기 불필요
상업적 이용 허가 연락도 필요 없습니다