StockFetcher Forums · Filter Exchange · MONDAY GAP UP AND GAP DOWN TRADING SYSTEMS<< 1 2 3 4 5 ... 14 >>Post Follow-up
sohailmithani
192 posts
msg #104605
Ignore sohailmithani
1/23/2012 10:59:21 AM

per www.freestockcharts.com

BLDR open was 2.49 and low 2.42 so means this one also does not qualify. So no trades for gapdown today. Right?


sohailmithani
192 posts
msg #104606
Ignore sohailmithani
1/23/2012 12:08:14 PM

Kevin,

If I look at gaps there are no trades today but if look at Low so far for them then the following are over 2% below from Friday close:
ABG
BLDR
CGA
ENZ
IGTE
KEG
LIOX
MBLX
MHO
MINI
MTZ
PACR
PANL
SGMO
TRGL

Should we be buying them and wait for gap fill this week?

Kevin_in_GA
4,553 posts
msg #104609
Ignore Kevin_in_GA
1/23/2012 6:42:59 PM

The filter is specifically for GAPS DOWN. You may choose to trade it another way, but you are not trading according to what I laid out here. Caveat Emptor.

tomm1111
198 posts
msg #104622
Ignore tomm1111
1/25/2012 12:40:07 AM

Kevin,

Do the equity curves illustrate a curve fitted result? Were a portion of the performance stats run on out-of-sample data? This could make or break a strategy.

Tom

Kevin_in_GA
4,553 posts
msg #104626
Ignore Kevin_in_GA
1/25/2012 9:13:11 AM

Kevin,

Do the equity curves illustrate a curve fitted result? Were a portion of the performance stats run on out-of-sample data? This could make or break a strategy.

Tom
+++++++

Great question.

In this case the optimization was run as shown. However, there are really not a lot that gets optimized here, and I did not pick the top performer here. There were a large number of "more profitable" systems based on a 1% gap fill but they were unwieldy to execute since you need to track hundreds of stocks going into Monday morning.

I set the gap at 2% and the minimum lookback time to be at least 50 weeks since these made sense to me - trading 1% gaps means in most cases your commissions eat up the profit, and I wanted at least 50 data points as a base for any stat work.

What was comforting was that the top 50 or so combinations of this were all generating at least 30% per annum (which tells me that the overall concept is robust).

Kevin

tomm1111
198 posts
msg #104629
Ignore tomm1111
1/25/2012 10:52:27 AM

Kevin,

Thanks for the explanation. The elegance is in it's simplicity.

Thanks for sharing this filter.

Tom

mahkoh
894 posts
msg #104698
Ignore mahkoh
1/28/2012 6:49:26 PM

For the Gap Up, I got 11 candidates, of which the following would be selected:

SPRT - gaps filled at 100%
TLB - gaps filled at 100%
OMEX - gaps filled at 90%
LPHI - gaps filled at 88%
SVNT - gaps filled at 83%

*********

If I run the filter with " open 1 above horizontal" as added syntax I get the following top 5

TLB filled the gap, + 4.49 %
LPHI filled the gap, + 7.80 %
OMEX resulted in a - 5.10 % loss
LNG resulted in a - 13.78 % loss (but came within 4 cents from filling)
SPPI filled the gap, + 3.79 %

Overall a 2.8 % loss.

According to my datasource SPRT and SVNT did not gap up at all?

Kevin_in_GA
4,553 posts
msg #104702
Ignore Kevin_in_GA
modified
1/28/2012 7:43:09 PM

Mahkoh:

I got the same result. I am concerned that the open price as reported by SF is often flat out wrong. Here is the Gap up filter I used this week (corrected as of 1/30 to include having the open for the week NOT be higher than the previous week's high, to screen out massive upward moves that stand little chance of closing the gap):

Fetcher[

apply to sharedlist(Monday_gap_up)

/*FIRST, SET KEY VARIABLES*/
set{horizontal1, weekly close 1 week ago}
set{horizontal, horizontal1*1.02}
set{trigger, close *1.02}
set{open1, weekly open}

/*SECOND, DETERMINE IF A GAP UP OCCURS, AND IF IT WAS SUBSEQUENTLY FILLED*/
set{gapup1, count(weekly open above horizontal,1)}
set{gapup2, count(weekly open below weekly high 1 week ago, 1)}
set{gapup, gapup1 * gapup2}
set{stats, count(weekly low below horizontal1, 1)}
set{gapfill, gapup * stats}

/*THIRD, COUNT THE FREQUENCY OF GAPS UP THAT WERE FILLED OVER THE LAST 80 WEEKS*/
set{gapup80, count(gapup above 0.5,80)}
set{gapfill80, count(gapfill above 0.5,80)}
set{pct_gapfill, gapfill80 / gapup80}


/*NOW ADD COLUMNS WITH KEY DATA AND SORT THEM FROM HIGHEST PERCENT GAP FILLED TO LOWEST*/
add column gapup80 {Gaps up}
add column gapfill80 {gaps filled}
add column pct_gapfill {% of gaps filled}

set{trigger1, weekly close 1 week ago}
set{trigger2, trigger1 * 1.02}
set{gapfilled, count(weekly low below trigger1,1)}

/*IF GAP IS FILLED, PROFIT IS ...*/
set{gapprof1,weekly open - trigger1}
set{gapprof2, gapprof1 / weekly open}
set{gapprof, gapprof2 * 100}

/*IF GAP IS NOT FILLED, PROFIT OR LOSS IS ...*/
set{profit1, weekly open - close}
set{profit2, profit1 / weekly open}
set{profit, profit2 *100}
weekly open above trigger2
add column pct_gapfill {% gaps filled}
add column gapfilled
add column gapprof {profit if gap filled}
add column profit {profit if gap not filled}
]



Here the watchlist is the 139 stocks identified over the past weekend as meeting the filter criteria. I have created this as a shared list, and will try to update both the Gap Up and Gap Down lists every weekend.

What is weird is that running this on Monday gave me 11 stocks that supposedly gapped up, then that was reduced to 7 mid-week, and it is now only 6.

I think this is identifying a potentially significant weakness in the SF data integrity. Since this filter relies on the Monday open to be accurate, I caution people to use this trading actual money until SF has had time to review and comment. I saw the same behavior on Monday with the gap down (specifically with BLDR which showed an open price of 2.29 when the correct open was 2.46).

Kevin_in_GA
4,553 posts
msg #104707
Ignore Kevin_in_GA
1/29/2012 7:51:57 AM

I have created two shared lists - Monday Gap Up and Monday Gap Down. They have been updated for use on 1/30.

To use them in screening for gapping stocks that meet the filter criteria (here I am assuming that the SF Monday open prices are correct), just add the following line at the top of your filter:

apply to sharedlist(Monday_gap_up)

or

apply to sharedlist(Monday_gap_down)

Kevin

Kevin_in_GA
4,553 posts
msg #104713
Ignore Kevin_in_GA
1/29/2012 7:38:18 PM

Do the equity curves illustrate a curve fitted result? Were a portion of the performance stats run on out-of-sample data? This could make or break a strategy.

Tom
++++++++

A quick update. The systems were developed using data from 12/30/1999 until last week. To check both systems with out-of-sample data, I looked at the period from 1/2/1995 through 12/31/1999 (this is one of the most bullish periods in modern history).

This should be an awfully hard time for any system to beat a simple Buy & Hold strategy (since the market had an annual return of 36% during this time). And should be especially challenging for an all-short approach.

Here's how these systems performed during this period:

Gap Down (Long):

Annual return of 85.63% (CAGR of 35.3%)
Percent profitable: 88.17%
Av Trade Return: 2.17%
Number of Trades: 1133
Sharpe ratio: Monthly = 0.9452, annualized = 3.27

Gap Up (Short):

Annual return of 71.76% (CAGR of 32.1%)
Percent profitable: 88.66%
Av Trade Return: 1.69%
Number of Trades: 1217
Sharpe ratio: Monthly = 0.9496, annualized = 3.29

I honestly would never have expected this level of performance, especially for OOS data which is usually worse. On almost any specific metric, these did exceptionally well. There is survivor bias in the data set for the Russell 2000, since it is from Yahoo, but that's the best source I can get for free. These results include commissions, a $0.04 bid/ask spread on each trade, and 0.1% slippage on each trade as well.

Interest was held at only 1% per annum, which grossly underestimates the money market returns for this period.

Kevin

StockFetcher Forums · Filter Exchange · MONDAY GAP UP AND GAP DOWN TRADING SYSTEMS<< 1 2 3 4 5 ... 14 >>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