question on rebalancing

Sorry if this is answered elsewhere. Does the portfolio need to be rebalanced every time a stock is listed or delisted, or can we just keep that stock in our portfolio with 0 returns onwards? For example if the inclusion matrix changes a total of 200 times between 2006 and 2017, does that mean the minimum number of rebalancing we need to have is 200?


Thank you.

Unsure I understand the question correctly, but the number of assets in your portfolio will be 667 (number of unique tickers), but at anytime you should have 50 of them that have non 0 allocations. All other tickers have 0 allocation. If you are invested in a stock that gets delisted, you should endeavour to rebalance. S&P 500 composition is reviewed in general every quarter, and only a few names drop out or get added to the index.

Ok, thanks for the clarification, that makes sense, so inclusionMatrix is not a matrix of all the stocks that are listed on a specific date? 1 being it is listed, 0 being it is not? If I run the code below, it gives me 319 changes between 2006 and 2017, which is not how many changes I would expect in the SP500.


df = DataFeatures(tickers=list(getTickersSP500()[‘ticker’].unique()),fields=[‘ohlc’,‘bb_live’])

inclusionMatrix = getTickersSP500(ticker=df.tickers, startDate=df.startDate, endDate=df.endDate, asMatrix=True)

number_of_changes = 0

indices_with_changes = []

for i in range(1,len(inclusionMatrix)):

  if (np.array(list(map(bool,inclusionMatrix.iloc[i])))==np.array(list(map(bool,inclusionMatrix.iloc[i-1])))).all():

    continue

  else:

    number_of_changes+=1

    indices_with_changes.append(i)

print(number_of_changes)