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
0b2a3de6
Commit
0b2a3de6
authored
Dec 03, 2020
by
赵杰
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
新组合指标计算初始化数据以及数据库操作
parent
29d64420
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
37 additions
and
8 deletions
+37
-8
portfolio_diagnose.py
app/service/portfolio_diagnose.py
+37
-8
No files found.
app/service/portfolio_diagnose.py
View file @
0b2a3de6
...
...
@@ -3,6 +3,7 @@ from app.utils.risk_parity import *
from
app.pypfopt
import
risk_models
from
app.pypfopt
import
expected_returns
from
app.pypfopt
import
EfficientFrontier
from
app.api.engine
import
tamp_user_engine
,
tamp_product_engine
,
TAMP_SQL
def
cal_correlation
(
prod
):
...
...
@@ -598,12 +599,40 @@ class PortfolioDiagnose(object):
ret
.
append
(
sentence
[
k
]
.
format
(
*
data
[
k
])
.
replace
(
",;"
,
";"
))
return
ret
def
new_evaluation
(
self
):
hold_fund
=
set
(
self
.
portfolio
)
-
set
(
self
.
abandon_fund
)
abandon_fund
=
self
.
abandon_fund
proposal_fund
=
self
.
proposal_fund
data
=
[
hold_fund
,
abandon_fund
,
proposal_fund
]
return
data
def
new_evaluation
(
self
,
group_name
,
group_result
,
data_adaptor
):
group_result_data
=
group_result
[
group_name
]
hold_info
=
group_result_data
[
"group_hoding_info"
]
# 原组合总市值, 区间收益, 年化收益, 波动率, 最大回撤, 夏普比率
total_asset
=
round
(
pd
.
DataFrame
(
hold_info
)[
"market_values"
]
.
sum
(),
2
)
old_return
=
group_result_data
[
"cumulative_return"
]
old_return_ratio_year
=
group_result_data
[
"return_ratio_year"
]
old_volatility
=
group_result_data
[
"volatility"
]
old_max_drawdown
=
group_result_data
[
"max_drawdown"
]
old_sharpe
=
group_result_data
[
"sharpe"
]
# 建议基金数据
index_return
,
propose_fund_return
=
self
.
return_compare
()
propose_fund_id_list
=
list
(
propose_fund_return
.
columns
)
propose_fund_id_list
.
remove
(
"return"
)
with
TAMP_SQL
(
tamp_product_engine
)
as
tamp_product
:
tamp_product_session
=
tamp_product
.
session
sql_product
=
"select distinct `id`, `fund_short_name`, `nav_frequency`, `substrategy` from `fund_info`"
cur
=
tamp_product_session
.
execute
(
sql_product
)
data
=
cur
.
fetchall
()
product_df
=
pd
.
DataFrame
(
list
(
data
),
columns
=
[
'fund_id'
,
'fund_name'
,
'freq'
,
'substrategy'
])
propose_fund_df
=
product_df
[
product_df
[
"fund_id"
]
.
isin
(
propose_fund_id_list
)]
propose_fund_id_list_name
=
[]
# 基金名称,策略分级
# hold_fund = set(self.portfolio) - set(self.abandon_fund)
# abandon_fund = self.abandon_fund
# proposal_fund = self.proposal_fund
# data = [hold_fund, abandon_fund, proposal_fund]
# return data
def
single_evaluation
(
self
,
fund_id
):
"""
...
...
@@ -745,8 +774,8 @@ class PortfolioDiagnose(object):
portfolio
=
[
'HF00002JJ2'
,
'HF00005DBQ'
,
'HF0000681Q'
,
'HF00006693'
,
'HF00006AZF'
,
'HF00006BGS'
]
portfolio_diagnose
=
PortfolioDiagnose
(
client_type
=
1
,
portfolio
=
portfolio
,
invest_amount
=
10000000
)
portfolio_diagnose
.
optimize
()
if
__name__
==
'__main__'
:
print
(
portfolio_diagnose
.
single_fund_radar
())
#
if __name__ == '__main__':
#
print(portfolio_diagnose.single_fund_radar())
# print(portfolio_diagnose.propose_fund_radar())
# print(portfolio_diagnose.old_portfolio_evaluation())
# print('旧组合相关性:', portfolio_diagnose.old_correlation)
...
...
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