Skip to content
All library documents

Implied Volatility Estimation and Aggregating Stock Option Volatility

Article Quant Q&A · Author: Chad

Summary

The document distinguishes two tasks that can be confused when interpreting a stock's displayed implied volatility. First, implied volatility for an individual option can be found by solving for the volatility that makes a Black–Scholes price match the market price. The answer describes Newton's method, using vega as the price sensitivity to volatility, and explains that iteration stops when successive values are sufficiently close. It also includes a bisection-based implementation for a call option.

Second, a stock-level volatility measure requires combining implied volatilities across option contracts. The response compares this idea to a VIX-style index and suggests that providers may use maturity and open-interest weighting, while emphasizing that the exact ThinkOrSwim methodology is unknown. The discussion offers a conjecture about broker practices rather than a verified formula, and its code examples illustrate option-level inversion rather than establishing the platform's aggregation method.

Key ideas

  • Option implied volatility can be found by matching a theoretical Black–Scholes price to the observed market price.
  • Newton's method uses vega as the derivative in the volatility search, while bisection provides an alternative numerical approach.
  • A stock-level implied volatility measure aggregates information across multiple option contracts.
  • The exact weighting and construction used by ThinkOrSwim are not confirmed in the document.

Tags

Full text
# Implied Volatility of stock on Think or Swim


# Implied Volatility of stock on Think or Swim












Think or swim has this thing where they have do a implied volatility of a stock. I have chatted with the TOS people but they aren't terribly helpful. Regardless they did send me two images of what they consider to the be formula. I'm not exactly sure if this is a good formula or something they just made up for me to go away. So I have attached the two screen shot.

Based on my poking around I would guess it's the weekly implied averages of the options one month out?

Update: I'm starting a bounty, cause I need to see a real life example from the US stock exchange, such as CMG, NFLX or whatever.

Does anybody have a clue where this formula came from, the implied volatility of stock formula? TOS formula is below, but I'm thinking it's weekly averages one month out? Thanks

Update: I'm starting a bounty, cause I need to see a real life example from the US stock exchange, such as CMG, NFLX or whatever. Although I believe the answer to be correct, I need a real life example to understand it.

## Answer by Richi Wa (score 11)

https://quant.stackexchange.com/a/37673

What they gave you is Newton's formula.

If you have a function $f(x)$ then you can find the value $x_0$ such that $f(x_0) = 0$ by this method. It uses the derivative $f'$ which in your case is the vega.

Your function is: $$ f(x) = BS(x) - M $$ where $BS$ is the theoretical price with volatility $x$ and $M$ is the marketprice. Then $f'(x)$ is the derivative of the theoretical privce w.r.t. to the volatility - thus the vega. Note that

$$f(x_0) = 0 \Leftrightarrow BS(x_0) = M$$ for some volatility $x_0$.

The equation with the $\epsilon$ means that you stop if two consecutive values are close enough.

## Answer by David Addison (score 4)

https://quant.stackexchange.com/a/37967

Richard's answer is the correct answer to a slightly different question. I think what you’re asking for is the weighted average option implied volatility for a stock.

The implied volatility of a stock is analogous to the CBOE’s VIX Index for the S&P 500 Index (other securities have IV indices as well). The VIX uses a known methodology for imputing the implied volatility of a weighted strip of options in order to interpolate the one-month implied volatility of the index. A detailed description of the VIX' calculation is available on the CBOE website. Also, see the previous post for a detailed explanation on the evolution of the VIX.

The first step is always to determine the implied volatilities a cross-section of option contracts. Richard provides one such method. I do not want to detract from it.

The next task is to aggregate the individual option contracts in a meaningful way. There are likely significant differences in how the “sausage is made” amongst various brokers and data-providers.

I assume that most use methods and heuristics to come up with something analogous to the VIX. On the simplest level, the implied volatility index for any given stock is an open-interest-weighted and maturity-weighted weighted average of the individual options’ implied volatilities.

I cannot speak to ThinkOrSwim’s exact approach, but I would be willing to bet it mirrors CBOE’s pre-2014 approach. Also, I do recall that TradeSation’s stock implied volatility algorithm is available in its native programming language—EasyLanguage. From what I recall, TradeStation calculates a stock’s implied volatility as a weighted average of out of the money puts and calls going forward on both the first and second expiration months.

On a side note, just you can't actually trade an index, you cannot trade IV directly, but rather have to take a position in a tracking instrument or create a synthetic position.

Also, I am copying code from VBA which uses the Newton's algorithm to find the implied volatility of a call option given the underlying price, exercise price, time, interest, target (usually market) price of a call, and dividend yield.

- $d_1$

```
Function dOne(UnderlyingPrice, ExercisePrice, Time, Interest, Volatility, Dividend)
dOne = (Log(UnderlyingPrice / ExercisePrice) + (Interest - Dividend + 0.5 * Volatility ^ 2) * Time) / (Volatility * (Sqr(Time)))
End Function
```

- Value of call options

```
Function CallOption(UnderlyingPrice, ExercisePrice, Time, Interest, Volatility, Dividend)
CallOption = Exp(-Dividend * Time) * UnderlyingPrice * Application.NormSDist(dOne(UnderlyingPrice, ExercisePrice, Time, Interest, Volatility, Dividend)) - ExercisePrice * Exp(-Interest * Time) * Application.NormSDist(dOne(UnderlyingPrice, ExercisePrice, Time, Interest, Volatility, Dividend) - Volatility * Sqr(Time))
End Function
```

- Implied call volatility

```
Function ImpliedCallVolatility(UnderlyingPrice, ExercisePrice, Time, Interest, Target, Dividend)
High = 5
Low = 0
Do While (High - Low) > 0.0001
If CallOption(UnderlyingPrice, ExercisePrice, Time, Interest, (High + Low) / 2, Dividend) > Target Then
High = (High + Low) / 2
Else: Low = (High + Low) / 2
End If
Loop
ImpliedCallVolatility = (High + Low) / 2
End Function
```

Shown in full with attribution under the source's licence. Licence: CC BY-SA 4.0 (Stack Exchange)

This summary was written by Stratmill's research agent from the original; it is not a copy of the source.