• 1
• 2 rwang716
Topic Author
Posts: 12
Joined: July 18th, 2019, 6:18 am

### Explicit Formula for computing IV

Working on the fast computation of BS implied volatility. I have read some papers regarding the explicit formula ofr BS IV. Like the Li(2005) paper: A new formula for computing implied volatility. However, I met a very serious problem in their formulas because the terms in the square root bracket can goes to negative is the option price is small enough, the simple formula by Corrado and Miller(1996) also suffers from the same problem. How can I solve this problem?
BTW, the explicit formula only serves as the initial guess for the subsequent numerical methods.
I don't know how to insert image for the formula, sorry. Cuchulainn
Posts: 59679
Joined: July 16th, 2004, 7:38 am
Location: Amsterdam
Contact:

### Re: Explicit Formula for computing IV

There was a long-running discussion on this a while back

https://forum.wilmott.com/viewtopic.php?f=34&t=97812&p=732891&hilit=all+for+iv#p732891

The most robust was least squares AFAIR. The posts have unfortunately been become almost unreadable.

Since this is a nonlinear problem I would be surprised if there is an explicit formula. It would be the first in history.

terms in the square root bracket can goes to negative is the option price is small enough,
Can happen. It means the (implicit) assumptions/constraints on which the algorithm is based no longer hold. rwang716
Topic Author
Posts: 12
Joined: July 18th, 2019, 6:18 am

### Re: Explicit Formula for computing IV

There are some approximation IV formulas that are 99.9% accurate. However, the problem is that those formula only works for near-ATM options, for options that are, e.g., 25% ITM/OTM, the formula becomes nonsense. So I just wonder if there are some approximation formulas that does not have this kind of issue. FaridMoussaoui
Posts: 412
Joined: June 20th, 2008, 10:05 am
Location: Genève, Genf, Ginevra, Geneva

### Re: Explicit Formula for computing IV

Isnt' Li formula (15) designed for the deep I(O)TM calls? rwang716
Topic Author
Posts: 12
Joined: July 18th, 2019, 6:18 am

### Re: Explicit Formula for computing IV

Do you mean Li(2005) formula?
I don't think so. I have tried this formula and it produces imaginary numbers.
Try the input: S = 2800, K = 3050, T = 1/12, r = 0.02, divi = r, call price = 15.36.
The result is a negative value in the square root bracket. Cuchulainn
Posts: 59679
Joined: July 16th, 2004, 7:38 am
Location: Amsterdam
Contact:

### Re: Explicit Formula for computing IV

I tried c = 15.3559 and get iv = 0.10979904 using both Differential Evolution (DE) and Brent's method in Boost C++.
A benign problem, numerically.

//
The approach taken in LI 2005 (Taylor series, >>) does not appeal to me at all.
I've lost count of the number of time that 'explicit formula' is mentioned in the text..
Last edited by Cuchulainn on July 29th, 2019, 7:18 pm, edited 1 time in total. FaridMoussaoui
Posts: 412
Joined: June 20th, 2008, 10:05 am
Location: Genève, Genf, Ginevra, Geneva

### Re: Explicit Formula for computing IV

May be because he treated only two cases (as shown in the appendix derivation) for the "asymptotic" behaviour of the IV.

You can have a look to Quantlib function "blackFormulaImpliedStdDevApproximation" for approximations of IV. rwang716
Topic Author
Posts: 12
Joined: July 18th, 2019, 6:18 am

### Re: Explicit Formula for computing IV

As far as the paper I have read, this is an inevitable problem for all formulas that stem from Taylor expansion. All of these formulas works for a small range of option prices and moneyness, which makes them much less useful in practice.
I guess I might just have to read a lot more papers to find the solution.
Last edited by rwang716 on July 30th, 2019, 12:08 am, edited 1 time in total. rwang716
Topic Author
Posts: 12
Joined: July 18th, 2019, 6:18 am

### Re: Explicit Formula for computing IV

I tried c = 15.3559 and get iv = 0.10979904 using both Differential Evolution (DE) and Brent's method in Boost C++.
A benign problem, numerically.

//
The approach taken in LI 2005 (Taylor series, >>) does not appeal to me at all.
I've lost count of the number of time that 'explicit formula' is mentioned in the text..

The iteration methods for computing IV is definitely applicable in all cases, and accurate. However, since in my cases we are looking for the extreme speed-to reduce the time consumption to less than or equal to 1 BS formula time. This makes most numerical solvers methods inappropriate for us. Alan
Posts: 9785
Joined: December 19th, 2001, 4:01 am
Location: California
Contact:

### Re: Explicit Formula for computing IV

Please justify the need for extreme speed. What is the application? rwang716
Topic Author
Posts: 12
Joined: July 18th, 2019, 6:18 am

### Re: Explicit Formula for computing IV

I have pretty much solved the problem myself. Anyway, thanks guys for the help.

BTW, by extreme speed, I mean I hope the time for computing the BS implied vol is less than 0.02us, hopefully 0.01us. My current speed is 0.022us on my laptop but I think with further code optimization I can reduce it to 0.015us. Cuchulainn
Posts: 59679
Joined: July 16th, 2004, 7:38 am
Location: Amsterdam
Contact:

### Re: Explicit Formula for computing IV

I tried c = 15.3559 and get iv = 0.10979904 using both Differential Evolution (DE) and Brent's method in Boost C++.
A benign problem, numerically.

//
The approach taken in LI 2005 (Taylor series, >>) does not appeal to me at all.
I've lost count of the number of time that 'explicit formula' is mentioned in the text..

The iteration methods for computing IV is definitely applicable in all cases, and accurate. However, since in my cases we are looking for the extreme speed-to reduce the time consumption to less than or equal to 1 BS formula time. This makes most numerical solvers methods inappropriate for us.
Prove it! Sounds a bit waffly... haslipg
Posts: 5
Joined: July 11th, 2013, 9:03 am

### Re: Explicit Formula for computing IV

I used found this method very reliable https://www.ssrn.com/abstract=2908494 Cuchulainn
Posts: 59679
Joined: July 16th, 2004, 7:38 am
Location: Amsterdam
Contact:

### Re: Explicit Formula for computing IV

I used found this method very reliable https://www.ssrn.com/abstract=2908494
Looks good. I am just wondering about multiple calls to exp() and testing for y < 0 etc. AFAIR if-else tests in loops are an issue? Cuchulainn
Posts: 59679
Joined: July 16th, 2004, 7:38 am
Location: Amsterdam
Contact:

### Re: Explicit Formula for computing IV

Another choice is a bisection/Newton combi (reliability/speed) that I find useful if the nonlinear function is unimodal:

1. We can pre-compute the number of iterations (and hence number of function evaluations!) needed for a given tolerance (e.g. 1/10?) with Bisection. The value will be the seed for Newton. Espen Haug in his book how to compute the initial interval/bracket for the solution.

https://en.wikipedia.org/wiki/Bisection_method

2. Since the seed is in the neighbourhood of the true solution, then 2-3 iterations of Newton is enough. all things being equal.

3. More upmarket, we might need to compute the 'initial bracket'.
https://en.wikipedia.org/wiki/Kantorovich_theorem  