Liquidity Filter
Forums › ProRealTime English forum › ProScreener support › Liquidity Filter
- This topic has 7 replies, 2 voices, and was last updated 7 years ago by juanj.
-
-
09/18/2017 at 8:13 AM #46451
Good Day Guys
I am in the process of developing a screener and am trying to find an effective way to filter out low liquidity stocks.
I am thinking about using a volume filter (Average[x](volume) > 1000) and maybe a gap screener (maximum x amount of gaps in last x days).
But I would appreciate any ideas or if someone maybe already developed a nice liquidity filter I would appreciate if you can share it.
Thanks
09/18/2017 at 12:58 PM #4650009/19/2017 at 8:30 AM #46563You can check the Market Capitalization with this code:
1marketcap = close*volume>=300000000//market capOf course, you can adapt the ‘300000000’ to filter more or less the stocks you want to find.
1 user thanked author for this post.
09/19/2017 at 4:01 PM #46615Thank You Nicolas.
Only problem with that is that as you know not all tradable instruments have volume available.
I do make use of the Market Cap column in the screener window though when sorting the results.
However was hoping of a more versatile technique to measure liquidity using price action for example.
09/20/2017 at 7:36 AM #46642Rough early morning ideas:
_ check how many times a short term ATR has crossed a long term averaged one within the last X periods.
_ check Rate Of Change behavior compared to long term one.
Without Volumes, it’s all about price VS time.
09/20/2017 at 9:05 AM #46654Great ideas! So how would we incorporate that?
Do a few tests using known liquid and illiquid stocks and measure behavior or expected ranges using something like the below?
ATR Crosses:
1234567891011NearATR = AverageTrueRange[3]LongATR = AverageTrueRange[21]ATRCross = 0For i = 1 to 50 DoIf (NearATR crosses over LongATR) or (NearATR crosses under LongATR) ThenATRCross = ATRCross + 1EndIfNext//Return ATRCross As "ATRCross"Rate of change:
1234567EMAperiod = 13ROCperiod = 21EMA = exponentialaverage[EMAperiod](close)SRoC = ( EMA - EMA[ROCperiod] ) / ( EMA[ROCperiod] ) * 100AverageSROC = Average[21](SROC)09/20/2017 at 9:40 AM #46665I would recommend something like this instead for the ATR crosses:
1234567891011NearATR = AverageTrueRange[7]LongATR = average[100](nearATR)//AverageTrueRange[21]ATRCross = 0For i = 1 to 50 DoIf (NearATR[i] crosses over LongATR[i]) ThenATRCross = ATRCross + 1EndIfNextReturn ATRCross As "ATRCross"1 user thanked author for this post.
09/20/2017 at 9:59 AM #46672 -
AuthorPosts