%run retropy.ipynb
dv = get('MULTPL/SP500_DIV_MONTH@Q', interpolate=False)
pr = get('MULTPL/SP500_INFLADJ_MONTH@Q', interpolate=False)
dv = dv.resample("MS").sum() / 12 * 0.75 # sync dates to start of month, and normalize divs to monthly not yearly, and reduce div taxes
dv = dv.reindex(pr.index).fillna(method="ffill") # fill few last missing months
tr = get_TR_from_PR_and_divs(pr, dv).dropna()
#tr = pr
def _mcagr(s, years):
return (np.power(tr / tr.shift(12*years), 1/years)-1)*100
def show_rolling(years):
rol = _mcagr(tr, years).dropna()
med = np.median(rol)
show(0, rol, (med, f"{med:.2f}%"), ta=False, log=False, title=f"{years}-year rolling real NTR S&P500 return")
show_rolling(5)
show_rolling(10)
show_rolling(15)
show_rolling(20)
show_rolling(25)
show_rolling(30)
show(tr, title="real NTR S&P500 return")
# be sure to save before publish
publish()