There are numerous numerical solvers for American option pricing. However, all of them take as input a fixed value sigma, denoting the historical volatility of the underlying. I am looking for a solver for which I can specify the volatility as a function, i.e. I want to price the underlying \begin{equation} dX = (r-q) X dt + \sigma(X) dW_t. \end{equation} Under the risk neutral measure, the drift is just the difference in risk free rate and dividends. I want to have a pricing method for arbitrary function $\sigma(X)$. Is there a numerical method that does exactly that?

  • 1
    $\begingroup$ What is $X$ - the underlying asset or its logarithm? $\endgroup$ Oct 6, 2016 at 9:53
  • $\begingroup$ Good question. I guess OP made a typo and it should read $dX_t/X_t$ on the LHS. I would suggest least-squares Monte Carlo as the method of choice here. Note that even for European options there are no closed-form formulas under this particular modelling assumption. Some approximations exist though, see the work of Berestycki, Busca & Florent, 2001: $$\sigma_{BS}(T,K) \approxeq \frac{\ln\left(\frac{S_0}{K}\right)}{\int_K^{S_0}\frac{1}{s \sigma(s)} ds}$$ $\endgroup$
    – Quantuple
    Oct 6, 2016 at 11:11
  • $\begingroup$ Your answers have helped me understand that what I am looking for is a numerical implementation of an option pricing algorithm that handles local volatility models. $\endgroup$
    – user56643
    Oct 7, 2016 at 8:49

1 Answer 1


The process that you are considering is a special case of a local volatility model

\begin{equation} \mathrm{d}X_t = \mu X_t \mathrm{d} t + \sigma \left( t, X_t \right) X_t \mathrm{d}W_t. \end{equation}

I.e. you seem to consider a special case where the volatility is not time but only spot dependent. When you refer to American options, I suppose you mean "American plain vanilla options". In this case, the natural choice of pricing engine for me would be finite-difference methods. See e.g. Chapter 78.9 in Wilmott (2006) for a gentle introduction.

As you asked for a "solver" I suppose you are looking for a library that could price under these dynamics. You could have a look at QuantLib - they have a finite difference engine that supports local volatility.


Wilmott, Paul (2006) "Paul Wilmott on Quantitative Finance", 2nd Edition, John Wiley & Sons

  • $\begingroup$ Local volatility model was the keyword. Would you know where the pricing of that model is explained in Quantlib? $\endgroup$
    – user56643
    Oct 19, 2016 at 14:35
  • $\begingroup$ I am not using QuantLib too frequently but a good place to start is by looking at the unit tests. You could for example start with EuropeanOptionTest::testLocalVolatility(). Getting it to price American vanillas is probably a one line change. $\endgroup$ Oct 19, 2016 at 15:16

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

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