示例#1
0
    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)
示例#3
0
    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)
示例#6
0

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())