iBankCoin
Joined Nov 11, 2007
1,458 Blog Posts

Momentum System: Adding Volume, Liquidity, Price Filters

Let’s Build a Momentum System

Momentum System Proof of Concept

I am now adding a volume, liquidity, and price filter. Here are the specifics:

  • Volume must be greater than or equal to 150,000 shares on average over the last 50 days.
  • Liquidity (50 day average price * 50 day average volume) must be greater than or equal to $1,500,000.
  • Price must be greater than $5.00/share.

All of the parameters from the initial testing remained the same.

Results:

Summary of Results:

We can see that these filters have approximately halved the average % profit compared to not having any filters.

This makes one ask, are the filters necessary? I think that they are. A good deal of the trades without the filters are stocks trading well beneath $5 a share. This makes sense as compared to a large or mid-cap stock, these small or micro caps seem to have a greater propensity for making a huge percentage gain over six-months’ time. Often, since they may have been virtually unknown, volume and liquidity is very low. Since we want to be able to replicate results, it makes sense to require enough volume and liquidity to be able to get in and out of the trade without significant slippage and without pushing the price up or down with our orders. In the end, the results are not as spectacular, but spectacular results mean nothing if the strategy will not work in real-life trading.

To compensate, I am going to start looking at a longer K time of 66 trading days. I am also going to put in a skip period (S) of 22 days in a future test and see how that affects things.

Just For Fun:

I know some of you like the statistics and chart porn. I’m going to throw you a bone. I ran a quick backtest of the system, using J=132, K=66, and S=1. No commissions or slippage was used. The results are below.

Initial capital 100000.00
Ending capital 2006891.58
Net Profit 1906891.58
Net Profit % 1906.89 %
Exposure % 98.26 %
Net Risk Adjusted Return % 1940.73 %
Annual Return % 16.17 %
Risk Adjusted Return % 16.46 %

All trades 1369
Avg. Profit/Loss 1392.91
Avg. Profit/Loss % 7.00 %
Avg. Bars Held 74.73

Winners 686 (50.11 %)
Total Profit 6941110.56
Avg. Profit 10118.24
Avg. Profit % 34.32 %
Avg. Bars Held 81.66
Max. Consecutive 13
Largest win 254648.00
# bars in largest win 202

Losers 683 (49.89 %)
Total Loss -5034218.98
Avg. Loss -7370.75
Avg. Loss % -20.45 %
Avg. Bars Held 67.76
Max. Consecutive 19
Largest loss -94095.00
# bars in largest loss 66

Max. trade drawdown -319600.00
Max. trade % drawdown -88.57 %
Max. system drawdown -1952248.87
Max. system % drawdown -71.58 %
Recovery Factor 0.98
CAR/MaxDD 0.23
RAR/MaxDD 0.23
Profit Factor 1.38
Payoff Ratio 1.37
Standard Error 354672.39
Risk-Reward Ratio 0.28
Ulcer Index 34.08
Ulcer Performance Index 0.32
Sharpe Ratio of trades 0.25
K-Ratio 0.0226

Equity Curve:

Drawdowns:

Profit Distribution:

This current early iteration of the system shows that it has problems, with drawdowns and volatility being primary concerns. I’ll address these issues in future posts. I do find the profit distribution to be of particular interest. This system produces some very big winners, and some very big losers. The momentum anomaly ultimately drives the performance, with winners 1.37 times larger (on average) than the losers.

The other concern is how large of a K to use. This test used 66, but perhaps I should consider a longer or shorter K. 66 was chosen (see bar graph above) because from about 46 to 78, performance seems to flat line. A shorter K will mean more turnover, more commissions, slippage, etc. What I’m most curious about is the relationship between K and the volatility of returns.

If you enjoy the content at iBankCoin, please follow us on Twitter

12 comments

  1. Andras

    Nice, Wood. In the first post you outlined the intended steps in refining the strategy. What about a hedged strategy? The big DD in your chart always takes place when the general market fell off a cliff.

    • 0
    • 0
    • 0 Deem this to be "Fake News"
    • Woodshedder

      Andras, I think we’ll be able to mitigate those drawdowns fairly well with a simple moving average filter. I haven’t messed around with that yet though. However, I’d be happy to hear your ideas about a hedged strategy. I’m always open to new ideas. Let me know, and I’ll give it a try.

      • 0
      • 0
      • 0 Deem this to be "Fake News"
  2. Mr. Cain Thaler

    Hello outliers…

    • 0
    • 0
    • 0 Deem this to be "Fake News"
  3. Redshark

    Hey Wood,

    I have a couple of questions. First when you say that you use a filter to price above $5, (since you are using premium data) does that mean you are using Open Interest above $5?

    Second from one of your earlier post, I believe that you mentioned that you might add in additional buys to the system. Do you still have plans for that? Or did I just make that up entirely?

    • 0
    • 0
    • 0 Deem this to be "Fake News"
    • Woodshedder

      Red, price filter is very simple- on the close of the date of the signal, the stock must be trading at 5.00 or higher. Although, as I think about that, I may in the future use a 50DMA for the price filter.

      I’m not sure what you are asking about additional buy-ins. Can you be a little more specific?

      • 0
      • 0
      • 0 Deem this to be "Fake News"
      • Redshark

        Wood,

        Maybe I should have been a little bit more clear. Premium Data sticks the non-split adjusted close in the Open Interest field. Correct me if I am wrong, but don’t you want to be using this field for your filter. Maybe I am completely wrong on this, and if so, apologies in advance.

        I thought that in your introductory post about this that you said you were going to allow the trading system to continue to buy more as the momentum or price increased. In other words pyramiding, or as Amibroker refers to it scaling-in. But looking back on your previous post, I cannot find a reference to this. Sorry for the confusion.

        • 0
        • 0
        • 0 Deem this to be "Fake News"
        • Redshark

          Also, the first question is just so I know if I am doing it right, because this is a filter I often use, and not a critique of your actual filter.

          • 0
          • 0
          • 0 Deem this to be "Fake News"
        • Woodshedder

          Red, I’m not sure about open interest. I use the premiumdata feed default settings. I understand what you are saying about split adjustments, and my assumptions are that I am using split adjusted data. That would be correct, right?

          • 0
          • 0
          • 0 Deem this to be "Fake News"
          • Redshark

            Wood,

            I shot you an email. Hopefully I can explain it better with a chart of MSFT.

            Glad you have another series going.

            Cheers,

            Redshark

            • 0
            • 0
            • 0 Deem this to be "Fake News"
  4. Derry Brown

    I like what you are doing with this series Wood, good job. Based on my research you will get much better results if you select stocks with the best momentum only from the industry group/s with the best momentum. I would be interested to see if you get the same results as me.

    Cheers
    Derry

    • 0
    • 0
    • 0 Deem this to be "Fake News"
    • Woodshedder

      Derry, I’ve never tested that way, using only stocks from the industry group with the best momo. I’m sure I could do it in AmiB, but it would take some research and practice to get the code right.

      My next post is about survivorship bias. Long story short, the system suffers pretty severely from survivorship bias. I will have that post up this evening. I’m not sure the system can go forward from here without significant changes due to the bias.

      • 0
      • 0
      • 0 Deem this to be "Fake News"