Numerical American option for variable volatility

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 $$dX = (r-q) X dt + \sigma(X) dW_t.$$ 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?

• What is $X$ - the underlying asset or its logarithm? – LocalVolatility Oct 6 '16 at 9:53
• 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}$$ – Quantuple Oct 6 '16 at 11:11
• 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. – user56643 Oct 7 '16 at 8:49

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

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

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.

References

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

• Local volatility model was the keyword. Would you know where the pricing of that model is explained in Quantlib? – user56643 Oct 19 '16 at 14:35
• 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. – LocalVolatility Oct 19 '16 at 15:16