Commit 2591fee9 authored by 赵杰's avatar 赵杰

修复重采样后的数据日期超前的bug

parent 05619743
......@@ -11,6 +11,7 @@ import numpy as np
import datetime
from decimal import Decimal
from app.service.data_service_v2_1 import UserCustomerDataAdaptor
from app.utils.fund_rank import get_frequency
from app.utils.week_evaluation import *
......@@ -30,7 +31,11 @@ class UserCustomerResultAdaptor(UserCustomerDataAdaptor):
cur_folio_result_cnav_data = self.group_data[folio]["result_cnav_data"]
cur_folio_order_data = self.group_data[folio]["order_df"].copy()
freq_max = cur_folio_order_data["freq"].max()
# freq_max = cur_folio_order_data["freq"].max()
freq_list = [get_frequency(cur_folio_result_cnav_data[[p_nav]]) for p_nav in
cur_folio_result_cnav_data.columns]
freq_dict = {250: 1, 52: 2, 24: 4, 12: 3, 4: 5}
freq_max = freq_dict[min(freq_list)]
first_trade_date = cur_folio_order_data["confirm_share_date"].min()
fund_id_list = list(cur_folio_order_data["fund_id"].unique())
......@@ -43,6 +48,11 @@ class UserCustomerResultAdaptor(UserCustomerDataAdaptor):
# return_ratio_df, contribution_decomposition= self.combination_yield(cur_folio_result_cnav_data, fund_id_list)
# resample_df = resample(return_ratio_df, self.trade_cal_date, freq_max)
resample_cur_folio_result_cnav_data = resample(cur_folio_result_cnav_data, self.trade_cal_date, freq_max)
if resample_cur_folio_result_cnav_data.index.values[-1] > self.end_date:
last = resample_cur_folio_result_cnav_data.index.values[-1]
resample_cur_folio_result_cnav_data["index_date"] = resample_cur_folio_result_cnav_data.index
resample_cur_folio_result_cnav_data.loc[last, "index_date"] = self.end_date
resample_cur_folio_result_cnav_data.set_index("index_date", inplace=True)
resample_cur_folio_result_cnav_data = resample_cur_folio_result_cnav_data[resample_cur_folio_result_cnav_data.index <= self.end_date]
return_ratio_df, month_return_ratio_df, contribution_decomposition = self.combination_yield(resample_cur_folio_result_cnav_data,
fund_id_list)
......@@ -183,7 +193,11 @@ class UserCustomerResultAdaptor(UserCustomerDataAdaptor):
cur_folio_result_cnav_data = self.total_customer_order_cnav_df.copy()
cur_folio_order_data = self.user_customer_order_df.copy()
freq_max = cur_folio_order_data["freq"].max()
# freq_max = cur_folio_order_data["freq"].max()
freq_list = [get_frequency(cur_folio_result_cnav_data[[p_nav]]) for p_nav in
cur_folio_result_cnav_data.columns]
freq_dict = {250: 1, 52: 2, 24: 4, 12: 3, 4: 5}
freq_max = freq_dict[min(freq_list)]
#
fund_id_list = list(cur_folio_order_data["fund_id"].unique())
fund_id_list_earn = [i + "_earn" for i in fund_id_list]
......@@ -201,6 +215,11 @@ class UserCustomerResultAdaptor(UserCustomerDataAdaptor):
# resample_df = resample(return_ratio_df, self.trade_cal_date, freq_max)
resample_cur_folio_result_cnav_data = resample(cur_folio_result_cnav_data, self.trade_cal_date, freq_max)
if resample_cur_folio_result_cnav_data.index.values[-1] > self.end_date:
last = resample_cur_folio_result_cnav_data.index.values[-1]
resample_cur_folio_result_cnav_data["index_date"] = resample_cur_folio_result_cnav_data.index
resample_cur_folio_result_cnav_data.loc[last, "index_date"] = self.end_date
resample_cur_folio_result_cnav_data.set_index("index_date", inplace=True)
resample_cur_folio_result_cnav_data = resample_cur_folio_result_cnav_data[resample_cur_folio_result_cnav_data.index <=self.end_date]
return_ratio_df, month_return_ratio_df, contribution_decomposition = self.combination_yield(resample_cur_folio_result_cnav_data, fund_id_list)
resample_df = resample(return_ratio_df, self.trade_cal_date, freq_max)
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment