Financial visualisation website FINVIZ.com is one of my favourite trading tools. I use it every day to keep a tab on markets and look at charts.
The stock screener on Finviz is also one of the best I’ve found with more than 60 filters that can be applied to 7000 US stocks.
In the rest of this article, I will take a simple stock screen from Finviz and backtest it on historical data using the backtesting platform Amibroker. This will give us an idea of what to expect if we were to pick stocks according to the screen.
Finviz Stock Screen
As you can imagine, with over 60 filters, there are quite a number of possibilities for us to look at.
However, we are somewhat restricted because we do not have access to point in time fundamental data. In fact, it is very hard to get hold of and work with such data.
Therefore we will restrict our analysis to technical metrics only.
The Finviz screen that we are going to backtest today looks like this:
So we are looking for stocks that possess the following attributes:
- Belong to the S&P 500
- Close above the 20 day MA
- Close above the 200 day MA
- ATR(14) < 1
- Relative Volume > 1
- A Gap Down day
- Under $50 a share
The rationale behind these rules is to find upward trending stocks that are increasing in volume and also not very volatile.
We don’t want to trade expensive tickers and we want to include a very short-term pullback by using a gap down rule.
Note that the ATR indicator that Finviz uses is slightly different to the default in Amibroker. I used the ATR as described in the Finviz documentation.
Setting Up The Test
The following settings will be used:
- Time frame = Daily
- Initial Equity = $100,000
- Portfolio Size = Max 20 positions
- Position Size = 5% (equal weight)
- Sell Rule = By 20% trailing stop
- Execution = Next day open
- Ranking = Relative volume (largest preferred)
- Compound returns = Yes
- Commissions = $0.01 per share
To sum up, we will be buying stocks from the S&P 500 universe according to the rules of the Finviz stock screen. All signals will be computed with closing prices and all entries will be made on the next day open.
We will sell by 20% trailing stop. When the trailing stop amount is hit, the exit will take place on the next open.
In the case of duplicate signals, we will choose the stock with the highest relative volume first. You can achieve this in Finviz by sorting the relative volume column.
Relative volume refers to the daily volume divided by the 3-month average volume.
Here’s an example trade setup in MNST:
The system was first run on an in-sample period between 1 January 2000 and 1 January 2014 and produced the following results and equity curve:
- Annualised Return: 12.73%
- Max Drawdown: -27.10%
- CAR/MDD: 0.47
- Win Rate: 52.16%
- Average P/L Per Trade: 18.15%
- Profit Factor: 4.95
You can see we got a pretty good result. An annualised return of 12.73% with a maximum drawdown of -27.10% and a win rate of 52.16%.
This beats the buy and hold annualised return of 3.63% with a max drawdown of -55%.
Out Of Sample Results:
The system was next run on an out-of-sample period between 1 January 2014 and 1 July 2017 and produced the following results and equity curve:
- Annualised Return: 8.45%
- Maximum Drawdown: -11.92%
- CAR/MDD: 0.71
- Win Rate: 55%
- Average P/L Per Trade: 10.01%
- Profit Factor: 4.01
You can see we also got a pretty good result in the out-of-sample test.
Although our annualised return has gone down to 8.45%, our CAR/MDD has gone up to 0.71 and every year was profitable.
However, the buy and hold annualised return was 10.51% with a max drawdown of -13.02%.
Today we looked at a simple 7 filter stock screen from the website Finviz and backtested it using historical data. Using the rules shown above, we achieved a pretty good result in both the in sample and out of sample.
It should be noted that this test was undertaken without any optimisation. I simply took some rules that seemed to make sense and put them into the backtester.
I did not search around for values until I found something that worked. In fact I only ran the backtest twice (to change portfolio size).
To counter this, it should be also said that I have of course run many backtests in the past so this will have had a bearing on the inputs I chose.
Nevertheless, this strategy seems quite solid. What is also appealing is that we navigated the 2008 bear market without need for any market timing filter. Unless I am mistaken, this system does a good job of picking out trending stocks.
Running the stock screen on the market today (10th August 2017) we get the following six tickers that meet the criteria. Could these be good stocks to pick up on the next open?
If you would like the Ambroker code to this system, please sign up for the mailing list here. You will be able to download it free of charge.
What’s Your Favourite Stock Screen?
I’m wondering, do you have a favourite stock screen to filter stocks?
Let me know in the comments and I will try and do a backtest.