def cal_factor_exposure(self, beg_date, end_date): """ 计算因子暴露 """ # read data cfo = Stock().read_factor_h5("NetOperateCashFlow") cfo_ttm = Stock().change_single_quarter_to_ttm_quarter(cfo) total_share = Stock().read_factor_h5("TotalShare") price_unadjust = Stock().read_factor_h5("Price_Unadjust") report_data = Stock().read_factor_h5("ReportDateDaily") # data precessing cfo_ttm = Stock().change_quarter_to_daily_with_disclosure_date( cfo_ttm, report_data, beg_date, end_date) [total_share, price_unadjust] = FactorPreProcess().make_same_index_columns( [total_share, price_unadjust]) total_mv = total_share.mul(price_unadjust) / 100000000 [cfo_ttm, total_mv] = Stock().make_same_index_columns([cfo_ttm, total_mv]) cfno2p = cfo_ttm.div(total_mv) # save data cfno2p = cfno2p.T.dropna(how='all').T self.save_alpha_factor_exposure(cfno2p, self.raw_factor_name)
def TotalAssetTurnBias(beg_date, end_date): # 总资产周转率环减 # 因子说明:当季度(营业收入TTM / 总资产加权)- 本季度(营业收入TTM / 总资产加权) # TTM 为统一财报期 # param ################################################################################# factor_name = 'TotalAssetTurnBias' ipo_num = 90 # read data ################################################################################# income_q = Stock().get_factor_h5("OperatingIncome", None, 'primary_mfc') total_asset = Stock().get_factor_h5("TotalAsset", None, 'primary_mfc') total_asset = StockFactorOperate().change_single_quarter_to_ttm_quarter(total_asset) total_asset /= 4.0 turnover = income_q.div(total_asset) turnover_qoq = turnover.T.diff().T turnover_qoq = StockFactorOperate().change_quarter_to_daily_with_report_date(turnover_qoq, beg_date, end_date) # code set & date set ################################################################################# pass res = turnover_qoq.T.dropna(how='all').T # save data ############################################################################# Stock().write_factor_h5(res, factor_name, "alpha_dfc") return res
def cal_factor_barra_growth_5years_sales_growth(self, beg_date, end_date): """ 过去5年每股营收 回归 等差数列 的系数 除以 每股盈利的平均值 """ report_data = Stock().read_factor_h5("ReportDateDaily") total_income = Stock().read_factor_h5("OperatingIncomeTotal") total_share = Stock().read_factor_h5("TotalShare") / 100000000 normal_date_series = Date().get_normal_date_series(total_share.columns[0], total_share.columns[-1]) total_share = total_share.loc[:, normal_date_series] total_share = total_share.T.fillna(method='pad', limit=10).T total_share, total_income = StockFactor().make_same_index_columns([total_share, total_income]) income_pre_share = total_income.div(total_share).T ips_ttm_growth = income_pre_share.rolling(4).sum() month = ips_ttm_growth.index[-1][4:6] ips_ttm_quarter = ips_ttm_growth.index ips_ttm_year = list(filter(lambda x: x[4:6] == month, list(ips_ttm_growth.index))) ips_ttm_growth = ips_ttm_growth.loc[ips_ttm_year, :] ips_ttm_growth = ips_ttm_growth.rolling(5).apply(self.slope) ips_ttm_growth = ips_ttm_growth.loc[ips_ttm_quarter, :] ips_ttm_growth = ips_ttm_growth.fillna(method='pad', limit=3).T ips_ttm_growth = StockFactor().change_quarter_to_daily_with_disclosure_date(ips_ttm_growth, report_data, beg_date, end_date) self.save_risk_factor_exposure(ips_ttm_growth, self.raw_factor_name_5y_sale) ips_ttm_growth = FactorPreProcess().remove_extreme_value_mad(ips_ttm_growth) ips_ttm_growth = FactorPreProcess().standardization(ips_ttm_growth) self.save_risk_factor_exposure(ips_ttm_growth, self.factor_name_5y_sale)
def EBITIncomeBias(beg_date, end_date): """ 因子说明: 息税前利润/营业总收入 环比增长率 披露日期 为 最近财报 """ # param ################################################################################# factor_name = 'EBITIncomeBias' ipo_num = 90 # read data ################################################################################# ebit = Stock().get_factor_h5("EBIT", None, "primary_mfc") income = Stock().get_factor_h5("OperatingIncome", None, "primary_mfc") [income, ebit] = Stock().make_same_index_columns([income, ebit]) margin = ebit.div(income).T margin = margin.diff().T margin = StockFactorOperate().change_quarter_to_daily_with_report_date( margin, beg_date, end_date) # data precessing ################################################################################# pass # calculate data daily ################################################################################# res = margin.T.dropna(how='all').T # save data ############################################################################# Stock().write_factor_h5(res, factor_name, "alpha_dfc") return res
def RetainMarketValue(beg_date, end_date): """ 因子说明: 留存收益 / 总市值 披露日期 为 最近财报 """ # param ################################################################################# factor_name = 'RetainMarketValue' ipo_num = 90 # read data ################################################################################# retain = Stock().get_factor_h5("RetainedEarnings", None, "primary_mfc") mv = Stock().get_factor_h5("TotalMarketValue", None, "alpha_dfc") retain = StockFactorOperate().change_quarter_to_daily_with_report_date( retain, beg_date, end_date) [retain, mv] = Stock().make_same_index_columns([retain, mv]) retain_ratio = retain.div(mv) # data precessing ################################################################################# pass # calculate data daily ################################################################################# res = retain_ratio.T.dropna(how='all').T # save data ############################################################################# Stock().write_factor_h5(res, factor_name, "alpha_dfc") return res
def CashMarketValue(beg_date, end_date): """ 因子说明: 货币资金/总市值, 根据最新财报更新数据 披露日期 为 最近财报 """ # param ################################################################################# factor_name = 'CashMarketValue' ipo_num = 90 # read data ################################################################################# cash = Stock().get_factor_h5("CashEquivalents", None, "primary_mfc") total_mv = Stock().get_factor_h5("TotalMarketValue", None, "alpha_dfc") cash = StockFactorOperate().change_quarter_to_daily_with_report_date( cash, beg_date, end_date) [cash, total_mv] = Stock().make_same_index_columns([cash, total_mv]) cash_price = cash.div(total_mv) # data precessing ################################################################################# pass # calculate data daily ################################################################################# res = cash_price.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 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): """ 计算因子暴露 """ 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): """ 计算因子暴露 """ 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_barra_leverage_debt_to_asset(self): """ 资产负债比 = 总负债/总资产 """ total_debt = Stock().read_factor_h5("TotalLiabilityDaily") total_asset = Stock().read_factor_h5('TotalAssetDaily') debt_to_asset = total_debt.div(total_asset) debt_to_asset = debt_to_asset.T.dropna(how='all').T self.save_risk_factor_exposure(debt_to_asset, self.raw_factor_name_debt_to_asset) debt_to_asset = FactorPreProcess().remove_extreme_value_mad( debt_to_asset) debt_to_asset = FactorPreProcess().standardization(debt_to_asset) self.save_risk_factor_exposure(debt_to_asset, self.factor_name_debt_to_asset)
def cal_factor_exposure(self, beg_date, end_date): """ 计算因子暴露 """ # read data net_profit = Stock().read_factor_h5("NetProfitDeducted") asset = Stock().read_factor_h5("TotalAsset") / 100000000.0 [net_profit, asset] = Stock().make_same_index_columns([net_profit, asset]) roe = 4 * net_profit.div(asset) report_data = Stock().read_factor_h5("ReportDateDaily") roe = Stock().change_quarter_to_daily_with_disclosure_date( roe, report_data, beg_date, end_date) res = roe.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") total_asset = Stock().read_factor_h5("TotalAsset") / 100000000 report_data = Stock().read_factor_h5("ReportDateDaily") income_ttm = Stock().change_single_quarter_to_ttm_quarter(income) total_asset = Stock().change_single_quarter_to_ttm_quarter( total_asset) / 4.0 turnover = income_ttm.div(total_asset) at_bias = turnover.T.diff().T at_bias = Stock().change_quarter_to_daily_with_disclosure_date( at_bias, report_data, beg_date, end_date) at_bias = at_bias.T.dropna(how='all').T self.save_alpha_factor_exposure(at_bias, self.raw_factor_name)
def cal_factor_exposure(self, beg_date, end_date): """ 计算因子暴露 """ # param cfo = Stock().read_factor_h5("NetOperateCashFlow") cfo_ttm = Stock().change_single_quarter_to_ttm_quarter(cfo) debt = Stock().read_factor_h5("TotalLiability") / 100000000 debt_ttm = Stock().change_single_quarter_to_ttm_quarter(debt) / 4.0 cfo2d = cfo_ttm.div(debt_ttm) report_data = Stock().read_factor_h5("ReportDateDaily") cfo2d = Stock().change_quarter_to_daily_with_disclosure_date( cfo2d, report_data, beg_date, end_date) res = cfo2d.T.dropna(how='all').T self.save_alpha_factor_exposure(res, self.raw_factor_name)
def cal_factor_exposure(self, beg_date, end_date): """ 计算因子暴露 """ # param cfo = Stock().read_factor_h5("NetOperateCashFlow") cfo_ttm = Stock().change_single_quarter_to_ttm_quarter(cfo) report_data = Stock().read_factor_h5("ReportDateDaily") cfo_ttm = Stock().change_quarter_to_daily_with_disclosure_date( cfo_ttm, report_data, beg_date, end_date) ev = Stock().read_factor_h5("Ev2") / 100000000 # data precessing [cfo_ttm, ev] = Stock().make_same_index_columns([cfo_ttm, ev]) res = cfo_ttm.div(ev) res = res.T.dropna(how='all').T self.save_alpha_factor_exposure(res, self.raw_factor_name)
def cal_factor_exposure(self, beg_date, end_date): """ 计算因子暴露 """ # param cfo = Stock().read_factor_h5("NetOperateCashFlow") cfo_ttm = Stock().change_single_quarter_to_ttm_quarter(cfo) income = Stock().read_factor_h5("OperatingIncome") income_ttm = Stock().change_single_quarter_to_ttm_quarter(income) / 4.0 cfo2income = cfo_ttm.div(income_ttm) report_data = Stock().read_factor_h5("ReportDateDaily") cfo2income = Stock().change_quarter_to_daily_with_disclosure_date( cfo2income, report_data, beg_date, end_date) res = cfo2income.T.dropna(how='all').T self.save_alpha_factor_exposure(res, self.raw_factor_name)
def cal_predicted_earnings_to_price_ratio(self): """ 预期盈利 / 总市值 """ e1_predicted = Stock().read_factor_h5("FE_1") price_unadjust = Stock().read_factor_h5("Price_Unadjust") e1_predicted, price_unadjust = FactorPreProcess( ).make_same_index_columns([e1_predicted, price_unadjust]) ep1_predicted = e1_predicted.div(price_unadjust) ep1_predicted = ep1_predicted.T.dropna(how='all').T self.save_risk_factor_exposure(ep1_predicted, self.raw_factor_name_predicted) ep1_predicted = FactorPreProcess().remove_extreme_value_mad( ep1_predicted) ep1_predicted = FactorPreProcess().standardization(ep1_predicted) self.save_risk_factor_exposure(ep1_predicted, self.factor_name_predicted)
def cal_factor_exposure(self, beg_date, end_date): """ 计算因子暴露 """ # read data advance = Stock().read_factor_h5("AdvanceReceipts") total_share = Stock().read_factor_h5("TotalShare") price_unadjust = Stock().read_factor_h5("Price_Unadjust") report_data = Stock().read_factor_h5("ReportDateDaily") # data precessing advance = Stock().change_quarter_to_daily_with_disclosure_date(advance, report_data, beg_date, end_date) [total_share, price_unadjust] = Stock().make_same_index_columns([total_share, price_unadjust]) total_mv = total_share.mul(price_unadjust) [advance, total_mv] = Stock().make_same_index_columns([advance, total_mv]) ar2p = advance.div(total_mv) res = ar2p.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 cfo = Stock().read_factor_h5("NetOperateCashFlow") cfo_ttm = Stock().change_single_quarter_to_ttm_quarter(cfo) asset = Stock().read_factor_h5("TotalAsset") / 100000000.0 asset_ttm = Stock().change_single_quarter_to_ttm_quarter(asset) / 4.0 [cfo_ttm, asset_ttm] = Stock().make_same_index_columns([cfo_ttm, asset_ttm]) roa = cfo_ttm.div(asset_ttm) report_data = Stock().read_factor_h5("ReportDateDaily") roa = Stock().change_quarter_to_daily_with_disclosure_date(roa, report_data, beg_date, end_date) res = roa.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 net_profit = Stock().read_factor_h5("NetProfitDeducted") holder = Stock().read_factor_h5("TotalShareHoldeRequity") / 100000000.0 holder_ttm = Stock().change_single_quarter_to_ttm_quarter(holder) / 4.0 # holder_ttm[holder_ttm < 1.0] = np.nan [net_profit, holder_ttm ] = Stock().make_same_index_columns([net_profit, holder_ttm]) roe = 4 * net_profit.div(holder_ttm) report_data = Stock().read_factor_h5("ReportDateDaily") roe = Stock().change_quarter_to_daily_with_disclosure_date( roe, report_data, beg_date, end_date) res = roe.T.dropna(how='all').T self.save_alpha_factor_exposure(res, self.raw_factor_name)
def CFNOTTMTotalDebt(beg_date, end_date): """ 因子说明: 经营活动现金净流量(TTM)/负债合计, 根据最新财报更新数据 披露日期 为 最近财报 总负债可能是负值 000637.SZ 20120331 应交税费为负值 导致整体负债为负值 """ # param ################################################################################# factor_name = 'CFNOTTMTotalDebt' ipo_num = 90 # read data ################################################################################# operate_cash = Stock().get_factor_h5("NetOperateCashFlow", None, "primary_mfc") total_liability = Stock().get_factor_h5("TotalLiability", None, "primary_mfc") operate_cash = StockFactorOperate().change_single_quarter_to_ttm_quarter( operate_cash) / 4 [operate_cash, total_liability ] = Stock().make_same_index_columns([operate_cash, total_liability]) total_liability[total_liability < 0.0] = np.nan cfo_td = operate_cash.div(total_liability) cfo_td = StockFactorOperate().change_quarter_to_daily_with_report_date( cfo_td, beg_date, end_date) # data precessing ################################################################################# pass # calculate data daily ################################################################################# res = cfo_td.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): """ 计算因子暴露 """ # read data holder = Stock().read_factor_h5("TotalShareHoldeRequity") total_share = Stock().read_factor_h5("TotalShare") price_unadjust = Stock().read_factor_h5("Price_Unadjust") report_data = Stock().read_factor_h5("ReportDateDaily") # data precessing holder = Stock().change_quarter_to_daily_with_disclosure_date(holder, report_data, beg_date, end_date) [total_share, price_unadjust] = FactorPreProcess().make_same_index_columns([total_share, price_unadjust]) total_mv = total_share.mul(price_unadjust) [holder, total_mv] = Stock().make_same_index_columns([holder, total_mv]) bp = holder.div(total_mv) # save data bp = bp.T.dropna(how='all').T self.save_alpha_factor_exposure(bp, self.raw_factor_name)
def cal_factor_exposure(self, beg_date, end_date): """ 计算因子暴露 """ # read data cash = Stock().read_factor_h5("CashEquivalents") total_share = Stock().read_factor_h5("TotalShare") price_unadjust = Stock().read_factor_h5("Price_Unadjust") report_data = Stock().read_factor_h5("ReportDateDaily") # data precessing cash = Stock().change_quarter_to_daily_with_disclosure_date(cash, report_data, beg_date, end_date) [total_share, price_unadjust] = FactorPreProcess().make_same_index_columns([total_share, price_unadjust]) total_mv = total_share.mul(price_unadjust) [cash, total_mv] = Stock().make_same_index_columns([cash, total_mv]) cp = 4 * cash.div(total_mv) # save data cp = cp.T.dropna(how='all').T self.save_alpha_factor_exposure(cp, self.raw_factor_name)
def cal_factor_exposure(self, beg_date, end_date): """ 计算因子暴露 """ # read data total_share = Stock().read_factor_h5("TotalShare") price_unadjust = Stock().read_factor_h5("Price_Unadjust") income = Stock().read_factor_h5("OperatingIncome") income = Stock().change_single_quarter_to_ttm_quarter(income) report_data = Stock().read_factor_h5("ReportDateDaily") income = Stock().change_quarter_to_daily_with_disclosure_date(income, report_data, beg_date, end_date) # data precessing [total_share, price_unadjust] = FactorPreProcess().make_same_index_columns([total_share, price_unadjust]) total_mv = total_share.mul(price_unadjust) / 100000000 [income, total_mv] = Stock().make_same_index_columns([income, total_mv]) sp = income.div(total_mv) # save data sp = sp.T.dropna(how='all').T self.save_alpha_factor_exposure(sp, self.raw_factor_name)
def cal_factor_exposure(self, beg_date, end_date): """ 计算因子暴露 """ # read data research = Stock().read_factor_h5("ResearchDevelopmentExpense") research = research.fillna(0.0) income = Stock().read_factor_h5("OperatingIncome") research_ttm = Stock().change_single_quarter_to_ttm_quarter(research) income_ttm = Stock().change_single_quarter_to_ttm_quarter(income) / 4.0 [research_ttm, income_ttm ] = Stock().make_same_index_columns([research_ttm, income_ttm]) roa = research_ttm.div(income_ttm) report_data = Stock().read_factor_h5("ReportDateDaily") roa = Stock().change_quarter_to_daily_with_disclosure_date( roa, report_data, beg_date, end_date) res = roa.T.dropna(how='all').T self.save_alpha_factor_exposure(res, self.raw_factor_name)
def ROEQuarterDaily(beg_date, end_date): """ 因子说明: ROE 单季 披露日期 为 最近财报 """ # param ################################################################################# factor_name = 'ROEQuarterDaily' ipo_num = 90 beg_date = Date().get_trade_date_offset(beg_date, -250) # read data ################################################################################# net_profit = Stock().get_factor_h5("NetProfit", None, "primary_mfc") holder = Stock().get_factor_h5("TotalShareHoldeRequity", None, "primary_mfc") [net_profit, holder] = Stock().make_same_index_columns([net_profit, holder]) roe = net_profit.div(holder) report_data = Stock().get_factor_h5("NetProfit" + "Daily", "ReportDate", 'primary_mfc') roe = StockFactorOperate().change_quarter_to_daily_with_disclosure_date( roe, report_data, beg_date, end_date) # data precessing ################################################################################# pass # calculate data daily ################################################################################# res = roe.T.dropna(how='all').T # save data ############################################################################# Stock().write_factor_h5(res, factor_name, "alpha_dfc") return res
def EPQuarterDaily(beg_date, end_date): """ 因子说明: 当季净利润EP 披露日期 为 最近财报 """ # param ################################################################################# factor_name = 'EPQuarterDaily' ipo_num = 90 # read data ################################################################################# netprofit = Stock().get_factor_h5("NetProfit", None, "primary_mfc") total_mv = Stock().get_factor_h5("TotalMarketValue", None, "alpha_dfc") report_data = Stock().get_factor_h5("OperatingIncome" + "Daily", "ReportDate", 'primary_mfc') netprofit = StockFactorOperate( ).change_quarter_to_daily_with_disclosure_date(netprofit, report_data, beg_date, end_date) [total_mv, netprofit] = Stock().make_same_index_columns([total_mv, netprofit]) total_mv /= 100000000 ratio = netprofit.div(total_mv) # data precessing ################################################################################# pass # calculate data daily ################################################################################# res = ratio.T.dropna(how='all').T # save data ############################################################################# Stock().write_factor_h5(res, factor_name, "alpha_dfc") return res
def cal_cash_earnings_to_price_ratio(self, beg_date, end_date): """ 经营性现金流净额 / 总市值 """ nocf = Stock().read_factor_h5("NetOperateCashFlow") report_data = Stock().read_factor_h5("ReportDateDaily") nocf = Stock().change_single_quarter_to_ttm_quarter(nocf) nocf = Stock().change_quarter_to_daily_with_disclosure_date( nocf, report_data, beg_date, end_date) total_share = Stock().read_factor_h5("TotalShare") price_unadjust = Stock().read_factor_h5("Price_Unadjust") result = FactorPreProcess().make_same_index_columns( [nocf, total_share, price_unadjust]) nocf, total_share, price_unadjust = result total_mv = total_share.mul(price_unadjust) / 100000000 nocf_mv = nocf.div(total_mv) nocf_mv = nocf_mv.T.dropna(how='all').T self.save_risk_factor_exposure(nocf_mv, self.raw_factor_name_cash) nocf_mv = FactorPreProcess().remove_extreme_value_mad(nocf_mv) nocf_mv = FactorPreProcess().standardization(nocf_mv) self.save_risk_factor_exposure(nocf_mv, self.factor_name_cash)
def cal_factor_exposure(self, beg_date, end_date): """ 计算因子暴露 """ # read data income = Stock().read_factor_h5("OperatingIncome") cost = Stock().read_factor_h5("OperatingCost") total_share = Stock().read_factor_h5("TotalShare") price_unadjust = Stock().read_factor_h5("Price_Unadjust") report_data = Stock().read_factor_h5("ReportDateDaily") profit = income.sub(cost) # data precessing profit = Stock().change_quarter_to_daily_with_disclosure_date(profit, report_data, beg_date, end_date) [total_share, price_unadjust] = FactorPreProcess().make_same_index_columns([total_share, price_unadjust]) total_mv = total_share.mul(price_unadjust) / 100000000 [profit, total_mv] = Stock().make_same_index_columns([profit, total_mv]) gross_ep = 4 * profit.div(total_mv) # save data gross_ep = gross_ep.T.dropna(how='all').T self.save_alpha_factor_exposure(gross_ep, self.raw_factor_name)
def cal_factor_exposure(self, beg_date, end_date): """ 计算因子暴露 """ # read data retain = Stock().read_factor_h5("RetainedEarnings") total_share = Stock().read_factor_h5("TotalShare") price_unadjust = Stock().read_factor_h5("Price_Unadjust") report_data = Stock().read_factor_h5("ReportDateDaily") # data precessing retain = Stock().change_quarter_to_daily_with_disclosure_date( retain, report_data, beg_date, end_date) [total_share, price_unadjust] = FactorPreProcess().make_same_index_columns( [total_share, price_unadjust]) total_mv = total_share.mul(price_unadjust) / 100000000 [retain, total_mv] = Stock().make_same_index_columns([retain, total_mv]) retain2p = 4 * retain.div(total_mv) # save data retain2p = retain2p.T.dropna(how='all').T self.save_alpha_factor_exposure(retain2p, self.raw_factor_name)