Monday, June 26, 2017

How should I calculate the implied volatility of an American option in a real-time production environment?


There are many models available for calculating the implied volatility of an American option. The most popular method, employed by OptionMetrics and others, is probably the Cox-Ross-Rubinstein model. However, since this method is numerical, it yields a computationally intensive algorithm which may not be feasible (at least for my level of hardware) for repeated re-calculation of implied volatility on a hundreds of option contracts and underlying instruments with ever-changing prices. I am looking for an efficient and accurate closed form algorithm for calculating implied volatility. Does anyone have any experience with this problem?


The most popular closed-form approximation appears to be Bjerksund and Stensland (2002), which is recommended by Matlab as the top choice for American options, although I've also seen Ju and Zhong (1999) mentioned on Wilmott. I am interested in knowing which of these (or other) methods gives the most reasonable and accurate approximations in a real-world setting.



Answer




I have worked on this topic extensively (pricing and calculating IV in production) and believe can offer an informed opinion. First of all Mathworks - the company that creates Matlab is not a trading firm so you should probably not rely on their advice so much.


There are few closed form options pricing models, and all have practical shortcomings. Barone-Adesi and Whaley (please correct my spelling of last names as I'm typing from memory) model is simple approximation for American options but is unfortunately not very accurate, and does not deal with dividends. Roll-Geske-Whaley deals with dividends, but not very well - there are arbitrage situations that are possible in the model. Ju and Zhong have another approximation but again not very accurate. Finally Bjerksund and Stensland seem to have the best approximation (2002 version, not 1993) but that still does not solve the discrete dividend problem.


In my experience the tree is the way to go. CRR trees are slow but Leisen and Reimer, 1995 came up with a scheme that converges much faster. Also Mark Joshi created his own binomial scheme that converges slightly faster. Instead of discrete dividend you can use discrete proportional dividend - so you don't end up with a bushy tree. Alternatively you can try a trinomial tree and extra DF will give you better resolution on dividend, but I did not find that big of an improvement in production. That in my opinion is the best combination for speed and accuracy. If you're looking for alternative opinions check out these two articles - http://www.nccr-finrisk.uzh.ch/media/pdf/ODD.pdf about discrete dividend problem, and http://ssrn.com/abstract=1567218 on pricing American options.


Still the most important speed improvements will come in from your code: one technique that is extensively used in quoting servers is pre-computation. Basically you continuously compute prices for the stock price $\pm 0.1$ and volatility $\pm 0.01$, so when spot or vol moves you used pre-computed cached value (or interpolated from closest values).


No comments:

Post a Comment

technique - How credible is wikipedia?

I understand that this question relates more to wikipedia than it does writing but... If I was going to use wikipedia for a source for a res...