MathOverflow is a question and answer site for professional mathematicians. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

Suppose we have a time-series $x(t_i)$ at discrete times $t_i$ and we want to estimate the parameters of an underlying SDE corresponding to this time-series: $$dx_t = f(x_t,\theta)dt + \sigma(x_t,\theta)dB_t$$ I have read that there exists a lot of different numerical methods to approach this problem, but I have not found a comprehensive and comparative survey about this problem.

1.What is the best method (according to the type of data/model) ?

2.Is there a Python or Matlab toolbox doing the job ? I have had a look at SDE_toolbox for Matlab ( but it is not clear to me how to use it, so it would be appreciated to provide an example.

I think it can be useful to have an overview of this topic since it may be interesting for many people.

Thank you.

share|cite|improve this question

You question is extremely broad. You're asking about the class of all SDEs. I'm assuming that you're interested in numerically integrating some form of SDE in order to estimate parameters.

A comprehensive introduction to the subject of SDE integration is Kloeden & Platen's book Numerical Solution of Stochastic Differential Equations, which, style- and code-wise is a bit dated now, but is still good. For the Matlab user, another fine (and shorter) introduction is this paper:

Desmond J. Higham, 2001, An Algorithmic Introduction to Numerical Simulation of Stochastic Differential Equations, SIAM Rev. (Educ. Sect.), 43 525–46.

The demonstration Matlab files listed in the paper can be found here now.

Best method? Like with ODEs, there is no best method. It depends on the system. Adaptive step-size Runge-Kutta methods work for a huge class of ODE problems, but SDEs, with their noise/diffusion term, are more complicated. Without knowing anything about your system (the diffusion function $\sigma(x_t,\theta,t)$ in particular) or what stochastic formulation you're using, I can't say much. To start, use the Euler-Maruyama method if you have an Itô SDE or additive noise (i.e., the diffusion does not depend on the state variable, $\sigma(x_t,\theta,t) = \sigma(\theta,t)$) and the Euler-Heun method if you have a Stratonovich-formulated SDE with non-additive noise. These are the workhorses. Higher-order schemes are trickier to implement and are usually designed for particular types of systems/noise.

Finally, if you want a Matlab Toolbox that is still under active development, is much faster, and will be easy to use if you've ever used Matlab's ODE suite (e.g., ode45), try my SDETools Matlab Toolbox for the Numerical Solution of Stochastic Differential Equations hosted on GitHub.

share|cite|improve this answer
Thank you, but your answer concerns the simulation of SDEs rather than the parameter estimation. – user16215 Oct 14 '13 at 17:33

Your Answer


By posting your answer, you agree to the privacy policy and terms of service.

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