def VolPrice017(cls, data: pd.DataFrame, n: int = 20, **kwargs): """PMA 特殊""" factor_name = sys._getframe().f_code.co_name + f"_{n}days" data = data.set_index([KN.TRADE_DATE.value, KN.STOCK_ID.value]) data = data.sort_index() # Calculate AM and PM returns on stocks data['am_ret_stock'] = data['2hPrice'] / data[PVN.OPEN.value] - 1 data['pm_ret_stock'] = data['4hPrice'] / data['2hPrice'] - 1 # filter momentum # data[factor_name] = data.groupby(KN.TRADE_DATE.value, # group_keys=False).apply(lambda x: cls._reg(x, 'am_ret_stock', 'pm_ret_stock')) # data['mean'] = data['res'].groupby(KN.STOCK_ID.value, # group_keys=False).rolling(n, min_periods=1).apply(np.nanmean) # data['std'] = data['res'].groupby(KN.STOCK_ID.value, # group_keys=False).rolling(n, min_periods=1).apply(np.nanstd) # data[factor_name] = data['mean'] / data['std'] # data[factor_name][np.isinf(data[factor_name])] = 0 data = cls().reindex(data) data[factor_name] = data['pm_ret_stock'].groupby( KN.TRADE_DATE.value).apply( lambda x: x.rolling(n, min_periods=round(n * 0.8)).mean()) F = DataInfo() F.data = data[factor_name] F.data_type = 'HFD' F.factor_category = cls().__class__.__name__ F.factor_name = factor_name return F
def VolPrice013(cls, data: pd.DataFrame, **kwargs): """轨迹非流动因子(Illiq_Track)""" F = DataInfo() F.data = data F.data_type = 'HFD' F.factor_category = cls().__class__.__name__ F.factor_name = data.name return F
def VolPrice012(cls, data: pd.DataFrame, **kwargs): """高频反转因子(HFD_Rev)""" F = DataInfo() F.data = data F.data_type = 'HFD' F.factor_category = cls().__class__.__name__ F.factor_name = data.name return F
def VolPrice011(cls, data: pd.DataFrame, **kwargs): """聪明钱因子(SmartQ)""" F = DataInfo() F.data = data F.data_type = 'HFD' F.factor_category = cls().__class__.__name__ F.factor_name = data.name return F
def VolPrice009(cls, data: pd.DataFrame, **kwargs): """改进反转(Rev_improve)""" F = DataInfo() F.data = data F.data_type = 'HFD' F.factor_category = cls().__class__.__name__ F.factor_name = data.name return F
def VolPrice008(cls, data: pd.DataFrame, **kwargs): """大单驱动涨幅(MOM_bigOrder)""" F = DataInfo() F.data = data F.data_type = 'HFD' F.factor_category = cls().__class__.__name__ F.factor_name = data.name return F
def VolPrice014(cls, data: pd.DataFrame, **kwargs): """ 加权收盘价比(Close_Weight) 默认一分钟频率 """ F = DataInfo() F.data = data F.data_type = 'HFD' F.factor_category = cls().__class__.__name__ F.factor_name = data.name return F
def VolPrice019(cls, data: pd.DataFrame, **kwargs): """ 订单失衡率(HFD_OLR) 日频转月频需要采用衰减加权的方式 """ F = DataInfo() F.data = data F.data_type = 'HFD' F.factor_category = cls().__class__.__name__ F.factor_name = data.name return F
def VolPrice020(cls, data: pd.DataFrame, **kwargs): """ 市价偏离率(HFD_MPB) 日频转月频需要采用衰减加权的方式 剔除开盘集合竞价 集合竞价会存在0盘口,用前值填充 """ F = DataInfo() F.data = data F.data_type = 'HFD' F.factor_category = cls().__class__.__name__ F.factor_name = data.name return F