Scanning for Support and Resistance Probabilities

I have been in search for a signal I could use for a short vertical spread or naked short option strategy. So my main concern has been to find a level, which will most probably not be penetrated over the next few bars.

This is what I came up with.

Support and Resistance

We are all familiar with oscillators like the RSI indicator. It gives an idea if the market is oversold or overbought.

The chart gives a basic idea of the signal I am looking for. Once the indicator is leaving the overbought / oversold area, there should be a good chance that the market actually stays above or below it’s previous high or low. If this probability is high enough, it would be a great signal for a short vertical spread or to sell a naked put / call option. (be aware of the unlimited risk in the naked short trade!) Both strategies win, if the selected level is not penetrated at expiry.

What is manually drawn on the chart above can also be done automatically. The following chart shows how it looks like if you use the code given at the end of the article.

Every time the RSI leaves the extreme zones the indicator will draw the previous high or low for a given prognosis interval. To enhance the chances and not to get too many signals in a trending market I also made use use of the ADX indicator. So to see a signal on the chart, RSI has to leave the extreme level while ADX signals a sideway market. This should give the best signal quality.

The three signals shown would have resulted in a winning trade as the market did not cross the shown support / Resistance levels. But how does it work out in the long term?

Scanning for Probabilities

To find out how good my chances with this setup are, I did a simple scanner using the  tradesinal software suite.

First I wanted to find out what my chances on expiry are. Which percentage of all RSI overbought / oversold signals actually stayed above or below the previous high. This probability will give me a clue if it might be a good idea to trade the signal in the future.

The first two columns of the scanner show the win probability at the end of the prognosis. If your option expires at this date, this would represent the win probability of your trade. The bear win % represents the trades, when RSI crosses below the overbought zone with ADX below 20. The Bull win % represents the win rate for signals generated when the RSI crosses above the oversold zone and ADX below 20.

I also added a 1 standard deviation offset to the support resistance levels. The columns Bear penetrate and Bull penetrate show the percentage of occurrences, when this level has been penetrated within the prognosis period. Trades where the offset level, one standard deviation below the support and one standard deviation above resistance has been penetrated would have been quite nerve wrecking during the trade, but could still end up as a winning trade. These numbers give me an idea, how exiting the trade might have been

Take the first row as an example: AAL, american airlines: in 80% of all bearish signals the stock ended below the resistance level, but 40% of the signals also first crossed above the previous high + 1 standard deviation. Not the best setup for a naked short call, but maybe a good stock for a short vertical spread…

Finally the event column informs you if there is a signal today. +1 for bullish (support found), -1 for bearish (resistance found)

Inputs and customization

The indicator / scanner is done in a highly customizable way. You can select the period of the RSI indicator and the period of the prognosis.

You can also set the adx level and the level for overbought and oversold. If you set offsetpenetrate to true the 1 standard deviation offset is activated, otherwise the offset is set to zero and the Bear and Bull penetrate % column would show you how likely it is the support / resistance level has been touched or broken within the trade.


And now it’s time to start your own research. Change the periods and levels or replace the used RSI with an other indicator to find the best probabilities for a list of stocks and markets.

Research pays off…


Tradesignal Equilla Code for this indicator:

meta: subchart(false), shortcode(" ");
Inputs: period(14), prognosis(10), adxlevel(25), overbought(70),oversold(30), showme(suppres,winpercent,indicator),offsetpenetrate(false);
Variables: myrsi,hh,ll, i, j, offset, event, bearevent(0), bullevent(0), bearsuccess(0), 
			bullsuccess(0), bullpenetrate(0), bearpenetrate(0);

//double exponential smoothing


if offsetpenetrate then offset=stdev(close,prognosis*2) else offset=false;

if adx(period)<adxlevel then begin // only do it in sideway markets
	if myrsi crosses below overbought then begin
		//do a loop and draw resistance into the future
		for i=0 to prognosis begin
			if showme=suppres then drawsymbol[-i](hh,"resistance");
		if close[-prognosis]<hh then bearsuccess=bearsuccess+1;
		for j=1 to prognosis begin
			if close[-j]>hh+offset then begin
	if myrsi crosses above oversold then begin
		for i=0 to prognosis begin
			if showme=suppres then drawsymbol[-i](ll,"support");
		if close[-prognosis]>ll then bullsuccess=bullsuccess+1;
		for j=1 to prognosis begin
			if close[-j]<ll-offset then begin
if islastbar and showme=winpercent then begin
	if host=hostchart and bullevent*bearevent>0 then begin
		drawtext[-1](hh,"BearWin%","EndWin% "+round(100*bearsuccess/bearevent,0)+"%");
		drawtext[-1](ll,"BullWin%","EndWin% "+round(100*bullsuccess/bullevent,0)+"%");
		drawtext[-20](hh,"BearPenetrate%","Penetrate "+round(100*bearpenetrate/bearevent,0)+"%");
		drawtext[-20](ll,"BullPenetrate%","Penetrate "+round(100*bullpenetrate/bullevent,0)+"%");
	end else
	if host=hostscanner and bullevent*bearevent>0 then begin
		drawsymbol(round(100*bearsuccess/bearevent,0),"Bear Win%");
		drawsymbol(round(100*bullsuccess/bullevent,0),"Bull Win%");
		drawsymbol(round(100*bearpenetrate/bearevent,0),"Bear Penetrate%");
		drawsymbol(round(100*bullpenetrate/bullevent,0),"Bull Penetrate%");
if host=hostchart and showme=indicator then begin



Tradesignal workspace download (configured  for teletrader data)