UPDATED 11-27-19 | UPDATED 6-14-20
Here is a video showing the steps to add this indicator to ThinkorSwim.
First, this won’t be a lengthy discussion about implied volatility or the impact it has on options pricing. That will come later.
This page is meant to describe IV rank in the simplest terms possible. I’ll also provide the script that can be added to ThinkorSwim so the indicator appears as a subgraph on all your charts (see end of this page).
So, What is IV Rank?
In the simplest words I can use to describe, IV rank is a gauge of where current IV is compared with where it’s been. To say it differently, the percentage shown on our charts is a reflection of current IV relative to its past IV. This is probably best demonstrated with an image. Check it out below and I’ll explain.
Click to Enlarge.
If the IV rank of SPY is at 11% today, that means over the past year IV has been lower than its current position only 11% of the time (or higher 89% of the time).
Why is this important?
It helps us determine whether its more beneficial to be net buyers or net sellers of options. When IV rank is high we want to be sellers of options and when it’s low we want to be buyers. That’s all.
The reasoning is simple. When IV is high there is more uncertainty in the market and large moves are expected. If uncertainty is high we should be compensated for the expected extreme moves. Likewise, if IV is low then premiums are low and we’re suggested to be net buyers.
You may have also noticed another useful caveat associated with the IV rank. It can help shed some light on the future direction of an underlying. How? Well, when volatility is high it can only go lower and when it’s low it can only go higher. This isn’t to say it can’t stay high or low for long periods of time, because it absolutely can. It’s just another way to use the tool in our belt.
Individual indicators don’t have to tell a complete story themselves, they only have to add a verse to the page and that’s all IV rank does for us or is intended to do. But I like it because I can quickly see the volatility relationship between past volatility and quickly determine what side of the trade is likely more beneficial.
Have any thoughts? Please share below.
To Add IV Rank to ThinkorSwim Charts:
IV Rank Script: taken from tastytrade.com.
1) Go to ‘Charts’ tab
2) Click on the “beaker” icon
3) Click on “Create”
4) Delete everything in the box. (plot Data = close;)
5) Paste the entire code listed below
6) Name the Study
7) Click ‘OK’
8) Click ‘Apply’
9) Click ‘OK’
def vol = imp_volatility();
input DisplayIVPercentile = yes;
input DisplayImpVolatility= yes;
input DisplayDaily1StandardDev = yes;
input DisplayWeekly1StandardDev = yes;
input DisplayMonthly1StandardDev = yes;
input TimePeriod = 252;
def data = if !isNaN(vol) then vol else vol[-1];
def hi = highest(data, TimePeriod);
def lo = lowest(data, TimePeriod);
plot Percentile = (data – lo) / (hi – lo) * 100;
def lowend = Percentile < 25;
def highend = Percentile > 50;
addlabel(DisplayIVPercentile , concat(“IV Rank: “,aspercent(Percentile /100)), if lowend then color.red else if highend then color.green else color.yellow);
addlabel(DisplayImpVolatility, concat(“ImpVolatility: “,aspercent(vol)), if lowend then color.red else if highend then color.green else color.yellow);
def ImpPts = (vol / Sqrt(252)) * close;
AddLabel(DisplayDaily1StandardDev , Concat(“Daily 1 SD +/- $”, Astext( ImpPts, NumberFormat.TWO_DECIMAL_PLACES)), if lowend then color.red else if highend then color.green else color.yellow); ;
def ImpPts2 = (vol / Sqrt(52)) * close;
AddLabel(DisplayWeekly1StandardDev, Concat(“Weekly 1 SD +/- $”, Astext( ImpPts2, NumberFormat.TWO_DECIMAL_PLACES)), if lowend then color.red else if highend then color.green else color.yellow); ;
def ImpPts3 = (vol / Sqrt(12)) * close;
AddLabel(DisplayMonthly1StandardDev, Concat(“Monthly 1 SD +/- $”, Astext( ImpPts3, NumberFormat.TWO_DECIMAL_PLACES)), if lowend then color.red else if highend then color.green else color.yellow); ;
plot LowVol = 25;
plot HighVol = 50;
——————END ABOVE THIS LINE———————
a) Use 252 as input length for 1-year or 52-week IV Rank
b) You can change 252 to 189 for 9-month IV Rank
c) You can change 252 to 126 for 6-month IV Rank