I am trying to implement a FIndRoot method to solve for Implied Volatility. I am trying to do something like shown in this book from 1998:
Dropbox - Error - Simplify your life. 1
However, when I try to implement this with the now built-in FinancialDerivative function, I get errors:
CallImpliedVol[s_,k_,r_,t_,price_] := \[Sigma] /. FindRoot[FinancialDerivative[{"European", "Call"},{"StrikePrice"->k,
"Expiration"->t},{"Volatility" ->\[Sigma],"InterestRate"->r,"CurrentPrice"->s}]==price, {\[Sigma],.2}]
CallImpliedVol[11,10,.05,.25,1]
Returns errors:
FinancialDerivative::checknumeric: Parameters {Volatility??} cannot have non-numeric values.
FindRoot::jsing: Encountered a singular Jacobian at the point {?} = {0.2}. Try perturbing the initial point(s).
I am not sure what to try here. Building my own function to replace a built-in function would work, but I would hope there is a more elegant solution. Does anyone have any ideas?