def NetProfitYOY(beg_date, end_date): """ 因子说明: 当季净利润的同比增长 披露日期 为 最近财报 """ # param ################################################################################# factor_name = 'NetProfitYOY' ipo_num = 90 # read data ################################################################################# net_profit = Stock().get_factor_h5("NetProfit", None, "primary_mfc").T net_profit_4 = net_profit.shift(4) netprofit_yoy = net_profit / net_profit_4 - 1.0 netprofit_yoy = netprofit_yoy.T netprofit_yoy = StockFactorOperate( ).change_quarter_to_daily_with_report_date(netprofit_yoy, beg_date, end_date) # data precessing ################################################################################# pass # calculate data daily ################################################################################# res = netprofit_yoy.T.dropna(how='all').T # save data ############################################################################# Stock().write_factor_h5(res, factor_name, "alpha_dfc") return res
def NetprofitYOYBiasDaily(beg_date, end_date): """ 因子说明:当季 净利润 同比增长 的 环减值 披露日期 为 最近财报 """ # param ################################################################################# factor_name = 'NetprofitYOYBiasDaily' ipo_num = 90 # read data ################################################################################# profit = Stock().get_factor_h5("NetProfit", None, "primary_mfc").T profit_4 = profit.shift(4) profit_yoy = profit / profit_4 - 1.0 profit_yoy_speed = profit_yoy.diff().T report_data = Stock().get_factor_h5("NetProfit" + "Daily", "ReportDate", 'primary_mfc') profit_yoy_speed = StockFactorOperate().\ change_quarter_to_daily_with_disclosure_date(profit_yoy_speed, report_data, beg_date, end_date) # data precessing ################################################################################# pass # calculate data daily ################################################################################# res = profit_yoy_speed.T.dropna(how='all').T # save data ############################################################################# Stock().write_factor_h5(res, factor_name, "alpha_dfc") return res
def NetProfitQOQ(beg_date, end_date): """ 因子说明: 净利润环比增长率 披露日期 为 最近财报 """ # param ################################################################################# factor_name = 'NetProfitQOQ' ipo_num = 90 # read data ################################################################################# netprofit = Stock().get_factor_h5("NetProfit", None, "primary_mfc").T netprofit_1 = netprofit.shift(1) netprofit_qoq = netprofit.div(netprofit_1) - 1.0 netprofit_qoq = netprofit_qoq.T netprofit_qoq = StockFactorOperate( ).change_quarter_to_daily_with_report_date(netprofit_qoq, beg_date, end_date) # data precessing ################################################################################# pass # calculate data daily ################################################################################# res = netprofit_qoq.T.dropna(how='all').T # save data ############################################################################# Stock().write_factor_h5(res, factor_name, "alpha_dfc") return res
def IncomeYOYDaily(beg_date, end_date): """ 因子说明: 当季营收的同比增长 披露日期 为 最近财报 """ # param ################################################################################# factor_name = 'IncomeYOYDaily' ipo_num = 90 # read data ################################################################################# net_profit = Stock().get_factor_h5("NetProfit", None, "primary_mfc").T net_profit_4 = net_profit.shift(4) netprofit_yoy = net_profit / net_profit_4 - 1.0 netprofit_yoy = netprofit_yoy.T report_data = Stock().get_factor_h5("NetProfit" + "Daily", "ReportDate", 'primary_mfc') netprofit_yoy = StockFactorOperate().change_quarter_to_daily_with_disclosure_date(netprofit_yoy, report_data, beg_date, end_date) # data precessing ################################################################################# pass # calculate data daily ################################################################################# res = netprofit_yoy.T.dropna(how='all').T # save data ############################################################################# Stock().write_factor_h5(res, factor_name, "alpha_dfc") return res
def PEG(beg_date, end_date): """ 因子说明:PE_TTM / 净利润增长速度 当两者都是负数的时候 结果也为负数 披露日期 为 最近财报 """ # param ################################################################################# factor_name = 'PEG' ipo_num = 90 # read data ################################################################################# net_profit = Stock().get_factor_h5("NetProfit", None, "primary_mfc") net_profit = StockFactorOperate().change_single_quarter_to_ttm_quarter( net_profit).T net_profit_4 = net_profit.shift(4) net_profit_g = net_profit / net_profit_4 - 1.0 net_profit_g_mean = net_profit_g.rolling(window=4).median().T report_data = Stock().get_factor_h5("NetProfit" + "Daily", "ReportDate", 'primary_mfc') net_profit_g_mean = StockFactorOperate().\ change_quarter_to_daily_with_disclosure_date(net_profit_g_mean, report_data, beg_date, end_date) pe_ttm = Stock().get_factor_h5("PE_ttm", None, "primary_mfc") [pe_ttm, net_profit_g_mean ] = Stock().make_same_index_columns([pe_ttm, net_profit_g_mean]) pe_ttm_negative = pe_ttm < 0.0 net_profit_g_mean_negative = net_profit_g_mean < 0.0 double_negative = pe_ttm_negative & net_profit_g_mean_negative peg = pe_ttm.div(net_profit_g_mean) peg[double_negative] = -peg[double_negative] # data precessing ################################################################################# pass # calculate data daily ################################################################################# res = peg.T.dropna(how='all').T # save data ############################################################################# Stock().write_factor_h5(res, factor_name, "alpha_dfc") return res
def cal_factor_exposure(self, beg_date, end_date): """ 计算因子暴露 """ profit = Stock().read_factor_h5("TotalAsset").T profit_4 = profit.shift(4) profit_yoy = profit / profit_4 - 1.0 profit_yoy = profit_yoy.T report_data = Stock().read_factor_h5("ReportDateDaily") profit_yoy = Stock().change_quarter_to_daily_with_disclosure_date(profit_yoy, report_data, beg_date, end_date) res = profit_yoy.T.dropna(how='all').T self.save_alpha_factor_exposure(res, self.raw_factor_name)
def cal_factor_exposure(self, beg_date, end_date): """ 计算因子暴露 """ profit = Stock().read_factor_h5("OperatingIncome").T profit_4 = profit.shift(4) profit_yoy = profit / profit_4 - 1.0 yoy_bias = profit_yoy.diff().T report_data = Stock().read_factor_h5("ReportDateDaily") yoy_bias = Stock().change_quarter_to_daily_with_disclosure_date(yoy_bias, report_data, beg_date, end_date) res = yoy_bias.T.dropna(how='all').T self.save_alpha_factor_exposure(res, self.raw_factor_name)
def cal_factor_exposure(self, beg_date, end_date): """ 计算因子暴露 """ income = Stock().read_factor_h5("OperatingIncome").T income_4 = income.shift(4) income_yoy = income / income_4 - 1.0 income_yoy = income_yoy.T report_data = Stock().read_factor_h5("ReportDateDaily") income_yoy = Stock().change_quarter_to_daily_with_disclosure_date( income_yoy, report_data, beg_date, end_date) res = income_yoy.T.dropna(how='all').T self.save_alpha_factor_exposure(res, self.raw_factor_name)
def cal_factor_exposure(self, beg_date, end_date): """ 计算因子暴露 """ cfno = Stock().read_factor_h5("NetOperateCashFlow").T cfno_4 = cfno.shift(4) cfno_yoy = cfno / cfno_4 - 1.0 cfno_yoy = cfno_yoy.T report_data = Stock().read_factor_h5("ReportDateDaily") cfno_yoy = Stock().change_quarter_to_daily_with_disclosure_date( cfno_yoy, report_data, beg_date, end_date) res = cfno_yoy.T.dropna(how='all').T self.save_alpha_factor_exposure(res, self.raw_factor_name)
def cal_factor_exposure(self, beg_date, end_date): """ 计算因子暴露 """ income = Stock().read_factor_h5("OperatingIncome") income_ttm = Stock().change_single_quarter_to_ttm_quarter(income).T income_ttm_1 = income_ttm.shift(1) income_qoq = income_ttm.div(income_ttm_1) - 1.0 income_qoq = income_qoq.T report_data = Stock().read_factor_h5("ReportDateDaily") income_qoq = Stock().change_quarter_to_daily_with_disclosure_date( income_qoq, report_data, beg_date, end_date) res = income_qoq.T.dropna(how='all').T self.save_alpha_factor_exposure(res, self.raw_factor_name)
def cal_factor_exposure(self, beg_date, end_date): """ 计算因子暴露 """ # read data advance = Stock().read_factor_h5("AdvanceReceipts").T advance_4 = advance.shift(4) advance_yoy = advance / advance_4 - 1.0 advance_yoy = advance_yoy.T report_data = Stock().read_factor_h5("ReportDateDaily") advance_yoy = Stock().change_quarter_to_daily_with_disclosure_date( advance_yoy, report_data, beg_date, end_date) res = advance_yoy.T.dropna(how='all').T self.save_alpha_factor_exposure(res, self.raw_factor_name)
def cal_factor_exposure(self, beg_date, end_date): """ 计算因子暴露 """ profit = Stock().read_factor_h5("NetProfitDeducted") profit_ttm = Stock().change_single_quarter_to_ttm_quarter(profit).T profit_ttm_1 = profit_ttm.shift(1) profit_qoq = profit_ttm.div(profit_ttm_1) - 1.0 profit_qoq = profit_qoq.T report_data = Stock().read_factor_h5("ReportDateDaily") profit_qoq = Stock().change_quarter_to_daily_with_disclosure_date( profit_qoq, report_data, beg_date, end_date) res = profit_qoq.T.dropna(how='all').T self.save_alpha_factor_exposure(res, self.raw_factor_name)
def cal_factor_exposure(self, beg_date, end_date): """ 计算因子暴露 """ # read data debt = Stock().read_factor_h5("TotalCurrentLiability").T debt_4 = debt.shift(4) debt_yoy = debt / debt_4 - 1.0 debt_yoy = debt_yoy.T report_data = Stock().read_factor_h5("ReportDateDaily") advance_yoy = Stock().change_quarter_to_daily_with_disclosure_date( debt_yoy, report_data, beg_date, end_date) res = advance_yoy.T.dropna(how='all').T self.save_alpha_factor_exposure(res, self.raw_factor_name)