Feeds:
Posts

## ZULF MODEL IS SUPERIOR TO HESTON MODEL FOR LIQUID OPTION XLF 90+ PERCENT TIMES

### zulfikar.ahmed@gmail.com<zulfikar.ahmed@gmail.com>

3:13 AM (3 minutes ago)

 to jfrenkel, jhansen, jharrington, jharris, jhp, jhricko_4, jhs, jhutasoi, jianjunp, jinha, jjbrehm, jlind, jlondon, jlw, jmateo, jmerseth, jmetcalf, jmg, jmogel, joel, joelms, john.aldrich, john.beatty, johncrawford53, jose.oliveira

Black-Scholes-Merton 1973 model had been known to be problematic from the beginning.  Late 1990s and early 2000s long memory stochastic volatility models were considered;  the Zulf model is an exact specification of long memory stochastic volatility where price follows the familiar BSM SDE with a variable volatility:

dS_t/S_t = mu dt + sqrt(V) dw^1(t)

and the volatility follows a TIME-FRACTIONAL stochastic differential equation with a square root process just as in Heston model.

D_t^alpha V(t) = kappa*(vT-V(t)) + sigma*sqrt(V(t)) dw^2(t)/dt

with rho*dt=<dw^1,dw^2>.  Note that people had considered stochastic differential equations with fractional Brownian motions before.  My formulation via time-fractional SDE allows a simple modification of the Heston closed form solution where Heston’s D(t) — see Heston’s paper for details — is replaced by D'(t)=psi(t) D(t)​, and psi(t) is the waiting time distribution of a fractional Poisson process, i.e.,

psi(t) = kappa*t^(alpha-1)*mlf(-kappa*t^alpha,alpha,alpha)

So all this is very nice but we needed to show that this actually produces tighter fits to actual volatility surfaces COMPARED to Heston model. In generic terms, that long memory has an effect has been known since early 2000s so my model is giving you closed form option prices (inheriting Heston’s model) and here you have quantitative evidence of almost universal improvement of fit on randomly selected XLF volatility surfaces.

>>> import pandas as pd
>>> from scipy.stats import ttest_rel
>>> ttest_rel(x[‘HestonErr’],x[‘ZulfErr’])
(array(8.220630625948539), 2.3136313865144033e-10)
>>> import numpy as np
>>> np.mean(x[‘HestonErr’])
0.040236243251665478
>>> np.mean(x[‘ZulfErr’])
0.035349632026785982
>>> sum(x[‘HestonErr’]>x[‘ZulfErr’])
41
>>> len(x)
44
>>> 41./44
0.9318181818181818
>>>

This result is likely to be universal over all financial assets with liquid options but time will tell.  Now 93% improvement over Heston model for a stochastic volatility model is a significant result in finance since here I am providing a parsimonious model with a single extra parameter.  I conjecture that this is THE long memory correction in finance and resolves the issues of long memory on the table since Benoit Mandelbrot brought them to attention in the late 1960s.

Historical options data is not easily available, so I am attaching XLF historical data so you can check the R code yourself.  Option pricing code is in python .pyx file.  You cython it to produce C code, and then gcc it to produce a shared library that is used by tmlf.py which is called by hestonVzulf2.R.  The output of the code is in xlf.txt which includes the Heston and LMHeston objective function values per vol surface.  So now we have a model that looks universally better fit to volatility surfaces than Heston model which has quite a bit of theory now showing how smiles are explained; we also know from Comte-Renault’s work that the term structure of Heston model had problems that can be resolved by long memory in stochastic volatility.  My model is a tight closed form solution answer which is parsimonious now with a proven record versus Heston.
7 Attachments