Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Sign in
Toggle navigation
F
fund_report
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Packages
Packages
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
彭熊
fund_report
Commits
5b54bce1
Commit
5b54bce1
authored
Nov 30, 2020
by
pengxiong@wealthgrow.cn
Browse files
Options
Browse Files
Download
Plain Diff
Merge remote-tracking branch 'origin/dev' into dev
parents
d82a0934
5aa6dde5
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
52 additions
and
39 deletions
+52
-39
result_service.py
app/service/result_service.py
+19
-18
monthReport.html
app/templates/monthReport.html
+29
-21
jinjia2html.py
jinjia2html.py
+4
-0
No files found.
app/service/result_service.py
View file @
5b54bce1
...
...
@@ -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"
:
ro
w
[
"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"
:
ro
und
(
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
...
...
app/templates/monthReport.html
View file @
5b54bce1
...
...
@@ -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.2
1
</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>
<!--贡献分解-->
...
...
jinjia2html.py
View file @
5b54bce1
...
...
@@ -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
}
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment