Commit d993cc58 authored by 赵杰's avatar 赵杰

更改持仓报告不经过建议计算

parent 5289a79c
......@@ -12,6 +12,7 @@ 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.service.portfolio_diagnose import cal_correlation, get_fund_name, get_frequency
from app.utils.week_evaluation import *
......@@ -194,6 +195,13 @@ class UserCustomerResultAdaptor(UserCustomerDataAdaptor):
"index")
folio_report_data["index_result"] = index_result
folio_report_data["return_df"] = resample_df
# 对应组合相关性
min_date = cur_folio_order_data["confirm_share_date"].min()
df_ = self.total_customer_order_cnav_df[fund_id_list]
df_ = df_[df_.index >= min_date]
correlation = self.old_correlation(df_)
folio_report_data["correlation"] = correlation
self.group_result_data[folio] = folio_report_data
return self.group_result_data
......@@ -623,12 +631,11 @@ class UserCustomerResultAdaptor(UserCustomerDataAdaptor):
def get_group_data(self):
return self.group_result_data
# def __month_return(self, folio_cnav_data):
# # 月度回报
# def year_month(x):
# a = x.year
# b = x.month
# return str(a) + "-" + str(b)
# p_folio_cnav_data = folio_cnav_data.copy()
# p_folio_cnav_data["date"] = p_folio_cnav_data.index
# grouped_data = p_folio_cnav_data.groupby(p_folio_cnav_data["date"].apply(year_month))
def old_correlation(self, cnav_data):
folio_cnav_data = cnav_data.copy()
folio_cnav_data = folio_cnav_data.fillna(method="bfill")
old_correlation = cal_correlation(folio_cnav_data)
old_correlation = old_correlation.fillna(1).round(2)
old_correlation.columns = old_correlation.columns.map(lambda x: get_fund_name(x, self.all_fund_type_dict[x]).values[0][0])
old_correlation.index = old_correlation.index.map(lambda x: get_fund_name(x, self.all_fund_type_dict[x]).values[0][0])
return old_correlation
......@@ -56,7 +56,8 @@ class DataIntegrate:
'suggestions_result_asset': {},
'return_compare_pic': [],
'indicator_compare': [],
'new_group_evaluation': []
'new_group_evaluation': [],
"correlation": group_result["correlation"]
}
# 旧持仓组合点评
......@@ -84,9 +85,13 @@ class DataIntegrate:
def get_portfolio_diagnose(self, portfolio, client_type=1, invest_amount=10000000):
if invest_amount < 10000000:
invest_amount = 10000000
portfolio_diagnose = PortfolioDiagnose(client_type=client_type, portfolio=self.user_customer.all_fund_type_dict,
folio_fund_dict = {}
for fd in portfolio:
folio_fund_dict[fd] = self.user_customer.all_fund_type_dict[fd]
portfolio_diagnose = PortfolioDiagnose(client_type=client_type, portfolio=folio_fund_dict,
invest_amount=float(invest_amount),
start_date=self.user_customer.start_date)
if self.type == 2:
portfolio_diagnose.optimize()
return portfolio_diagnose
......@@ -169,7 +174,7 @@ class DataIntegrate:
def get_old_correlation(self, portfolio_diagnose, cur_group_portfolio_result):
"""旧相关性分析."""
old_correlation = portfolio_diagnose.old_correlation
old_correlation = cur_group_portfolio_result["correlation"]
old_correlation_columns = old_correlation.columns.tolist()
old_correlation_values = old_correlation.values.tolist()
cur_group_portfolio_result["old_correlation"] = list(zip(range(1, len(old_correlation_columns)+1), old_correlation_columns, old_correlation_values))
......
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