1장. 파이썬과 재무 기초 지식

 

Remarks

이 글은 파이썬으로 배우는 포트폴리오을 정리한 자료입니다.


1.2 현금흐름, 이자율과 시간 가치

  1. 현재의 돈이 미래의 돈보다 가치가 크다는 개념을 우리는 실생활을 통해 이미 알고 있다.
    → 성과급을 내년 말에 지급한다?
  2. 현금흐름의 현재가치 또는 미래가치를 가늠해야 금융 또는 재무에 관한 의사 판단을 할 수 있다.
  3. 돈은 시간 가치를 가지고, 시간 가치를 만드는 동력은 이자율(이율) 또는 할인율이다.

1.2.1 미래가치의 계산

1.2.1.1 단리(simple interest)

단리(simple interest)
원금을 대상으로 이율을 곱해 미래가치를 계산
$미래가치 = 원금 \times (1 + 이율 \times 기간)$

1
2
3
4
5
6
7
8
def fv_simple(pv, nper, rate):
    return pv * (1 + nper*rate)

pv   = 1000  # 현재가치: 1000만원
nper = 1     # 기간: 1년
rate = 0.05  # 이율: 5%/년

fv_simple(pv, nper, rate)
1050.0

1.2.1.2 복리(compound interest)

복리(compound interest)
일정 기간마다 이자를 원금에 합쳐 그 합계 금액에 대한 이자를 다시 계산
$미래가치 = 원금 \times (1 + 이율)^{기간}$

Caution!
이율과 기간의 단위는 동일해야 한다.
e.g. 월 단위 복리: 연이율 5%월이율 5/12%

1
2
3
4
5
6
7
8
def fv_compound(pv, nper, rate):
    return pv * (1 + rate)**nper

pv   = 1000     # 현재가치: 1000만원
nper = 12       # 기간: 12개월
rate = 0.05/12  # 이율: (5/12)%/월

fv_compound(pv, nper, rate)
1051.161897881733

아래와 같이 numpy-financial package를 이용하여 계산할 수 있다.

1
2
3
4
import numpy_financial as npf

# the negative sign represents cash flow out (i.e. money not available today)
npf.fv(rate, nper, 0, -pv)
1051.161897881733

1.2.1.3 연속복리(continuous compounding)

연속복리(continuous compounding)
복리 계산에서 복리 횟수를 무한정 늘려놓은 것
$미래가치 = 원금 \times e^{이율}$

1.3 NPV와 IRR

NPV와 IRR을 이용하여 현금흐름에 기반한 투자 결정의 근거를 마련할 수 있다.

1.3.1 NPV(Net Present Value, 순현재가치)

NPV(Net Present Value, 순현재가치)
미래에 발생할 일련의 현금흐름을 현재가치로 계산한 것
현재의 액면가를 나타내는 현금흐름의 순가치
$NPV = \sum_i \frac{C}{(1+rate)^i}$
- $C$: 현금흐름
- $rate$: 할인율
- $i$: 기간

  • NPV가 0 이상이면 수익성이 있다고 판단해 투자안을 채택할 수 있다.(사업타당성)
1
2
3
4
5
6
7
8
9
cashflows = [-70000, 12000, 15000, 18000, 21000, 26000]  # 최초 투자금액 (현금유출)
rate      = 0.015   # 할인율: 0.015%
npv       = 0

for i, c in enumerate(cashflows):
    pv = c / (1+rate)**i
    npv += pv
    print(f"{i}년 뒤, {c}원의 현재가치: {pv:.0f}")
npv
0년 뒤, -70000원의 현재가치: -70000
1년 뒤, 12000원의 현재가치: 11823
2년 뒤, 15000원의 현재가치: 14560
3년 뒤, 18000원의 현재가치: 17214
4년 뒤, 21000원의 현재가치: 19786
5년 뒤, 26000원의 현재가치: 24135

17516.929512135568
1
2
3
4
5
import numpy_financial as npf

cashflows = [-70000, 12000, 15000, 18000, 21000, 26000]  # 최초 투자금액 (현금유출)
rate      = 0.015   # 할인율: 0.015%
npf.npv(rate, cashflows)
17516.929512135568

1.3.2 IRR

IRR(Internal Rate of Return, 내부수익률)
NPV가 0인 경우의 할인율
현금 유입과 유출의 현재가치를 일치시키면 NPV가 0이 되는데, 이때 할인율이 IRR

  • 할인율이 IRR보다 작은 경우, NPV > 0 으로 수익성이 있다고 판단할 수 있다.
    할인율이 IRR보다 큰 경우, NPV < 0 으로 수익성이 없다고 판단할 수 있다.
  • IRR은 수익률을 정기적으로 유효하게 측정할 수 없고, 존속 기간 동안 실제로 발생하는 현금흐름을 근거로 하는 대체투자(부동산, 인프라자산에 대한 투자)에서 많이 이용한다.
  • 단순한 식으로 IRR을 구하기 어렵기 때문에, Newton-Raphson method와 같은 수치적인 방법론을 이용하여 IRR을 계산한다.
1
2
3
import numpy_financial as npf

npf.irr(cashflows)
0.08663094803653149

1.4 수익률 대 수익률

1.4.2 기간 수익률의 평균, 산술평균과 기하평균

산술평균수익률과 기하평균수익률
자산 변동: $10 → 8 → 10 → 8$
$r_1 = 8/10 - 1 = -0.2$
$r_2 = 10/8 - 1 = 0.25$
$r_3 = 8/10 - 1 = -0.2$
- 산술평균수익률 = $\frac{1}{n} \sum_i r_i = -5.0%$
- 기하평균수익률 = $\prod_i(1+r_i)^{\frac{1}{n}} - 1 = -7.2%$

1.4.2.1 기하평균

  • 물가상승률, 매출증가율, 인구성장률, 투자이율 등 성장률의 평균을 산출할 때 사용
    e.g. CAGR(Compound Annual Growth Rate, 연평균 성장률)

1.4.3 지배원리

평균-분산 기준(Mean-variance criterion), 지배원리(dominance principle)
포트폴리오를 평가하기 위해 기대수익률(수익률의 기댓값, yield)위험(수익률의 표준편차, risk)을 사용하여,
두 포트폴리오의 기대수익률이 동일하다면 표준편차가 작은 포트폴리오를 선택하거나, 표준편차가 동일하다면 기대수익률이 큰 포트폴리오를 선택