연재 중 Quant 02화

Stock Market Basics (2)

Time value of money implementation

by 송동훈 Hoon Song

지난번에 돈의 시간 가치에 대한 이론을 정리했었는데, 오늘은 이것을 실제로 Python으로 구현하는 방법에 대해 생각해봤다. 이론은 알겠는데 실제로 어떻게 계산하는지 모르면 의미가 없지 않을까?


금융을 공부하면서 내가 가장 크게 깨달은 점은 복잡해 보이는 개념들도 결국 간단한 수학적 모델로 표현할 수 있다는 것이다. 그리고 이런 모델들은 몇 줄의 코드로도 충분히 구현 가능하다.


우선 돈의 시간 가치를 구현하기 위해서는 두 가지 모델을 만들어야 한다.


1. 이산 모델(Discrete Model) - 특정 시점에서의 가치를 계산

2. 연속 모델(Continuous Model) - 시간의 흐름에 따른 가치 변화를 계산


Python으로 구현할 때는 먼저 필요한 라이브러리를 불러와야 한다. 연속 모델을 위해 math 라이브러리에서 exp 함수를 import 하는 것부터 시작한다.

from math import exp


이산 모델의 미래 가치는 정말 간단하게 구현할 수 있다. 세 가지 정보만 있으면 된다.

현재 금액(X)

이자율(r)

기간(n)

def future_discrete_value(X, r, n):
return X * (1 + r) ** n


반대로 미래의 현금 흐름의 현재 가치는 이렇게 계산한다.

def present_discrete_value(X, r, n):
return X * (1 + r) ** (-n)


여기서 (1 + r) ** (-n)1 / ((1 + r) ** n)과 동일하다. Python에서는 이런 식으로 표현하는 것이 더 간결하고 직관적이다.


연속 모델의 경우는 지수함수를 사용한다. 미래 가치는 다음과 같이 계산할 수 있다.

def future_continuous_value(X, r, t):
return X * exp(r * t)


그리고 현재 가치는 지수 함수의 부호를 바꿔서 계산한다.

def present_continuous_value(X, r, t):
return X * exp(-r * t)


이러한 함수들을 실제로 사용해보자. 예를 들어 $100을 5%의 이자율로 5년 동안 투자했을 때의 미래 가치를 계산해보면:

money = 100 # 투자금액 ($)
r = 0.05 # 이자율 (5%)
n = 5 # 기간 (5년)

future_value_discrete = future_discrete_value(money, r, n)
future_value_continuous = future_continuous_value(money, r, n)

print(f"이산 모델 미래 가치: ${future_value_discrete:.2f}")
print(f"연속 모델 미래 가치: ${future_value_continuous:.2f}")


실행 결과를 보면 이산 모델에서는 약 $127.63, 연속 모델에서는 약 $128.40가 나온다.


나는 이런 코드를 처음 실행했을 때 이론과 실제의 차이를 느꼈다. 연속 모델이 이산 모델보다 미래 가치가 더 높게 나오는 건 이자가 계속해서 복리로 쌓이기 때문이다. 금융 이론에서는 당연한 얘기지만, 실제 숫자로 보니 더 와닿았다.


반대로 미래의 $100의 현재 가치를 계산해보면:

present_value_discrete = present_discrete_value(money, r, n) present_value_continuous = present_continuous_value(money, r, n)

print(f"이산 모델 현재 가치: ${present_value_discrete:.2f}")
print(f"연속 모델 현재 가치: ${present_value_continuous:.2f}")


이산 모델에서는 약 $78.35, 연속 모델에서는 약 $77.88이 나온다.


이런 계산들이 실제 금융 세계에서는 엄청나게 중요하다. 내가 투자를 할 때, 대출을 받을 때, 심지어 연금을 계산할 때도 이런 개념이 적용된다. 복잡한 금융 상품들도 결국은 이 간단한 수식들의 변형에 불과하다.


사실 금융 공부를 시작했을 때는 복잡한 수식과 개념들에 압도되었는데, 직접 코드로 구현해보니 훨씬 명확하게 이해가 되었다. 이론적인 개념보다 실제 코드로 작성하고 결과를 확인하는 과정에서 더 많은 인사이트를 얻을 수 있었다.


투자나 재테크를 시작하는 분들에게도 이런 기본 개념을 코드로 직접 구현해보라고 권하고 싶다. 자신만의 투자 모델을 만들어보는 것이 금융을 더 깊이 이해하는 지름길이 될 수 있다. 결국 금융도 수학과 마찬가지로 논리의 산물이니까.

keyword
수요일 연재
이전 01화Stock Market Basics (1)