I'm developing a software to calculate the implied volatility of an option using the Black & Scholes formula and a trial-and-error method. The implied volatility values I get are correct, but I noticed that they are not the only possible ones.

For example, with a given set of parameters, my trial-and-errors lead me to an implied volatility of 43,21%, which, when used on B&S formula, outputs the price I started with. Great!

But I realized this 43,21% value is just a fraction of a much wider range of possible values (let's say, 32,19% - 54,32%).

Which value should I, then, pick as the 'best' one to show to my user?

  • $\begingroup$ That is strange, what are your parameters? $\endgroup$
    – Bob Jansen
    Apr 24, 2012 at 17:22
  • $\begingroup$ My parameters are the ones the B&S formula requires: - Underlying stock current price. - Option strike price. - Time to expire. - Interest rate. - Volatility. The four first ones are known to me, and I want to discover the last one, given an option market price. I start by trying it with the historical volatility and, by trial-and-error, adjust it until the result is the same as option market price. When it comes to out-of-the-money call options, the historical volatility usually is a valid answer, but, as I said before, it is a fraction of a wide range of valid answers. $\endgroup$ Apr 24, 2012 at 17:32
  • $\begingroup$ And what are your parameter values? $\endgroup$
    – Bob Jansen
    Apr 24, 2012 at 18:32
  • $\begingroup$ An example: underlying stock price is 21.19. Option strike price is 35.50. Time to expire is 27 days (which I divide by 365 and use as 0.0740. Interest rate: 9.75. Current option market price: 0.01. Then, as I said on my first comment, the first try is the historical volatility, which is 31.27%, and B&S gives me 0.01 as the fair price. Again: great! But I discovered that, with those same parameter values, the volatilities 10% and 80% also give me the same 0.01 as fair price. $\endgroup$ Apr 24, 2012 at 19:47
  • $\begingroup$ That's a bit of an edge case of course. This option is very far out of the money. What happens when you try with a more valuable option (and a more useful example)? $\endgroup$
    – Bob Jansen
    Apr 24, 2012 at 20:31

1 Answer 1


The reason why you get the same result (price) from the BS formula is because your are missing precision in the computations.

When you compute your trial and errors, you have certainly defined a constant $\epsilon$ which defines when the algorithm has to stop: $(p - \bar{p})^2 < \epsilon$ where $p$ is the market price and $\bar{p}$ is the price you got using the volatility estimate $\bar{\sigma}$ in the BS Formula : $\bar{p}=\text{BS}(\bar{\sigma},\cdot)$. If you want better precision, then you need to reduce $\epsilon$. Consider also that you might be lacking precision from the market price data $p$ that you use.

Usually, you would use a global optimizer such as MATLAB's fmincon where you can setup the precision at which you want the algorithm to stop.

  • $\begingroup$ Agreed, but in this case I would not fiddle too much with precision settings and look at other parameterizations. Penny options are a rarity. $\endgroup$
    – Bob Jansen
    Apr 24, 2012 at 20:39
  • $\begingroup$ @BobJansen: Yeah in practice I agree, but I believe he is lookin to estimate the implied with as much precision as possible for research purposes. $\endgroup$
    – SRKX
    Apr 24, 2012 at 20:41
  • $\begingroup$ Thanks, @SRKX! In fact, it was not a matter of reducing ϵ, but it led me to the real problem: my B&S formula was rounding the result returned to two fraction digits. To out-of-the-money options, the results were almost always below 0.01, in which cases the formula would return 0.01 as the fair price. Thus, based on the example values I gave on a comment above, to every volatility from 10% to 80%, the fair price would be 0.01, leading to my confusion. I changed the B&S formula to not round the results and my implicit volatility discovery method worked as I expected. $\endgroup$ Apr 24, 2012 at 21:11

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.