I am building a little Excel file that take some option prices in input and plots the volatility smile/surface. I have a script that reads market prices from the option chain for 3 different maturities and save the option prices in an Excel file. Each time I save option prices I also save the price of the underlying (in this case the DAX index).
I have two problem. The first should be easy to solve, but I just ask you if I'm right. Basically when maturity approaches, the B&S IV that I get applying the Newton-Raphson algorithm is very very low. Roughly, for an ATM position I get something around 5%. Is it because I have to scale up this figure by square root of time to have an annualized value? Or the IV is already annualized and i just have to see for some other error somewhere else?
The second problem is more tricky to me. When I extract the prices from the chain I have noticed that when I then calculate the IV for some strike I always get error (the numerical algorithm fails to converge to the solution). As said, I always use the underlying price at the moment the chain has been extracted so that data should be fine.
Is it possible that is just because for some strikes the option prices weren't updated? Weirdly this happens also for some strike that are not deep OTM. But, if this is the case, what would be the best way to proceed? My goal is plot an updated volatility smile for each maturity.
Should I calculate the price for those strike that I suspect weren't up to date at the moment of the download (I would identify these strikes by looking at those contract for which I'm not able to calculate the IV)?
But to calculate the theoretical price I still need an IV to input in the B&S formula... So should I interpolate the volatilities that I already have and the use the interpolated IV to calculate the missing prices?
For example, this morning with EuroStoxx trading at 3100.94 I recorded for the Call striking at 2825 a bid price of 273.6 and an ask price of 276.8. The time to maturity of the contract is 0.37534246575342467 and if I use r=0.01 I cannot find a solution for the IV. I think it's just because the price wasn't updated to basically these bid/ask call prices are not in sync with the underlying. But it's just a guess.