If you assume that IV is a forward looking measure of the annual standard deviation of the stock, method 3 (and method 2 if you use 1.25, not 0.85) is correct.
Straddles follow the following relationship (going from IV to price and vice versa - derivation below):
Straddle Price = 0.8 * Implied Vol * √(DTE/365) * Stock Price
Implied Volatility = 1.25 * (Straddle Price/Stock Price) * √(DTE/365) * Stock Price
Some people assume IV is using 252 days, but that is only used in a few markets like Brazil. The vast majority of option pricing tools (e.g. Bloomberg), or also the CBOE (check the VIX computations), use ACT/365 as daycount.
Let's compute a straddle price from Black Scholes with some made up inputs.
- Spot = Strike = 100
- year fraction = 1 (Black Scholes uses fractions of years, so 1 corresponds to a full calendar year)
- risk free rate and dividends = 0
- IV = 30%
In Julia, we can define Black Scholes as follows:
# input relevant package
# define cdf
N(x) = cdf(Normal(0,1),x)
# define Black Scholes
function BSM(S,K,t,rf,d,σ, cp_flag)
d1 = ( log(S/K) + (rf - d + 1/2*σ^2)*t ) / (σ*sqrt(t))
d2 = d1 - σ*sqrt(t)
value = cp_flag*exp(-d*t)S*N(cp_flag*d1) - exp(-rf*t)*cp_flag*K*N(cp_flag*d2)
Compute the price of a straddle (sum of long call and long put).
Stock_Price, Strike, n , r, d, IV = 100, 100, 365, 0, 0, 30
straddle_price = BSM(Stock_Price,Strike, n/365, r, d,IV/100, 1)+BSM(Stock_Price,Strike, n/365, r, d,IV/100, -1)
println("Value of Straddle = $(round(straddle_price,digits=4))")
The screenshot below has some additional details, including some math that I will explain below. The reason I include the formulas as a screenshot is that money stack exchange unfortunately does not support Latex / mathjax.
- method 1: The straddle costs $23.8471, suggesting a move of +/- $23.85
- method 3:
Stock_Price * IV/100 * SQRT(n/365), you get a neat solution in our case, which simply corresponds to IV, hence to a +/- $30 range. As you can see, your method 1 cannot be correct, if method 3 were correct.
- method 2 (modified): However, using 1.25 * Straddle results in +/- $29.81 in our example which is almost identical to method 3.
The price of straddle is not equal to the standard deviation (e.g. volatility) but to the mean absolute deviation (MAD) of the stock price. Since this StackExchange does not support mathjax, I included this in the screenshot above. The proof for the last statement can be found on math.stackexchange.com.
TL;DR #2 (further details)
With regards to IV, there are at least two things to consider:
Empirically, IV tends to overestimate RV, commonly referred to as Volatility Risk Premium
IV is the only free parameter in the Black-Scholes-Merton (BSM) model. Higher IV is usually a result of compensation for tail risk.
I used an ATM spot straddle (meaning strike equals spot). Technically, you could use all sorts of strikes for structuring a straddle. The problem however is that IV is not constant along moneyness levels (strike relative to spot). You can read lots of details concerning these statements in this answer.
You should not weight the options IVs for this exercise. The best you can use is the ATM IV. The VIX index is the square root of the theoretical variance swap strike and not directly implied vol. With regards to variance swaps, you have a one for one relation to realized vol because realized variance is the squared realized vol; which is exactly how payoffs are defined: N_var(σ^2_realized - σ^2_k) where σ^2_k is the fair strike of a variance swap. This answer shows some details about variance swaps.
Insofar, using the VIX type value is not a bad idea. On the other hand, a generic 1m ATM vol is not very different from VIX (in value, not in how it is computed). Below is a comparison, where the 1m ATM vol comes from an in house vol surface.
Computing a VIX style (or variance swap strike) value is not trivial. VIX itself (white paper) uses filtering (excluding non-Friday expiration, only uses consecutive strike prices where bid prices are not zero,...) uses a constant maturity treasury rate yield curve with cubic spline interpolation to get the yield on the expiration dates (most would use SOFR or equivalent RFR swap curves for this exercise) and so forth.
A fair variance swap can be shown to equal the integral of weighted prices of out-of-the-money options over all strikes. These weights are being inversely proportional to squared strikes, an application of the Black Scholes closed-form formula for gamma, which ensures results in constant dollar gamma. This answer shows a lot of details and a GIF explaining the VIX calculation graphically.
One obvious problem here is that options markets are composed of a discrete set of option prices for a given maturity. Therefore, it is common to first compute a Vol surface. Practically, it is desired to limit the integration region (strike range) to avoid issues with the weights (especially very small strikes are a concern because of the weighting with squared strikes). Where this truncation is done is probably market dependent and depends on the quality of the available Volsurface (that is also why the VIX white paper explains that they no longer consider strikes of puts below the strikes where two puts with consecutive strike prices are found to have zero bid prices).
The complexity and availability of different methods is why different platforms show different IVx. Which one is more accurate is hard to tell without looking at the exact computations. Either way, you will likely not have access to a Vol surface but you can look at the IV (from your screens) of the options closest to ATM, and compare these IVs to IVx, the IV to use will be somewhere around these values. The whole idea is anyhow just to get a (rough) options implied move of the underlying.