Use the grid solver to generate american option values under a default model with survival probabilities not linked to equity prices. and run them through a bisective root search method until a constant volatility matching the provided option price has been found.

1 2 3 4 5 6 7 | ```
american_implied_volatility(option_price, callput, S0, K, time,
const_default_intensity = 0, survival_probability_fcn = function(T, t,
...) { exp(-const_default_intensity * (T - t)) },
default_intensity_fcn = function(t, S, ...) { const_default_intensity +
0 * S }, ..., num_time_steps = 30, structure_constant = 2,
std_devs_width = 5, relative_tolerance = 1e-04, max.iter = 100,
max_vola = 4)
``` |

`option_price` |
Option price to match |

`callput` |
1 for calls, -1 for puts |

`S0` |
initial underlying price |

`K` |
strike |

`time` |
Time from |

`const_default_intensity` |
A constant to use for the instantaneous default intensity in case |

`survival_probability_fcn` |
(Implied argument) A function for probability of survival, with
arguments |

`default_intensity_fcn` |
A function for computing default intensity
occurring at a given time, dependent on time and stock price, with
arguments |

`...` |
Additional arguments to be passed on to |

`num_time_steps` |
Minimum number of time steps in the grid |

`structure_constant` |
The maximum ratio between time intervals |

`std_devs_width` |
The number of standard deviations, in |

`relative_tolerance` |
Relative tolerance in instrument price defining the root-finder halting condition |

`max.iter` |
Maximum number of root-finder iterations allowed |

`max_vola` |
Maximum volatility to try |

Estimated volatility

`implied_volatility_with_term_struct`

for implied volatility
of European options under the same conditions, `american`

for the
underlying pricing algorithm

Other American Exercise Equity Options: `american`

,
`control_variate_pairs`

Other Equity Independent Default Intensity: `american`

,
`black_scholes_on_term_structures`

,
`blackscholes`

,
`equivalent_bs_vola_to_jump`

,
`equivalent_jump_vola_to_bs`

,
`implied_volatilities_with_rates_struct`

,
`implied_volatilities`

,
`implied_volatility_with_term_struct`

,
`implied_volatility`

Other Implied Volatilities: `equivalent_bs_vola_to_jump`

,
`equivalent_jump_vola_to_bs`

,
`fit_variance_cumulation`

,
`implied_jump_process_volatility`

,
`implied_volatilities_with_rates_struct`

,
`implied_volatilities`

,
`implied_volatility_with_term_struct`

,
`implied_volatility`

1 2 3 4 5 6 | ```
american_implied_volatility(25,CALL,S0=100,K=100,time=2.2,
const_short_rate=0.03, num_time_steps=5)
df250 = function(t) ( exp(-0.02*t)*exp(-0.03*max(0,t-1.0))) # Simple term structure
df25 = function(T,t){df250(T)/df250(t)} # Relative discount factors
american_implied_volatility(25,-1,100,100,2.2,
discount_factor_fcn=df25, num_time_steps=5)
``` |

Questions? Problems? Suggestions? Tweet to @rdrrHQ or email at ian@mutexlabs.com.

All documentation is copyright its authors; we didn't write any of that.