StockFetcher Forums · Filter Exchange · 5% pullback -LONG<< 1 2 >>Post Follow-up
KSK8
371 posts
msg #149062
Ignore KSK8
9/7/2019 4:55:22 PM

Since people are posting filters I might as well keep the momentum going.

Even though I prefer shorting microcap stocks as my method of trading, here's a bullish recipe for a 5% pullback that works pretty well. -Had it sitting around so I might as well post it.


Fetcher[

/* buy open, take profit at 5% */

market is not OTCBB
market is not ETF
average volume(10) above 50000
close > 0.1

/* extreme oversold */
RSI(2) is below 5

/* SSR -anti short seller criteria */
close more than 10% below close 1 day ago

/* price reached a top within the past 60 periods */
count(RSI(2) 1 day ago above 99,60) is above 0

/* 5% pop's (credit to TRO) */
set{x1, high - open}
set{x2, x1/open }
set{B5A, count(x2 > .05 , 100)}
B5A > 5

]



Now if only SF would add more functions to their syntax I would be able to publish some killer long strategies...


sandjco
393 posts
msg #149063
Ignore sandjco
9/8/2019 7:48:58 AM

Thanks for sharing! I like the concept...looking to tweak it for ETFs.

nibor100
398 posts
msg #149128
Ignore nibor100
9/15/2019 11:03:31 AM

1 year backtest 'in progress'
Ed S.

Fetcher[
/* buy open, take profit at 5% */

market is not OTCBB
market is not ETF
set{v1,count( average volume(10) 1 day ago above 50000,1)}
set{clo1, count( close 1 day ago > 0.1, 1)}
set{Tru1, clo1*v1 }

set{arsi, count(rsi(2) 1 day ago is below 5, 1)}
set{cclo2, count(close 1 day ago more than 10% below close 2 days ago, 1)}
set{Tru2, arsi*cclo2 }
set{Tru3, Tru1*Tru2 }

count(RSI(2) 2 days ago above 99,60) is above 0
/* 5% pop's (credit to TRO) */
set{x1, high - open}
set{x2, x1/open }
set{B5A, count(x2 > .05 , 100)}
set{aB5A, count(B5A 1 day ago > 5, 1)}
set{Tru5, Tru3*aB5A }

set{var30, opcl%}
set{var4, count( opcl% is between 0 and 100, 1)}
set{var6, count( var30 is between -100 and 0, 1)}
set{Tru12, tru5*var4 }
set{var5, count(tru12 > 0 ,252)} and add column var5 {next day winners }
set{Tru13, tru5*var6 }
set{var8, count(tru13 > 0 ,252)} and add column var8 {next day losers }

set{var20, var5 + var8} add column var20 {total hits }
and sort column 7 descending
var20 > 0

set{var7, Tru12*opcl% } draw var7
set{var9, Tru13*var30 } draw var9
chart-time is 252 days and do not draw RSI(2)
/*49*/ /*date offset is 1/15/2018*/

/*set{SincTru12,-1 + days(var5 <= 0 ,252) } and add column SincTru12*/
/*symlist(seas)*/
]



KSK8
371 posts
msg #149130
Ignore KSK8
9/15/2019 2:44:34 PM

You forgot to include this line:

Fetcher[set{rsitops, count(count(RSI(2) 1 day ago above 99,60) is above 0 1 day ago,1)}]


Witness how the results dramatically improve.

nibor100
398 posts
msg #149131
Ignore nibor100
9/15/2019 3:26:22 PM

1. I did not forget as I had included this alternate line for further testing in the hopes of reducing the number of Set statements.:

count(RSI(2) 2 days ago above 99,60) is above 0

2. That was one of the reasons I labeled this backtest as being "in progress"

3. Can you guess the other reasons?

Thanks,
Ed S.

mahkoh
1,059 posts
msg #149203
Ignore mahkoh
modified
9/22/2019 6:12:40 AM

Stratasearch code:
ENTRY STRING:
mov(volume,10,s)>50000
and
close>0.1
and
rsi(2)<5
and
proc(close,1)<-10
and
had*lert(ref(rsi(2),-1)>99,60)>1
and
had*lert(high/open>1.05,100)>5

EXIT STRING (take 5% or exit at close)
gtclimit(5)
or
$daysheld>0

Backtest from 1/1/2014 until 9/22/2019
Usually there are 1 or 2 stocks selected by the filter, so let's assume we trade a portfolio of 2.
Initial equity of $50.000, ending equity $421.53
1234 trades, 52.11 % profitable

https://imghostr.com/ONWaK4dQx

You could use a stop, but working with daily candles that cannot be really backtested. Stratasearch will not be able to determine whether the stop or profit was hit first if both triggered.

I'd stick to shorting if I were you. Let me know if I missed anything.

EDIT: had to change ' a' to * in the had/__REMOVED__/ formula. Apparently some html function triggers when one posts alert.

KSK8
371 posts
msg #149205
Ignore KSK8
9/22/2019 2:37:32 PM

nibor100 & mahkoh,

Thanks for the backtests, I suppose that long strategy isn't as feasible as I anticipated. But if I can ask a small favor by either of yall, could you run a test over the system below;

Rules: Short the close and cover the next day's close

Fetcher[
market is not OTCBB
market is not ETF
market cap < 100
shares outstanding > 2

set{x1, count(volume > 100000,1)}
set{x2, count(Close-to-open gap is above 20%,1)}
set{x3, count(close < open,1)}
set{x4, count(rsi(2) > 90,1)}
set{x5, x1*x2}
set{x6, x5*x3}
set{x7, x6*x4}
x7 > 0
]



I manually checked the results over the past year and I'd say they were rather superb. I may plan on adding this strategy as part of my main shorting system but I would like some verification on its performance before live trading it. Its been a while since I've conducted any proper backtests so I'm kinda rusty, but perhaps you guys can give this a swing.

mahkoh
1,059 posts
msg #149207
Ignore mahkoh
modified
9/22/2019 3:54:54 PM

Now that's more like the genuine KSK8 stuff.

Again usually 1 or 2 candidates, a portfolio of 2 returns 150% annually without compounding.
$50.000 becomes $462.000 from 1/1/2014 until 9/22/2019, when compounded $22.591.354.
Profitable 60% , biggest loss 100%. Only a few of the losses did not turn into profit if held for a few days/weeks.
https://imghostr.com/ajyRbRmPL
https://imghostr.com/Ych4n2CN5
Note that the strategy had difficult times from late 2014 till mid 2016 and the first half of 2018.

For fun the equity graph of a single portfolio compounded; don't put all eggs in one basket!
https://imghostr.com/Ych4n2CN5

I took the liberty of adding that close must be above 0.1 and did not filter the fundamental part although I do think it can be done in Stratasearch.


KSK8
371 posts
msg #149208
Ignore KSK8
9/22/2019 5:36:21 PM

Good work Mahkoh.

I suppose combining this system with proper due diligence/ filtering out the bullish catalysts would prevent any massive drawdowns + many losses. But I guess that's a part I'll have to do independently if I decide to play this filter. Too bad fundamental factors can't be included in backtests.

Excellent results for the most part.


mahkoh
1,059 posts
msg #149213
Ignore mahkoh
modified
9/23/2019 4:34:53 PM

I know Tradezero usually charges somewhere around 2 percent locate fee. However if you hold overnight you pay that rate 7 x for the first night and 1 x for every following overnight hold. I don't know the structure for centerpoint but I assume it to be something similar. The question is how much will be left if you have to deduce 15% from every trade? You may be better off shorting the open or hope for a little opening bounce to sell into.

StockFetcher Forums · Filter Exchange · 5% pullback -LONG<< 1 2 >>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 2018 - 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