# How to calculate the implied volatility using the binomial options pricing model

I want to calculate IV for american options with dividends. So far I have found algorithms to calculate the option price given a volatility.

Please can you point me to paper or implementation (R, python or any other language) of an algorithm that can calculate the IV given option prices, risk free rate, dividends, etc.

• There is a misunderstanding of such 'pricing' models that is even very prevalent here at QFbeta: BS, binomial models,... are not really pricing models, they are translation models between price <-> volatility. The price is volatility and that price is determined in the market through supply and demand. It is not that option prices are bought and sold but in reality volatility is bid and offered. So if you truly look for a model that models volatility then you need to dig a lot deeper than a simple binomial model (even the whole garch family does not add much value). – Matthias Wolf Jun 15 '13 at 13:36
• Thanks Matt for your perspective. But this question is more practical rather than philosophical. In your terms, what I'm looking for is the inverse function of price = f(volatility) for the Ross-Cox-Rubinstein aka binomial model. – Victor Jun 15 '13 at 14:23

Here is a paper by the infamous Mark Rubinstein that should get you started.

http://www.haas.berkeley.edu/groups/finance/WP/rpf232.pdf

And here the trinomial tree version:

http://www.ederman.com/new/docs/gs-implied_trinomial_trees.pdf by no lesser than Derman and Kani.

This may also help with the actual computations:

http://sfb649.wiwi.hu-berlin.de/papers/pdf/SFB649DP2008-044.pdf

• @ Matthias Wolf: unsure if you still roam around this forum but links 1 and 2 no longer work. Like the OP, I am also interested in a simple algorithm which back solves for the IV for an American option (continuous dividend case). Any additional references which may help with figuring this out would also be greatly appreciated. – AShortSqueeze May 1 at 1:46

You don't need an algorithm to solve that - just program a simple BS option calculator using standard BS with dividend in Excel and fix all the inputs except the volatility. Then use goal seek/solver to change the volatility to get the given price and as a result you will have the implied volatility of the price.

• Making BS assumptions to derive volatility from prices when the underlying translation tool was specified as binomial does not sound right to me unless I am missing something. – Matthias Wolf Jun 16 '13 at 0:17
• Indeed..however the approach should be the similar. Just set up the binomial tree and fix all the other inputs. The change of volatility should only affect 2 the up move and down move (at least in my CRR model). But I guess Veeken already solved it more beautifully. – Olorun Jun 16 '13 at 9:08
• The approach is not similar. You can't push prices from a Binomial model through a BS pricer and say the resulting volatilities are the price equivalent from the Binomial model. – Matthias Wolf Jun 16 '13 at 12:11
• @Olorun's approach works for computing the IV of a European Option using the simple BSM with continuous dividends. This approach is NOT appropriate for computing the IV of an American option. – AShortSqueeze May 1 at 1:55
• Depends on the American option. As far as I know, if there's no dividends, it will still work. And I believe for single dividend there's also an approximation avilable. – Olorun May 1 at 2:05

I tried to answer this in the comments but it got too long. simplest approach would be to guess a low and high volatility that is guaranteed to envelope the one to solve for. then compute the corresponding options prices at each of these guesses using your pricer. then while the difference between your guesses (the low/high volatility) is greater than some specified espilon, compute the price of an option at the average of your two guesses. Now adjust either your low volatility guess or high volatility guess depending on whether the price of the option at the average volatility is greater than or less than the price you are given from the market. This will then allow you to push up your low volatilty guess to where the average of the guesses was or push down your high guess to the average. Thus you bisect and iterate, and ultimately your two guesses are equal and given you the price of the option given from the market. This is the simple algo in so many words.

• Hmm, you seem to mix observed probabilities and prices together with risk-neutral probabilities and hence state-contingent prices. I do not see how you would end up with with a local volatility structure that is consistent with observed option prices. Where do you derive risk-neutral probability states that are necessary to fit the model to options prices in order to setup a volatility structure that is consistent with such prices? – Matthias Wolf Jun 16 '13 at 12:42
• Upon second read could it be that you misread the question? This is about deriving a volatility structure from observed options prices. What you are describing is similar to the Newton-Raphson root finder. For that you need a pricing/translation tool. The person asking this question wants to do it through the binomial/possibly trinomial model not Black Scholes. There are actually advantages to using a binomial model over black scholes despite it being more computationally intensive. I can elaborate if desired but just wanted to point out you most likely missed the point here. – Matthias Wolf Jun 16 '13 at 12:55
• yeah...i just stopped by before sleeping and clearly i didnt appreciate that indeed he may be looking for a local vol structure. but if he's not, and wants to assume $\sigma$ is constant, i fail to see how what i describe above won't work. – Veeken Jun 16 '13 at 13:37
• maybe the asker can elaborate what he is really looking for... – Matthias Wolf Jun 16 '13 at 13:52

Checkout QuantLib. It has an implied volatility calc.

https://github.com/lballabio/quantlib/blob/master/QuantLib/ql/instruments/impliedvolatility.cpp?source=cc

• @ unclepaul84: the above link no longer works unfortunately – AShortSqueeze May 1 at 1:50