StockFetcher Forums · Filter Exchange · MODIFIED CONNORS RSI(2) FILTER<< 1 ... 15 16 17 18 19 ... 22 >>Post Follow-up
Kevin_in_GA
4,544 posts
msg #95765
Ignore Kevin_in_GA
8/21/2010 6:09:57 PM

Actually, not a fork in the road - I still have complete faith in the basic tenet of equal dollars long and short. It is the specific filters I am using that I want to rigorously validate. Consequently I have spent the last week re-evaluating the Connors filters and their applicability to broader set of stocks (remember, they were optimized against only 20 ETFs).

The conclusion I have come to is that they are, on the whole, only marginal indicators for good trades when looking at the broader stock market. In fact, several of them offer no advantage whatsoever when back-tested against my usual selection rules of "close above 1 and average volume(50) above 500,000".

Admittedly, the selections to date have worked out OK, but the back testing shows that this may have been a bit more luck than I want in a trading system. Also, each Connors filter has its own exit criteria that determine its profitability and win % - these are not a common exit, which has led me to look for different exit strategies that can be "unversally" applied even though the filters were not designed to exit at those points.

Bottom line - this system is robust, but the specific rules driving stock selection, entry and exit need to be improved.



wkloss
230 posts
msg #95767
Ignore wkloss
8/21/2010 8:40:04 PM


You wrote" I still have complete faith in the basic tenet of equal dollars long and short."

I didn't mean to question that part of your concept and I assumed the long/short could be applied to longer time frames.

You wrote "but the specific rules driving stock selection, entry and exit need to be improved. " I view these rules as the system. Now I understand you are building trading rules around the long/short concept.

This is the 1st part of the Forum I read each day. Very interesting stuff.



Kevin_in_GA
4,544 posts
msg #95769
Ignore Kevin_in_GA
8/21/2010 9:50:00 PM

Thanks.

I have decided to "jettison" the Connors filters after a more robust backtest showed relatively mediocre performance.

I am finalizing a completely new set of filters for this approach. The key attributes that each component must demonstrate are as follows:

1. Each filter must be independently validated against all traded stocks meeting my price and volume criteria.

2. Each filter is to be backtested from 1/1/2007, and must have generated at least 200 trades since then (for statistical robustness). Monte Carlo analysis will be done on each filter against a 10 stock portfolio – 1000 iterations per filter to be sure that the returns and win percentages are accurate and not biased by a few key trades.

3. All filters have the same basic entry requirements - for longs to be above the MA(100) but below the MA(10), and for shorts to be below the MA(100) but above the MA(10).

4. All filters are to use the same exit - close above/below the MA(10). This is the only exit criteria used in each filter.

The last point is actually where my thinking is perhaps unique. Most filters are all about the entry conditions, and usually have not clearly delineated profitable exits. In this case I actually started with the EXIT planned out, then used optimization software to develop each separate filter entry. Compare this to the Connors' filters, which use %B, RSI(2), RSI(4) or cross of the MA(5) - when you get a 6/6 on these filters, you need to make a call as to which exit makes the most sense - too confusing, which usually leads to missed opportunity.

So far on each of 3 separate filters (separate long and short versions) they all show at least 4% average gain in less than 10 days, typically with win percentages from 78-90% on at least 200 trades since 1/1/2007.

The challenge is that I would also like these filter sets to be providing a relatively uniform number of trades each week - rather than be clustered around only a small set of dates and then go for long periods without any new trades being signaled. Once I have them assembled I'll know more about this and may add additional sets to generate greater coverage.


Kevin_in_GA
4,544 posts
msg #95783
Ignore Kevin_in_GA
8/22/2010 11:52:08 PM

Did not really do anything last week, but instead spent time redesigning my entire stock filter set – now it will most likely give fewer signals, but each one should have a much higher likelihood of being profitable.

Filters are based on a sum of five factors: position relative to BB, CMO, W %R, TSI, and RSI. Mostly using Oversold/Overbought signals and momentum measures for these filers right now. Simple and responsive if you make sure that you have "pre-selected" good candidates based on MAs and Price ROC.

Long Plays selected from the new filters:

NTY (scoring 3/5)
MDCO (scoring 3/5)

Short Plays selected from the new filters:

DYN (scoring 1/5)

Only one decent short play from Friday – Gammon Gold (GRS) looks good, but it is currently above its MA(100), which I use to exclude short plays. It is reading 3/5 on the new filters if you ignore this rule. It is still below its MA(200), so if gold futures are looking negative it might be worth taking a stab at this one.

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

I’ll post a more detailed description on how these new filters were constructed and validated – all have been developed using data on 1670 stocks from 1/1/2007 until 6/30/2010, each generally yields a 4% return within 5 days, at a win percentage of 75% or higher.

WAAY better stats than what I was getting using the Connors filters as described in his book! Fewer trades, so balancing longs and shorts might be tricky …


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,544 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,544 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
64 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,544 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.

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 2016 - 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