Option Delta Scanner for ThinkorSwim


I found this interesting scanner by justinsandock called Argon Option Delta Scan for ThinkorSwim. It's supposed to help you:

  • Looks for Options which can be sold for more than their Probability ITM.
  • The value of selling the Option is found by subtracting the next OTM option from the current.
  • The Probability ITM is approximated with the Option Delta.
  • Because options can be for $1, $0.50 or $2.50 etc the value is divided by the difference in strikes to assess risk.
  • Finally there is a Profit Factor so it can look for options giving a profit larger than a set ratio.

  • As reported by our members and @markos mentioned that this study appears to be incomplete from 3 years ago. As a result, this scanner will not work on ThinkorSwim. I'm marking it Archived here unless someone can contribute and make something out of it. I apologize for the confusion.

In the Money Options Scanner

# Argon Option Delta Scan
#Justin Sandock 9/19/2016

#Use the TOS Option Filters to set Volume and Days to Exp

def PFac = 1; # Defined minimum mark up value
def price = close;
def ITMMAX = 33;
def ITMMin = 28;

plot scan = ((Close(symbol, price) - Close(GetNextOTMOption, price))
/ (GetStrike() - GetStrike(GetNextOTMOption))) > (Delta() * PFac0);

# AND ITMMAX > Delta() < ITMMin;

Here's another one

# Argon Option Delta Scan
#Justin Sandock 9/19/2016

input PFac = 1; # Defined minimum mark up value
input StrikeDepth = 5; How deep OTM of options to check
input price = close;

# Get MarkC and Delta at current Strike
# Get MarkL at lower Strike
# Get MarkDif of MarkC-MakrL.
# Get StrikeDif between strikes of MarkC and MarkL
# Is MarkDif < Delta * StrikeDif * PFac?

# Or get all OTM options for underlying and add to list like Option[0] to Option[n]
# Then subtract Option[n+1] from Option [n] and compare difference with Delta * PFac

def OpName[0] = GetATMOption();

For n = 0 to StrikeDepth do
  OpPrice[n] = GetValue(price, OpName[n])
  OpName[n+1] = GetNextOTMOption(OpName[n])
  StrikeDif = Get

For i = 0 to StrikeDepth do
  If OpPrice[i] - OpPrice[i+1] > Delta(OpName[i]) * PFac then PRINT???

Plot Scan

# def OpCode = GetATMOption();
# def MarkC = GetValue(price);

Fold n = 0 to StrikeDepth with MarkL do MarkN(n) = GetNextOTMOption()

plot scan = PFac < (fold n = 0 to length with s do s + getValue(price, n, length - 1)) / length;

plot scan = iv_percentile > 50.0;
Last edited:


Active member
2019 Donor
Thanks Ben...I copied these codes and paste it as a studies or scan but it does not seem to work.. Please advise. thank you


New member
Can you shed some lights on using option delta in thinkscripts? I was not able to get the delta values that match TOS option chain.

I copied the following script from TOS and applied to a deep ITM option (.spy200221c297). The TOS option chain shows delta of 0.73 today while the plot shows 0.58, which is a big difference.

declare lower;
def epsilon = 0.01 * close(GetUnderlyingSymbol());
plot approxDelta = (OptionPrice(underlyingPrice = close(GetUnderlyingSymbol()) + epsilon) - OptionPrice()) / epsilon;
plot Delta = Delta();

Does the Delta() in thinkscript support volatility smile approximation as it's my intended setting? or does it use other volatility calculation mode?

Thanks for your time!

Similar threads