From Dupire…
It is still often said that calibrating in Monte-Carlo is unfeasible for runtime reasons. Typically a calibration is an optimization on the pricing of large number of vanilla options, and since Monte-Carlo is slow, a calibration with valuation of the vanillas in Monte-Carlo is said to be unfeasible. This leads to the search for (semi-)analytical closed-forms that are fast enough.
While the Mathematics involved in closed-forms is often very interesting in its own right, its complexity tends to lead to simplifying assumptions on the processes in order to gain tractability. On the contrary, calibration in Monte-Carlo means that we could use a much more varied set of dynamics without the requirement of analytical tractability. Adding to the merits of the approach is that Monte-Carlo is highly parallelizable such that its slowness may only be a temporary situation, as we will see below.
We were first interested in the principles of Monte-Carlo calibration when we worked on the calibration of the Dupire model. Its calibration can be written analytically when the spot process is the only source of randomness, but when we included stochastic interest rates (say Hull-White), analytical calibration was no longer possible.
However the fact that calibration amounts to calculating an expectation gives the idea of calculating the expectation analytically. We implemented this idea with the Dupire/Hull-White hybrid in 3 factors (FX in Dupire, domestic and foreign rates in Hull-White). We discovered that this approach was more accurate than existing semi-analytical approximations. The results of this work are presented in our SSRN paper on this very subject, where we also report on the implementation of this method on GPUs with CUDA. This method can be run in less than 1s on GPUs, but we believe it is also feasible on CPU depending on one’s tolerance for calibration runtime.
Yet this is not strictly speaking what has been deemed unfeasible as there is no optimization in this method: we only calculate each expectation once.
To generic jump-diffusions
Lately we’ve been interested in going the whole way to actual optimization over Monte-Carlo. We are now considering models, even before being hybridized with IR, that do not have closed forms or may have closed-forms that are too difficult to calculate (big formulas, slow, not robust enough, etc…). For instance, we are considering time-dependent stochastic volatility, time-dependent jumps, and the coupling of these 2 types of models in time-dependent jump-diffusions. One example in this family we are currently developing is time-dependent SABR coupled with time-dependent Merton jumps.
On top of allowing a much wider range of dynamics, this method has the advantage of being quite generic to implement, without requiring the calculation and implementation of very complex closed-form for every variation on the model (we could change SABR to Schoebel-Zhu or Heston without much trouble). It should also not be a big trouble to extend them to handle stochastic interest rates in the drift, as the interest rate models are not optimized on and therefore should not make the runtime grow significantly (say it should grow far more slowly than linearly with the number of factors). We plan to confirm if this works or not in the close future.
Of course in order to make this manageable at runtime we need to make the code highly effective and save time at every possible occasion. But it is our opinion that this is not unfeasible, as we can calibrate these models in a few seconds on a standard quad-core CPU.
We are very interested to know the opinions and experiences of the readers with these ideas. We know that such ideas have been implemented in some big banks but we are not aware of the details. Any sharing of thoughts is very welcome.