def _get_signal_changes(i): print('Calculating signal changes for %s ' % i) for kk in range(1, 10, 2): univ_ib_sig = mkt_retrieve(i, 'MovReg', 'Signals') tick_cols = univ_ib_sig.tick_cols() for k in tick_cols: univ_ib_sig[k] = filt.chg(univ_ib_sig[k].values, kk) mkt_store(i, 'MovReg', 'Changes' + str(kk), univ_ib_sig) return None
def pred_stats_for_various_vol(): univ_ib_cl = cr_cret.retrieve(univ_ib_ext + "Close") univ_ib_rt = univ_ib_cl.copy() for i in univ_ib_cl.tick_cols(): univ_ib_cl[i] = filt.ret(univ_ib_cl[i].values) for i in univ_ib_rt.tick_cols(): univ_ib_rt[i] = filt.ret(univ_ib_rt[i].values, 30) univ_ib_rt[i] = filt.lag(univ_ib_rt[i].values) univ_ib_cl_data = univ_ib_cl[univ_ib_cl.tick_cols()].values.reshape(-1) univ_ib_rt_data = univ_ib_rt[univ_ib_rt.tick_cols()].values.reshape(-1) # univ_ib_cl_data = np.abs(univ_ib_cl_data) import warnings warnings.simplefilter("ignore", RuntimeWarning) univ_ib_rt_data = np.sign(univ_ib_rt_data) warnings.simplefilter("default", RuntimeWarning) for j in vol_names_sm: for k in range(30, 330, 30): # changed here if k < 100: univ_ib_vol = cr_vol_all.retrieve(univ_ib_ext + j + "_0" + str(k) + "D") else: univ_ib_vol = cr_vol_all.retrieve(univ_ib_ext + j + "_" + str(k) + "D") for i in univ_ib_vol.tick_cols(): univ_ib_vol[i] = filt.chg(filt.lag(1 / univ_ib_vol[i].values)) univ_ib_vol_data = univ_ib_vol[univ_ib_vol.tick_cols()].values.reshape(-1) # univ_ib_nn = ~np.isnan(univ_ib_cl_data) & ~np.isnan(univ_ib_vol_data) univ_ib_nn = ~np.isnan(univ_ib_cl_data) & ~np.isnan(univ_ib_vol_data) # & (univ_ib_rt_data < 0) univ_ib_vol_data = univ_ib_vol_data[univ_ib_nn] univ_ib_cl_data_ = univ_ib_cl_data[univ_ib_nn] rho = ss.spearmanr(univ_ib_vol_data, univ_ib_cl_data_).correlation if k < 100: print(j + "_0" + str(k) + "D:\t", rho) else: print(j + "_" + str(k) + "D:\t", rho) print("\n")
def check_price_forecast(): univ_ib_dt = cr_cret.retrieve(univ_ib_eqidx_ext + 'ExchOpen')['Date'].values univ_ib_gd = cr_cret.retrieve(univ_ib_eqidx_ext + 'ExchOpen')['SP500'].values z = np.where(univ_ib_gd.astype('int') == 1)[0] univ_ib_cl = cr_cret.retrieve(univ_ib_eqidx_ext + 'Close')['SP500'].values[z] univ_ib_vl = cr_vol_all_adj.retrieve(univ_ib_eqidx_ext + 'vol_pb_120')['SP500'].values[z] univ_ib_dt = univ_ib_dt[z] nlag = 2 n1 = filt.fst_nan(univ_ib_cl) n1 = np.maximum(n1, filt.fst_nan(univ_ib_vl)) univ_ib_sig = np.empty(0) univ_ib_sig_ = np.empty(0) for days in range(1, 11): for smth in range(5, 33): if days < 10: if smth < 10: tmp = cr_aret.retrieve(univ_ib_eqidx_ext + 'AdjSerD0' + str(days)+'S0' + str(smth))['SP500'].values[z] else: tmp = cr_aret.retrieve(univ_ib_eqidx_ext + 'AdjSerD0' + str(days)+'S' + str(smth))['SP500'].values[z] else: if smth < 10: tmp = cr_aret.retrieve(univ_ib_eqidx_ext + 'AdjSerD' + str(days)+'S0' + str(smth))['SP500'].values[z] else: tmp = cr_aret.retrieve(univ_ib_eqidx_ext + 'AdjSerD' + str(days)+'S' + str(smth))['SP500'].values[z] # get the change in the signal # tmp = np.sign(filt.chg(tmp)) # lag the data # tmp = filt.lag(tmp, nlag) if univ_ib_sig.shape[0] == 0: univ_ib_sig = tmp else: univ_ib_sig = np.vstack((univ_ib_sig, tmp)) n1 = np.maximum(n1, filt.fst_nan(tmp)) univ_ib_cl_ = np.sign(filt.chg(univ_ib_cl, nlag)) univ_ib_cl_ = univ_ib_cl_[n1:] univ_ib_vl_ = univ_ib_vl[n1:] univ_ib_sig = univ_ib_sig[:, n1:] names = [] for days in range(1, 11): for smth in range(5, 33): if (days < 10) and (smth < 10): names.append('0'+str(days)+'_0'+str(smth)) elif (days < 10) and (smth >= 10): names.append('0'+str(days)+'_'+str(smth)) elif (days >= 10) and (smth < 10): names.append(str(days)+'_0'+str(smth)) else: names.append(str(days)+'_'+str(smth)) for i in range(0, len(names)): print(names[i], ':', smart_kendall(univ_ib_cl_, univ_ib_sig[i, :])) plot_ts_new(univ_ib_dt, univ_ib_cl) plot_ts_new(univ_ib_dt, univ_ib_sig[167, :]) t1 = filt.ret(filt.lag(univ_ib_sig[167, :])) t1_ = filt.ret(univ_ib_sig[167, :]) t2 = filt.ret(univ_ib_cl) t3 = t2*np.sign(t1) t1_, t2, t3 = reduce_nonnan(t1_, t2, t3) ct1_ = np.cumprod(1+t1_)*100 ct2 = np.cumprod(1+t2)*100 ct3 = np.cumprod(1-t3)*100 f = pyl.figure(1) f.clear() pyl.subplot(3, 1, 1) pyl.semilogy(ct2[-5000:]) pyl.subplot(3, 1, 2) pyl.semilogy(ct1_[-5000:]) pyl.subplot(3, 1, 3) pyl.semilogy(ct3[-5000:])
def get_measures(): univ_ib_gd = cr_cret.retrieve(univ_ib_eqidx_ext + "ExchOpen") _prc_measures = [ "Close", "AdjSer20D", "AdjSer30D", "AdjSer40D", "AdjSer20W", "AdjSer30W", "AdjSer40W", "AdjSer20M", "AdjSer30M", "AdjSer40M", ] _prc_measures_name = ["CLS", "A2D", "A3D", "A4D", "A2W", "A3W", "A4W", "A2M", "A3M", "A4M"] tick_cols = univ_ib_gd.tick_cols() for k in range(0, 10): # for different prices univ_ib_pr = cr_cret.retrieve(univ_ib_eqidx_ext + _prc_measures[k]) for j in range(5, 305, 5): univ_ib_lrbeta_lvl = nan_df(univ_ib_pr) univ_ib_qrbeta_lvl = nan_df(univ_ib_pr) univ_ib_qrgamm_lvl = nan_df(univ_ib_pr) univ_ib_lrbeta_ch0 = nan_df(univ_ib_pr) univ_ib_qrbeta_ch0 = nan_df(univ_ib_pr) univ_ib_qrgamm_ch0 = nan_df(univ_ib_pr) univ_ib_lrbeta_ch1 = nan_df(univ_ib_pr) univ_ib_qrbeta_ch1 = nan_df(univ_ib_pr) univ_ib_qrgamm_ch1 = nan_df(univ_ib_pr) univ_ib_lrbeta_ch2 = nan_df(univ_ib_pr) univ_ib_qrbeta_ch2 = nan_df(univ_ib_pr) univ_ib_qrgamm_ch2 = nan_df(univ_ib_pr) for i in tick_cols: z = np.where(univ_ib_gd[i].values.astype("int") == 1)[0] univ_ib_pr_ = univ_ib_pr[i].values[z] univ_ib_lrb_ = filt.lrbeta(univ_ib_pr_, j) univ_ib_lrbeta_lvl[list(z), i] = univ_ib_lrb_ univ_ib_lrbeta_ch0[list(z), i] = filt.chg(univ_ib_lrb_, 1) univ_ib_lrbeta_ch1[list(z), i] = filt.chg(univ_ib_lrb_, 3) univ_ib_lrbeta_ch2[list(z), i] = filt.chg(univ_ib_lrb_, 5) univ_ib_qrb_ = filt.qrbeta(univ_ib_pr_, j) univ_ib_qrbeta_lvl[list(z), i] = univ_ib_qrb_ univ_ib_qrbeta_ch0[list(z), i] = filt.chg(univ_ib_qrb_, 1) univ_ib_qrbeta_ch1[list(z), i] = filt.chg(univ_ib_qrb_, 3) univ_ib_qrbeta_ch2[list(z), i] = filt.chg(univ_ib_qrb_, 5) univ_ib_qrb_ = filt.qrgamma(univ_ib_pr_, j) univ_ib_qrgamm_lvl[list(z), i] = univ_ib_qrb_ univ_ib_qrgamm_ch0[list(z), i] = filt.chg(univ_ib_qrb_, 1) univ_ib_qrgamm_ch1[list(z), i] = filt.chg(univ_ib_qrb_, 3) univ_ib_qrgamm_ch2[list(z), i] = filt.chg(univ_ib_qrb_, 5) univ_ib_lrbeta_lvl[i] = filt.fill(univ_ib_lrbeta_lvl[i].values) univ_ib_lrbeta_ch0[i] = filt.fill(univ_ib_lrbeta_ch0[i].values) univ_ib_lrbeta_ch1[i] = filt.fill(univ_ib_lrbeta_ch1[i].values) univ_ib_lrbeta_ch2[i] = filt.fill(univ_ib_lrbeta_ch2[i].values) univ_ib_qrbeta_lvl[i] = filt.fill(univ_ib_qrbeta_lvl[i].values) univ_ib_qrbeta_ch0[i] = filt.fill(univ_ib_qrbeta_ch0[i].values) univ_ib_qrbeta_ch1[i] = filt.fill(univ_ib_qrbeta_ch1[i].values) univ_ib_qrbeta_ch2[i] = filt.fill(univ_ib_qrbeta_ch2[i].values) univ_ib_qrgamm_lvl[i] = filt.fill(univ_ib_qrgamm_lvl[i].values) univ_ib_qrgamm_ch0[i] = filt.fill(univ_ib_qrgamm_ch0[i].values) univ_ib_qrgamm_ch1[i] = filt.fill(univ_ib_qrgamm_ch1[i].values) univ_ib_qrgamm_ch2[i] = filt.fill(univ_ib_qrgamm_ch2[i].values) if j < 10: cr_sig_mr_sg.store( univ_ib_eqidx_ext + _prc_measures_name[k] + "_LRB_LVL_00" + str(j), univ_ib_lrbeta_lvl ) cr_sig_mr_sg.store( univ_ib_eqidx_ext + _prc_measures_name[k] + "_LRB_CH0_00" + str(j), univ_ib_lrbeta_ch0 ) cr_sig_mr_sg.store( univ_ib_eqidx_ext + _prc_measures_name[k] + "_LRB_CH1_00" + str(j), univ_ib_lrbeta_ch1 ) cr_sig_mr_sg.store( univ_ib_eqidx_ext + _prc_measures_name[k] + "_LRB_CH2_00" + str(j), univ_ib_lrbeta_ch2 ) cr_sig_mr_sg.store( univ_ib_eqidx_ext + _prc_measures_name[k] + "_QRB_LVL_00" + str(j), univ_ib_qrbeta_lvl ) cr_sig_mr_sg.store( univ_ib_eqidx_ext + _prc_measures_name[k] + "_QRB_CH0_00" + str(j), univ_ib_qrbeta_ch0 ) cr_sig_mr_sg.store( univ_ib_eqidx_ext + _prc_measures_name[k] + "_QRB_CH1_00" + str(j), univ_ib_qrbeta_ch1 ) cr_sig_mr_sg.store( univ_ib_eqidx_ext + _prc_measures_name[k] + "_QRB_CH2_00" + str(j), univ_ib_qrbeta_ch2 ) cr_sig_mr_sg.store( univ_ib_eqidx_ext + _prc_measures_name[k] + "_QRG_LVL_00" + str(j), univ_ib_qrgamm_lvl ) cr_sig_mr_sg.store( univ_ib_eqidx_ext + _prc_measures_name[k] + "_QRG_CH0_00" + str(j), univ_ib_qrgamm_ch0 ) cr_sig_mr_sg.store( univ_ib_eqidx_ext + _prc_measures_name[k] + "_QRG_CH1_00" + str(j), univ_ib_qrgamm_ch1 ) cr_sig_mr_sg.store( univ_ib_eqidx_ext + _prc_measures_name[k] + "_QRG_CH2_00" + str(j), univ_ib_qrgamm_ch2 ) elif j < 100: cr_sig_mr_sg.store( univ_ib_eqidx_ext + _prc_measures_name[k] + "_LRB_LVL_0" + str(j), univ_ib_lrbeta_lvl ) cr_sig_mr_sg.store( univ_ib_eqidx_ext + _prc_measures_name[k] + "_LRB_CH0_0" + str(j), univ_ib_lrbeta_ch0 ) cr_sig_mr_sg.store( univ_ib_eqidx_ext + _prc_measures_name[k] + "_LRB_CH1_0" + str(j), univ_ib_lrbeta_ch1 ) cr_sig_mr_sg.store( univ_ib_eqidx_ext + _prc_measures_name[k] + "_LRB_CH2_0" + str(j), univ_ib_lrbeta_ch2 ) cr_sig_mr_sg.store( univ_ib_eqidx_ext + _prc_measures_name[k] + "_QRB_LVL_0" + str(j), univ_ib_qrbeta_lvl ) cr_sig_mr_sg.store( univ_ib_eqidx_ext + _prc_measures_name[k] + "_QRB_CH0_0" + str(j), univ_ib_qrbeta_ch0 ) cr_sig_mr_sg.store( univ_ib_eqidx_ext + _prc_measures_name[k] + "_QRB_CH1_0" + str(j), univ_ib_qrbeta_ch1 ) cr_sig_mr_sg.store( univ_ib_eqidx_ext + _prc_measures_name[k] + "_QRB_CH2_0" + str(j), univ_ib_qrbeta_ch2 ) cr_sig_mr_sg.store( univ_ib_eqidx_ext + _prc_measures_name[k] + "_QRG_LVL_0" + str(j), univ_ib_qrgamm_lvl ) cr_sig_mr_sg.store( univ_ib_eqidx_ext + _prc_measures_name[k] + "_QRG_CH0_0" + str(j), univ_ib_qrgamm_ch0 ) cr_sig_mr_sg.store( univ_ib_eqidx_ext + _prc_measures_name[k] + "_QRG_CH1_0" + str(j), univ_ib_qrgamm_ch1 ) cr_sig_mr_sg.store( univ_ib_eqidx_ext + _prc_measures_name[k] + "_QRG_CH2_0" + str(j), univ_ib_qrgamm_ch2 ) else: cr_sig_mr_sg.store(univ_ib_eqidx_ext + _prc_measures_name[k] + "_LRB_LVL_" + str(j), univ_ib_lrbeta_lvl) cr_sig_mr_sg.store(univ_ib_eqidx_ext + _prc_measures_name[k] + "_LRB_CH0_" + str(j), univ_ib_lrbeta_ch0) cr_sig_mr_sg.store(univ_ib_eqidx_ext + _prc_measures_name[k] + "_LRB_CH1_" + str(j), univ_ib_lrbeta_ch1) cr_sig_mr_sg.store(univ_ib_eqidx_ext + _prc_measures_name[k] + "_LRB_CH2_" + str(j), univ_ib_lrbeta_ch2) cr_sig_mr_sg.store(univ_ib_eqidx_ext + _prc_measures_name[k] + "_QRB_LVL_" + str(j), univ_ib_qrbeta_lvl) cr_sig_mr_sg.store(univ_ib_eqidx_ext + _prc_measures_name[k] + "_QRB_CH0_" + str(j), univ_ib_qrbeta_ch0) cr_sig_mr_sg.store(univ_ib_eqidx_ext + _prc_measures_name[k] + "_QRB_CH1_" + str(j), univ_ib_qrbeta_ch1) cr_sig_mr_sg.store(univ_ib_eqidx_ext + _prc_measures_name[k] + "_QRB_CH2_" + str(j), univ_ib_qrbeta_ch2) cr_sig_mr_sg.store(univ_ib_eqidx_ext + _prc_measures_name[k] + "_QRG_LVL_" + str(j), univ_ib_qrgamm_lvl) cr_sig_mr_sg.store(univ_ib_eqidx_ext + _prc_measures_name[k] + "_QRG_CH0_" + str(j), univ_ib_qrgamm_ch0) cr_sig_mr_sg.store(univ_ib_eqidx_ext + _prc_measures_name[k] + "_QRG_CH1_" + str(j), univ_ib_qrgamm_ch1) cr_sig_mr_sg.store(univ_ib_eqidx_ext + _prc_measures_name[k] + "_QRG_CH2_" + str(j), univ_ib_qrgamm_ch2) return None
_hypsecant_lrb = 0 _laplace_lrb = 0 _cauchy_lrb = 0 _logistic_lrb = 0 _hypsecant_qrb = 0 _laplace_qrb = 0 _cauchy_qrb = 0 _logistic_qrb = 0 _hypsecant_qrg = 0 _laplace_qrg = 0 _cauchy_qrg = 0 _logistic_qrg = 0 for i in tick_cols: print("Processing %s " % i) tmp_ = best_fit_distribution(reduce_nonnan(filt.chg(tmp[i].values, 3))[0]) if "_LRB" in i: if tmp_[0] == "hypsecant": _hypsecant_lrb += 1 if tmp_[0] == "laplace": _laplace_lrb += 1 if tmp_[0] == "cauchy": _cauchy_lrb += 1 if tmp_[0] == "logistic": _logistic_lrb += 1 print("LRB", _hypsecant_lrb, _laplace_lrb, _cauchy_lrb, _logistic_lrb) if "_QRB" in i: if tmp_[0] == "hypsecant": _hypsecant_qrb += 1 if tmp_[0] == "laplace": _laplace_qrb += 1