Esempio n. 1
0
                                                         keep_value_list].copy(
                                                         )
    for factor in change_factor_list:
        this_factor_df = this_date_components_df.loc[:, [factor, 'Size']]
        #去空
        this_factor_df = xyk_common_data_processing.delete_none(this_factor_df)
        #做回归
        size_sr = this_factor_df.loc[:, 'Size']
        this_factor_sr = this_factor_df.loc[:, factor]
        X_np = sm.add_constant(size_sr)
        ols_model = sm.OLS(this_factor_sr, X_np)
        results = ols_model.fit()
        this_factor_np = results.resid
        this_factor_df.loc[:, factor] = this_factor_np
        #储存
        output_data_dict[date] = pd.concat(
            [output_data_dict[date], this_factor_df.loc[:, factor]],
            axis=1,
            join='outer')

for i, date in enumerate(daily_date_list):
    print date, 'inserting...'
    temp_insert_data = output_data_dict[date]
    temp_insert_data['curr_date'] = date
    temp_insert_data.index.name = 'stock_id'
    temp_insert_data = temp_insert_data.set_index(
        [temp_insert_data['curr_date'],
         temp_insert_data.index]).drop(['curr_date'], axis=1)
    db_interaction.insert_df_append(Output_Table_Name,
                                    temp_insert_data,
                                    index_name_list=["curr_date", "stock_id"])
                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))
                result_list.append([stock, data[0], this_beta, this_HSIGMA])
'''
***输出至DB***
'''
result_pd = xyk_common_data_processing.change_data_format_with_df(
    "list of lists",
    "DataFrame",
    result_list,
    columns_name_list=["stock_id", "curr_date", "Beta", "HSIGMA"])
result_pd.set_index(["stock_id", "curr_date"], inplace=True)
print "Begin inserting..."
table_name = "daily_stock_descriptors_" + Now_Index + "_unique"
db_interaction.insert_df_append(table_name,
                                result_pd,
                                index_name_list=["stock_id", "curr_date"])