New function allows you to run "Screen of screens"

You can now run a screen of screens (in the screener section only) using a new function. Here’s the definition:

Some notes:

  • The ‘screen of screen’ can reference up to 5 other screens

  • The ‘Screen of screen’ can have it’s own rules, ranking, etc

  • If the function Screeen() is used in an included screen it will fail and always return 0 stocks.

  • The function requires a parameter called ‘top’. If it’s set to 0 then all stocks that pass a screen are returned to the ‘screen of screens’. If a maximum is used the included screen should have a ranking function otherwise it will simply return the number of stocks in no particular order.

  • The rebalance frequency and slippage is set by the ‘screen of screens’

Below is an image of the stand-alone Graham and Lynch run with the top 15 stocks. Below is the 7+7 blend. The blend performance is a bit lower but it appears less volatile. Next we will add more precise statistics in screen backtests like sharpe ratio.


This is a very valuable function; in fact, back when I was at Reuters, I did these screen combinations manually (once per week because that was all I had time for). It can help you in several ways:

Stylistic diversification – We all know how important diversification in general is and we’re accustomed to thinking along industry/sector lines to try to come up with less-correlated combinations. But there’s also much to be said for stylistic characteristics, a tendency of growth stocks to behave a particular way, a tendency of value stocks to behave different way, etc. Marco’s example showed how a Graham/Lynch combination reduced volatility while sacrificing little in the way of return. You may also want to compare five-year backtests for these three one-rule screens over time (all of which use p123 pre-defined screens):

screen(“growth - compared to industry peers”,20)

screen(“value - compared to industry peers”,20)

screen(“value - compared to industry peers”,10) or screen(“growth - compared to industry peers”,10)

The combo screen produces higher returns and lesser volatility.

Flexibility – It’s tempting to assume that there is a single best way to screen for value, growth, momentum, etc., etc. etc. Actually, there isn’t. And no single screen can go too far trying for perfection because that would be the easiest way to wind up with zero passing stocks. This function spares you the need to get THE right value screen, for example. You can run five value screens and pick stocks that make any one or more of them.

This really is a very interesting function and we encourage you to experiment with it.

Marco and All:

 It would be very helpful to have a similar feature for ranking.  i.e. Rank("<name of ranking system>", Top).  How about it?

 I believe ETF replay allows for something like this.

 Best,

 Bill

Is it possible to use the new naming of screens to create a system that would compare the relative strength of 5 screens and to invest in the one system with the greatest relative strength?

Getting this function to work for ETF screens would be very valuable as well … is there a work around that would allow us to do that?

thanks
V

Marco, thank you. This is a good addition to P123.

I found that if the component screens use a ranking system, then the composite screen cannot be ranked. Which is the logical result.

Now, this methodology should also be available for books, such that the book only selects the top ranked stocks of each component strategy. For example, if three strategies, each holding 10 positions, are in a book, then a live book will hod 30 positions. That is too much to handle. If one can only pick the 5 top ranked position from each strategy by employing this method, then one would only have 15 positions in the book, and those will be the 15 top ranked stocks of the three models.

Screen of Screens “Lynch + Graham” from 1-1-2014 not impressive.


My “Piggy-Back” models USMV + VDIGX + QGRO Combo Screen does much better with max 13 top ranked positions.


We have this capability with the “Rating” and “RatingPos” commands. Rating(“RankName”) returns the rank for the named ranking system. RatingPos(“RankName”) returns the rank position for the named ranking system. So if you wanted the top 10 stocks of a ranking system, you would use RatingPos(“RankName”) <= 10.

Original was a post from 2012, question might have been before Rating and RatingPos functions were available.