示例#1
0
 def bias_turn_pnd(turnratio, sector_df, n):
     bias_turnratio = bt.AZ_Rolling(turnratio, n).mean() / bt.AZ_Rolling(
         turnratio, 480).mean() - 1
     bias_turnratio_up = (bias_turnratio > 0).astype(int)
     bias_turnratio_dn = (bias_turnratio < 0).astype(int)
     target_df = bias_turnratio_up - bias_turnratio_dn
     return target_df * sector_df
示例#2
0
 def CCI(high, low, close, sector_df, n, limit_list):
     PP = (high + low + close) / 3
     CCI_signal = (PP - bt.AZ_Rolling(PP, n).mean()) / bt.AZ_Rolling(
         PP, n).std()
     all_target_df = pd.DataFrame()
     for limit in limit_list:
         CCI_up = (CCI_signal >= limit).astype(int)
         CCI_dn = -(CCI_signal <= -limit).astype(int)
         CCI = CCI_up + CCI_dn
         all_target_df = all_target_df.add(CCI, fill_value=0)
     return all_target_df * sector_df
示例#3
0
 def pnd_vol_continue_ud(self, adj_r, sector_df, n):
     vol_df = bt.AZ_Rolling(adj_r, n).std() * (250**0.5)
     vol_df[vol_df < 0.08] = 0.08
     vol_continue_ud_df = self.pnd_continue_ud(vol_df,
                                               sector_df,
                                               n_list=[3, 4, 5])
     return vol_continue_ud_df
示例#4
0
    def pnd_volitality_and_more_(self, n_list):
        for n in n_list:
            vol_df = bt.AZ_Rolling(self.sector_adj_r, n).std() * (250**0.5)
            vol_df[vol_df < 0.08] = 0.08
            evol_df = bt.AZ_Rolling(vol_df, 30).apply(
                lambda x: 1 if x[-1] > 2 * x.mean() else 0) * self.sector_df
            vol_continue_ud_df = self.pnd_continue_ud(vol_df,
                                                      self.sector_df,
                                                      n_list=[3, 4, 5])
            # 剔除极值
            vol_df_count_down = 1 / (vol_df.replace(0, np.nan) *
                                     self.sector_df)

            file_name = f'vol_p{n}d'
            fun = 'funda_data_deal.BaseDeal.pnd_volitality'
            raw_data_path = ('EM_Funda/DERIVED_14/aadj_r.csv', )
            args = (n, )
            self.judge_save_fun(vol_df,
                                file_name,
                                self.save_root_path,
                                fun,
                                raw_data_path,
                                args,
                                if_filter=False)

            file_name = f'vol_count_down_p{n}d'
            fun = 'funda_data_deal.BaseDeal.pnd_volitality_count_down'
            raw_data_path = ('EM_Funda/DERIVED_14/aadj_r.csv', )
            args = (n, )
            self.judge_save_fun(vol_df_count_down, file_name,
                                self.save_root_path, fun, raw_data_path, args)

            file_name = f'evol_p{n}d'
            fun = 'funda_data_deal.BaseDeal.pnd_evol'
            raw_data_path = ('EM_Funda/DERIVED_14/aadj_r.csv', )
            args = (n, )
            self.judge_save_fun(evol_df, file_name, self.save_root_path, fun,
                                raw_data_path, args)

            file_name = f'continue_ud_p{n}d'
            fun = 'funda_data_deal.BaseDeal.pnd_vol_continue_ud'
            raw_data_path = ('EM_Funda/DERIVED_14/aadj_r.csv', )
            args = (n, )
            self.judge_save_fun(vol_continue_ud_df, file_name,
                                self.save_root_path, fun, raw_data_path, args)
示例#5
0
 def turn_pnd(self, turnratio, sector_df, n, percent):
     turnratio_mean = bt.AZ_Rolling(turnratio, n).mean()
     target_df = self.row_extre(turnratio_mean, sector_df, percent)
     return target_df * sector_df
示例#6
0
 def wgt_return_pnd(self, aadj_r, turnratio, sector_df, n, percent):
     aadj_r_c = (aadj_r * turnratio)
     wgt_return_pnd_df = bt.AZ_Rolling(aadj_r_c, n).sum()
     target_df = self.row_extre(wgt_return_pnd_df, sector_df, percent)
     return target_df
示例#7
0
 def return_pnd(self, aadj_r, sector_df, n, percent):
     return_pnd_df = bt.AZ_Rolling(aadj_r, n).sum()
     target_df = self.row_extre(return_pnd_df, sector_df, percent)
     return target_df
示例#8
0
 def pnd_volitality(adj_r, sector_df, n):
     vol_df = bt.AZ_Rolling(adj_r, n).std() * (250**0.5)
     vol_df[vol_df < 0.08] = 0.08
     return vol_df
示例#9
0
 def pnd_evol(adj_r, sector_df, n):
     vol_df = bt.AZ_Rolling(adj_r, n).std() * (250**0.5)
     vol_df[vol_df < 0.08] = 0.08
     evol_df = bt.AZ_Rolling(
         vol_df, 30).apply(lambda x: 1 if x[-1] > 2 * x.mean() else 0)
     return evol_df * sector_df
示例#10
0
 def pnd_volitality_count_down(adj_r, sector_df, n):
     vol_df = bt.AZ_Rolling(adj_r, n).std() * (250**0.5) * sector_df
     vol_df[vol_df < 0.08] = 0.08
     return 1 / vol_df.replace(0, np.nan)