The video below gives an overview of the indicators I use on Thinkorswim to evaluate the trend direction for trend following with options.  It also goes through the process of evaluating a potential credit spread.  In the credit spread analysis we look at risk relative to our stop level and when to enter a credit spread if the market is overextended:

• Terry Elrod

Glad to have found your blog. I’ve been reading and started watching the videos. Very generous of you to post it all. I am on the same path. In partial repayment, wanted to share with you the TOS code for an indicator I coded that also shows HV and IV but also color codes the IV based on it’s rank or percentile within it’s past 52 week range. Different color for each quadrant – 0-25%, 25-50%, 50-75% and 75-100%. Hope you find it useful.

# This code was written by Terry Elrod in December, 2012
declare Lower;
input length = 20;
input basis = {default Annual, Monthly, Weekly, Daily};
def ap = getAggregationPeriod();
assert(ap >= AggregationPeriod.MIN, “Study can only be calculated for time-aggregated charts: ” + ap);
def barsPerYear =
if ap > AggregationPeriod.WEEK then 12
else if ap == AggregationPeriod.WEEK then 52
else if ap >= AggregationPeriod.DAY then 252 * AggregationPeriod.DAY / ap
else 252 * barsPerDay;
def basisCoeff;
switch (basis) {
case Annual:
basisCoeff = 1;
case Monthly:
basisCoeff = 12;
case Weekly:
basisCoeff = 52;
case Daily:
basisCoeff = 252;
}
def clLog = log(close / close[1]);
plot HV = (stdev(clLog, length) * Sqrt(barsPerYear / basisCoeff * length / (length – 1))*100);
HV.SetDefaultColor(GetColor(1));
HV.SetLineWeight(2);
def ivol = if!IsNan(Imp_Volatility)
then Imp_Volatility else 0;
def hightest=highest(ivol,252);
def lowtest=lowest(ivol,
252);
def currentvol=Imp_Volatility;
def iv_range = hightest – lowtest;
def high_iv_range = (iv_range * 0.75) + lowtest;
def mid_iv_range = (iv_range * 0.50) + lowtest;
def low_iv_range = (iv_range * 0.25) + lowtest;
def high_iv = currentvol > high_iv_range;
def med_high_iv = (currentvol mid_iv_range;
def med_low_iv = (currentvol low_iv_range);
def low_iv = currentvol < low_iv_range;
plot IV = currentvol*100;
IV.DefineColor("Above_75", Color.RED);
IV.DefineColor("Above_50", Color.DARK_ORANGE);
IV.DefineColor("Above_25", Color.Yellow);
IV.DefineColor("Above_0", Color.GREEN);
IV.SetLineWeight(2);
IV.AssignValueColor (if high_iv then IV.Color("Above_75") else if med_high_iv then iv.color("Above_50") else if med_low_iv then iv.color("Above_25") else iv.color("Above_0"));

#Plot highvol = hightest*100;
#highvol.SetDefaultColor(GetColor(5));
#Plot lowvol = lowtest*100;
#lowvol.SetDefaultColor(GetColor(5));

• Hi Terry and welcome to the blog!

Thanks for the indicator and I’m sure others who come across it will appreciate it as well. I just put it into TOS and I really like how the shading works. I have a similar indicator that combines IV and HV, but the shading is awesome and mine definitely didn’t do that. Feel free to contact me via email if you have any questions. Enjoy and thanks again . . .

• Justin

Came across your blog from whole street. Are you still continuing to trade spreads in the 40-90 day range? Can you elaborate on what the ATR Trailing stop signifies?

• Hi Justin, thanks for the comment.

I haven’t been trading many options spreads lately, but I don’t mind elaborating on the ATR Trailing stop. Intuitively, Average True Range gives us an idea of how much a market moves on a daily basis. The trailing stop takes the market price and subtracts ATR times some multiple (I usually use 3.5 times ATR). That stop is saying if price trades 3.5 times the amount it usually moves in a day in the wrong direction, the trend is likely to have stopped or reversed. Hope that helps and feel free to write back if it doesn’t.

Best,
Dan