Strategy Library

Small Capitalization Stocks Premium Anomaly


Small caps are typically defined as companies with market caps that are less than $2 billion. The advantage of investing in small cap companies is that they are young companies with significant growth potential. However, the risk of failure is greater with small-cap stocks than with large-cap and mid-cap stocks. In this algorithm, we will explore the performance of the small-capitalization investment.


The first step is coarse universe selection. We create an investment universe with stocks that have fundmental data and with a price greater than $5.

self.filtered_coarse = [x.Symbol for x in coarse if (x.HasFundamentalData) and (float(x.AdjustedPrice) > 5)]

In fine universe selection, we sort the stocks in the universe by the market capitalization and choose 10 stocks with the lowest market cap.

def FineSelectionFunction(self, fine):
    if self.yearly_rebalance:
        fine = [x for x in fine if (x.ValuationRatios.PERatio > 0)
                                and (x.EarningReports.BasicAverageShares.ThreeMonths > 0)
                                and (x.EarningReports.BasicEPS.TwelveMonths > 0)]
        for i in fine:
            i.MarketCap = float(i.EarningReports.BasicAverageShares.ThreeMonths * (i.EarningReports.BasicEPS.TwelveMonths*i.ValuationRatios.PERatio))
        sorted_market_cap = sorted(fine, key=lambda x: x.MarketCap)
        self.filtered_fine = [i.Symbol for i in sorted_market_cap[:20]]
        self.yearly_rebalance = False
        return self.filtered_fine
        return []

In OnData(), we buy 10 stocks in the list of lowest market-cap. The portfolio is rebalanced every year.


div class="qc-embed-frame" style="display: inline-block; position: relative; width: 100%; min-height: 100px; min-width: 300px;">