I am trying to understand the basics of financial models.
Random Walk as a model for asset prices.
We use gaussian random numbers to generate a Gaussian Random walk. The variance of the terminal value (cumulative sum of random steps) divided by the square root of the number of steps is $1$ due to central limit theorem.
$ S_0=0$ and $\displaystyle S_{n}=\sum _{j=1}^{n}Z_{j}$
$\displaystyle Var\left(\dfrac{S_n}{\sqrt{n}}\right)=1$
Black Scholes Model
Asset price follows a geometric brownian motion.
The variance of the terminal value ($\ln {\frac {S_{t}}{S_{0}}}$) is:
$\displaystyle \ln {\frac {S_{t}}{S_{0}}}=\left(\mu -{\frac {\sigma ^{2}}{2}}\,\right)t+\sigma W_{t}\,$
$\displaystyle Var\left(\ln {\frac {S_{t}}{S_{0}}}\right)=\left(\mu -{\frac {\sigma ^{2}}{2}}\,\right)^2t+\sigma^2t,$
The simulations also return values as expected from these closed form equations.
Heston Model
$\displaystyle dS_t=\mu S_t dt + \sqrt{v_t}S_t dW_{1,t} $
$\displaystyle dv_t=\kappa (\theta-v_t)dt + \sigma\sqrt{v_t} dW_{2,t} $
where $\mathbb{E}[dW_{1,t}dW_{2,t}]=\rho dt$
From what I understand, there is no closed form solution for $Var(S_t)$. Now, when I simulate
clear;clc;
s0=100; % Initial stock price
mu=0; % expected return
v0=0.05; % Initialising value for variance
kappa=1.6; % mean reversion rate AND 2*kappa*theta geq sigma^2
theta=0.1; % long run variance
sigma=0.2; % volatility of variance
rho = 0.0; % Correlation between Stock and its Volatility Process
n_sim=10^4; % count of simulations
n=1000; % number of steps
dt=1/n;
ss=ones(n_sim,n)*s0;
vv=ones(n_sim,n)*v0;
for i=1:n_sim % multiple simulated paths
z=randn(n,2); % To generate two independent N(0,1) variables
for t=2:n % single path generation
Z_v = z(:,1);
Z_s = rho*z(:,1)+sqrt(1-rho^2)*z(:,2);
% Discretize the log variance
vv(i,t)=vv(i,t-1)*exp((1/vv(i,t-1))*(kappa*(theta-vv(i,t-1))-(sigma^2/2))*dt+(sigma*sqrt(dt/vv(i,t-1))*Z_v(t)));
% Discretize the log stock price
ss(i,t)=ss(i,t-1)*exp((mu-(vv(i,t-1)/2))*dt+sqrt(vv(i,t-1)*dt)*Z_s(t));
end
end
x=log(ss(:,n)/s0);
vv1=vv(:,n);
mean_vv1=mean(vv1); % comes out as 0.09
var_sn=var(x); % comes out as 0.075
I get a value of $0.075$. What "meaning" do I draw from it ?
Its not anywhere near the long run variance ($\theta$) or $v_t|t=1$. When should the long run variance be achieved ?
Any pointers and suggestions would be helpful. Please Advise.