Lemma
수학, 거꾸로
도입 · 시간이 곧 돈, 말 그대로

시간에 흩어진 현금흐름의 값은 어떻게 매길까?

누군가는 10년 동안 매년 $100을 주겠다고 한다. 다른 누군가는 당장 $1,000을 주겠다고 한다. 어느 쪽이 더 값나갈까? “둘 다 $1,000 아닌가?”라는 순진한 답은 틀렸다. 이유는 하나다 — 1년 뒤의 $100은 오늘의 $100보다 작기 때문이다. 오늘 1달러를 굴렸다면 1년 뒤에는 그보다 더 많아졌을 테니까. 이 흐름을 거꾸로 돌리는 일 — 할인 — 이 미래 금액을 오늘의 등가물로 바꿔준다. 그렇게 할인된 금액을 모두 더하면 끝. 적분은 시간에 걸쳐 돈을 더한다. 할인은 더하기 전에 미래의 돈을 작게 만든다.

미래의 돈은 더하기 전에 할인되어야 한다.

위젯 — 현재가치
PV (연속)$10.55
할인 안 한 합계$15.00
PV (연 1회)$10.29
영구채 (T → ∞)$20.00
$0.50$1.00051015202530시간 t (년)비율 ($/년)할인 없음 (c)T = 15
c = $1/yr (constant)
파란 곡선은 미래의 1달러가 오늘 얼마인지 — c · e^(−rt). 점선 회색은 할인 안 한 비율 (1년에 1달러, 영원히). 둘과 시간축 사이의 초록 음영 영역, 0에서 T까지가 그 스트림의 현재가치 PV = (c/r)(1 − e^(−rT)). r을 0에서 20%까지 끌어보자 — r = 0이면 곡선이 회색 직선과 *같다* — 할인 없음, PV = 미할인 합계. r = 20%이면 곡선이 급락 — 같은 $1/년 스트림이 오늘은 훨씬 적다. T가 커지면 면적이 영구채 한계 c/r로 다가가고, T5/r을 넘으면 기간을 늘려도 거의 안 더해진다. *먼 미래의 돈은 할인되어 사라진다.*
흐름
1

미래 1달러는 오늘 1달러가 아니다

오늘 1달러를 이율 r로 굴려 1년 뒤에 1+r1 + r이 된다면 (로그 모듈에서 본 연속 복리라면 ere^r), 1년 뒤$1오늘 기준으로 1/(1+r)1/(1 + r)과 같다. 이것이 가장 단순한 계산이다. 지급이 두 번이면 같은 논리가 한 번 더 복리로 쌓인다 — 2년 뒤$1은 오늘 1/(1+r)21/(1 + r)², t년 뒤$1은 오늘 1/(1+r)t1/(1 + r)^t.

이 곱셈 인자 1/(1+r)t1/(1 + r)^t — 또는 연속판 짝꿍인 e(rt)e^(−rt) — 가 바로 다. t가 커지면 작아지고 (시간이 길면 더 깎이고), r이 커지면 더 빠르게 작아진다 (이자율이 높을수록 더 가파르게 깎인다). 이 페이지 전체가 결국 곱셈 한 번과 합 한 번이다 — 미래 현금 × 할인계수를, 돈이 도착하는 모든 미래 시점에 걸쳐 합산.

2

이산 스트림 — 쿠폰, 급여, 월세

실제 은 띄엄띄엄 도착한다. 채권은 N년에 걸쳐 매년 $100씩, 급여는 격주마다, 월세는 매달. 각 조각의 현재가치를 따로 계산해서 다 더하면 된다 —

PV=Σi=1NCi/(1+r)(ti)PV = Σ_{i=1}^N C_i / (1 + r)^(t_i)

이율 r로 N년 동안 매년 일정 금액 C가 들어온다면, 이 등비급수의 합은 깔끔한 닫힌 형식이 된다 — PV=C(1(1+r)(N))/rPV = C · (1 − (1+r)^(−N)) / r. 하지만 개념 자체는 별것 아니다 — “하나씩 할인하고, 다 더한다.” 그 일은 스프레드시트가 알아서 해준다. 식은 종이에 쓰려고 만든 것일 뿐.

위젯에 $1/년 스트림이 나온다. r = 5%라면 처음 10년이 기여하는 PV가 약 $7.72. 다음 10년은 약 $4.74만 더 얹힌다 (훨씬 적다). 30년을 넘어가면 추가 지급은 거의 의미가 없다. 먼 미래의 돈은 할인되어 사라진다 — 모기지, 연금, 영구채처럼 긴 스트림을 평가할 때 핵심이 되는 사실이다.

import math

# Discrete: pay $C every year for N years, discount at rate r per year.
# PV = sum_{i=1..N} C / (1 + r)^i
def pv_discrete(C, r, N):
    return sum(C / (1 + r)**i for i in range(1, N + 1))

# At r = 5%, $1/year for 10 years is worth less than $10 today.
[pv_discrete(1, 0.05, N) for N in (1, 5, 10, 20)]
# → [0.95, 4.33, 7.72, 12.46]
# Past 20 years, additional payments contribute almost nothing — distant
# money discounts away, no matter the cash flow's nominal size.
3

연속복리 — 지수가 자리를 잡는다

지급 간격이 더 짧아지면 — 매월, 매일, 매초 — 이산 합은 연속 적분으로 넘어가고, 할인계수 1/(1+r)t1/(1+r)^te(rt)e^(−rt)로 매끄럽게 풀린다. 왜 하필 지수일까? 복리 빈도 n이 커질 때 (1+r/n)(nt)(1 + r/n)^(n·t)에 로그를 씌워 보자 — ntlog(1+r/n)rtn·t · \log(1 + r/n) → r·t, 따라서 (1+r/n)(nt)e(rt)(1 + r/n)^(n·t) → e^(r·t). 로그 모듈의 항등식이 그대로 다시 등장한다 — 연속 성장과 연속 할인은 서로의 역연산이고, 둘 다 지수의 세계에 살고 있다.

연속 할인계수 e(rt)e^(−rt)n이 커지면 이산 계수와 일치한다. 다만 합을 구하기보다 적분하는 쪽이 훨씬 편하다 — 지수의 원시함수가 닫힌 형식이라서다 (적분 모듈 참고). 실제 상품(채권, 배당, 모기지)의 가격을 매길 때는 두 버전이 다 쓰인다. 어느 쪽을 쓸지는 지급이 덩어리로 들어오는지, 매끄럽게 흐르는지에 따라 갈린다.

# Continuous version: discount factor is e^(-r*t), which is what
# 'continuous compounding' gives in the limit of (1 + r/n)^(n*t) as n → ∞.
# Why exponential? log of (1 + r/n)^(n*t) = n*t * log(1 + r/n) → r*t,
# so (1 + r/n)^(n*t) → e^(r*t). The log module's identity surfaces here
# directly: continuous discount = inverse of continuous growth.

def discount_continuous(t, r):
    return math.exp(-r * t)

[(t, round(discount_continuous(t, 0.05), 4)) for t in (0, 1, 5, 10, 30)]
# → [(0, 1.0), (1, 0.9512), (5, 0.7788), (10, 0.6065), (30, 0.2231)]
# 30 years out at 5% — a future dollar is worth ~22 cents today.
4

연속 현금흐름 — 적분이 자리를 잡는다

현금흐름률 c(t)c(t)는 시간 tt 부근의 작은 시간 조각 dtdt 동안 c(t)dtc(t) · dt 달러가 들어온다는 뜻이다. [0, T] 구간의 미할인 합계는 적분 0Tc(t)dt∫_0^T c(t) dt이 된다. 현재 가치를 구하려면, 각 조각이 도착하는 시점에 맞춰 먼저 할인한 뒤 더해야(적분해야) 한다 — 미래의 돈은 합쳐지기 전에 먼저 작아져야 한다 —

PV=0Tc(t)e(rt)dtPV = ∫_0^T c(t) · e^(−rt) dt

가장 단순한 경우, [0, T]에서 현금흐름률 c도 이율 r도 일정하다면, 적분은 닫힌 형식으로 떨어진다 — PV=(c/r)(1e(rT))PV = (c/r) · (1 − e^(−rT)). 위젯이 이 면적을 그래프에 음영으로 칠해 보여준다. rrTT를 끌어보면서 답이 어떻게 움직이는지 살펴보자. 양 끝의 두 극한이 흥미롭다. r0r → 0이면 할인이 없으니 PVcTPV → c · T, 그냥 미할인 합계가 된다. TT → ∞영구채가 되어 PVc/rPV → c / r — 어떤 금융 교과서를 펴도 가장 먼저 마주치는 그 유명한 식이다.

# Continuous cash flow at rate c (dollars/year) over [0, T]:
# PV = ∫_0^T c · e^(-r*t) dt = (c/r) * (1 - e^(-r*T))
# For r → 0, the limit is c*T (no discount). For T → ∞, the limit is
# c/r — the perpetuity formula. Both are readable from the closed form.
def pv_continuous(c, r, T):
    if abs(r) < 1e-9:
        return c * T
    return (c / r) * (1 - math.exp(-r * T))

# Compare a $1/year stream's PV under different (r, T):
[(r, T, round(pv_continuous(1, r, T), 2))
 for r in (0.02, 0.05, 0.10) for T in (10, 30, 100)]
# → [(0.02, 10, 9.06),  (0.02, 30, 22.55),  (0.02, 100, 43.23),
#    (0.05, 10, 7.87),  (0.05, 30, 15.54),  (0.05, 100, 19.87),
#    (0.10, 10, 6.32),  (0.10, 30, 9.50),   (0.10, 100, 9.99)]
# At 10% the perpetuity limit is c/r = 10. At 100 years we're already
# at $9.99 — basically the limit. *5/r is roughly when extending
# matters less than the next decimal place.*
5

5/r 규칙 — 먼 미래의 돈은 거의 의미 없음

닫힌 형식 (c/r)(1e(rT))(c/r)(1 − e^(−rT)) 안에는 금융에서 가장 쓸모 있는 경험칙 하나가 숨어 있다. 인자 1e(rT)1 − e^(−rT)rT=ln(100)4.6r·T = \ln(100) ≈ 4.6, 즉 대략 T5/rT ≈ 5/r에서 영구채 한계의 99%에 도달한다. 그래서 r = 10%라면 사실상 50년이면 영구채 한계에 닿고, r = 5%100년, r = 2%250년이 걸린다. 5/r을 넘어서면 기간을 더 늘려봐야 거의 보태지지 않는다.

영구채·부동산·국채 같은 무한 수명 평가가, 보험 적립금·기후 피해·다세대 프로젝트 같은 매우 긴 수명 평가와 흔히 쓰이는 할인율에서는 그리 차이 나지 않는 이유가 여기 있다. 미래의 돈은 현재가치로 환산하면 그렇게까지 값나가지 않는다. 세대 간 경제학 논쟁이 결국 세대마다 r이 달라야 하는가로 수렴하는 까닭도 그래서다 — “200년 뒤의 이익이 오늘로 치면 얼마인가?”라는 질문의 답은, c를 어떻게 잡는지가 아니라 거의 전적으로 r을 어떻게 잡는지에서 갈린다.

이제 깨봐

명목 총액이 같아도 현재가치는 천차만별이다. 세 가지 스트림, 모두 합계가 $120,000 — (a) 10년 동안 매달 $1,000; (b) 10년째에 한꺼번에 $120,000; (c) 오늘 한꺼번에 $120,000. r=5%r = 5\%로 따져보면 — (c)의 PV는 $120,000, (a)는 $94,281, (b)는 $72,786이다. 같은 명목 총액에 가격은 세 가지. 돈의 시점이 액수만큼이나 중요하고, 할인율이 그 차이를 증폭시킨다. 로또 당첨자가 “$10M 당첨”이라고 들을 때, 그 숫자는 보통 20~30년에 걸쳐 분할 지급되는 미할인 합계다. 일시불 옵션은 언제나 그보다 작게 나온다. 로또가 속이는 게 아니라, 현재가치 계산이 정직한 것이다.

6

민감도 — r이 움직이면 PV는 얼마나 움직이는가

여기까지는 rr당신이 정한 수였다. 실제로는 움직이는 수다 — 중앙은행이 바꾸고, 시장이 다시 매기고, 당신의 관점이 바뀐다. 자연스럽게 따라오는 질문 — rr이 작은 양 Δr\Delta r만큼 움직이면 PV는 얼마나 움직이는가? 이건 미분 질문이다 — 정확히는 PV/r\partial PV / \partial r, rr의 함수로 본 PV의 기울기.

연속 경우 PV=0Tc(t)ertdtPV = \int_0^T c(t) · e^{-rt} dt를 적분 안에서 미분하면

PV/r  =  0Ttc(t)ertdt\partial PV / \partial r \; = \; -\int_0^T t · c(t) · e^{-rt} dt

PV와 같은 적분인데, 각 현금흐름 조각에 tt가 한 번 더 곱해진다. 더 먼 미래의 돈이 민감도에 더 크게 기여한다. 수정 듀레이션 D=(PV/r)/PVD = -(\partial PV / \partial r) / PV로 정의하면, 작은 금리 변동에 대한 가격 변동은 선형화로 예측된다 —

ΔPV    DPVΔr\Delta PV \;\approx\; -D · PV · \Delta r

10년 만기 무이표채는 D10D \approx 10 — 금리 1%p 상승이 가격 약 10% 하락을 예측한다. 2년 만기 채권은 D2D \approx 2 — 같은 변동이 약 2% 하락만 예측한다. 듀레이션은 정규화된, 금리에 대한 가격의 미분이고, 채권 시장이 매일 금리 위험을 가격으로 옮길 때 쓰는 도구다.

같은 모양이 옵션의 그릭스 (Greeks) 를 돌린다 — Δ\DeltaPrice/S\partial \text{Price} / \partial S, Γ\Gamma는 그 2계 도함수, Θ\ThetaPrice/t\partial \text{Price} / \partial t, V\mathcal{V}Price/σ\partial \text{Price} / \partial \sigma. 모든 금융 상품은 민감도의 가족을 갖는다 — 가격을 각 입력에 대해 편미분한 것. “금융 derivative”의 derivative와 미적분의 미분 (derivative) 이 글자 그대로 같은 단어인 건 깊은 이유가 있어서다 — 상품의 가격이 다른 어떤 것의 도함수이고, 그 위험은 자신의 도함수들로 포착된다.

적분은 시간에 걸쳐 돈을 더한다. 할인은 더하기 전에 미래의 돈을 작게 만든다. 미래 현금 c(t)c(t)에 할인계수 e(rt)e^(−rt)를 곱해 지금부터 만기까지 적분하면, 어떤 현금흐름 스트림이든 오늘 얼마짜리인지가 나온다. 채권 가격에서 모기지 분할 상환, 영구채에 이르기까지 — 같은 항등식에 c(t)만 갈아 끼울 뿐이다.

exercises · 손으로 풀기
11년 뒤 $100계산기 없이

할인율이 r=5%r = 5\%일 때, 정확히 1년 뒤에 받는 $100의 현재가치는 얼마인가? 이산 식 PV=C/(1+r)tPV = C / (1 + r)^t를 써서 풀어보자.

2r이 커질수록 먼 미래의 돈이 작아지는 이유

10년 뒤 받는 $100의 현재가치를 r=2%r = 2\%, r=5%r = 5\%, r=10%r = 10\%에서 각각 계산해 보자. 같은 미래 금액이 r이 커질수록 왜 이렇게 작아지는가?

3일정한 현금흐름 = 면적계산기 없이

친구가 10년 동안 $1,000/년을 연속으로 지급한다. 할인율은 r=5%r = 5\%. 적분을 정확히 풀지는 말고 — [0, 10] 구간에서 할인된 현금흐름 곡선 1000e(0.05t)1000 · e^(−0.05·t)를 스케치한 뒤, 그 곡선 아래 면적을 PV로 잡아보자. (위젯이 c=c = $1/년일 때 면적이 $7.87이라고 알려준다. 거기서 스케일만 키우면 된다.)

4사악한 문제 · 총액이 같으면 가치도 같을까?

두 제안, 명목 총액은 $10,000으로 동일하다 — (a) 10년 동안 매년 $1,000; (b) 10년째에 한꺼번에 $10,000. r=5%r = 5\%일 때 어느 쪽의 현재가치가 더 큰가? 계산하기 전에 먼저 짐작해 보자. 그다음 두 값을 모두 구하고 설명해 보자.

왜 교과서는 이렇게 안 가르치나

금융 강의는 현재가치를 외워야 할 식 목록 — 연금(annuity), 영구채(perpetuity), 채권 가격, 모기지 지급액 — 으로 들이민다. 학생이 정작 무언가를 적분해보기도 전에 말이다. 미적분 강의는 적분을 곡선 아래 면적으로 소개한다. 역시 학생이 무언가를 할인해보기도 전에. 그런데 둘은 같은 산수다. Lemma는 적분 0Tc(t)e(rt)dt∫_0^T c(t) e^(−rt) dt를 이산 합 옆에 나란히 놓아, 독자가 교과서 속 그 식들이 무엇이었는지 직접 보게 한다 — 결국은 하나의 항등식의 특수한 경우들이다. 연금 식은 c 일정, T 유한, 이산; 영구채 식은 c 일정, T → ∞, 연속; 채권 가격은 쿠폰 시점에서 계단 모양인 c, T 유한. 어느 하나도 자기만의 정리가 필요하지 않다 — 같은 항등식에 c(t)만 다르게 끼워 넣으면 그만이다.

용어집 · 이 페이지에서 쓰임 · 3
present value·현재가치
미래의 지급이 _지금_ 얼마의 가치인지. 1년 뒤 받는 1달러는 손에 있는 1달러보다 작다 — 지금 1달러를 이율 `r`로 굴리면 1년 뒤 `1 + r` (연속복리면 `e^r`)이 되었을 테니까. 그걸 거꾸로 — _할인_ — 하면 "1년 뒤 1달러와 같으려면 지금 얼마가 필요한가?"가 답이다. 표기: 1회 지급 `C`를 `t`년 뒤 받을 때 `PV = C / (1 + r)^t` (이산), 또는 연속복리에서 `PV = C · e^(−rt)`. 채권 쿠폰, 배당금, 급여, 보험 현금흐름 같은 *지급 스트림*에서는 현재가치가 각 미래 금액에 할인계수를 곱해 합 (또는 적분) 한다. 모든 금융 가격책정의 단위.
discount factor·할인계수
미래 금액을 현재 금액으로 바꾸는 곱셈자. 이율 `r`에서 `t`년 뒤 1회 지급에 대해 — 이산복리 계수는 `1 / (1 + r)^t`, 연속복리 계수는 `e^(−rt)`. 둘 다 `t`가 커질수록 작아지고 (먼 미래의 돈은 오늘 가치가 작다), `r`이 클수록 더 빨리 작아진다. 계수는 _단위 없음_ (0과 1 사이의 수) — 달러 금액에 곱하면 달러 금액이 나온다. 현재가치 계산 전체가 "미래 현금 × 할인계수, 시간에 걸쳐 합산."
cash flow·현금흐름
시간에 걸친 들어오는 돈 (양수) 과 나가는 돈 (음수) 의 일정. 이산 현금흐름은 지정된 날짜에 받는 금액의 목록 — `t_1`에 `C_1`, `t_2`에 `C_2`, …. 연속 현금흐름은 _비율_ — 단위 시간당 `c(t)` 달러, 작은 구간 `dt`에서 받는 금액은 `c(t) dt`. 채권 쿠폰은 이산, 초 단위로 본 급여는 본질적으로 연속, 월세는 경계선. 평가에 차이가 생긴다 — 지급 빈도가 높아지면 이산 합이 연속 적분이 된다. 어느 쪽이든 스트림의 오늘 가치는 그 스트림의 _현재가치_ — 각 항목을 시점 0으로 할인해 더한 값.