Quant/Equity

Finite difference method(1)

submartingale 2025. 5. 22. 01:29

유한차분법은 수치적으로 미분방정식을 푸는 기법입니다.. 이번 글에서는 주어진 미분방정식이 있다면 그것을 이산화 한 뒤, 행렬방정식을 푸는 방법 중 가장 간단한 Explict method에 대해 살펴보겠습니다..

 

미분방정식은 변수의 변화를 기술하는 방식입니다. 그러나 미분방정식은 많은 경우에 닫힌해가 존재하지 않아 이산화 시킨 뒤 수치적으로 푸는 경우가 대부분입니다. 우선 미분방정식을 이산화 하기 위해서는 우리가 다룰 공간 또한 이산화해야 합니다. 

 

우선 저희는 파생상품 평가를 위한 기초자산이 정의되는 공간을 나타내야 합니다. 이때 하방은 0, 그리고 만기 M을 설정하는 것은 자연스럽습니다. 반면 현실세계에서는 기초자산의 상방에 대해서는 제한이 없습니다만, 저희는 이를 유한한 공간에서 이산화해야하므로 임의의 N을 설정하여 상방을 정해야 합니다.

마지막으로, 시간축과 기초자산의 유한한 차이인 $\Delta_t, \Delta_S$를 설정한다면 파생상품 평가를 위한 이산화된 공간 생성이 끝나게 됩니다.

 

일반적으로 BS PDE에서는 콜 옵션과 같이 파생상품의 정의에 의해 만기조건이 정해집니다.  물론 조기상환이나 경로의존하는 특성이 있는 경우 조금 복잡해지지만 이러한 경우 모두 PDE를 이산화하여 해결할 수 있으므로 우선 만기시점 기초자산의 상태에 의해서만 결정되는 파생상품에 대해서만 살펴보겠습니다. 이러한 상품들은 유한차분공간에서 기초자산이 만기시점에 도달하였을 때 파생상품의 가치를 구할 수 있으므로 파생상품의 만기시점 가치, 즉 오른쪽 벽의 값들이 기초자산의 상태가 정해진다면 바로 구해진다는 것을 의미합니다. 

이를 이용한다면 우리는 임의의 시점에 임의의 상태에서 BS 모델에서의 파생상품의 가치를 구할 수 있게 됩니다. 그럼 그 방법을 살펴보겠습니다.

 

BS PDE는 다음과 같이 주어집니다..

$$V_t + \frac{1}{2} \sigma^2 S^2 V_{SS} + (r - q) S V_S - r V = 0$$

이 때 각각의 편미분 값들을 이산화 하면 다음과 같이 식을 나타낼 수 있습니다.

$$\frac{v_{i,j} - v_{i,j-1}}{\Delta t}  + \frac{1}{2} \sigma^2 S_i^2 \cdot \frac{v_{i+1,j} - 2v_{i,j} + v_{i-1,j}}{\Delta S^2}  + (r - q) S_i \cdot \frac{v_{i+1,j} - v_{i-1,j}}{2 \Delta S}  - r v_{i,j} = 0$$

 

이때 $V_t$에 대해 backward difference를 사용한 것에 주목합시다.

 

그럼 이 식을 다음과 같이 정리 할 수 있습니다.

$$a_i = \frac{\Delta_t \sigma^2 S_i^2}{2 \Delta_S^2} \quad \text{and} \quad b_i = \frac{\Delta_t (r - q) S_i}{2 \Delta_S}$$

$$d_i = a_i - b_i, \quad m_i = -2a_i - \Delta_t r, \quad u_i = a_i + b_i$$

$$v_{i,j} - v_{i,j-1} + d_i v_{i-1,j} + m_i v_{i,j} + u_i v_{i+1,j} = 0$$

 

이 식은 $i,j-1, i,j, i+1,j, i-1,j$네 개의 알려지지 않은 $v$값들과 $i$시점의 알려진 계수값들 $d,m,u$의 결합이 만족해야 하는 식을 나타냅니다. 이 때 이 식은 모든 상태 $i,j$에 대해 만족해야 하므로 우리는 하나의 시점 $j,j-1$ 관계에 대해 $N+1$개의 알려지지 않은 $v$값들에 대해  $N-1$개의 식을 얻을 수 있습니다.

 

이제 하나의 시점에 대해 $v_0, v_N$이 임의로 주어진다고 가정하겠습니다. 그렇다면 $N-1$개의 값과 $N-1$개의 식이 주어진것이므로 이를 행렬로 나타내면 다음과 같다.

 

$$\mathbf{v}_{1:N-1, j} - \mathbf{v}_{1:N-1, j-1} + P \mathbf{v}_{0:N, j} = 0$$

이 때 $V_0$와 $V_N$에 대한 경계조건이 필요합니다. 왜냐하면 이 값들을 행렬방정식으로 계산하기 위해서는 $V_{-1}$과 $V_{N+1}$의 값이 필요한데 우리의 유한차분공간에 그러한 값은 없기 때문입니다.  따라서 이 값을 미리 정하는데 이것을 경계조건이라고 한다.

 

일반적으로 경계조건은 Neumann 경계조건과 Dirichlet 경계조건이 사용됩니다. Neumann 경계조건은 함수의 1차근사를 사용하는 것으로, 선형 외삽법의 개념과 유사합니다. 콜옵션의 경우 기초자산이 매우 높게 상승하면 옵션의 payoff는 forward와 같이 기초자산에 대한 선형함수가 되는데 이러한 맥락을 반영하는 것이라고 이해할 수 있습니다. 반면 Dirichlet경계조건은 임의로 값을 집어넣는 것인데, 예를 들어 콜옵션의 payoff를 바로 집어넣는 것이 될 수 있습니다.

 

 

이렇게 해서 만든 행렬 P는 (N-1 X N+1) 의 형태를 가지게 됩니다. 이제 가운데 부분과 양 끝 부분을 각각 A,B로 지정하겠습니다. 그럼 주어진 행렬방정식을 다음과 같이 나타낼 수 있습니다.

$$P v_{\Omega}^j = A v_{\Omega}^j + B v_{\partial \Omega}^j$$

$$v_{\Omega}^j - v_{\Omega}^{j-1} + A v_{\Omega}^j + B v_{\partial \Omega}^j = 0$$

 

이때 Explicit Methods란 이전시점의 값을 다음시점의 값들로 바로 계산할 수 있는 다음과 같은 형태를 말합니다.

 

$$v_{\Omega}^{j-1} = (I + A) v_{\Omega}^j + B v_{\partial \Omega}^j$$

 

따라서 Explicit Methods는 별도로 행렬방정식을 '풀'필요 없이 단순 연산을 반복적으로 한다면 현재시점 파생상품의 가치를 얻을 수 있습니다.

 

https://github.com/submartingale-quant/Basics/blob/main/exfdm.ipynb

 

Basics/exfdm.ipynb at main · submartingale-quant/Basics

Basic instrument to check consistencies. Contribute to submartingale-quant/Basics development by creating an account on GitHub.

github.com

 

 

그러나 Explicit Methods는 수치적 안정성이 매우 낮다는 점에서 선호되지 않습니다. 다음 글에서는 좀더 일반화된 형태의 FDM에 대해 살펴보겠습니다.