Take the 2-minute tour ×
Quantitative Finance Stack Exchange is a question and answer site for finance professionals and academics. It's 100% free, no registration required.

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?

share|improve this question
    
That is strange, what are your parameters? –  Bob Jansen Apr 24 '12 at 17:22
    
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. –  Mário Marinato Apr 24 '12 at 17:32
    
And what are your parameter values? –  Bob Jansen Apr 24 '12 at 18:32
    
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. –  Mário Marinato Apr 24 '12 at 19:47
    
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)? –  Bob Jansen Apr 24 '12 at 20:31
show 1 more comment

1 Answer 1

up vote 1 down vote accepted

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.

share|improve this answer
    
Agreed, but in this case I would not fiddle too much with precision settings and look at other parameterizations. Penny options are a rarity. –  Bob Jansen Apr 24 '12 at 20:39
    
@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. –  SRKX Apr 24 '12 at 20:41
    
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. –  Mário Marinato Apr 24 '12 at 21:11
add comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

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