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
# 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