Skip to content

An analysis of Small Caps and Large Caps during periods of dislocation between them

Notifications You must be signed in to change notification settings

diegodalvarez/MarketConcentration

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

32 Commits
 
 
 
 
 
 
 
 

Repository files navigation

Market Concentration

Recently (at the time of this Readme 06/25/2023 18:31) there has been a noticeable difference between larger cap companies outperforming smaller cap companies. This is particularly of focus since common market indices (SPX, NASDAQ, and others) are cap weighted. This analysis will look at the spread between cap weighted SPX and equal weighted SPX and attempt to describe the market effects of this difference.

Ultimately it is found that smaller cap index members tend to “catch-up” to their larger cap members historically.

Examining the difference between SPX cap-weighted vs. equal weighted returns image

And their distributions image

Running a regression between the returns spread and Russell 1000, 2000, and 3000 image image image

International Equities

The same approach was used with international equities measuring the spread between equal weight and market weight indices. Unfortuantely via Regression the relationship is less pronounced. image image

Simple Backtesting Results

If we use the z-score as a buy/sell indicator for the index we can play back the results. Although the results make money they don't necessarily outperform the index. image

Z-Score Window approach

If we use a simple z-score approach where we buy a Z-Score greater than 2 hold for 3 months. We get the following image image image Although the returns do well, they don't happen frequently. One could use it to add exposure. But again the indices don't outperform SPX. image

Repo layout

    MarketConcentration
      └───src
          │   DataManager.py
          |   bbg_em_collect.py
          |   yf_dm_collect.py
      └───notebooks
          |   SPX_model.ipynb
          |   ARReturnsDifferential.ipynb
          |   EM_model.ipynb
          |   ReturnsPlayback.ipynb
          |   RegimeAnalysis.ipynb
          |   IndexRegimeCompare.ipynb
      └───data
          │   tickers.csv
          │   dm_prices.parquet
          │   em_prices.parquet

src files:

  • DataManager.py: Calculates returns differential and returns for index
  • bbg_em_collect.py: Collects Emerging Market data from Bloomberg
  • yf_dm_collect.py: Collects SPX Market data from Yahoo Finance

notebook files:

  • SPX_model.ipynb: Examining the relationship between SPX and cap weighted SPX and running regressions against small caps indices
  • ARReturnsDifferential.ipynb: Attempts to fit an AR model to the returns differential
  • EM_model.ipynb: Examining Returns differential and regression internationally
  • ReturnsPlayback.ipynb: Examining different simple backtesting ideas to look at the returns
  • RegimeAnalysis.ipynb: Compares statistics of each return stream by splitting data by z-score
  • IndexRegimeCompare.ipynb: Compares returns characteristics of regime split by Z-Score

data files:

  • dm_prices.parquet: Data for Domestic SPX and Equal-Cap SPX
  • dm_prices.parquet: Data for MSCI Equity World Index and Equal-Cap MSCI Equity World Index

About

An analysis of Small Caps and Large Caps during periods of dislocation between them

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published