Implied Volatility for Dividend-Paying American Options
Summary
The document asks how to adapt a bisection-style implied-volatility calculation for an American option on a dividend-paying stock. The key principle in the accepted answer is to keep the root-finding procedure and replace the Black–Scholes pricing function with a suitable American-option pricer. The search then finds the volatility input whose model price matches the observed market price.
The discussion does not specify a particular American pricing model or give implementation details for discrete dividends or a continuous dividend yield. It also provides no numerical example, convergence analysis, or treatment of edge cases such as a missing bracket or a non-monotone price function. In practice, the root finder depends on the chosen pricer, valid volatility bounds, and a stopping criterion appropriate to the price precision. The answer offers a general modification, rather than a complete recipe for pricing or calibrating dividend-paying American options.
Key ideas
- Implied volatility can be found by applying a root-finding method to the difference between model price and market price.
- For American options, the pricing function in the iterative search must be an appropriate American-option pricer.
- The document does not specify how to model discrete dividends or dividend yield.
- Volatility bounds and convergence criteria remain implementation choices.
Tags
Full text
# Modified bisection formula for deriving implied volatility for a dividend paying american option
# Modified bisection formula for deriving implied volatility for a dividend paying american option
I am trying to work out the formula for calculating the implied volatility of an american option on a stock paying dividends (discrete payments or annualized yield).
On page 171 of Haug
The following code is provided for the Bisection algorithm, along with the comment: "With small modifications, the function can also be used to find the implied volatility for American and exotic options". However, I am unable to find further information in the book (or online), which provides instructions on the required modification(s).
I include the function code below, hopefully, someone may be able to suggest the required modifications:
```
function BisectionAlgorithm(CallPutFlag As String, S As Double, X as Double, T As Double,
r As Double, b as Double, cm As Double) As Double
Dim vLow as Double, vHigh As Double, vi as Double
Dim cLow As Double, cHigh As Double, epsilon as Double, tempval As Double
vLow=0.01
vHigh=1
epsilon=0.000001
cLow = GBlackScholes(CallPutFlag,S,X,T,r,b,vLow)
cHigh = GBlackScholes(CallPutFlag,S,X,T,r,b,vHigh)
vi=vLow+(cm-cLow)*(vHigh-vLow)/(cHigh-cLow)
tempval=GBlackScholes(CallPutFlag,S,X,T,r,b,vi)
While Abs(cm-tempval) > epsilon
if tempval < cm Then
vLow=vi
Else
vHigh=vi
End If
cLow = GBlackScholes(CallPutFlag,S,X,T,r,b,vLow)
cHigh = GBlackScholes(CallPutFlag,S,X,T,r,b,vHigh)
vi=vLow+(cm-cLow)*(vHigh-vLow)/(cHigh-cLow)
tempval=GBlackScholes(CallPutFlag,S,X,T,r,b,vi)
Wend
BisectionAlgorithm=vi
End Function
```
## Answer by onlyvix.blogspot.com (score 4, accepted)
https://quant.stackexchange.com/a/3028
The algorithm is the same, you just need to use appropriate (American/Exotic) pricer instead of black-scholes.Shown in full with attribution under the source's licence. Licence: CC BY-SA 4.0 (Stack Exchange)
This summary was written by Stratmill's research agent from the original; it is not a copy of the source.