StockFetcher Forums · Filter Exchange · MODIFIED CONNORS RSI(2) FILTER<< 1 ... 15 16 17 18 19 ... 22 >>Post Follow-up
campbellb75
101 posts
msg #95784
Ignore campbellb75
modified
8/23/2010 12:44:27 AM

Hey Kevin-

You haven't updated this thread with the new filter you're using, right? The results sound interesting. I modified your last one to use ATR profit targets and stop losses and was trading it with my IB simulated trading account. Did pretty well at first, but last week it was pretty choppy. Looking forward to seeing how this new one does.

Thanks.

Kevin_in_GA
4,599 posts
msg #95795
Ignore Kevin_in_GA
modified
8/23/2010 2:24:08 PM

New filters

As promised, I have spent most of the last week playing with new optimization software from StrataSearch (which I highly recommend if you want to be glued to your computer for days on end – it’s very cool to watch these optimizations progress at a dizzying pace).

As I had stated before, I am not convinced that the Connors filters, which were developed and optimized against a small set of highly liquid ETFs, can be effectively used against the broader market of stocks. In fact, in my quick testing of several of the Connors filters showed surprisingly low returns when used on stocks over the past few years. Also, each filter has been validated against a specific exit criterion, and they are not all the same. Therefore, when my filter returns a 6/6 on the Connors filters, which exit does one use?

This led me to step back and begin with a clean sheet of paper. Literally.

1. I started by defining a common exit trigger for ANY filter I will be using. The easiest one to use is a close above/below a short term moving average. Since I don’t want these trades to run for more than a week or so, it should be either the MA(5) or the MA(10). Running some simple Bollinger band screens, the MA(10) was almost always more profitable. OK, MA(10) it is!

2. Statistical measures of price divergence from typical norms has been a key component in the overall strategy to date, and I wanted to keep this in any new filter set I developed. Bollinger bands are the classic measure of price movement from its normal trading range, and so at least one filter will use “close above UBB / close below LBB” as a trigger.

3. I wanted to make sure that I used measures of short term oversold/overbought as part of the filter set. The obvious ones were RSI, Williams %R, and CMO. I also included the True Strength Index (TSI) which is a great but relatively unknown indicator. I actually had to have this coded for StrataSearch so that I could optimize on it for these filters.

4. The final component was to look at the recent price rate-of-change for each stock, and select those which have appreciated within the last month. Testing several indicators against a series of ROC’s quickly showed that the higher the ROC, the better the results were. This was true for both longs and shorts – contrary to my original thinking. However, if you push this too high you get fewer trades that tend to cluster around a few trading periods, then go for a while with no trades at all. The current filters are based on a HIGH ROC, and I may need to reduce this to get a more uniform pace of trades – ideally a few per day both long and short.

5. All filters were optimized using data from 1/1/2007 until 6/30/2010, against 1670 stocks (all currently traded stocks that closed above 1, and had an average volume(50) greater than 500,000). All entries were on the open of the day following the signal being generated, and all exits were also at the open on the day following the close above/below the MA(10).


Filter #1. Bollinger Bands

Long Plays

Fetcher[
close above 1
close above MA(100)
close below MA(10)
average volume(50) above 500000
volume above 250000

set{proc30a, close - close 30 days ago}
set{proc30b, proc30a / close 30 days ago}
set{proc30, proc30b * 100}
proc30 above 50

close below lower Bollinger Bands(7, 1.8)

]



Back-testing on this shows 302 trades of which 228 were profitable (75.5%). Average trade length was 5 days, and average return per trade was 5.4%.

Short Plays

Fetcher[
close above 1
close below MA(100)
close above MA(10)
average volume(50) above 500000
volume above 250000

set{proc30a, close - close 30 days ago}
set{proc30b, proc30a / close 30 days ago}
set{proc30, proc30b * 100}
proc30 above 20

close is above upper Bollinger Band(19,2.4)

]



Back-testing on this shows 605 trades of which 470 were profitable (77.7%). Average trade length was 6 days, and average return per trade was 5.4%.



Filter #2. Chande Momentum Oscillator


Long Plays

Fetcher[
close above 1
close above MA(100)
close below MA(10)
average volume(50) above 500000
volume above 250000

set{proc30a, close - close 30 days ago}
set{proc30b, proc30a / close 30 days ago}
set{proc30, proc30b * 100}
proc30 above 50

CMO(3) below -95

]



Back-testing on this shows 533 trades of which 411 were profitable (77.0%). Average trade length was 4 days, and average return per trade was 4.8%.

Short Plays

Fetcher[
close above 1
close below MA(100)
close above MA(10)
average volume(50) above 500000
volume above 250000

set{proc30a, close - close 30 days ago}
set{proc30b, proc30a / close 30 days ago}
set{proc30, proc30b * 100}
proc30 above 20

CMO(8) above 72

]



Back-testing on this shows 760 trades of which 629 were profitable (82.8%). Average trade length was 5 days, and average return per trade was 5.8%.



Filter #3. Williams %R


Long Plays

Fetcher[
close above 1
close above MA(100)
close below MA(10)
average volume(50) above 500000
volume above 250000

set{proc30a, close - close 30 days ago}
set{proc30b, proc30a / close 30 days ago}
set{proc30, proc30b * 100}
proc30 above 50

Williams %R(2) < -92

]



Back-testing on this shows 465 trades of which 372 were profitable (80.0%). Average trade length was 4 days, and average return per trade was 5.5%.

Short Plays

Fetcher[
close above 1
close below MA(100)
close above MA(10)
average volume(50) above 500000
volume above 250000

set{proc30a, close - close 30 days ago}
set{proc30b, proc30a / close 30 days ago}
set{proc30, proc30b * 100}
proc30 above 20

Williams %R(11) > -9

]



Back-testing on this shows 1499 trades of which 1107 were profitable (73.9%). Average trade length was 5 days, and average return per trade was 3.1%.



Filter #4. True Strength Index


Long Plays

Fetcher[
close above 1
close above MA(100)
close below MA(10)
average volume(50) above 500000
volume above 250000

set{proc30a, close - close 30 days ago}
set{proc30b, proc30a / close 30 days ago}
set{proc30, proc30b * 100}
proc30 above 50

TSI(2,2,1) < -67

]



Back-testing on this shows 729 trades of which 548 were profitable (75.2%). Average trade length was 4 days, and average return per trade was 4.6%.

Short Plays

Fetcher[
close above 1
close below MA(100)
close above MA(10)
average volume(50) above 500000
volume above 250000

set{proc30a, close - close 30 days ago}
set{proc30b, proc30a / close 30 days ago}
set{proc30, proc30b * 100}
proc30 above 20

TSI(4,3,1) > 83

]



Back-testing on this shows 611 trades of which 511 were profitable (83.7%). Average trade length was 5 days, and average return per trade was 6.7%.



Filter #5. Relative Strength Index


Long Plays

Fetcher[
close above 1
close above MA(100)
close below MA(10)
average volume(50) above 500000
volume above 250000

set{proc30a, close - close 30 days ago}
set{proc30b, proc30a / close 30 days ago}
set{proc30, proc30b * 100}
proc30 above 50

RSI(3) < 30

]



Back-testing on this shows 769 trades of which 581 were profitable (75.5%). Average trade length was 4 days, and average return per trade was 4.5%.


Short Plays

Fetcher[
close above 1
close below MA(100)
close above MA(10)
average volume(50) above 500000
volume above 250000

set{proc30a, close - close 30 days ago}
set{proc30b, proc30a / close 30 days ago}
set{proc30, proc30b * 100}
proc30 above 20

RSI(4) > 85

]



Back-testing on this shows 789 trades of which 630 were profitable (79.9%). Average trade length was 5 days, and average return per trade was 5.4%.

Looking at the average returns and win percentages for these five filters, they are head and shoulders above the Connors filters (which generally give 70% wins with less than 2% average return).

I will undoubtedly tweak these over the next week or two, mostly by looking at several ROC regimes and possibly the ROC versus the ROC of the SPX to see when a specific filter set will do better than others based on the overall state of the market.

For now, here is the composite filters for longs and shorts. Enjoy.



COMPOSITE LONG FILTER:

Fetcher[

close above 1
close above MA(100)
close below MA(10)
average volume(50) above 500000
volume above 250000

set{proc30a, close - close 30 days ago}
set{proc30b, proc30a / close 30 days ago}
set{proc30, proc30b * 100}
proc30 above 50

set{bblong1, count(close is below lower Bollinger Band(7,1.8),1)}
set{cmolong1, count(cmo(3) < -95, 1)}
set{wlrlong1, count(williams %R(2) < -92, 1)}
set{tsilong1, count(tsi(2,2) < -67, 1)}
set{rsilong1, count(rsi(3) < 30 , 1)}

set{MMcomp1, cmolong1 + wlrlong1}
set{MMcomp2, MMcomp1 + tsilong1}
set{MMcomp3, MMcomp2 + bblong1}
set{composite, MMcomp3+ rsilong1}


add column composite {composite score}
add column bblong1{LBB(7,1.8)}
add column cmolong1 {cmo(3) < -95}
add column wlrlong1 {W%R < -92}
add column tsilong1 {TSI(2,2) < -67}
add column rsilong1 {RSI(3) < 30}
add column MA(10)
composite above 0.5
sort on column 5 descending

draw composite

]




COMPOSITE SHORT FILTER:

Fetcher[

close above 1
close below MA(100)
close above MA(10)
average volume(50) above 500000
volume above 250000

set{proc30a, close - close 30 days ago}
set{proc30b, proc30a / close 30 days ago}
set{proc30, proc30b * 100}
proc30 above 20

set{bbshort1, count(close is above upper Bollinger Band(19,2.4),1)}
set{cmoshort1, count(cmo(8) > 72, 1)}
set{wlrshort1, count(williams %R(11) > -9, 1)}
set{tsishort1, count(tsi(4,3) > 83, 1)}
set{rsishort1, count(rsi(4) > 85 , 1)}

set{MMcomp1, cmoshort1 + wlrshort1}
set{MMcomp2, MMcomp1 + tsishort1}
set{MMcomp3, MMcomp2 + bbshort1}
set{composite, MMcomp3 + rsishort1}


add column composite {composite score}
add column bbshort1{UBB(15,2.0)}
add column cmoshort1 {cmo(8) > 72}
add column wlrshort1 {W%R > -9}
add column tsishort1 {TSI(1,4) > 86}
add column rsishort1 {RSI(4) > 85}
add column MA(10)
composite above 0.5
sort on column 5 descending

draw composite

]



campbellb75
101 posts
msg #95797
Ignore campbellb75
8/23/2010 4:25:15 PM

Kevin-

Great work. Noticed that you have target profits based on the MA(10) during your back tests, but no stop losses, right? Did you exit after x amount of days? Otherwise I'm assuming some trades resulted in large drawdowns or were open for quite awhile.

Thanks.

Kevin_in_GA
4,599 posts
msg #95800
Ignore Kevin_in_GA
8/23/2010 4:56:40 PM

I plan to exit by close on Friday each week, but the back test also had a 10 day max hold built in.

olathegolf
119 posts
msg #95803
Ignore olathegolf
8/23/2010 7:07:06 PM

Kevin, you're awesome and provide a great service to this community. Thanks for sharing your knowledge.

Kevin_in_GA
4,599 posts
msg #95808
Ignore Kevin_in_GA
8/23/2010 9:47:29 PM

Update 8/23:


Long Plays selected from the new filters:

NTY (scoring 3/5) - in at 54.13, closed at 54.00 for a loss of 0.33%
MDCO (scoring 3/5) - in at 12.26, closed at 11.90 for a loss of 3.02%

Short Plays selected from the new filters:

DYN (scoring 1/5) - in at 4.74, closed at 4.78 for a loss of 0.93%

Went in on GRS at the open based on the slightly negative Gold futures and the upbeat market futures. Good thing I did as this was the only selection that made any money today.

GRS - in at 7.03, closed at 6.82 for a gain of 2.90%

Net for the day - a loss of 0.35% (down $139.18 on $40,000 invested in these 4 stocks, which includes commissions at $8.95 per trade)

Remember - all exits for these are based on a close above/below the MA(10). I'll post other plays as they are flagged by the filters, but will not trade them unless one or more of these are closed out.


New long play flagged for today - ARNA (2/5)

New short play flagged for today - PCBC (2/5) - up 30% today but it looks like they plan to do some sort of forward stock split for current shareholders next week. Not sure how this will play out short term, but it looks like by this time next week the new valuation will be around 0.20.

wkloss
231 posts
msg #95817
Ignore wkloss
8/24/2010 7:16:20 PM

Kevin,

Is there any way to backtest the composites? I tried, got mixed results then realized that it was difficult if not impossible to duplicate your entries on Mondays and exits no later than Friday's close. There is also the question of how many stocks you would buy in a day and your maximum number of open positions.

Bill

Kevin_in_GA
4,599 posts
msg #95823
Ignore Kevin_in_GA
8/24/2010 10:33:38 PM

You should be able to backtest the new composite filters I posted - just copy and paste. Set the selection criteria to

"composite above X" (set X at whatever threshold you choose - start at 0.5 and go up 1 unit each time)

I would not limit the number of trades for a backtest - more data is better.

all exits are close above/below MA(10). You can also set a max hold for 10 days or less.

No stop loss or profit stop.

Kevin_in_GA
4,599 posts
msg #95824
Ignore Kevin_in_GA
8/24/2010 10:49:26 PM

Update 8/23:

Rough day today - MDCO and DYN both went the wrong way bigtime. Still beating the market for the week, although trading at a slightly lower loss is not warming my heart all that much.


Long Plays selected from the new filters:

NTY (scoring 3/5) - in at 54.13, closed at 53.99 for a loss of 0.35%
MDCO (now scoring 4/5) - in at 12.26, closed at 11.52 for a loss of 6.12%


Short Plays selected from the new filters:

DYN (scoring 1/5) - in at 4.74, closed at 4.94 for a loss of 4.31%

GRS - in at 7.03, closed at 6.68 for a gain of 4.88%


Net so far for the week - a loss of 1.47% (down $589.49 on $40,000 invested in these 4 stocks, which includes commissions at $8.95 per trade)

Remember - all exits for these are based on a close above/below the MA(10).


Other plays flagged this week:

Monday

ARNA (2/5) - Long Play

PCBC (2/5) - Short Play (watch out on this one because of the stock split next week)


Tuesday

DECK (3/5) - Long Play

wkloss
231 posts
msg #95828
Ignore wkloss
8/25/2010 1:12:55 AM



DYN is not a failure of your signal. It is a takeover play by Blackstone Group. You should not expect it to fall in price.

This is a very minor flaw in your strategy and unfortunately not one to be concerned about since you do not have time to research every trade and you only have a very small amount at risk on each one. Some of the losing trades in the backtesting are probably special situations like this one

StockFetcher Forums · Filter Exchange · MODIFIED CONNORS RSI(2) FILTER<< 1 ... 15 16 17 18 19 ... 22 >>Post Follow-up

*** Disclaimer *** StockFetcher.com does not endorse or suggest any of the securities which are returned in any of the searches or filters. They are provided purely for informational and research purposes. StockFetcher.com does not recommend particular securities. StockFetcher.com, Vestyl Software, L.L.C. and involved content providers shall not be liable for any errors or delays in the content, or for any actions taken based on the content.


Copyright 2022 - Vestyl Software L.L.C.Terms of Service | License | Questions or comments? Contact Us
EOD Data sources: DDFPlus & CSI Data Quotes delayed during active market hours. Delay times are at least 15 mins for NASDAQ, 20 mins for NYSE and Amex. Delayed intraday data provided by DDFPlus


This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.