Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Sign in
Toggle navigation
R
robo-dividend
Project
Project
Details
Activity
Releases
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
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
wenwen.tang
robo-dividend
Commits
1647ce65
Commit
1647ce65
authored
Apr 03, 2024
by
wenwen.tang
😕
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
https://www.tapd.cn/59187493/documents/show/1159187493001000730
依照文档进行模型优化
parent
9ebf8977
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
4 additions
and
3 deletions
+4
-3
asset_optimize.py
asset_pool/asset_optimize.py
+4
-3
No files found.
asset_pool/asset_optimize.py
View file @
1647ce65
...
@@ -218,7 +218,7 @@ class FundDividendSortinoAssetOptimize(SortinoAssetOptimize):
...
@@ -218,7 +218,7 @@ class FundDividendSortinoAssetOptimize(SortinoAssetOptimize):
def
get_groups
(
self
,
day
=
None
):
def
get_groups
(
self
,
day
=
None
):
funds
=
pd
.
DataFrame
(
self
.
get_filtered_funds
(
day
))
funds
=
pd
.
DataFrame
(
self
.
get_filtered_funds
(
day
))
if
len
(
funds
)
<
get_config
(
'portfolios.solver.asset-count'
)[
0
]:
if
len
(
funds
)
<
get_config
(
'portfolios.solver.asset-count'
)[
0
]:
raise
ValueError
(
f
"基金优选个数小于{get_config('portfolios.solver.asset-count')[0]},请调整参数"
)
raise
ValueError
(
f
"
{day}==
基金优选个数小于{get_config('portfolios.solver.asset-count')[0]},请调整参数"
)
result
=
[]
result
=
[]
if
self
.
asset_include
:
if
self
.
asset_include
:
include
=
list
(
self
.
asset_include
.
keys
())[
0
]
include
=
list
(
self
.
asset_include
.
keys
())[
0
]
...
@@ -233,14 +233,15 @@ class FundDividendSortinoAssetOptimize(SortinoAssetOptimize):
...
@@ -233,14 +233,15 @@ class FundDividendSortinoAssetOptimize(SortinoAssetOptimize):
def
get_pct_change
(
self
,
fund_ids
,
day
):
def
get_pct_change
(
self
,
fund_ids
,
day
):
if
not
self
.
_config
:
if
not
self
.
_config
:
raise
exception
(
f
"find optimize, but not found sortino config."
)
raise
exception
(
f
"find optimize, but not found sortino config."
)
days
=
[
day
-
relativedelta
(
days
=
1
,
**
dict_remove
(
x
,
(
'weight'
,
'name'
)))
for
x
in
self
.
_config
]
days
=
[
day
-
relativedelta
(
days
=
7
,
**
dict_remove
(
x
,
(
'weight'
,
'name'
)))
for
x
in
self
.
_config
]
days
.
append
(
day
-
relativedelta
(
days
=
1
,
**
self
.
annual_volatility_section
[
0
]))
days
.
append
(
day
-
relativedelta
(
days
=
7
,
**
self
.
annual_volatility_section
[
0
]))
start
=
filter_weekend
(
sorted
(
days
)[
0
])
start
=
filter_weekend
(
sorted
(
days
)[
0
])
fund_navs
=
pd
.
DataFrame
(
self
.
_navs
.
get_fund_navs
(
fund_ids
=
tuple
(
fund_ids
),
min_date
=
start
,
max_date
=
day
))
fund_navs
=
pd
.
DataFrame
(
self
.
_navs
.
get_fund_navs
(
fund_ids
=
tuple
(
fund_ids
),
min_date
=
start
,
max_date
=
day
))
if
not
fund_navs
.
empty
:
if
not
fund_navs
.
empty
:
fund_navs
.
sort_values
(
'nav_date'
,
inplace
=
True
)
fund_navs
.
sort_values
(
'nav_date'
,
inplace
=
True
)
fund_navs
=
fund_navs
.
pivot_table
(
index
=
'nav_date'
,
columns
=
'fund_id'
,
values
=
'nav_cal'
)
fund_navs
=
fund_navs
.
pivot_table
(
index
=
'nav_date'
,
columns
=
'fund_id'
,
values
=
'nav_cal'
)
fund_navs
.
fillna
(
method
=
'ffill'
,
inplace
=
True
)
fund_navs
.
fillna
(
method
=
'ffill'
,
inplace
=
True
)
fund_navs
=
fund_navs
.
loc
[
fund_navs
.
index
>=
start
+
relativedelta
(
days
=
6
)]
fund_navs
.
dropna
(
axis
=
1
,
inplace
=
True
)
fund_navs
.
dropna
(
axis
=
1
,
inplace
=
True
)
result
=
round
(
fund_navs
.
pct_change
()
.
dropna
(),
4
)
result
=
round
(
fund_navs
.
pct_change
()
.
dropna
(),
4
)
result
.
reset_index
(
inplace
=
True
)
result
.
reset_index
(
inplace
=
True
)
...
...
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