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 to Option[n] # Then subtract Option[n+1] from Option [n] and compare difference with Delta * PFac def OpName = 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;