본문 바로가기
금융공학

옵션 #3. 옵션 프리미엄 구하기(FDM)

by hustler78 2022. 8. 18.
728x90
반응형

지난 글

2022.08.17 - [금융공학] - 옵션 #2. 옵션 프리미엄 구하기(Closed form)

 

옵션 #2. 옵션 프리미엄 구하기(Closed form)

이번 글은 2022.08.17 - [금융공학] - 옵션 #1. 옵션이란? 옵션의 유명한 관계식이 있다던데.. 옵션 #1. 옵션이란? 옵션의 유명한 관계식이 있다던데.. 예전 글 2022.07.28 - [금융공학] - 선도와 선물 #1 : 선

sine-qua-none.tistory.com

에서 콜옵션, 풋옵션의 가격을 수식(closed form)으로 도출하는 방법에 대해 얘기했습니다. 

옵션 같은 경우 다행히도 수학공식처럼 Black Scholes Formula가 나와서 망정이지만, 대부분의 파생상품이 이렇게 공식이 등장하는 것은 아닙니다. 따라서 다른 방법으로 해결하는 연습을 해 봐야 합니다.

 

이번 글에서 다룰 내용은 유한 차분법(FDM, Finite Difference Method)입니다. 

 

 

FDM 복습

예전글에서 FDM을 다룬 적이 있습니다. 상미분 방정식을 푸는 방법, Heat Equation으로 대변되는 편미분 방정식을 푸는 방법에 대해서 알아봤는데요. 파생상품의 가격결정 방정식은 편미분 방정식(Black Scholes Equation)의 형태로 주어지기 때문에  다음의 글들을 미리 읽어보시면 도움이 됩니다.

 

 

2022.07.30 - [수학의 재미/아름다운 이론] - FDM #5, Heat Equation의 풀이(1) 

 

FDM #5, Heat Equation의 풀이(1)

이번 글은 2022.07.25 - [수학의 재미/아름다운 이론] - 미분방정식을 연립방정식으로, FDM #4 (2계 상미분방정식) 미분방정식을 연립방정식으로, FDM #4 (2계 상미분방정식) 이 글은 2022.07.25 - [수학의 재

sine-qua-none.tistory.com

 

2022.08.01 - [수학의 재미/아름다운 이론] - FDM #6, Heat Equation의 풀이(2)

 

FDM #6, Heat Equation의 풀이(2)

이 글은 2022.07.30 - [수학의 재미/아름다운 이론] - FDM #5, Heat Equation의 풀이(1) FDM #5, Heat Equation의 풀이(1) 이번 글은 2022.07.25 - [수학의 재미/아름다운 이론] - 미분방정식을 연립방정식으로, F..

sine-qua-none.tistory.com

 

2022.08.01 - [수학의 재미/아름다운 이론] - FDM #7, Heat Equation의 풀이(3)

 

FDM #7, Heat Equation의 풀이(3)

이 글은 2022.08.01 - [수학의 재미/아름다운 이론] - FDM #6, Heat Equation의 풀이(2) FDM #6, Heat Equation의 풀이(2) 이 글은 2022.07.30 - [수학의 재미/아름다운 이론] - FDM #5, Heat Equation의 풀이(1)..

sine-qua-none.tistory.com

 

 

FDM 세팅

풋옵션과 콜옵션은 만기 페이오프만 다르고 푸는 방법이 똑같기 때문에 콜옵션에 먼저 주목해 보겠습니다.

만기 $T$, 행사가 $K$인 콜옵션의, 시점 $t$, 기초자산 $S$ 에서의 가격을 $f(t, S)$라 하면 $f$는 다음의 편미분 방정식

 

$$ f_t(t,S)  + (r-q) S f_{S}(t, S) + {\textstyle\frac12}\sigma^2 S^2 f_{SS}(t, S)  -rf(t,S) =0 \tag{1}$$ 

을 만족합니다(늘 그래왔듯이 $r$는 무위험 이자율, $q$는 연속 배당률, $\sigma$는 기초자산 변동성이죠)

만기조건은 

$$f(T,S) = \max(S-K,0)\tag{2}$$

입니다.

 

한 가지 걸리적거리는 점은 Heat Equation을 풀 때는 초기 조건이 있어야 합니다. 그런데 얘는 만기조건이 있죠. 따라서 만기조건을 초기조건이 되도록 바꿔줘야 합니다.

(이 풀이가 익숙해지면, 만기조건으로 놔둔 상태로도 FDM을 풀 수 있습니다.)

 

잔존만기를 변수로 세팅

 

식(1)의 만기조건인 식(2)을 초기 조건으로 바꾸는 방법은 간단합니다. 시점 변수 $t$를 잔존만기 변수 $\tau = T-t$로 바꿔주는 거죠. 이제

$$U(\tau , S) = f(t, S)$$

라 놓으면

 

$$ U_{\tau} (\tau, S) = - f_t(t,S)~~,~~ U_{S}(\tau ,S) = f_{S}(t,S)~~ ,~~ U_{SS} (\tau,S) = f_{SS}(t,S) $$

이므로

$$- U_\tau(\tau,S)  + (r-q) S U_{S}(\tau,S) +{\textstyle\frac12}\sigma^2 S^2  U_{SS} (\tau,S) -rU(\tau,S) =0 \tag{3}$$

가 되고 $U$는 초기 조건

$$U(0,S) = \max(S-K,0)\tag{4}$$

를 만족합니다. 

 

 

$\tau$ (잔존만기) 축 균등 분할

$\tau$를 $\tau_0 , \tau_1, \cdots , \tau_N$ 으로 균등 분할합니다. 즉,

$$ 0=\tau_0 <\tau_1 <\cdots < \tau_N=T$$

로 시간축을 나눕니다.  $k$는 간격으로서

$$k=\tau_{j+1} - \tau_j$$

입니다.

 

기초자산 $S$축 균등분할

우선 $S$축을 균등 분할하려면, $S$의 범위가 지정되어야겠죠. 충분히 큰 $S_{max}$를 잡아 $S$가 움직이는 범위를

$$ 0\leq S \leq S_{max}$$

라 합니다. 그리고 이것을  $ S_0, S_1, \cdots, S_J$ 로 균등 분할합니다. 즉,

$$ 0=S_0 < S_1 <\cdots <S_J = S_{max}$$ 입니다. $h$는 간격의 길이로서

$$ h = S_{j+1}-S_j$$ 라 정의합니다.

 

콜옵션 가격 격자판 생성

식(3)의 $U$의 시점 $\tau_n$, 기초자산 $S_j$에서의 값을 

$$u_j^n = U(\tau_n, S_j)$$

라 정의합니다.

이제, 함축적 방법(implicit method)이든 명시적 방법(explicit method)이든 써서 $u_j^n$의 관계식을 도출하면 됩니다.

 

초기 조건

식(4)에서 보듯이 초기 조건은 $U(0,S) = \max(S-K,0)$ 입니다. 격자판에서는

$$ u_j^0 = \max(S_j -K ,0)$$

입니다.

 

경계 조건

FDM을 풀기 위해서는 $S$에 대한 경계 조건이 있어야 합니다. 두 가지 방법이 있습니다 

경계 조건 수식 내용
Dirichlet Condition $$ U(\tau, 0) = 0 ,  $$
$$U(\tau, S_{max}) = S_{max} - Ke^{-r\tau} $$
$S=0$일 때는 콜옵션 가격 $0$, 
$S_=S_{max}$ 일 때 $S_T-K$의 현재가격
Neumann Condition $$ U_{SS} (\tau, 0) =0 ,~~ U_{SS}(\tau, S_{max}) =0 $$ $U$가 선형으로 근사되게 함

○ 개인적으로는 Dirichlet Condition은 문제 푸는 사람이 어느 정도 상품에 대한 감이 있을 때, 유추할 수 있다고 생각됩니다. 그래서 저는 주로 Neumann Condition을 씁니다. 폰 노이만을 좋아하기도 하고요.

 

 

FDM 방정식 세우기

FDM은 크게 두 가지 방법이 있습니다.

 

○ $t_n$ 시점에서  forward difference를 사용하기, Explicit method(명시적 방법)

○ $t_{n+1}$ 시점에서 backward difference 사용하기, Implicit method(함축적 방법)

 

명시적 방법이든 함축적 방법이든 기초자산 $S$에 대한 편미분 값들은 모두 central difference를 쓰기로 합니다. 즉 시점 $\tau_n$, 기초자산 $S_j$에서

$$ 
\begin{align}
U_S (\tau_n , S_j) &= \frac{U(\tau_n, S_j+h)-U(\tau_n, S_j-h)}{2h}\\ & = \frac{U(\tau_n , S_{j+1})-U(\tau_n, S_{j-1})}2 \\
& =\frac{u_{j+1}^n - u_{j-1}^n }{2h}
\end{align}
$$

 

$$ 
\begin{align}
U_{SS} (\tau_n , S_j) &= \frac{U(\tau_n, S_j+k)-2U(\tau_n, S_j) +U(\tau_n, S_j-k) }{h^2} \\&= \frac{U(\tau_n , S_{j+1})-2U(\tau_n, S_{j})+U(\tau_n , S_{j-1}))}{h^2} \\
& =\frac{u_{j+1}^n -2u_{j}^n+ u_{j-1}^n }{h^2}
\end{align}
$$

 

 명시적 방법

시점 $t_n$에서 기초자산 $S_j$일 때 $\tau$에 대한 forward difference는

$$ U_{\tau}(t_n , S_j) = \frac{U(\tau_n+h, S_j)-U(\tau_n, S_j)}{k} = \frac{u_j^{n+1}-u_j^{n}}k$$

입니다. 따라서 식(3)은

 

$$ - \frac{u_j^{n+1}-u_j^n }{k} + (r-q) S_j \frac{u_{j+1}^{n}-u_{j-1}^{n}}{2h} +\frac12 \sigma^2 S_j^2 \frac{u_{j+1}^{n}-2u_j^{n}+u_{j-1}^{n}}{h^2} -r u_j^{n} =0 $$

으로 바뀝니다.

 

이것을 정리하면,

 

$$\textstyle{\frac1k }u_j^{n+1} = \textstyle{\left(- \frac{(r-q)S_j}{2h} +\frac{\sigma^2 S_j^2}{2h^2}\right)} u_{j-1}^n +\textstyle{\left(\frac1k -\frac{\sigma^2S_j^2}{h^2}-r\right)}u_j^n
+ \textstyle{\left(\frac{(r-q)S_j}{2h}+\frac{\sigma^2 S_j^2}{2h^2}\right)}u_{j+1}^n $$

입니다. 또한 초기 조건에서  모든 $j$에 대해,

$$u_j^0 = \max(S_j -K, 0)$$

이고, 경계조건은 $U_{SS}(\tau_n, S_0)=0, U_{SS}(\tau_n, S_{max})=0$이므로 모든 $n$에 대해

$$ u_0^n - 2u_1^n+u_2^n=0~,~ u_{J-2}^n - 2u_{J-1}^n+u_{J}^n =0 $$를 만족합니다.

 

결과를 정리해서 써볼까요?

○ 모든 $j, n$에 대하여 다음의 점화식을 만족한다.
$$\textstyle{\frac1k }u_j^{n+1} = \textstyle{\left(- \frac{(r-q)S_j}{2h} +\frac{\sigma^2 S_j^2}{2h^2}\right)} u_{j-1}^n +\textstyle{\left(\frac1k -\frac{\sigma^2S_j^2}{h^2}-r\right)}u_j^n
+ \textstyle{\left(\frac{(r-q)S_j}{2h}+\frac{\sigma^2 S_j^2}{2h^2}\right)}u_{j+1}^n $$

초기조건    $u_j^0 = \max(S_j -K, 0)$


경계조건    $ u_0^n = 2u_1^n-u_2^n~,~ u_{J}^n = 2u_{J-1}^n-u_{J-2}^n  $

이것이 바로 명시적 방법에 따른  FDM의 풀이입니다.

이제 함축적 방법(implicit method)으로 넘어가보죠.

 

 

 

함축적 방법

$t_{n+1}$ 시점에서 backward difference을 사용합니다.  $U_\tau(t_{n+1}, S_j)$는 backward difference로

$$U_\tau(t_{n+1}, S_j) = \frac{U(t_{n+1}-k,S_j)-U(t_{n+1}, S_j)}{-k} = \frac{U(t_{n+1},S_j)-U(t_{n}, S_j)}{k} $$

이고, $U_S ,U_{SS}$는 명시적 방법에서 했던 차분법을 그대로 쓰면,

 

$$ - \frac{u_j^{n+1}-u_j^n }{k} + (r-q) S_j \frac{u_{j+1}^{n+1}-u_{j-1}^{n+1}}{2h} +\frac12 \sigma^2 S_j^2 \frac{u_{j+1}^{n+1}-2u_j^{n+1}+u_{j-1}^{n+1}}{h^2} -r u_j^{n+1} =0 $$

를 만족합니다. 정리하면

$$ \alpha_j u_{j-1}^{n+1} + \beta_j u_{j}^{n+1} + \gamma_j u_{j+1}^{n+1} = \frac{u_j^n}{k} \tag{5}$$
이고 계수들은
$$ \alpha_j = \textstyle{\frac{(r-q) S_j}{2h} - \frac{\sigma^2 S_j^2}{2h^2}}~,~ \beta_j = \textstyle{\frac1k +\frac{\sigma^2 S_j^2}{h^2}} +r~,~ \gamma_j =   - \textstyle{\frac{(r-q) S_j}{2h} - \frac{\sigma^2 S_j^2}{2h^2}} $$

입니다. 명시적 방법과 마찬가지로 초기 조건은

$$u_j^0 = \max( S_j -K ,0) $$

이고 경계조건은 모든 $n$에 대하여

$$ u_0^n - 2 u_1^n + u_2^n =0 ~~,~~ u_{J-2}^n - 2u_{J-1}^n +u_{J}^n =0 $$

입니다.

 

이제부터 기술 들어가는데요. 식 (5)에 $j=1$을 대입해 보면
$$
\begin{align}
\frac1k u_1^n &= \alpha_1 u_0^{n+1} +\beta_1 u_1^{n+1} + \gamma_1 u_2^{n+1}\\
       &= \alpha_1 (2u_1^{n+1}-u_2^{n+1}) +\beta_1 u_1^{n+1} + \gamma_1 u_2^{n+1} \\
       &=  (2\alpha_1 +\beta_1) u_1^{n+1} +(-\alpha_1 +\gamma_1) u_2^{n+1}\tag{6}
\end{align}
$$
이고, 식(5)에 $j=J-1$을 대입해 보면

$$
\begin{align}
\frac1k u_{J-1}^n &= \alpha_{J-1} u_{J-2}^{n+1} +\beta_{J-1} u_{J-1}^{n+1} + \gamma_{J-1} u_{J}^{n+1}\\
       &= \alpha_{J-1} u_{J-2}^{n+1} +\beta_{J-1} u_{J-1}^{n+1}  + \gamma_{J-1}(2u_{J-1}^{n+1} -u_{J-2}^{n+1} ) \\
       &=  (\alpha_{J-1}- \gamma_{J-1}) u_{J-2}^{n+1} +(\beta_{J-1}+2\gamma_{J-1}) u_{J-1}^{n+1}\tag{7}
\end{align}
$$

입니다.

 

식 (5)-(7)을 한데 묶어 행렬 방정식으로  써보겠습니다.

 

 

$$
\pmatrix
{
2\alpha_1+\beta_1 & -\alpha_1+\gamma_1 & 0              &\cdots & 0\\
\alpha_2               & \beta_2                    & \gamma_2 &\cdots & 0 \\
0   & \alpha_3                   & \beta_3     & \cdots  &0 \\
\vdots                  & \vdots                      & \vdots      & \ddots  & \vdots \\
0                         & \cdots                              &\alpha_{J-2} &\beta_{J-2} &\gamma_{J-2}\\
0                         & 0                              & \cdots       &\alpha_{J-1}-\gamma_{J-1} & \beta_{J-1}+2\gamma_{J-1}
}

\cdot \pmatrix
{
u_1^{n+1} \\
u_2^{n+1} \\
\vdots\\
u_{J-2}^{n+1}\\
u_{J-1}^{n+1}
}

=
\frac1k

\pmatrix
{
u_1^{n} \\
u_2^{n} \\
\vdots\\
u_{J-2}^{n}\\
u_{J-1}^{n}
}\tag{8}
$$

 

입니다. 이 행렬 방정식이 바로 FDM의 함축적 방법입니다.

 

 


다음 글에서 콜옵션의 가격을 FDM의 방법으로 직접 python code를 이용하여 산출해 보도록 하겠습니다.

728x90
반응형

댓글