본문 바로가기

일상생활

유한 차분(FDM) - 명시적 기법

서론

평소에 관심이 많았던,, 주문 매칭 시스템을 만들어 보고 싶었는데,,

도서관을 뒤적뒤적하는 도중 딱 제 목표에 맞는 책을 발견했습니다..!

 

그 책이 거래 관련 시스템 설계만 관련된 것은 아니고 다른 종합적인 개념도 다루더라구요,,🤔

거기서 옵션의 가격 결정..? 뭐 그런 걸 파이썬으로 구현하는 장이 있었는데,,

생각보다 수학적인 개념이 많이 사용돼서 한번 정리는 해보고 싶어졌습니다.

 

옵션 가격 결정 모델의 기초 - 이항트리 모델

결국 상품에 투자하는 것은 그 상품이 오를지↑ 내릴지↓ 이 2개의 방향에 대한 담론인 것인데,,

이것을 그래프화 해서 이항트리 모델로 설명할 수 있더라구요.

 

$q$: 위험 중립적 확률
$u$: 다음 시점 상승분
$d$: 다음 시점 하락분
$T$: 만기까지의 시간(년)
$r$: 무위험 이자율

$e^{rT}$: 다음 시점에 예상되는 연속 복리 무위험 이자율

 

책에서는 u랑 d를 무슨 확률로 말하던데,, 그냥 헷갈려서;;(확률 아닌 것 같음;;)

방정식에서 사용하는 용도를 분석해서 위처럼 표현했네요,,

 

다른 변수의 개입이 없을 때, 위 변수들의 조합은 아래 식을 만족한다.

 

$e^{rT} = qu + (1 - q)d$

식을 정리하면

$q ={\Large \frac{e^{rT} - d}{u - d}}$

 

그래서 별건 아니고 아래 같은 옵션의 상황에 위 식들이 활용될 수 있다는 것이죠.

Wikipedia: Binomial options pricing model

 

유한 차분 명시적 기법

결국 이해에 시간이 좀 들었던 게, 유한 차분의 경우인데,,

식을 천천히 손으로 정리하면서 따라가니까 이해가 되긴 하더라구요,, 근데 머리 속에 넣긴 좀 빡셀 듯;;

 

어떤 블로그에서 FDM의 쉬운 예제로 Hot Equation을 다루길래 저도 그걸로 처음에 시작했습니다. 

Hot Equation은 열이 이동하는 것을 설명하는 모델이래요👍🏻

 

$S(t)$: $f(S, t)$의 함수, 기초자산 $S$의 $t$ 시점에서의 가격

$r$: 무위험 이자율
$t$: 만기까지의 시간
$σ$: 기초 증권의 변동성

 

위 조건에서 함수 $f$는 다음 방정식을 만족합니다.

 

같은 방정식에 대해 2가지 표현법이 있더라구요, 둘 다 써보겠습니다. 편한 대로 보시면 될 것 같네요.

이 방정식을 '방정식a'라고 합시다.

방정식a

$rf = {\Large \frac{df}{dt}} + rS{\Large \frac{df}{dS}} + {\Large \frac{1}{2}}σ^{2}S^{2}{\Large \frac{d^{2}f}{dS^{2}}}$

$rf(t,S) = f_{t}(t,S) + rSf_{S}(t,S) + {\Large \frac{1}{2}}σ^{2}S^{2}f_{SS}(t,S)$

 

이제 두 변수 $t,S$를 기반으로 격자를 그려야 하는데, 각 변수의 범위는 아래와 같습니다.

$0 \leq t_{i} \leq T$
$k = dt$

$0 \leq S_{j} \leq S_{max}$ (단, $S_{max}$는 만기 시간 $T$내에 도달할 수 없는 적당히 큰 수)
$h = dS$

 

위 방정식을 정리하기 위해, 편미분 방정식 근사법을 적용해야 하는데, 그 기법에는 4가지가 있습니다.

(대1 때, 경영수학 과목에서 배웠던 느낌;;)

 

전방 차분 (A)
${\Large \frac{df}{dt}} = f_{t}(t,S) = {\Large \frac{f_{i+1, j} - f_{i, j}}{dt}}$

역방향 차분 (B)
${\Large \frac{df}{dS}} = f_{S}(t,S) = {\Large \frac{f_{i, j} - f_{i, j-1}}{dS}}$

중앙 차분 (C)
${\Large \frac{df}{dS}} = f_{S}(t,S) = {\Large \frac{f_{i, j+1} - f_{i, j-1}}{2dS}}$

2차 미분 (D)
${\Large \frac{d^{2}f}{dS^{2}}} = f_{SS}(t,S) = {\Large \frac{f_{i, j+1} - 2f_{i, j} + f_{i, j-1}}{dS^{2}}}$

 

 

여기서 옵션 가격 방정식(방정식a)의 각 차분 함수들에 위 기법을 적용하여 다르게 표현할 수 있습니다.

 

$rf = {\Large \frac{df}{dt}}\cdots(1) + rS{\Large \frac{df}{dS}}\cdots(2)+ {\Large \frac{1}{2}}σ^{2}S^{2}{\Large \frac{d^{2}f}{dS^{2}}} \cdots(3)$

 

$(1)$에 전방 차분(A)을

$(2)$에 중앙 차분(C)을

$(3)$에 2차 미분(D)을 각각 대입하면 $f_{i, j}$ 형태의 변수 4개로 방정식이 정리됩니다. 

 

$f_{i + 1, j} = af_{i, j + 1} + bf_{i, j} + cf_{i, j - 1}$ (단, a, b, c는 임의의 변수)

 

즉, $i$ 시점에 있는 3개 점($f_{i, j + 1}, f_{i, j}, f_{i, j - 1}$)이 $i+1$시점에 있는 점 $f_{i + 1, j}$을 결정하게 되는 것이죠.

.

.

.

.

.

책을 보면 이걸 파이썬 코드로 뚝닥뚝닥 만들어 놨던데,,

솔직히 코드 읽으면 이해는 되는데, 프로그래밍 언어로 이런 수학적 구현을 한 게 참 어색하네요,, 아직은;;

예전에 학부생 때 매트랩 쓰던 악몽이 떠오르는;;

이런 거 보면, 코딩 테스트에서 공식 주고 구현해봐라 해도 좋을 듯? 🤷🏻‍♀️🤷🏻‍♂️

 

공부 끝

이렇게 FDM의 형태로 옵션 가격 결정 모델의 예제를 살펴보았습니다,,

솔직히 다 괜찮았는데, 책에 오류가 너무 많아서;;

책을 맹신할 필요는 없죠 ㅎㅎ

그냥 대충 이런 개념도 있구나~ 하고 넘어가면 될 것 같네요,,

나중에 회사에서 관련된 일을 할 때나 제대로 보죠 뭐,,