For a standard Ito process

$$dX_t = \mu(X_t, t) \,dt + \sigma(X_t, t) \,dW_t,$$

the Fokker-Planck or forward Kolmogorov equation gives an equation for the probability density $p ( x , t )$ of the random variable $X_t$,

$$\frac{\partial}{\partial t} p(x, t) = -\frac{\partial}{\partial x}\left[\mu(x, t) p(x, t)\right] + \frac{1}{2} \frac{\partial^2}{\partial x^2}\left[\sigma^2(X_t, t) p(x, t)\right].$$

Starting from some initial density $p(x,t_0)$, which is often chosen as a delta-peak at the current spot, i.e. $p(x,t_0) = \delta(x-x_0)$, it can be used to calculate future distributions, and from these prices of financial instruments through expectation values.

The concept is quite similar to Monte-Carlo simulations -- with the difference that Monte-Carlo tries to approximate the distribution from a series of realizations, whereas Fokker-Planck arrives at the same quantity through a (deterministic) PDE. Thus the question:

What are the advantages of solving the Fokker-Planck equation over using a Monte-Carlo simulation?

For example: does it give higher accuracy? Are there relevant quantities which can't be calculated via Monte-Carlo? Are there scenarios where it is preferred over Monte-Carlo in practice? And so on.

I'm also looking for thoughts and a discussion on it, so please feel free to post even if it's not a "complete" answer.

  • 2
    $\begingroup$ Accuracy - especially in the tails (4+ sigma events) and speed if can be evaluated using closed form characteristic functions (fourier-cosine expansions are my technique of choice here). If you want to use the FP equation to help estimate conditional expectations of a bivariate process like you find in a stochastic local vol model, it surpasses Monte Carlo approaches hands down in my opinion. Discount all the above if your characteristic function is not closed form or closely approximated by such! $\endgroup$ Jan 22, 2018 at 21:01
  • 3
    $\begingroup$ I would add that finite difference methods really struggle with this initial condition being a Dirac function. That is an advantage of MC and Fourier methods although MC methods rapidly degrade as you push out the time horizon (as your 10,000 paths begin to scatter...) $\endgroup$ Jan 22, 2018 at 21:38
  • 2
    $\begingroup$ Very good points mentioned by James Spencer-Lavan (although I'd say that depending on the time you're willing to spend on variance reduction techniques MC may be quite accurate). One the biggest problem with FD though is that it does not scale well to high dimensions (N>2 stochastic factors) while Monte Carlo does. Similarly capital distributions at discrete dates need to be accounted for via no jump conditions on grid nodes while in Monte Carlo these are handled more naturally. So it really depends on the use case I guess. $\endgroup$
    – Quantuple
    Jan 23, 2018 at 7:45
  • 1
    $\begingroup$ A useful trick: if you've already implemented finite differences for the backward Kolmogorov equation, simply replacing the tridiagonal matrices by their transpose will provide you with a finite differences scheme for the forward Kolmogorov equation, no additional programming required. $\endgroup$ Jan 23, 2018 at 9:15
  • $\begingroup$ Thanks for your comments. So for now I take accuracy and possibly speed as an advantage of FP, and the curse of dimensionality as the usual disadvantage. Feel free to add more thoughts, I will if I encounter some ;-) $\endgroup$
    – davidhigh
    Jan 23, 2018 at 19:18

1 Answer 1


As there are many comments but no answer, let me just sum up some of the comments.

Solving a PDE or doing some probability?

Usually when one wants to solve the SDE they get a distribution for $X$. In the real world though it is often more useful know some of the properties of this distribution, such as its expected value $\mathbb{E}(X)$, or more generally $\mathbb{E}(f(X))$. We know by the Feynman-Kac theorem that solving this expectation (possibly a conditional expectation) also corresponds to solving a PDE. It is then up to you to decide what is easier, solve a PDE with some tricky boundary conditions, or find an expectation with some strange conditional statements? Each has there own advantages and disadvantages, but the bulk of it really boils down to dimensionality.

PDEs can become very nasty very quickly

If we only have one driving Brownian motion and we are solving for a scalar random variable, it is likely best to formulate the problem in its PDE form (where possible), as solving PDEs in 2-dimensions is a pretty easy job for most computers. So unless you have some very nasty boundary conditions this will likely be your best shot. However, in real world applications there do exist many nasty boundary conditions, think Barrier options, Asian options, etc, and these then start to correspond to moving boundary value problems and worse.

When dimensions become very large

A very simple disadvantage of a PDE solver, is that ultimately it will likely boil down to producing some sort of grid or lattice, and then use finite difference or something similar. Typically you can't solve PDEs in the whole of $\mathbb{R}^d$ and so you consider some volume and put points equidistantly spaced in each dimension. Even with a modest 2 points in each dimension if you have a 50 dimensional SDE to solve (not uncommon in some basket options or if you want to model an index or a set of currency exchanges) then you will require a grid of $2^{50} \approx 10^{15}$ points, which is about a petaflop of data.

However, framing this as a Monte Carlo problem using $N$ random numbers then the error scales as $N^{-1/2}$, which doesn't depend on the problem dimension, and hence this is likely the only feasible way to solve such high dimensional problems.

Boundary conditions are now easy (easier)

Of course if you've written a Monte Carlo solver and a PDE solver it is quite clear that the first is usually easier. Now implementing any exotic function $f$ is fairly trivial, and this is true for most types of exotic options. There are now some new subtleties about introducing biases from various estimators and schemes but these are usually for the more advanced stuff.

Calculating Greeks

It should also be said that there are a few simple (and complicated) ways to compute the derivatives (aka Greeks) of these expectations with respect to the SDE parameters. In Monte Carlo you can use the same scheme to simply bump the simulation into giving you a derivative, use likelihood ratio or pathwise sensitivity methods, or you can do more complicated methods such as algorithmic differentiation. Some of these give you some Greeks (nearly) for free. However, as far as I can tell if you want to do the same thing using the Fokker-Planck approach then you have much more awkward PDEs to start solving.


If the dimensionality is small then the PDEs will likely give you the most accurate answer the quickest, and possibly the only route to a very accurate answer if you need one (without renting out a super computer cluster). However, as noted in the comments by Quantuple, if you have a good bit of knowledge about the problem you can get some very accurate answers with some variance reduction techniques, and cut down the compute time with things such as QMC or MLMC, etc.

Have you got to code it up?

If you've got to code it up, then without doubt it will probably be much easier to implement a simple Euler-Maruyama scheme as part of a Monte Carlo program. Of course there are exceptions, but I think there are more pitfalls and difficulties in solving PDEs than just producing a ton of random numbers.


If the dimensions are small, the SDE not too nasty (think autonomous and Lipschitz), and you're not interested in anything too complicated to do with $p(x,t)$, then maybe go for the Fokker-Planck route. Otherwise it's likely Monte Carlo is a safe bet.

Disclaimer I work a lot with Monte Carlo schemes and less with PDE solvers, so please feel free to add anything I have missed/neglected.


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.