StockFetcher Forums · Filter Exchange · KEVIN'S "MONDAY MORNING FILL THE GAP" FILTER<< 1 2 3 4 5 ... 6 >>Post Follow-up
Kevin_in_GA
4,553 posts
msg #104293
Ignore Kevin_in_GA
1/9/2012 9:20:50 AM

Use a limit order at 3% below the previous Friday close. If it fills, you are in at the desired price. Then set a stop limit at the Friday close. That's all there is to this system.

To do this, the filter needs to be adjusted for use OVER THE WEEKEND rather than on Monday Morning. The advantage to using limit orders in this way is that you are not constrained to watching the open and then trying to get into positions - you are either in at 3% below the last close or you are not.

The limit order can be in place all day Monday, but should not be held overnight since the statistics are only for Mondays.

Here are the top selections for the S&P 500 for today - the price next to the stock is the limit order price, set at 3% below last Friday's close.

AN - AUTONATION INC 32.44
PWR - QUANTA SVCS INC 21.07
NEM - NEWMONT MINING CORP 60.11
URBN - Urban Outfitters, Inc. 26.84
ESRX - Express Scripts, Inc. 47.91
EA - Electronic Arts Inc. 19.08
ALTR - Altera Corporation 36.37
MRO - U S X-MARATHON GROUP 29.77
EXPE - Expedia 28.37
CF - CF INDUSTRIES 153.25
KLAC - KLA-Tencor Corporation 46.30
WMB - WILLIAMS COS INC 26.57
FFIV - F5 Networks, Inc. 103.52
GT - GOODYEAR TIRE 14.70
BRCM - Broadcom Corporation 29.24
HP - HELMERICH & PAYNE INC 61.71
DNR - DENBURY RESOURCES INC 16.75
NFX - NEWFIELD EXPLORATION 37.03
TIF - TIFFANY AND CO 63.78
COG - CABOT OIL & GAS CORP 78.23
VLO - VALERO ENERGY CORP 19.76
NFLX - Netflix, Inc. 83.70
IGT - INTERNATIONAL GAME ... 16.81

Let's see how this plays out.



johedale
2 posts
msg #104294
Ignore johedale
1/9/2012 9:32:15 AM

I clicked on the filter this morning before the open, but none of those stocks you listed Kevin was on there. What did you adjust to generate that list from your scan that was posted on this thread? Thanks. Looks like an interesting filter.

Kevin_in_GA
4,553 posts
msg #104295
Ignore Kevin_in_GA
1/9/2012 10:21:03 AM

Yes, the filter has been adjusted to trade over the wekend. I'll post the revised filter later today.

mahkoh
894 posts
msg #104296
Ignore mahkoh
1/9/2012 12:59:16 PM

"Use a limit order at 3% below the previous Friday close. If it fills, you are in at the desired price. Then set a stop limit at the Friday close. That's all there is to this system.

To do this, the filter needs to be adjusted for use OVER THE WEEKEND rather than on Monday Morning. The advantage to using limit orders in this way is that you are not constrained to watching the open and then trying to get into positions - you are either in at 3% below the last close or you are not.

The limit order can be in place all day Monday, but should not be held overnight since the statistics are only for Mondays. "


I believe what you're doing here is go long a stock that qualifies the statistics and IS down 3 % rather than one that GAPPED down 3 %. Example: EA. It did meet the limit order 19:08 but not until 10:00. It gappped up at the open and drifted lower.

Billirider321
62 posts
msg #104298
Ignore Billirider321
1/9/2012 1:45:49 PM

If you are using ib you have to do oco order. One cancel others. Also cancel all orders by 9.32 am est

Kevin_in_GA
4,553 posts
msg #104300
Ignore Kevin_in_GA
1/9/2012 2:29:28 PM


I believe what you're doing here is go long a stock that qualifies the statistics and IS down 3 % rather than one that GAPPED down 3 %. Example: EA. It did meet the limit order 19:08 but not until 10:00. It gappped up at the open and drifted lower.
+++++++

Yes, this is not a true "gap down" filter if we are using a limit order. However, I also called this a work in progress, since backtesting had not been done.

The results of my backtesting of this concept using a limit order at 3% below the previous Friday close have been exceptional, but I've mixed some apples and oranges together to get this. I want to refine this filter to count the frequency of "Monday low more than 3% below the previous Friday close" and look at the fills from that criteria, rather then gaps down (of any size). Also need to set up the filter to be run over the weekend, generating a set of potential trades that can be monitored on Monday for suitable entries (which can now occur at any time during the day).

As is my style here on the forums, I'll post all of the code and backtest data for everyone to see.

Kevin_in_GA
4,553 posts
msg #104338
Ignore Kevin_in_GA
1/10/2012 4:34:28 PM

OK, so I have been able to get backtesting on this sytem (both long and short versions) from 2000 through the end of 2011.

The challenge with adjusting the code for a limit entry is that for backtesting the "weekly low" can occur on any day of the week - a "dayofweek()" function is sorely needed in the SF toolkit.

I am using the gap down filter here, with a 3% drop below the previous week's close on Monday. If this does not happen, no trades are enterd for that week. Trades are only entered on Monday (or the first day of the trading week for weeks with Monday holidays). I can code this in Stratasearch, but not in SF at the moment.

Here's the filter - run it over the weekend to identify stocks with high percent gap fills:

Fetcher[

/*KEVIN'S "TRADE THE WEEKLY OPEN GAP DOWN" STRATEGY*/

/*FIRST, SET KEY VARIABLES - LAST WEEK'S CLOSE, THIS WEEK'S OPEN, AND NEXT WEEK'S LIMIT ENTRY*/
set{horizontal1, weekly close 1 week ago}
set{open1, weekly open}
set{limit_entry, close*0.97}

/*SECOND, DETERMINE IF A GAP DOWN OCCURS, AND IF IT WAS THEN FILLED*/
set{gapdown, count(open1 below horizontal1,1)}
set{stats, count(weekly high above horizontal1, 1)}
set{gapfill, gapdown * stats}

/*THIRD, COUNT THE FREQUENCY OF GAPS DOWN THAT WERE FILLED OVER THE LAST 100 WEEKS*/
set{gapdown100, count(gapdown above 0.5,100)}
set{gapfill100, count(gapfill above 0.5,100)}
set{pct_gapfill, gapfill100 / gapdown100}

set{gapsize, close*0.03}}

gapsize below atr(50)

/*NOW ADD COLUMNS WITH KEY DATA AND SORT THEM FROM HIGHEST PERCENT GAP FILLED TO LOWEST*/
add column pct_gapfill {percent gap filled}
add column gapdown100
add column gapfill100
add column limit_entry
add column gapsize
add column ATR(50)
sort on column 5 descending

/*SET A MINIMUM FREQUENCY FOR GAPS DOWN - THE HIGHER THIS IS, THE STRONGER THE STATISTICAL RELEVANCE - I CHOOSE 30 HERE BUT YOU CAN SET IT TO ANYTHING YOU WANT (HIGHER WILL GIVE FEWER
HITS)*/
gapdown100 above 30

/*STANDARD LIQUIDITY REQUIREMENTS*/
Market is Russell 2000
close above 1
average volume(30) above 100000

chart-display is weekly
draw gapfill
draw gapdown

]



Limit_entry is where the low on Monday must be at or below in order to enter a trade. The percent gap fill must be at least 80%. With the R2K this is a LOT of possible trades - caveat.

Using this on the Russell 2000, here is the backtest equity curve and stats for the period 12/30/1999 through 12/30 2011:


Long strategy for Russell 2000

Here are the stats:

Long Strategy R2K stats

And here is the short trade equivalent version:

Short Strategy for Russell 2000

and the stats for the short trade version:

Short Strategy R2K stats

Needless to say, this is pretty impressive. What is most interesting to me is that there are absolutely no indicators used, no reference to the state of the market, no fundamentals required, nothing but a statistical probability of crossing a line.

SAFeTRADE
413 posts
msg #104339
Ignore SAFeTRADE
modified
1/10/2012 4:44:27 PM

Kevin,

I like your work, I am looking at your Zscore as a possible trading method. Still paper trading it. As to this
filter I know one can use 100 when it applies to days. I am not sure one can use 100 as it relates to weeks.
I like the thinking behind this filter also. Thanks for all your hard work!

Clarence

mahkoh
894 posts
msg #104340
Ignore mahkoh
1/10/2012 6:22:24 PM

Nice filter, Kevin. Question though: You do not take into account whether the gap was over 3% for the statistics, was this your intention? Obviously it is much easier to fill a small gap than a big gap, does this not skew the results?
I did one minor change in the first lines of your filter so that it only measures gaps that are over 3%, what is your opinion on the results?

Fetcher[

/*KEVIN'S TRADE THE WEEKLY OPEN GAP DOWN STRATEGY*/

/*FIRST, SET KEY VARIABLES - LAST WEEK'S CLOSE, THIS WEEK'S OPEN, AND NEXT WEEK'S LIMIT ENTRY*/
set{horizontal, weekly close 1 week ago}
set{horizontal1,horizontal*0.97}
set{open1, weekly open}
set{limit_entry, close*0.97}

/*SECOND, DETERMINE IF A GAP DOWN OCCURS, AND IF IT WAS THEN FILLED*/
set{gapdown, count(open1 below horizontal1,1)}
set{stats, count(weekly high above horizontal1, 1)}
set{gapfill, gapdown * stats}

/*THIRD, COUNT THE FREQUENCY OF GAPS DOWN THAT WERE FILLED OVER THE LAST 100 WEEKS*/
set{gapdown100, count(gapdown above 0.5,100)}
set{gapfill100, count(gapfill above 0.5,100)}
set{pct_gapfill, gapfill100 / gapdown100}

set{gapsize, close*0.03}}

gapsize below atr(50)

/*NOW ADD COLUMNS WITH KEY DATA AND SORT THEM FROM HIGHEST PERCENT GAP FILLED TO LOWEST*/
add column pct_gapfill {percent gap filled}
add column gapdown100
add column gapfill100
add column limit_entry
add column gapsize
add column ATR(50)
sort on column 5 descending

/*SET A MINIMUM FREQUENCY FOR GAPS DOWN - THE HIGHER THIS IS, THE STRONGER THE STATISTICAL RELEVANCE - I CHOOSE 30 HERE BUT YOU CAN SET IT TO ANYTHING YOU WANT (HIGHER WILL GIVE FEWER
HITS)*/
gapdown100 above 1

/*STANDARD LIQUIDITY REQUIREMENTS*/
Market is Russell 2000
close above 1
average volume(30) above 100000

chart-display is weekly
draw gapfill
draw gapdown

]



Kevin_in_GA
4,553 posts
msg #104341
Ignore Kevin_in_GA
1/10/2012 6:46:38 PM

Two quick comments:

1. You need to use this syntax in the second portion of the filter (gapfill):

/*SECOND, DETERMINE IF A GAP DOWN OCCURS, AND IF IT WAS THEN FILLED*/
set{gapdown, count(open1 below horizontal1,1)}
set{stats, count(weekly high above horizontal, 1)}
set{gapfill, gapdown * stats}

Use "horizontal" in the second set statement instead of horizontal1. The target was cross above the prior week's close.

2. The 3% gap down at open frequency is exceedingly low. I was looking at the frequency of times the low on Monday was below horizontal1, rather than the open - many more occurances, which leads to more robust statistics. That was how the equity curves were generated.

If SF would implement even a few of the wishlist items we could really improve the filters here.

Kevin

StockFetcher Forums · Filter Exchange · KEVIN'S "MONDAY MORNING FILL THE GAP" FILTER<< 1 2 3 4 5 ... 6 >>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