Commit c025702d authored by 赵杰's avatar 赵杰

组合分解收益图数据

parent 2826bea6
...@@ -41,14 +41,22 @@ class UserCustomerResultAdaptor(UserCustomerDataAdaptor): ...@@ -41,14 +41,22 @@ class UserCustomerResultAdaptor(UserCustomerDataAdaptor):
# return_ratio_df, contribution_decomposition= self.combination_yield(cur_folio_result_cnav_data, fund_id_list) # 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_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) resample_cur_folio_result_cnav_data = resample(cur_folio_result_cnav_data, self.trade_cal_date, freq_max)
return_ratio_df, contribution_decomposition = self.combination_yield(resample_cur_folio_result_cnav_data, return_ratio_df, month_return_ratio_df, contribution_decomposition = self.combination_yield(resample_cur_folio_result_cnav_data,
fund_id_list) fund_id_list)
resample_df = resample(return_ratio_df, self.trade_cal_date, freq_max) resample_df = resample(return_ratio_df, self.trade_cal_date, freq_max)
# 收益分解df # 收益分解df
contribution_decomposition_df = contribution_decomposition.fillna(0)*100 contribution_decomposition_df = contribution_decomposition.fillna(0)*100
folio_report_data["contribution_decomposition"] = contribution_decomposition_df p_plot_data = []
for a_fund_id in list(contribution_decomposition_df.columns):
a_name = cur_folio_order_data[cur_folio_order_data["fund_id"]==a_fund_id]["fund_name"].values[0]
plot_data = {'name': a_name, 'data': contribution_decomposition_df[a_fund_id].astype(np.float64).values}
p_plot_data.append(plot_data)
x_lables_data = list(contribution_decomposition_df.index)
cumulative_data = {'name': '总收益', 'data': ((month_return_ratio_df["cum_return_ratio"] - 1)*100).values}
folio_report_data["contribution_decomposition"] = {"xlabels": x_lables_data, "product_list": p_plot_data,
"cumulative": cumulative_data}
# 总成本 # 总成本
total_cost = float(cur_folio_order_data[cur_folio_order_data["order_type"] == 1]["confirm_amount"].sum() - \ total_cost = float(cur_folio_order_data[cur_folio_order_data["order_type"] == 1]["confirm_amount"].sum() - \
...@@ -176,7 +184,7 @@ class UserCustomerResultAdaptor(UserCustomerDataAdaptor): ...@@ -176,7 +184,7 @@ class UserCustomerResultAdaptor(UserCustomerDataAdaptor):
# resample_df = resample(return_ratio_df, self.trade_cal_date, freq_max) # 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) resample_cur_folio_result_cnav_data = resample(cur_folio_result_cnav_data, self.trade_cal_date, freq_max)
return_ratio_df, contribution_decomposition = self.combination_yield(resample_cur_folio_result_cnav_data, fund_id_list) 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) resample_df = resample(return_ratio_df, self.trade_cal_date, freq_max)
# 总成本 # 总成本
...@@ -363,7 +371,26 @@ class UserCustomerResultAdaptor(UserCustomerDataAdaptor): ...@@ -363,7 +371,26 @@ class UserCustomerResultAdaptor(UserCustomerDataAdaptor):
signal_fund_cum_weight = nav_net_amount_df[weight_name_list] signal_fund_cum_weight = nav_net_amount_df[weight_name_list]
re_name = {x: x.replace("_profit_cum_ratio_weight", "") for x in weight_name_list} re_name = {x: x.replace("_profit_cum_ratio_weight", "") for x in weight_name_list}
signal_fund_cum_weight.rename(columns=re_name, inplace=True) signal_fund_cum_weight.rename(columns=re_name, inplace=True)
return cum_return_ratio_df, signal_fund_cum_weight
# 月度分组
def year_month(x):
a = x.year
b = x.month
return str(a) + "/" + str(b)
profit_df_cp = signal_fund_cum_weight.copy()
profit_df_cp["date"] = profit_df_cp.index
grouped = profit_df_cp.groupby(profit_df_cp["date"].apply(year_month))
month_signal_fund_cum = grouped.last().sort_values(by="date")
del month_signal_fund_cum["date"]
p_cum_df = cum_return_ratio_df.copy()
p_cum_df["date"] = p_cum_df.index
cum_grouped = p_cum_df.groupby(p_cum_df["date"].apply(year_month))
month_fund_cum = cum_grouped.last().sort_values(by="date")
del month_fund_cum["date"]
return cum_return_ratio_df, month_fund_cum, month_signal_fund_cum
@staticmethod @staticmethod
def signal_fund_profit_result(p_fund_nav_df, cur_fund_id): def signal_fund_profit_result(p_fund_nav_df, cur_fund_id):
......
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