def get_vol_adj():
    univ_ib_cl = cr_cret.retrieve(univ_ib_eqidx_ext + 'Close')
    univ_ib_gd = cr_cret.retrieve(univ_ib_eqidx_ext + 'ExchOpen')
    tick_cols = univ_ib_cl.tick_cols()
    for k in range(0, len(vol_list)):
        print('Processing volatility %s' % vol_names[k])
        for j in vol_lookbacks:
            print('Currently working on lookback %s' % str(j))
            if j < 100:
                univ_ib_vol = cr_vol_all.retrieve(univ_ib_eqidx_ext + vol_names[k] + '_0' + str(j))
            else:
                univ_ib_vol = cr_vol_all.retrieve(univ_ib_eqidx_ext + vol_names[k] + '_' + str(j))
            for i in tick_cols:
                z = np.where(univ_ib_gd[i].values.astype('int') == 1)[0]
                if z.shape[0] > 0:
                    univ_ib_vol_ = univ_ib_vol[i].values[z]
                    univ_ib_cl_ = univ_ib_cl[i].values[z]
                    # find the beta
                    univ_ib_vol__ = filt.lag(univ_ib_vol_)
                    univ_ib_cl_ = np.abs(filt.ret(univ_ib_cl_))
                    regp = qreg4.roll_e_ladreg_1d(univ_ib_cl_, univ_ib_vol__, adj_lookback)
                    # get the beta-adjusted volatility
                    vol__ = univ_ib_vol_ * regp * _lapl_mult
                    # smooth out the volatility
                    vol__1 = filt.lrma(vol__, 61, lg=True)
                    vol__2 = filt.lrma(vol__, 7, lg=True)
                    vol__3 = vol__1 + filt.lrma(vol__2 - vol__1, 16)
                    # push the new volatility back
                    univ_ib_vol[i] = np.nan
                    univ_ib_vol[list(z), i] = vol__3
                    univ_ib_vol[i] = filt.fill(univ_ib_vol[i].values)
                else:
                    univ_ib_vol[i] = np.nan
            if j < 100:
                cr_vol_all_adj.store(univ_ib_eqidx_ext + vol_names[k] + '_0' + str(j), univ_ib_vol)
            else:
                cr_vol_all_adj.store(univ_ib_eqidx_ext + vol_names[k] + '_' + str(j), univ_ib_vol)
    return None
Exemple #2
0
        # univ_ib_cl_, univ_ib_vol0_, univ_ib_vol3_, univ_ib_dt_ = reduce_nonnan(univ_ib_cl_, univ_ib_vol0_, univ_ib_vol3_, univ_ib_dt_)

        univ_ib_vol_ = [univ_ib_vol0_, univ_ib_vol1_, univ_ib_vol2_, univ_ib_vol3_, univ_ib_vol4_, univ_ib_vol5_, univ_ib_vol6_, univ_ib_vol7_]
        # univ_ib_vol_ = [univ_ib_vol3_]
        # univ_ib_vol_ = [univ_ib_vol0_, univ_ib_vol3_]
        for reg_lookback in [120]: # [120, 240, 360]
            # reg_lookback = 120
            # print('reg_lookback is %s\n' % str(reg_lookback))

            # f1, f2, f3, f4 = [], [], [], []
            for i in range(0, len(univ_ib_vol_)):
                # i = 1
                # print('Processing lookback of %s -> volatility type %s' %(str(reg_lookback), vol_names[i]))
                univ_ib_vol__ = univ_ib_vol_[i]
                b41 = qreg.roll_e_ladreg_1d(univ_ib_cl_, univ_ib_vol__, reg_lookback)
                b43_ = filt.lrma(b41, 61)
                b43 = b43_+filt.lrma(b41-b43_, 16)

                b43_1 = filt.lrma(b41, 7)
                b44 = b43_+filt.lrma(b43_1-b43_, 16)
                # b44 = b43_+filt.lrma(b41-b43_, 31)

                univ_ib_vol0 = filt.lag(b41)*univ_ib_vol__*_lapl_mult

                univ_ib_vol1 = filt.lag(b43) * univ_ib_vol__ *_lapl_mult

                univ_ib_vol2__ = filt.lag(b41)*univ_ib_vol__*_lapl_mult
                univ_ib_vol2_ = filt.lrma(univ_ib_vol2__, 61, lg=True)
                univ_ib_vol2 = univ_ib_vol2_ + filt.lrma(univ_ib_vol2__-univ_ib_vol2_, 16)

                univ_ib_vol3 = filt.lag(b44) * univ_ib_vol__ *_lapl_mult
def refresh_correl_smth():
    _corr = cr_cret.retrieve(univ_ib_eqidx_ext+'Correl')
    for i in _corr.tick_cols():
        _corr[i] = filt.lrma(_corr[i].values, 30)
    cr_cret.store(univ_ib_eqidx_ext+'CorrelSmooth', _corr)
    return None
# test, read S&P data
univ_ib_op = cr_cret.retrieve(univ_ib_eqidx_ext + 'Open')[['Date', _ticker]]
univ_ib_hi = cr_cret.retrieve(univ_ib_eqidx_ext + 'High')[['Date', _ticker]]
univ_ib_lo = cr_cret.retrieve(univ_ib_eqidx_ext + 'High')[['Date', _ticker]]
univ_ib_cl = cr_cret.retrieve(univ_ib_eqidx_ext + 'Close')[['Date', _ticker]]
univ_ib_gd = cr_cret.retrieve(univ_ib_eqidx_ext + 'ExchOpen')[['Date', _ticker]]
z = np.where(univ_ib_gd[_ticker].values.astype('int') == 1)[0]
univ_ib_op = univ_ib_op[list(z), :]
univ_ib_hi = univ_ib_hi[list(z), :]
univ_ib_lo = univ_ib_lo[list(z), :]
univ_ib_cl = univ_ib_cl[list(z), :]

for k in range(10, 60, 10): # range(20, 110, 10):
    print('Looking for EMA equivalent with k = %s' % str(k))
    # calculate good1 for regular lrma
    testk = filt.lrma(univ_ib_cl[_ticker].values, k, lg=True)

    metric = [np.nan, np.nan, np.nan, np.nan, np.nan, np.nan, np.nan, np.nan]
    good1b = np.nan
    good2b = np.nan
    for n1 in range(20, 300, 20): # range(20, 160, 20):
        # n1 = 160
        # print('Processing n1 = %s' % str(n1))
        for n2 in range(5, 105, 5):
            # n2 = 100
            for f1 in range(10, 300, 10): #range(10, 300, 10): # range(2, 100, 2):
                # f1 = 200
                for f2 in range(6, 36, 2): # range(2, 36, 2):
                    # f2 = 28
                    for lthresh in range(0, 2, 1): #[1]:
                        # lthresh = 1