Example #1
0
def every_stock_pool_cal(stock):
    print stock
    if len(hq_dict_no_suspension[stock]) > 372:
        for i, data in enumerate(hq_dict_no_suspension[stock]):
            if data[0] >= cal_daily_date_list[0] and i >= 372:
                temp_ROR_list = []
                this_shibor_list = []
                this_index_ROR_list = []
                j = 0
                while j < 252:
                    temp_ROR_list.append(hq_dict_no_suspension[stock][i - j][2] / hq_dict_no_suspension[stock][i - j - 1][2] - 1.0)
                    if SHIBOR_dict.has_key(hq_dict_no_suspension[stock][i - j][0]) == True:
                        this_shibor_list.append(SHIBOR_dict[hq_dict_no_suspension[stock][i - j][0]])
                    else:
                        this_shibor_list.append(SHIBOR_dict['20061008'])
                    this_index_ROR_list.append(index_return_dict[(Now_Index, hq_dict_no_suspension[stock][i - j][0])])
                    j += 1
                this_minus_list = xyk_common_data_processing.element_cal_between_list(temp_ROR_list, this_shibor_list, "-")
                X = sm.add_constant(this_index_ROR_list)
                Y = this_minus_list
                wls_model = sm.WLS(Y, X, weights = half_life_list)
                results = wls_model.fit()
                this_beta = float(results.params[1])
                resid_list = results.resid
                this_resid_mean = sum(resid_list) / float(len(resid_list))
                this_treated_list = []
                for resid_data in resid_list:
                    this_treated_list.append((resid_data - this_resid_mean) * (resid_data - this_resid_mean))
                this_HSIGMA = math.sqrt(xyk_common_data_processing.weighted_mean(this_treated_list, half_life_list))
                result_list.append([stock, data[0], this_beta, this_HSIGMA])
Example #2
0
                pass

    X = sm.add_constant(this_whole_stock_factors_list)
    wls_model = sm.WLS(ROR_list, X, weights=sqrt_liquid_list)
    results = wls_model.fit()
    U_list_temp = results.resid  #残差项,也就是特质因子序列
    T_value_list_temp = results.tvalues  #模型对每个因子的t值
    R_squared_temp = results.rsquared  #模型R2值
    R_squared_adj_temp = results.rsquared_adj  #模型调整后的R2值
    f_list_temp = results.params  #模型参数,也就是因子收益率序列
    U_list.append(U_list_temp)
    T_value_list.append(T_value_list_temp)
    R_squared.append(R_squared_temp)
    R_squared_adj.append(R_squared_adj_temp)
    f_list.append(f_list_temp)
    U2_list_temp = xyk_common_data_processing.element_cal_between_list(
        U_list_temp, U_list_temp, "*")
    WU2_list_temp = xyk_common_data_processing.element_cal_between_list(
        U2_list_temp, sqrt_liquid_list, "*")
    Y2_list_temp = xyk_common_data_processing.element_cal_between_list(
        ROR_list, ROR_list, "*")
    WY2_list_temp = xyk_common_data_processing.element_cal_between_list(
        Y2_list_temp, sqrt_liquid_list, "*")
    R_squared_barra = 1 - sum(WU2_list_temp) / sum(WY2_list_temp)
    R_squared_barra_list.append(R_squared_barra)

    output_list.append(
        [Now_Index, Now_Range, "r_square", "1", date, R_squared_temp])
    output_list.append(
        [Now_Index, Now_Range, "r_square_adj", "1", date, R_squared_adj_temp])
    output_list.append(
        [Now_Index, Now_Range, "R_squared_barra", "1", date, R_squared_barra])
        this_date_volatility_list = []
        for stock in this_date_list:
            if factor_dict.has_key((stock, date)) == True:
                this_stock_daily_factor_list = factor_dict[(stock, date)]
                null_count = 0
                for value in this_stock_daily_factor_list:
                    if value == "" or value == None:
                        null_count += 1
                if null_count == 0:
                    this_date_id_list.append(stock)
                    this_date_size_list.append(factor_dict[(stock, date)][0])
                    this_date_beta_list.append(factor_dict[(stock, date)][1])
                    this_date_volatility_list.append(factor_dict[(stock,
                                                                  date)][2])

        size_temp_list = xyk_common_data_processing.element_cal_between_list(
            this_date_size_list, para_dict[date][1], "*")
        beta_temp_list = xyk_common_data_processing.element_cal_between_list(
            this_date_beta_list, para_dict[date][2], "*")
        minus_1_list = xyk_common_data_processing.element_cal_between_list(
            this_date_volatility_list, para_dict[date][0], "-")
        minus_size_list = xyk_common_data_processing.element_cal_between_list(
            minus_1_list, size_temp_list, "-")
        residual_list = xyk_common_data_processing.element_cal_between_list(
            minus_size_list, beta_temp_list, "-")
        resi_temp_list = xyk_common_data_processing.element_cal_between_list(
            residual_list, para_dict2[date][0], "-")
        resi_standard_list = xyk_common_data_processing.element_cal_between_list(
            resi_temp_list, para_dict2[date][1], "/")

        i = 0
        while i < len(resi_standard_list):
 j = 0
 while j < 252:
     temp_ROR_list.append(
         hq_dict_no_suspension[stock][i - j][2] /
         hq_dict_no_suspension[stock][i - j - 1][2] - 1.0)
     if SHIBOR_dict.has_key(
             hq_dict_no_suspension[stock][i - j][0]) == True:
         this_shibor_list.append(
             SHIBOR_dict[hq_dict_no_suspension[stock][i -
                                                      j][0]])
     else:
         this_shibor_list.append(SHIBOR_dict['20061008'])
     this_index_ROR_list.append(index_return_dict[(
         Now_Index, hq_dict_no_suspension[stock][i - j][0])])
     j += 1
 this_minus_list = xyk_common_data_processing.element_cal_between_list(
     temp_ROR_list, this_shibor_list, "-")
 X = sm.add_constant(this_index_ROR_list)
 Y = this_minus_list
 wls_model = sm.WLS(Y, X, weights=half_life_list)
 results = wls_model.fit()
 this_beta = float(results.params[1])
 resid_list = results.resid
 this_resid_mean = sum(resid_list) / float(len(resid_list))
 this_treated_list = []
 for resid_data in resid_list:
     this_treated_list.append((resid_data - this_resid_mean) *
                              (resid_data - this_resid_mean))
 this_HSIGMA = math.sqrt(
     xyk_common_data_processing.weighted_mean(this_treated_list,
                                              half_life_list,
                                              use_df=1))
Example #5
0
                temp_ln_ROR_list = []
                this_ln_shibor_list = []
                j = 0
                while j < 20:
                    temp_ln_ROR_list.append(
                        math.log(hq_dict_no_suspension[stock][i - j][2] /
                                 hq_dict_no_suspension[stock][i - j - 1][2]))
                    if LN_SHIBOR_dict.has_key(
                            hq_dict_no_suspension[stock][i - j][0]) == True:
                        this_ln_shibor_list.append(
                            LN_SHIBOR_dict[hq_dict_no_suspension[stock][i -
                                                                        j][0]])
                    else:
                        this_ln_shibor_list.append(LN_SHIBOR_dict['20061008'])
                    j += 1
                this_minus_list = xyk_common_data_processing.element_cal_between_list(
                    temp_ln_ROR_list, this_ln_shibor_list, "-")
                this_short_momentum_value = xyk_common_data_processing.weighted_mean(
                    this_minus_list, half_life_list, use_df=1)
                result_list2.append(
                    [stock, data[0], this_short_momentum_value])

half_life_list = xyk_common_data_processing.get_half_life_list(120, 126)
result_list3 = []
count = 0
for stock in hq_dict_no_suspension.keys():
    print count, 'medium'
    count += 1
    if len(hq_dict_no_suspension[stock]) > After_date + 120:
        for i, data in enumerate(hq_dict_no_suspension[stock]):
            if data[0] >= cal_daily_date_list[0] and i >= After_date + 120:
                temp_ln_ROR_list = []
Example #6
0
     if null_count < 4:
         if hq_dict.has_key((stock, date)) == True:
             this_stock_liquid_list.append(hq_dict[(stock, date)][0])
             daily_des_value_list.append(
                 copy.deepcopy(this_stock_daily_des_value_list))
 daily_des_value_list_T = xyk_common_data_processing.exchange_sequence(
     daily_des_value_list)
 daily_des_value_list_T_standard = []
 i = 0
 while i < len(daily_des_value_list_T):
     para_dict[(date, i)] = [
         xyk_common_data_processing.weighted_mean(
             daily_des_value_list_T[i], this_stock_liquid_list, 2),
         xyk_common_data_processing.dev_n(daily_des_value_list_T[i])
     ]
     temp_list = xyk_common_data_processing.element_cal_between_list(
         daily_des_value_list_T[i], para_dict[(date, i)][0], "-")
     temp_list2 = xyk_common_data_processing.element_cal_between_list(
         temp_list, para_dict[(date, i)][1], "/")
     daily_des_value_list_T_standard.append(temp_list2)
     i += 1
 daily_des_value_list_standard = xyk_common_data_processing.exchange_sequence(
     daily_des_value_list_T_standard)
 factor_list = factor_aggregation(daily_des_value_list_standard, 1)
 daily_factor_list_T = xyk_common_data_processing.exchange_sequence(
     factor_list)
 i = 0
 while i < len(daily_factor_list_T):
     para_dict2[(date, i)] = [
         xyk_common_data_processing.weighted_mean(
             daily_factor_list_T[i], this_stock_liquid_list, 2),
         xyk_common_data_processing.dev_n(daily_factor_list_T[i])