본문 바로가기
경제학/금융시계열분석

Hetson's model

by zzyunzz 2021. 12. 5.

0. Stochastic Differential Equations(SDE)

$$ dS_{t} = g_{1}(S_{t}, t)dt +g_{2}(S_{t},t)dz_{t} $$
=> 시간의 변화($dt$)와 어떤 확률과정의 변화($dz_{t}$; Wiener Process)의 관계식으로 어떤 변수의 변화를 표현한 관계식.
이를 수치해석적 방법으로 도출하기 위한 이산변수 관계식으로 변형하면
$$ S_{t+\Delta t} -S_{t} = g_{1}(S_{t}, t)\Delta t +g_{2}(S_{t},t)(z_{t+\Delta t} - z_{t}) $$

📚 이론적 배경이나 도출에 대해선 자세히 알려주지 않으셔서 뇌피셜로 이해한 바를 적어보자면,, 
연립 미분 방정식 체계를 풀어나가는 것. 
그런데 이전까지 배웠던 데이터들은 non-stochastic variables이었고, 
여기서 차이가 발생하는건 데이터가 stochastic 해졌다는 점 ?

* 확률 미적분학 (Ito Calculus)를 하려면 미적분학은 물론이고 해석학 베이스가 되어있어야 하는데 나는 해석학을 수강하지 않았으므로,,, 더 이상의 깊이있는 접근은 불가능한 듯함. 그래서 배운 모델을 수식으로 작성해서 수치해석적으로 옵션 가격을 도출하는 방법에 대해 중점을 두기로 함.


1. Hetson's model : a kind of SDE

$$ dS_{t} = (r-q) S_{t} dt+\sqrt{v_{t}} S_{t} dz_{t}^{(1)} $$
$$ dv_{t} = \kappa (\theta - v_{t}) dt + \sigma \sqrt{v_{t}}dz_{t}^{(2)} $$
이 때, $ S_{t} : \mbox{stock price, }v_{t} : \mbox{variance, } \\ \theta : \mbox{long-run volatility, } \\z_{t}^{.} : \mbox{Wiener process which have correlation } \rho $
$ v_{0} $ : current variance, reverts vack to this mean value with speed $ \kappa\ $
$ \sigma$ : volatility, For $\sigma \rightarrow 0,$ the Hetson dynamics approach those of Black-Scholes.

📚 Hetson's model은 Stochastic Volatility Model의 일종. 
discrete time version에 대한 변동성 분석 모형인 GARCH 모형을 
continuous time으로 확장한 것으로 보면 될 듯함. 
블랙숄즈모형은 변동성을 상수로 보았다는 한계점이 있는데, 이걸 확장시킨 모형이 Hetson model. 
어떻게 보면 Hetson 모형은 단기 변동성을 나타내는 데 더욱 적합하고, 
장기에 블랙숄즈 모형으로 수렴하는 것으로 생각해도 무방할 듯 하다.

$ z_{t}^{(.)} : $ Wiener process which have correlation $\rho$
* Wiener process ?

- $z_{0}$ is zero.
- the expected change of z is zero : $E(z_{t_{2}}-z_{t_{1}}) = 0 $ for $t_{2} \ge t_{1} $
- the quantity $z_{t_{2}}-z_{t_{1}}$ is normally distributed with variance equal to the size of the time step. that is, $Var(z_{t_{2}}-z_{t_{1}})=z_{t_{2}}-z_{t_{1}} $.


we have a price equations : which stands for deterministic drift(==trend) => 즉, 가격변수의 추세 표현
$$ g_{1}(S,t) = (r-q)S_{t},\quad g_{2}(S,t) = \sqrt{v_{t}}S_t $$
we have a variance equations : which stands for random shock => 즉, 가격변수의 변동성을 표현하는 식
$$ g_{1}(v,t) = \kappa(\theta-v_{t}),\quad g_{2}(v_t)=\sigma\sqrt{v_{t}} $$


2. matlab을 활용한 수치해석적 옵션 가격 도출

1) underlying asset이 1개 있을 때

2년 짜리 옵션, 무위험금리는 5%, 초기 기초자산 가격은 \$10, 옵션행사가격은 \$10, 자산의 변동성은 0.07인 어떤 기초자산에 대한 풋옵션(put option)의 가격을 도출한다고 하자. 위에서 도출된 Hetson model을 Taylor series expansion을 활용하여 discrete equation으로 바꿔주어 반복적으로 계산하면 된다. 반복 계산을 통해 도출하므로 for loop가 필요하다.
옵션 가격을 도출할 때 경계조건인 $ V_{t} = max(X-S(T), 0) $이 사용되었다.

% parameters : Set up 

T =2; % Time to expiration for a financial derivative 
r=0.05; % Risk-free rate 
S0 = 10; % Initial stock price 
X=10; % strike price of that option 
sigma = 0.07; % volatility of stock return 
M= 1000; % time split of your interval of time 
N=1000; % the number of simulations you will use 
dt=T/M; 
S=zeros(M+1, N); % initialize stock price 
dS = zeros(M,N); % change of stock variables 
S(1,:) = S0*ones(1,N); 

% step 2 : time to make a loop 

for m=1:1:M 
	dS(m,:) = r*S(m,:)*dt+sigma*S(m,:).*sqrt(dt).*randn(1,N); 
	S(m+1,:) = dS(m,:)+S(m,:); 
end 

% put option value 
put_optionT = max(X-S(M+1,:),0); 
mean(put_optionT) 
var(put_optionT) 
put0 = exp(-r*T)*mean(put_optionT)

값을 구해보면, 아래의 값이 도출된다.

ans = 0.0868 ans = 0.0618 put0 = 0.0785

2) underlying asset이 3개 있을 때

여기서는 아래 파라미터 세팅을 기반으로 콜옵션 가격을 도출하고자 한다.
이 때, 기초자산이 2개 이상인 경우에는 기초자산간의 공분산, 즉 상관관계를 고려해주어야 한다. 다변수확률분포를 도출해야하는데, 이때 mvnrnd함수가 사용된다.
기초 자산 $S_1, S_2, S_3 $에 대하여 각각 기여하게 되는 $Y_1, Y_2, Y_3 $이 평균은 0이고 pairwise correlation coefficient $\rho = -0.5$인 분포를 따른다고 하자. 확률변수 $Y_1, Y_2, Y_3 $에 대한 분산-공분산 행렬을 도출해주어야 하고, 문제를 풀 때 각각 기초자산의 분산값은 주어져있으므로, 분산과 상관계수의 관계식을 이용하여 분산-공분산 행렬을 새로 정의해주면 된다.
이를 바탕으로 다변수 확률분포를 따르는 행렬을 정의하려면 Yt = (mvnrnd(mu, variance, number))'로 코드를 작성하고, 벡터로 반환된 확률변수들을 받아서 활용한다. 각각의 변수에 접근하려면 행 인덱스에 (1,:), (2,:), (3,:)으로 입력하면 된다.

% Hetson's model with 3 underlying assets ! 
%%% assign parameters 
r = 0.055; % risk-free rate = 5.5% 
rho = -0.5; % pairwise correlation coefficient 
T = 1; 
M = 1000; 
N = 10000; %the number of simulations 
K = 4; % strike price 
sigma1 = 0.2; 
sigma2 = 0.1; 
sigma3 = 0.15; 
cov12 = sigma1*sigma2*rho; 
cov23 = sigma2*sigma3*rho; 
cov13 = sigma1*sigma3*rho; 

S10 = 4; %initial stock price for asset 1 
S20 = 4; %initial stock price for asset 2 
S30 = 4; %initial stock price for asset 3 

% define mu and vcov matrix for using mvnrnd function 
mu = [0 0 0]; 
dt = T/M; 

VCOV = [sigma1^2 cov12 cov13; 
		cov12 sigma2^2 cov23; 
        cov13 cov23 sigma3^2]; %V-COV matrix for 3-variable case 
        
% application step 

S1 = zeros(M+1, N); %for 1st asset 
dS1 = zeros(M,N); 
S2 = zeros(M+1, N); %for 2nd asset 
dS2 = zeros(M,N); 
S3 = zeros(M+1, N); %for 3rd asset 
dS3 = zeros(M,N); 

S1(1,:) = S10*ones(1,N); %initialize price 
S2(1,:) = S20*ones(1,N); 
S3(1,:)= S30*ones(1,N); 

for m=1:1:M 
  Yt = (mvnrnd([0,0,0], VCOV, N))'; 
  dS1(m,:) = r*S1(m,:)*dt+sigma1*S1(m,:).*sqrt(dt).*Yt(1,:); 
  dS2(m,:) = r*S2(m,:)*dt+sigma2*S2(m,:).*sqrt(dt).*Yt(2,:); 
  dS3(m,:) = r*S3(m,:)*dt+sigma3*S3(m,:).*sqrt(dt).*Yt(3,:); 

  S1(m+1, :) = dS1(m,:)+S1(m,:); 
  S2(m+1,:) = dS2(m,:)+S2(m,:); 
  S3(m+1,:) = dS3(m,:)+S3(m,:); 
end 

call_option_T = max(S1(M+1,:)+S2(M+1,:)+S3(M+1,:)-K,0); 
call_option_0 = exp(-r*T)*mean(call_option_T);

여기서는 콜옵션 가격을 구하면

 9,991 ~ 9,996번 열 
 
 8.6134 8.7775 8.6902 8.6461 8.7442 8.5845 
 
 9,997 ~ 10,000번 열 
 
 8.4808 8.7572 8.5994 8.8242 
 
 >> call_option_0 
 
 call_option_0 
 
 = 8.2150

콜 옵션 가격이 제대로 도출되는 것을 확인할 수 있다.
이 때, 콜 옵션 가격 산출에는 경계조건으로 $ V(T) = max(C(1,T)+C(2,T)+C(3,T)-K, 0) $이 활용되었다.

References

계산금융의기초 (2021-2), ch8. Introduction to Simulations
Numerical Methods and Optimization in Finance, 2nd edition, Gilli, Maringer and Schumann. (2019)

 

댓글