In a previous article, we compared the S&P 500 index to an EquitiesLab macro, issandplike. Our goal was to analyze the S&P’s value, by comparing the official index’s performance with a collection of similar stocks. But what does “similar” mean in this case?
According to Standard & Poor’s website, an S&P stock must meet the following requirements.
- Last quarter earnings and the sum of the last for quarterly earnings must both be positive.
- Annual trade volume must meet or exceed the market cap.
- 12 months have passed since the initial public offering.
- US-based. The company trades on a US exchange, a plurality of its assets are US-based, and the headquarters are in the US
- The company must be a corporation that issues common stock. It cannot have multiple share structures.
- Unadjusted market cap is at least $8.2 billion.
- The IWF is at least .10
Don’t let the perfect be the enemy of good enough
To emulate the S&P, we create a screener which approximates the S&P 500 by searching for the following:
- Positive returns for the last 4 quarters.
- Annual trade volume >10% market cap.
- Has been traded for 12+ months.
- Are not REITs, limited partnerships, or ADRs.
Astute readers will note that these are not the criteria used by Standard & Poor’s for their index. This is in the interest of compute time, and ease of information access. For instance, rather than going through the odious process of determining a ticker’s IWF, we simply eliminate certain company types. REITs and LPs are not truly corporations and are not typically traded by the public. By excluding these companies, we very nearly match the IWF requirement, for a fraction of the processing power. We also don’t include an explicit market requirement, or a minimum number of shares. Implicitly, however, the ability to select a range makes these requirements superfluous. There is no need to filter by market cap when you’re only looking at the top 500 (for example) stocks, after all.
A quick backtest of the issandplike macro from 0 to 500 confirms that our estimation very closely tracks the S&P.
500, 600, 900, oh my!
As has been alluded above, this macro isn’t limited to the S&P 500. Equities Lab includes formulae for the S&P 500, the MidCap 400, and the SmallCap 600. We also include their most common composites–the 900 (large cap+midcap), the 1000 (midcap+smallcap), and the 1500 (all three benchmarks together). If the standard divisions aren’t to your liking, Equities Lab makes selecting your own range a trivial matter. All three of these indices use the same core methodology–only the market caps are different. As a result, the issandplike macro can be used for any range in the market index. We can try this now.
Open Equities Lab, and create a new screener. Import the macro by typing $issandplike into the editor. There will be two blank spaces in the term for the range; we’ll select 343 to 780.
Backtesting reveals that our range tracks the S&P 500, as expected, but not perfectly. We can get it closer by adding a quick tweak–weighing the positions by market cap. This weighting brings the screen more in line with the S&P, but isn’t included in the default macro, as it can generate odd results depending on how it’s used.
As the backtest shows, weighing by market cap gets us a bit closer to the returns of the S&P–annualized returns differ by less than a third of a percent.