def get_stock_excess_pct(): """ 得到股票超额收益率 """ stock_pct = Stock().read_factor_h5("Pct_chg").T free_pct = Macro().get_daily_risk_free_rate() free_pct = free_pct['RiskFreeRate'] stock_excess_pct = stock_pct.sub(free_pct, axis='index') stock_excess_pct = stock_excess_pct.dropna(how='all') return stock_excess_pct
def cal_factor_exposure(self, beg_date, end_date): """ 计算因子暴露 """ income = Stock().read_factor_h5("OperatingIncome").T cost = Stock().read_factor_h5("OperatingCost").T [income, cost] = Stock().make_same_index_columns([income, cost]) gross_profit = income.sub(cost) gross_profit_4 = gross_profit.shift(4) profit_yoy = gross_profit / gross_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): """ 计算因子暴露 """ income = Stock().read_factor_h5("OperatingIncome") cost = Stock().read_factor_h5("OperatingCost") report_data = Stock().read_factor_h5("ReportDateDaily") income_ttm = Stock().change_single_quarter_to_ttm_quarter(income).T cost_ttm = Stock().change_single_quarter_to_ttm_quarter(cost).T gross_profit_ttm = income_ttm.sub(cost_ttm) gross_profit_ratio = gross_profit_ttm.div(income_ttm) gpr = gross_profit_ratio.T gpr = Stock().change_quarter_to_daily_with_disclosure_date( gpr, report_data, beg_date, end_date) res = gpr.T.dropna(how='all').T self.save_alpha_factor_exposure(res, self.raw_factor_name)
def cal_factor_barra_leverage_book_leverage(self): """ 账面杠杆 =(普通股账面价值+优先股账面价值+长期负债)/ 普通股账面价值 """ holder_equity = Stock().read_factor_h5("TotalShareHoldeRequityDaily") preferred_equity = Stock().read_factor_h5("PreferredEquityDaily") common_equity = holder_equity.sub(preferred_equity) long_loan = Stock().read_factor_h5("LongTermLoanDaily") add = holder_equity.add(long_loan, fill_value=0.0) book_leverage = add.div(common_equity) book_leverage = book_leverage.T.dropna(how='all').T self.save_risk_factor_exposure(book_leverage, self.raw_factor_name_book_leverage) book_leverage = FactorPreProcess().remove_extreme_value_mad( book_leverage) book_leverage = FactorPreProcess().standardization(book_leverage) self.save_risk_factor_exposure(book_leverage, self.factor_name_book_leverage)
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)
from quant.stock.stock import Stock from quant.stock.date import Date import pandas as pd pct = Stock().read_factor_h5("Pct_chg") price = Stock().read_factor_h5("Price_Adjust") pct_2 = price.T.pct_change(fill_method=None).T * 100 diff = pct.sub(pct_2) date = diff.abs().max().argmax() diff_date = diff[date] stock = diff_date.abs().argmax() beg_date = Date().get_trade_date_offset(date, -10) end_date = Date().get_trade_date_offset(date, 4) print(stock, date) print(diff.loc[stock, beg_date:end_date]) print(pct.loc[stock, beg_date:end_date]) print(pct_2.loc[stock, beg_date:end_date]) print(price.loc[stock, beg_date:end_date]) print(price.loc[stock, beg_date:end_date].pct_change())