Liquidity Filter

Viewing 8 posts - 1 through 8 (of 8 total)
  • Author
    Posts
  • #46451 quote
    juanjjuanj
    Participant
    Master

    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

    #46500 quote
    juanjjuanj
    Participant
    Master

    @Nicolas, your input, and experience will be appreciated.

    #46563 quote
    NicolasNicolas
    Keymaster
    Legend

    You can check the Market Capitalization with this code:

    marketcap = close*volume>=300000000//market cap

    Of course, you can adapt the ‘300000000’ to filter more or less the stocks you want to find.

    juanj thanked this post
    #46615 quote
    juanjjuanj
    Participant
    Master

    Thank 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.

    #46642 quote
    NicolasNicolas
    Keymaster
    Legend

    Rough 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.

    #46654 quote
    juanjjuanj
    Participant
    Master

    Great 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:

    NearATR = AverageTrueRange[3]
    LongATR = AverageTrueRange[21]
    ATRCross = 0
    
    For i = 1 to 50 Do
    If (NearATR crosses over LongATR) or (NearATR crosses under LongATR) Then
    ATRCross = ATRCross + 1
    EndIf
    Next
    
    //Return ATRCross As "ATRCross"

    Rate of change:

    EMAperiod = 13
    ROCperiod = 21
     
    EMA = exponentialaverage[EMAperiod](close)
    SRoC = ( EMA - EMA[ROCperiod] ) / ( EMA[ROCperiod] ) * 100
    
    AverageSROC = Average[21](SROC)

     

    #46665 quote
    NicolasNicolas
    Keymaster
    Legend

    I would recommend something like this instead for the ATR crosses:

    NearATR = AverageTrueRange[7]
    LongATR = average[100](nearATR)//AverageTrueRange[21]
    ATRCross = 0
     
    For i = 1 to 50 Do
    If (NearATR[i] crosses over LongATR[i]) Then
    ATRCross = ATRCross + 1
    EndIf
    Next
     
    Return ATRCross As "ATRCross"
    juanj thanked this post
    ATR-crossing-count.png ATR-crossing-count.png
    #46672 quote
    juanjjuanj
    Participant
    Master

    Yes, I like that, noticed that I forgot to specify the [i] in my code (typed it out without PRT open).

    Now I just need to look up a few stocks to get an idea of an acceptable Average ATRCross value.

Viewing 8 posts - 1 through 8 (of 8 total)
  • You must be logged in to reply to this topic.
ProRealAI ProRealAI New

Stuck on this ProBuilder code?

Describe what this topic is trying to build, in plain English, and ProRealAI writes the ProRealTime™ indicator, screener or system for you.

Available in 7 languages
Try ProRealAI

Liquidity Filter


ProScreener: Market Scanners & Detection

New Reply
Author
author-avatar
juanj @juanj Participant
Summary

This topic contains 7 replies,
has 2 voices, and was last updated by juanjjuanj
9 years ago.

Topic Details
Forum: ProScreener: Market Scanners & Detection
Language: English
Started: 09/18/2017
Status: Active
Attachments: 1 files
ProRealCode ProRealCode
Loading...