Commit 29f5f360 authored by 赵杰's avatar 赵杰

修改净值数据格式

parent f9396627
...@@ -252,42 +252,43 @@ class UserCustomerResultAdaptor(UserCustomerDataAdaptor): ...@@ -252,42 +252,43 @@ class UserCustomerResultAdaptor(UserCustomerDataAdaptor):
cur_fund_performance = self.all_fund_performance[cur_fund_id] cur_fund_performance = self.all_fund_performance[cur_fund_id]
cur_fund_info_series = cur_fund_performance.iloc[-1] cur_fund_info_series = cur_fund_performance.iloc[-1]
# 基金净值数据 # 基金净值数据
fund_basic_info = {"fund_name": row["fund_name"], "confirm_nav": row["nav"]} fund_basic_info = {"fund_name": row["fund_name"], "confirm_nav": round(row["nav"],4)}
fund_basic_info["cur_nav"] = float(self.fund_nav_total[cur_fund_id].dropna().values[-1]) fund_basic_info["cur_nav"] = round(float(self.fund_nav_total[cur_fund_id].dropna().values[-1]), 4)
fund_basic_info["cur_cnav"] = float(self.fund_cnav_total[cur_fund_id].dropna().values[-1]) fund_basic_info["cur_cnav"] = round(float(self.fund_cnav_total[cur_fund_id].dropna().values[-1]), 4)
fund_basic_info["ret_1w"] = cur_fund_info_series["ret_1w"] # 上周 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"] = cur_fund_info_series["ret_cum_1m"] 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"] = cur_fund_info_series["ret_cum_6m"] 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"] = cur_fund_info_series["ret_cum_1y"] 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"] = cur_fund_info_series["ret_cum_ytd"] 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"] = cur_fund_info_series["ret_cum_incep"] 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_date = pd.to_datetime(row["confirm_share_date"])
confirm_cnav = float(p_result_cnav_data.loc[confirm_date, cur_fund_id]) 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] distribution_df = self.all_fund_distribution[cur_fund_id]
if distribution_df.empty: if distribution_df.empty:
fund_basic_info["distribution"] = "-" fund_basic_info["distribution"] = "-"
else: else:
distribution_df["price_date"] = pd.to_datetime(distribution_df["price_date"]) 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) 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 = {"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["confirm_date"] = row["confirm_share_date"]
fund_hoding_info["weight"] = float(row["confirm_amount"]) / p_total_amount fund_hoding_info["weight"] = round(float(row["confirm_amount"]) / p_total_amount * 100, 2)
fund_hoding_info["market_values"] = float(row["confirm_share"]) * (fund_basic_info["cur_cnav"] - confirm_cnav) + float(row["confirm_amount"]) 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"] = float(row["confirm_amount"]) fund_hoding_info["cost"] = round(float(row["confirm_amount"])/10000, 2)
fund_hoding_info["profit"] = float(row["confirm_share"]) * (fund_basic_info["cur_cnav"] - confirm_cnav) 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"] # fund_hoding_info["ykb"] = fund_hoding_info["profit"] / fund_hoding_info["cost"]
try: 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: except:
fund_hoding_info["ykb"] = 0 fund_hoding_info["ykb"] = "-"
fund_hoding_info["profit_contribution"] = fund_hoding_info["profit"] / p_sum_profit fund_hoding_info["profit_contribution"] = round(fund_hoding_info["profit"]*10000 / p_sum_profit*100, 2)
group_fund_hoding_info.append(fund_hoding_info) group_fund_hoding_info.append(fund_hoding_info)
return group_fund_basic_info, group_fund_hoding_info return group_fund_basic_info, group_fund_hoding_info
......
...@@ -2421,20 +2421,24 @@ ...@@ -2421,20 +2421,24 @@
<th>今年以来</th> <th>今年以来</th>
<th>成立以来</th> <th>成立以来</th>
</tr> </tr>
<ul>
{% for nav_info in group_nav_info %}
<tr> <tr>
<td class="jiangzhi_table_item1">1.半夏宏观对冲</td> <td class="jiangzhi_table_item1">{{nav_info['fund_name']}}</td>
<td></td> <td>{{nav_info['confirm_nav']}}</td>
<td></td> <td>{{nav_info['cur_nav']}}</td>
<td></td> <td>{{nav_info['cur_cnav']}}</td>
<td></td> <td>{{nav_info['ret_1w']}}</td>
<td></td> <td>{{nav_info['ret_after_confirm']}}</td>
<td></td> <td>{{nav_info['ret_cum_1m']}}</td>
<td></td> <td>{{nav_info['ret_cum_6m']}}</td>
<td></td> <td>{{nav_info['ret_cum_1y']}}</td>
<td></td> <td>{{nav_info['ret_cum_ytd']}}</td>
<td></td> <td>{{nav_info['ret_cum_incep']}}</td>
<td></td> <td>{{nav_info['distribution']}}</td>
</tr> </tr>
{% endfor %}
</ul>
</table> </table>
</div> </div>
<!--【组合持仓】--> <!--【组合持仓】-->
...@@ -2455,17 +2459,21 @@ ...@@ -2455,17 +2459,21 @@
<th>盈亏比(%)</th> <th>盈亏比(%)</th>
<th>盈亏贡献(%)</th> <th>盈亏贡献(%)</th>
</tr> </tr>
<ul>
{% for hold_info in group_hoding_info %}
<tr> <tr>
<td>宏观策略</td> <td>{{hold_info['fund_strategy_name']}}</td>
<td>1.半夏宏观对冲</td> <td>{{hold_info['fund_name']}}</td>
<td>2020-07-29</td> <td>{{hold_info['confirm_date']}}</td>
<td>16.21</td> <td>{{hold_info['weight']}}1</td>
<td>324.91</td> <td>{{hold_info['market_values']}}</td>
<td>200</td> <td>{{hold_info['cost']}}</td>
<td>124.91</td> <td>{{hold_info['profit']}}</td>
<td>62.46</td> <td>{{hold_info['ykb']}}</td>
<td>12.43</td> <td>{{hold_info['profit_contribution']}}</td>
</tr> </tr>
{% endfor %}
</ul>
</table> </table>
</div> </div>
<!--贡献分解--> <!--贡献分解-->
......
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