%run retropy.ipynb
show(shiller_snp500(), shiller_snp500(taxes=True), shiller_snp500(inf_adj=True), shiller_snp500(inf_adj=True, taxes=True), trim=False)
# get rolling 10-year S&P500 TR return, and future return (shifted 10 years back)
spy = shiller_snp500(taxes=False, inf_adj=False)
years = 10
rol_10 = mcagr_monthly(spy, years).dropna()
fret_10 = rol_10.shift(-12*years)
show(rol_10, ta=False)
years = 8
rol_8 = mcagr_monthly(spy, years).dropna()
fret_8 = rol_8.shift(-12*years)
show(fret_8, ta=False)
# PREDICTOR of future 10-year TR return of S&P500
# based on: http://www.philosophicaleconomics.com/2013/12/the-single-greatest-predictor-of-future-stock-market-returns/
stocksAlloc = ((price('FRED/NCBEILQ027S@Q') + price('FRED/FBCELLQ027S@Q'))/1000)/(((price('FRED/NCBEILQ027S@Q') + price('FRED/FBCELLQ027S@Q'))/1000)+price('FRED/BCNSDODNS@Q')+price('FRED/CMDEBT@Q')+price('FRED/FGSDODNS@Q')+price('FRED/SLGSDODNS@Q')+price('FRED/DODFFSWCMI@Q'))
#stocksAllocPredictor = (1-stocksAlloc)*80-43
#stocksAllocPredictor = name(stocksAllocPredictor.asfreq("MS"), "predicted")
alloc_predict = name(lr_predict(fret_10, stocksAlloc), "allocation predictor")
print(f"Current predicted 10-year TR annual return: {alloc_predict[-1]:.2f}%")
show(fret, alloc_predict, stocksAllocPredictor, ta=False)
R^2: 0.8449349354817556 const 35.0212 0 -70.9598 dtype: float64 Current predicted 10-year TR annual return: 3.41%
gdp = get('FRED/GDP@Q', interpolate=False)
gnp = get('FRED/GNP@Q', interpolate=False)
market = shiller_snp500(taxes=True, tax_rate=1)
ind_gdp = market / gdp
ind_gnp = market / gnp
gdp_predict = name(lr_predict(fret_10, ind_gdp).dropna(), "market/GDP predictor")
gnp_predict = name(lr_predict(fret_10, ind_gnp).dropna(), "market/GNP predictor")
print(f"Current predicted 10-year TR annual return: {gnp_predict[-1]:.2f}..{gdp_predict[-1]:.2f}%")
show(gdp_predict, gnp_predict, fret, ta=False)
R^2: 0.7637151943915579 const 23.9871 0 -0.6730 dtype: float64 R^2: 0.7635790589311255 const 23.9577 0 -0.6754 dtype: float64 Current predicted 10-year TR annual return: 2.19..2.01%
show(gdp_predict, alloc_predict, fret_10, ta=False)
us_unemp = get('FRED/UNRATE@Q', interpolate=False)
show(*us_recession_dates(), us_unemp, ma(us_unemp, 12), us_unemp[-1], ta=False, log=False)
lcv = get("VIVAX@Y")
lcg = get("VIGRX@Y")
lcv = lcv/lcv[0]
lcg = lcg/lcg[0]
f = 5
r = f*lcg/lcv
p95 = r.quantile(0.95)
p5 = r.quantile(0.05)
last = r[-1]
score = 100 * (last - p5) / (p95 - p5)
print(score)
show(lcv, lcg, r, p95, p5, last, ta=False)
63.17727534552381
# sc = get(sc, source="Y")
# lc = get(lc, source="Y")
# show_rolling_beta(sc, [lc], freq="D", extra=dd(lc)/100)