## Friday, January 30, 2015

### Local Stochastic Volatility - Particles and Bins

In an earlier post, I mentioned the similarities between the Guyon-Labordere particle method and the Vanderstoep-Grzelak-Oosterlee "bin" method to calibrate and price under Local Stochastic volatility. I will be a bit more precise here.

The same thing, really

The particle method can be seen as a generalization of the "bin" method. In deed, the bin method consists in doing the particle method using a histogram estimation of the conditional variance. The histogram estimation can be more or less seen as a very basic rectangle kernel with the appropriate bandwidth. The "bin" method is then just the particle method with another kernel (wiki link) (in the particle method, the kernel is a quartic with bandwidth defined by some slightly elaborate formula). A very good paper on this is Silverman Density estimation for statistics and data analysis, referenced by Guyon-Labordere.

In theory, the original particle method has the advantage of using a narrower bandwidth, resulting in a theoretical increase in performance as one does not have to sum over all particles, while providing a more local therefore precise estimate. In practice, the performance advantage is not so clear on my non optimized code.

Two-pass

There is an additional twist in the particle method: one can compute the expectation and the payoff evaluation in the same Monte-Carlo simulation, or in two sequential Monte-Carlo simulations.

Why would we do two? Mainly because the expectation is computed across all paths, at each time step, while, usually, payoff evaluation requires a full path as it will need to store some state at each observation time for path-dependent payoffs.

We can avoid recomputing the paths by just caching them at each observation time. The problem is that the size of this cache can quickly become extremely large and blow up the memory. For example a 10y daily knock-out will require 10 * 252 * 8 * 2 * MB = 40 GB for 1 million paths.

A side effect of the second simulation is that one can use a Quasi-Random number generator there, while for the first simulation, this is not easy as we compute all paths, dimension by dimension.

In practice, both methods work well, particle or bins, single-pass or two-pass. Here is a graph of the error in volatility, SV is a not so well calibrated Heston to market data. LVSV are the local stochastic volatility simulations, using as Vanderstoep 100 steps per year and 500K simulations with 30 bins.

The advantages of the particle do not show up in terms of accuracy on this example.
I have also noticed that short expiries seem trickier, the error being larger. This might just be due to the time-step size, but interestingly the papers only show graphs of medium (min=6m) to large expiries.

1. Hi,

this sounds similar to this

http://papers.ssrn.com/sol3/papers.cfm?abstract_id=2112819

Do you think that's the same concept? By the way, I also met the same issue you're mentioning about the Sobol numbers, which can result in running out of RAM. But if you draw them dimension by dimension, you can do it "on-the-fly".

2. Hi,

this sounds similar to this

http://papers.ssrn.com/sol3/papers.cfm?abstract_id=2112819

Do you think that's the same concept? By the way, I also met the same issue you're mentioning about the Sobol numbers, which can result in running out of RAM. But if you draw them dimension by dimension, you can do it "on-the-fly".

3. Yes, it looks very similar. Guyon applies the particle method to stochastic rates & local vol as well (in his book, there is a closer example to your paper).

I suppose your method might be quite slow as you seem to compute an expectation for each point (N*N complexity). It's not entirely clear (I would need to read it several times) my understanding is correct here. But it's really the same idea otherwise.

The other idea is that very much like Longstaff Schwartz regression, you don't need to use all the paths to compute the 2 expectations. None of the papers really mention that, but it's the practical thing to do.

Yes for Sobol, I need to update my generator to draw dimension by dimension.