Ejemplo n.º 1
0
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
Ejemplo n.º 2
0
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")
Ejemplo n.º 3
0
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:])
Ejemplo n.º 4
0
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
Ejemplo n.º 5
0
_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