However much finance would like to disown its father discipline; it very much belongs to the economics world which in turn boils down to sociology for nerds.
Economics is about understanding people and how they make decisions and financial models are fairytales about how people operate in the land of markets. They are not very accurate.
What happens when people do something unexpected or 'irrational'? A financial engineer will calibrate her financial model to reality.
There are two financial 'laws' which hold pretty consistently (apart from death and taxes) but a apart from those everything else is a metaphor and a search for intuition rather than steadfast knowledge about how the financial world operates.
Implied volatility is a fudge factor which we add to option pricing models as the rubber hits the road (volatility is a useful fudge because it's not directly measurable; no one can readily refute it!).
Incidentally there is another unknown. Future dividend yield which you can find estimated at iDivs.org.
QuantLib makes finding the implied volatility of an option very easy.
Continuing from where we left off with our previous option example. Add a line to solve for implied volatility using its market value like so
implied_volatility_rate = option.impliedVolatility(market_value, process)
and simply set our volatility to the rate we just found (OO for the win!)
Runnable code can be downloaded here.
volatility_rate.setValue(implied_volatility_rate)
Assuming the model is correct (big assumption) we now have a nicely capsulated way to understand our American option and understand how we will be impacted by all manner of possible bumps in the road ahead.
Financial models are inaccurate. In this case it is obvious by how they inconsistently report implied volatilities on the same stock for the same expiry (i.e. the implied volatility smile).
In contrast to the constant nature of laws, financial models are capricious friends.
Nevertheless approximate intuition is far better than nothing.
[Next post in series]