Commit 5b54bce1 authored by pengxiong@wealthgrow.cn's avatar pengxiong@wealthgrow.cn

Merge remote-tracking branch 'origin/dev' into dev

parents d82a0934 5aa6dde5
......@@ -252,42 +252,43 @@ class UserCustomerResultAdaptor(UserCustomerDataAdaptor):
cur_fund_performance = self.all_fund_performance[cur_fund_id]
cur_fund_info_series = cur_fund_performance.iloc[-1]
# 基金净值数据
fund_basic_info = {"fund_name": row["fund_name"], "confirm_nav": row["nav"]}
fund_basic_info["cur_nav"] = float(self.fund_nav_total[cur_fund_id].dropna().values[-1])
fund_basic_info["cur_cnav"] = float(self.fund_cnav_total[cur_fund_id].dropna().values[-1])
fund_basic_info["ret_1w"] = cur_fund_info_series["ret_1w"] # 上周
fund_basic_info["ret_cum_1m"] = cur_fund_info_series["ret_cum_1m"]
fund_basic_info["ret_cum_6m"] = cur_fund_info_series["ret_cum_6m"]
fund_basic_info["ret_cum_1y"] = cur_fund_info_series["ret_cum_1y"]
fund_basic_info["ret_cum_ytd"] = cur_fund_info_series["ret_cum_ytd"]
fund_basic_info["ret_cum_incep"] = cur_fund_info_series["ret_cum_incep"]
fund_basic_info = {"fund_name": row["fund_name"], "confirm_nav": round(row["nav"],4)}
fund_basic_info["cur_nav"] = round(float(self.fund_nav_total[cur_fund_id].dropna().values[-1]), 4)
fund_basic_info["cur_cnav"] = round(float(self.fund_cnav_total[cur_fund_id].dropna().values[-1]), 4)
fund_basic_info["ret_1w"] = round(cur_fund_info_series["ret_1w"]*100, 2) if cur_fund_info_series["ret_1w"] is not None else "-" # 上周
fund_basic_info["ret_cum_1m"] = round(cur_fund_info_series["ret_cum_1m"]*100, 2) if cur_fund_info_series["ret_cum_1m"] is not None else "-" # 最近一个月
fund_basic_info["ret_cum_6m"] = round(cur_fund_info_series["ret_cum_6m"]*100, 2) if cur_fund_info_series["ret_cum_6m"] is not None else "-" # 最近半年
fund_basic_info["ret_cum_1y"] = round(cur_fund_info_series["ret_cum_1y"]*100, 2) if cur_fund_info_series["ret_cum_1y"] is not None else "-" # 最近一年
fund_basic_info["ret_cum_ytd"] = round(cur_fund_info_series["ret_cum_ytd"]*100, 2) if cur_fund_info_series["ret_cum_ytd"] is not None else "-" # 今年以来
fund_basic_info["ret_cum_incep"] = round(cur_fund_info_series["ret_cum_incep"]*100, 2) if cur_fund_info_series["ret_cum_incep"] is not None else "-" # 成立以来
# 申购以来
confirm_date = pd.to_datetime(row["confirm_share_date"])
confirm_cnav = float(p_result_cnav_data.loc[confirm_date, cur_fund_id])
fund_basic_info["ret_after_confirm"] = (fund_basic_info["cur_cnav"] - confirm_cnav)/confirm_cnav
fund_basic_info["ret_after_confirm"] = round((fund_basic_info["cur_cnav"] - confirm_cnav)/confirm_cnav*100, 2)
# 分红
distribution_df = self.all_fund_distribution[cur_fund_id]
if distribution_df.empty:
fund_basic_info["distribution"] = "-"
else:
distribution_df["price_date"] = pd.to_datetime(distribution_df["price_date"])
fund_basic_info["distribution"] = float(distribution_df[distribution_df["price_date"] > confirm_date]["distribution"].sum())
distribution = float(distribution_df[distribution_df["price_date"] > confirm_date]["distribution"].sum())
fund_basic_info["distribution"] = round(distribution, 4) if distribution != 0 else "-"
group_fund_basic_info.append(fund_basic_info)
# 基金持仓数据
fund_hoding_info = {"fund_strategy_name": dict_substrategy[int(row["substrategy"])], "fund_name": row["fund_name"]}
fund_hoding_info["confirm_date"] = row["confirm_share_date"]
fund_hoding_info["weight"] = float(row["confirm_amount"]) / p_total_amount
fund_hoding_info["market_values"] = float(row["confirm_share"]) * (fund_basic_info["cur_cnav"] - confirm_cnav) + float(row["confirm_amount"])
fund_hoding_info["cost"] = float(row["confirm_amount"])
fund_hoding_info["profit"] = float(row["confirm_share"]) * (fund_basic_info["cur_cnav"] - confirm_cnav)
fund_hoding_info["weight"] = round(float(row["confirm_amount"]) / p_total_amount * 100, 2)
fund_hoding_info["market_values"] = round((float(row["confirm_share"]) * (fund_basic_info["cur_cnav"] - confirm_cnav) + float(row["confirm_amount"]))/10000, 2)
fund_hoding_info["cost"] = round(float(row["confirm_amount"])/10000, 2)
fund_hoding_info["profit"] = round(float(row["confirm_share"]) * (fund_basic_info["cur_cnav"] - confirm_cnav)/10000, 2)
# fund_hoding_info["ykb"] = fund_hoding_info["profit"] / fund_hoding_info["cost"]
try:
fund_hoding_info["ykb"] = float(gain_loss_ratio(p_result_cnav_data[cur_fund_id + "_profit"].dropna()))
fund_hoding_info["ykb"] = round(float(gain_loss_ratio(p_result_cnav_data[cur_fund_id + "_profit"].dropna()))*100, 2)
except:
fund_hoding_info["ykb"] = 0
fund_hoding_info["profit_contribution"] = fund_hoding_info["profit"] / p_sum_profit
fund_hoding_info["ykb"] = "-"
fund_hoding_info["profit_contribution"] = round(fund_hoding_info["profit"]*10000 / p_sum_profit*100, 2)
group_fund_hoding_info.append(fund_hoding_info)
return group_fund_basic_info, group_fund_hoding_info
......
......@@ -2421,20 +2421,24 @@
<th>今年以来</th>
<th>成立以来</th>
</tr>
<ul>
{% for nav_info in group_nav_info %}
<tr>
<td class="jiangzhi_table_item1">1.半夏宏观对冲</td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td class="jiangzhi_table_item1">{{nav_info['fund_name']}}</td>
<td>{{nav_info['confirm_nav']}}</td>
<td>{{nav_info['cur_nav']}}</td>
<td>{{nav_info['cur_cnav']}}</td>
<td>{{nav_info['ret_1w']}}</td>
<td>{{nav_info['ret_after_confirm']}}</td>
<td>{{nav_info['ret_cum_1m']}}</td>
<td>{{nav_info['ret_cum_6m']}}</td>
<td>{{nav_info['ret_cum_1y']}}</td>
<td>{{nav_info['ret_cum_ytd']}}</td>
<td>{{nav_info['ret_cum_incep']}}</td>
<td>{{nav_info['distribution']}}</td>
</tr>
{% endfor %}
</ul>
</table>
</div>
<!--【组合持仓】-->
......@@ -2455,17 +2459,21 @@
<th>盈亏比(%)</th>
<th>盈亏贡献(%)</th>
</tr>
<ul>
{% for hold_info in group_hoding_info %}
<tr>
<td>宏观策略</td>
<td>1.半夏宏观对冲</td>
<td>2020-07-29</td>
<td>16.21</td>
<td>324.91</td>
<td>200</td>
<td>124.91</td>
<td>62.46</td>
<td>12.43</td>
<td>{{hold_info['fund_strategy_name']}}</td>
<td>{{hold_info['fund_name']}}</td>
<td>{{hold_info['confirm_date']}}</td>
<td>{{hold_info['weight']}}1</td>
<td>{{hold_info['market_values']}}</td>
<td>{{hold_info['cost']}}</td>
<td>{{hold_info['profit']}}</td>
<td>{{hold_info['ykb']}}</td>
<td>{{hold_info['profit_contribution']}}</td>
</tr>
{% endfor %}
</ul>
</table>
</div>
<!--贡献分解-->
......
......@@ -46,6 +46,8 @@ index_volatility = round(group_result["index_result"]["volatility"]*100, 2)
index_max_withdrawal = round(group_result["index_result"]["max_drawdown"][0]*100, 2)
index_sharpe_ratio = round(group_result["index_result"]["sharpe"], 2)
group_nav_info = group_result["group_nav_info"]
group_hoding_info = group_result["group_hoding_info"]
# 全部数据
data = {'customer_name':'成龙', 'customer_gender':'女',
......@@ -66,6 +68,8 @@ data = {'customer_name':'成龙', 'customer_gender':'女',
'index_comparison_500':{'section_return':index_section_return, 'annualized_returns': index_annualised_return,
'volatility':index_volatility, 'max_withdrawal':index_max_withdrawal, 'sharpe_ratio':index_sharpe_ratio},
'monthly_return_performance_pic':monthly_return_performance_pic,
'group_nav_info': group_nav_info,
'group_hoding_info': group_hoding_info
}
......
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