Small Minus Big (SMB) replication on P123

Here is something that puzzles me…

I decided to construct custom series to observe “what factor currently works on the market” e.g value, etc

I am surprised by my results (nothing really works for any decent period of time over the last 2 decades!) and hence I wonder if I am getting my code or logic wrong?

Let’s use a simple one = size → SMB = Small Minus Big using the Russell3000.
(NB: I am aware of the debate as for whether size is a factor in its own right or a mere implication of risk and quality. This is not my point in this post. It just happens to be very simple in P123 using mktcap and hence makes debugging easy)

The same approach is used for all other factors:

  1. Create a universe for the smallest 20% by Mktcap → https://www.portfolio123.com/app/universe/summary/244413?st=0&mt=7
    and a universe for the largest 20% by mktcap → https://www.portfolio123.com/app/universe/summary/244414?st=1&mt=7

  2. Compute the associated %Rtn over 12 months
    Small → https://www.portfolio123.com/app/series/summary/11895?st=3&mt=8
    Big → https://www.portfolio123.com/app/series/summary/11896?st=3&mt=8

  3. Create a formula to compute the difference → $Top_Bottom_R3K_MktCap
    defined as close(0,getseries(“%Rtn Smallest 20% R3k Mktcap”)) - close(0,getseries(“%Rtn Largest 20% R3K Mktcap”))

  4. Plot the difference in a custom series → https://www.portfolio123.com/app/series/summary/11897?st=0&mt=8

Results attached and umh, really?

Thank you

Jerome


Small minus Big.pdf (51.4 KB)

You might want to start the chart in 2001 0r 2002 to avoid the huge spikes at the beginning. I made a comment on the custom formula but I deleted it as I just spotted the formula in your previous post.

What is surprising is that other than 2003, small does not really beat big for more than 2 months at a time (with 2003 ~ 6 months)

Yet, my general impression was that small caps did really well in 2016 and 2017 as shown by quite a few designer models that ended-up having a tough time since

Jerome

It looks like something is not right. WHe the small outperforms it takes the form of a spike upwards not a gradual increase. I suspect that this must be some sort of artifact…

there is a spike every year in May. I think i came accross a similar spike some years ago and it is probably when p123 refreshes the PRussel 3000.

Yet it does not explain the lack of gradual increase when small outperforms…

i had similar issues with value or growth so i wonder if therevis not sth broken somewhere in the aggregate series…

I think I understood what I did wrong in the approach.

I am building a list of small / big caps today. Then look at their returns over the last 12 months.
But: small today are the small of 12 months ago + those that became smaller over that period. Big today are those that were already big or have become big in the meantime. So I ended-up minimizing the 12m return of the Small group and magnifying the 12m return of the Big group by accepting new entrants in each group over the 12m period.

I need to lock-in the group of Small / Big 12m ago and see what has become of their return 12m later.

To do that I can define a formula → $Mktcap12mAgo = FHist(“mktcap”,52)
and the rule in the custom universe selecting the smallest 20% of the PR3000 becomes → Forder(“$Mktcap12mAgo”,#all, #asc) <=600

Thoughts anyone?

Why not develop a daily index for each and then compare one versus the other? Forget about 1-year lookbacks…

Interesting - might be simpler but what do you mean exactly by a daily index?

Plot the ratio [Return% 1D for Small] / [Return% 1D for Big] over time?

Thank you

Jerome

Jerome,
I’m not sure what the issue is, but I suspect that the way you define the universe is having a big impact on your results. I have looked at the 1-year percentage ROC of the R2000 minus SPX since 1990. I subsequently looked at the 3-year average of those returns and the R2000 outperforms a median 1.4% over the average 3-year period. However, if you cut the data in half, the median out performance is 5.2% for the first half and only 0.6% for the second half. I suspect Fed policy starting in 2008-2009 has had a substantial impact on this relationship.
Ihor


If you use FHist you’re going to have survivorship bias.

There’s an easy way around this: use the rolling screen backtests, then download the results and plot them in Excel.

Here are the steps. Create your two universes. Open a screen. In the settings, put in one of the universes. Go to the rolling backtest tab. Use a one-year holding period. Run the backtest. Download the results. Plot your graph in Excel. Do the same for the other universe. Subtract the columns and plot the resulting graph.

You can also do this without creating universes first by simply putting the FRank rules in the rules, or by putting the factor in Quick Rank in the settings and then using the rules Rank > 80 and Rank < 20.

This is how I created the charts in this article: https://blog.portfolio123.com/2020/04/27/the-value-inversion/

Just create one index for small and one for big. Use average of Close(0)/Close(1). Then for the series chart use the product.Then you have two series and you can compare one against the other.

Thank you Steve - this is how I understood your suggestion.

Good idea - it should work.

Jerome

Thank you Yuval. I will try your way as well.

jerome