Feeds:
Posts

PROVING POSITIVITY OF FRACTIONAL HESTON VOLATILITY

We know that correlation between empirical volatility and price returns in equities is negative with $0 > \rho > -0.05$ say but averaging at -0.02.  We also know with confidence that volatility has long memory.  Heston 1993 model is therefore not appropriate.  But it has a nice feature that ready mathematical theory tells us that Heston model’s volatility process (the Cox-Ingersoll-Ross square root process)

$dU = -\kappa(U-\theta) + \nu\sqrt{U} dw$

is positive when $\kappa\theta \ge \nu^2$ with probability 1.  The natural analogue is the fractional stochastic differential equation

$D^\alpha_t V = -\kappa(V-\theta) + \nu\sqrt{V} dw/dt$

and here we have no ready theory telling us positivity.  So here we employ a comparison principle.  Suppose $\kappa\theta \ge \nu^2/2$ so that we know that $U$ will be positive almost surely.  Now consider $\tilde{V}(t) = S_{\alpha}(t) U(t)$; since $S_{\alpha}(t) = t^{\alpha-1} E_{\alpha,\alpha}(-\kappa t^\alpha)$ is positive for positive time, $\tilde{V}(t)$ is positive.  Now we consider

$d(\tilde{V}-V) = ( (S_{\alpha}'(t) + S_{\alpha}(t)) - T'_{\alpha}(t)v_0) dt + \nu (\sqrt{\tilde{V}(t)} - \sqrt{V(t)}) dw(t)$

Now $S'_{\alpha}(t) + S_{\alpha}(t) < 0$ and an example of the graph is the following:
This is a function that is extremely negative for small times quickly converging to zero.  Now since $\tilde{V}(t)$ is positive and has a derivative that is much smaller than that of $V(t)$ the latter must stay positive.  This implies that with the same condition as the Heston model, i.e. $\kappa\theta \ge \nu^2/2$ the fractional Heston model will also stay positive.

By Lemma 3.1 of Wong-Heyde 2006 (Wong-Heyde-2006) for the Heston model we know that

$E[\exp(-\alpha U(T) -\beta \int_0^T U(u) du)]<\infty$

for $\alpha\ge 0$ and $\beta \ge -\kappa^2/2\nu^2$.

Working backward from Wong-Heyde’s argument, we first note that

$\exp(-\beta \int_0^t V(u) du ) \nu S_{\alpha}(t) \sqrt{V(t)} dW_V(t)$

is a local martingale.  Then we want to consider a function $F(V,t)$ that solves the Cauchy problem

$\frac{\partial F}{\partial t} + \frac{1}{2}\nu^2 S_{\alpha}(t) v \frac{\partial^2 F}{\partial v^2} + (T'_{\alpha}(t)v_0 + \kappa\theta S_{\alpha}(t)) \frac{\partial F}{\partial v} = \beta v F$

with boundary condition $F(v,T) = e^{-\alpha v}$.  The idea is that the solution can be given as an exponential function and therefore is nonnegative, one concludes the local martingale is a supermartingale and hence a true martingale.

The Heston model has an exact solution because in that case the Riccati equation that results from the PDE can be solved exactly.  In our case we have can consider $F(v,t) = \exp(C(t) + vD(t))$ leading to

$C' + AD = 0$

$D' + \frac{1}{2}\nu^2 S_{\alpha}(t) D^2 - \beta = 0$

This second equation is of Riccati type

$y' = P(x) + Q(x)y + R(x) y^2$

which reduces with the standard substitution $y = u'/(uR)$ to

$u'' - [Q(x) + R'(x)/R(x)]u' + RP u = 0$

i.e. into

$u'' - \frac{S'_{\alpha}(t)}{S_{\alpha}(t)} u' - \beta \nu^2 S_{\alpha}(t) u = 0$

which simplifies a bit to

$t^{-1} [ u'' + A u' + B u ] = 0$

with $A = (\alpha-1) - \kappa t^{\alpha}\frac{E'_{\alpha,\alpha}(-\kappa t^\alpha)}{E_{\alpha,\alpha}(-\kappa t^\alpha)}$

$B = t^\alpha E_{\alpha,\alpha}(-\kappa t^\alpha)$

for which it is still unclear to me whether there is a closed form solution. A quick numerical solution of the Riccati equation tells us that the solution with initial values $y(0)=0.01$ and $y'(0) = 0.01$ and parameters $\kappa = 1.2$ and $\alpha=0.8$ is increasing, so we can assume this holds for the boundary condition $F(v,T) = e^{-c v}$ will also be increasing and hence bounded by $F(v,T)$.  So this gives a rough non-rigorous indication that the Wong-Heyde argument can be repeated to show the existence of an equivalent martingale measure for the fractional Heston model.

from scipy import integrate
import matplotlib.pyplot as plt

def A(t,kappa,alpha):
v1 = mlfn(-kappa*t**alpha,alpha,alpha,1)
v2 = mlf(-kappa*t**alpha,alpha,alpha)
a = (alpha-1) - kappa*t**alpha * v1/v2
return a

def B(t,kappa,alpha):
return t**alpha * mlf(-kappa*t**alpha,alpha,alpha)

def solvr(Y,t,kappa,alpha):
return [Y[1],-B(t,kappa,alpha)*Y[0]-A(t,kappa,alpha)*Y[1]]

kappa=1.2
alpha=0.8
a_t = np.arange(0.01,25,0.01)
asol = integrate.odeint(solvr,[0.01,0.01],a_t,args=(kappa,alpha))

plt.plot( a_t, asol )
plt.show()