본문 바로가기
수학의 재미/아름다운 이론

테일러 전개 : 파생상품 헤지의 준비 이론

by hustler78 2023. 4. 25.
728x90
반응형

 

이 글은 예전글인 2022.05.19 - [수학의 재미/아름다운 이론] - 테일러 전개 #1

 

테일러 전개 #1

무한번 미분가능한 함수 $f(x):\mathbb{R} \rightarrow \mathbb{R}$ 이 있다고 합시다. 테일러전개(Taylor Expansion)의 요지는 무한번 미분가능한 함수를 우리가 아주 잘 알고 있는 다항식으로 표현하고자 하는

sine-qua-none.tistory.com

에서 이어집니다.

 

미분이 무한번 가능한 부드러운 곡선의 형태를 띤 함수는 (무한) 다항식의 합으로 쓸 수 있다는 이론이 바로 테일러 전개입니다. 잠깐 복습하자면,  고정된 $x_0$에 대해

 

$$
\begin{align}
f(x) =f(x_0) +& f'(x_0)(x-x_0) +\frac1{2!} f''(x_0) (x-x_0)^2 \\
&+\frac1{3!}f^{(3)}(x_0)(x-x_0)^3 +\cdots + \frac1{n!} f^{(n)}(x_0) (x-x_0)^n +\cdots\tag{1}
\end{align}
$$

 

와 같이 무한 다항식의 합으로 쓸 수 있다는 것입니다. 좌변은 대상이 되는 함수이고, 우변은 무한합이기에, 우변의 무한합이 수렴하는지 여부를 잘 따져보긴 해야 합니다. 테일러 전개의 이론에 따르면 어떤 적절한 양수 $R$이 있어서,

$$|x-x_0|<R$$

을 만족하는 모든 $x$에 대해서는 우변이 수렴하고, 그 수렴값은 좌변인 $f(x)$가 됩니다. 이때, $R$을 수렴반경이라고 하지요.

 

식(1)은, $x-x_0=\Delta x$라 놓으면 다시 아래와 같이 쓸 수 있습니다.

$$
\begin{align}
f(x_0+\Delta x) =f(x_0) +& f'(x_0)\Delta x +\frac1{2!} f''(x_0) (\Delta x)^2 \\
&+\frac1{3!}f^{(3)}(x_0)(\Delta x)^3 +\cdots + \frac1{n!} f^{(n)}(x_0) (\Delta x)^n +\cdots \tag{2}
\end{align}
$$

 

식(2)의 유용한 점은 바로 $f$값의 근삿값을 찾을 수 있다는 얘기입니다.

 

구분 근사식
0차 근사(상수 근사) $ f(x_0+\Delta x) \approx f(x_0)$
1차 근사 $ f(x_0+\Delta x) \approx f(x_0) + f'(x_0) \Delta x$
2차 근사 $ f(x_0+\Delta x) \approx f(x_0) + f'(x_0) \Delta x+\frac{1}{2!} f''(x_0)(\Delta x)^2$
3차 근사 $ f(x_0+\Delta x) \approx f(x_0) + f'(x_0) \Delta x+\frac{1}{2!} f''(x_0)(\Delta x)^2+\frac{1}{3!} f^{(3)}(x_0)(\Delta x)^3$

물론 $\Delta x$가 수렴반경보다 작을 땡의 이야기입니다. 근사식의 항의 개수가 많으면 많을수록 더욱더 근삿값의 오차가 줄어들게 되죠.

 

위 근사식에 숨어 있는 철학은 이렇습니다.

특정한 값 $x_0$에서의 함숫값 $f(x_0)$은 이미 알고 있다. 이때 $x_0$에서 조금 벗어난 값. 즉, $x_0 +\Delta x$에서의 함숫값을 추측하고 싶다. 이 때

$x_0$에서의 1계, 2계, 고계 도함수 값과 $\Delta x$만 알면, $f(x_0+\Delta x)$를 추측할 수 있다!!

 

함수 $f$를 알고 있으면 거기다 $x_0+\Delta x$를 넣어서 정확한 값을 얻으면 되지, 왜 추축을 하냐고 반문하실 수도 있겠습니다. 하지만, $\Delta x$가 어떻게 결정될지 아무도 모르는 상황이며, 미래에 결정되는 값이라면(마치 주식의 내일 등락률 예상처럼!) $\Delta x$를 미지수로 둔 채 위의 근사식을 기억해 두었다가 함수값을 예측해 볼 수 있는 것입니다.

 

 

싸이가 스케줄 빵꾸냈어?!! 이수지 얼른 불러서 땜빵합시다! (출처: 이수지 instagram)

 

예제 : $f(x) =e^x$ 

 

지수함수 $f(x)=e^x$를 예로 들어보겠습니다. $x_0=0$ 에서의 테일러 전개는

$$f(\Delta x) =f(0)+f'(0) (\Delta x)+ \frac12 f''(0) (\Delta x)^2 +\frac{1}{3!} f'''(0)(\Delta x)^3 +\cdots $$

입니다. 몇 번 미분을 해도 $f^{(n)}(x)=e^x$ 이므로 

$$ f(\Delta x) = 1+ (\Delta x)+\frac12 (\Delta x)^2 + \frac16 (\Delta x)^3 +\cdots$$

가 되죠.

따라서 $x_0=0$에서 $\Delta x = 1$만큼 떨어져 있는 점에서의 함숫값의 3차 근삿값은

$$ e^1 = 1+1+\frac12 1^2 +\frac16 1^3 = 2.667 $$

이런 식으로 근사 될 거고 이 값은 참값인 $e^1 = 2.718$에 근사합니다. $Delta x=\textstyle{\frac12}$라면

$$ e^{0.5} = 1+1+\frac12 0.5^2 + \frac1 0.5^3+\cdots$$ 처럼 근사식을 통해 값을 유추해 볼 수 있는 것이죠.

 

 

이제 Python Code를 통해 지수함수의 근삿값을 알아보도록 하겠습니다.

 

 

import numpy as np
import matplotlib.pyplot as plt

f = lambda x: np.exp(x)                          # exponential function
f_approx1 = lambda x: 1 + x                      # Taylor explansion degree = 1
f_approx2 = lambda x: f_approx1(x) + x ** 2 / 2  # Taylor degree 2
f_approx3 = lambda x: f_approx2(x) + x ** 3 / 6  # Taylor degree 3

xvec = np.linspace(-2, 2, 101)

# original function shape #
fig, ax = plt.subplots(2, 2, figsize=(20, 20))
ax[0, 0].plot(xvec, f(xvec), linewidth=2, color='black', label='$f(x)=e^x$')
ax[0, 0].legend()

# 1차 근사한 경우
# fill_between 으로 오차범위를 색칠해줌
ax[0, 1].plot(xvec, f_approx1(xvec), label='1st approx', color='blue')
ax[0, 1].plot(xvec, f(xvec), linewidth=2, color='black', label='$f(x)=e^x$')
ax[0, 1].fill_between(xvec, f(xvec), f_approx1(xvec), color='lightgray', alpha=0.8, label='error area')
ax[0, 1].legend()

# 2차 근사한 경우
ax[1, 0].plot(xvec, f_approx2(xvec), label='2nd approx', color='green')
ax[1, 0].plot(xvec, f(xvec), linewidth=2, color='black', label='$f(x)=e^x$')
ax[1, 0].fill_between(xvec, f(xvec), f_approx2(xvec), color='lightgray', alpha=0.8, label='error area')
ax[1, 0].legend()

# 3차 근사한 경우
ax[1, 1].plot(xvec, f_approx3(xvec), label='3rd approx', color='red')
ax[1, 1].plot(xvec, f(xvec), linewidth=2, color='black', label='$f(x)=e^x$')
ax[1, 1].fill_between(xvec, f(xvec), f_approx3(xvec), color='lightgray', alpha=0.8, label='error area')
ax[1, 1].legend()

plt.show()

 

결과는 아래와 같습니다.

 

1차 , 2차, 3차 근사를 지나오면서 근사식과 참값에 대산 오차는 점점 줄어듭니다.

 

3차까지 하니 오차가 많이 걷어진 모습입니다.

 

갑자기 금융공학 이론 블로그에서 테일러 전개가 등장한 까닭은 무엇일까요?

 

 

이러한 관찰은 파생상품의 가격 변화를 좇는 기초자산의 수량을 계산할 때 절대적으로 필요한 개념입니다. 

파생상품의 가격변화를 추종하는 기초자산의 수량을 델타라고 하는데, 이 델타를 이용하여 파생상품이 위험을 없앨 수 있습니다(헤지운용, hedging)

 

 

 

728x90
반응형

댓글