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
3aa4d189
Commit
3aa4d189
authored
Apr 06, 2023
by
wenwen.tang
😕
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
update
parent
ae553a7d
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
7 additions
and
3 deletions
+7
-3
holder.py
portfolios/holder.py
+7
-3
No files found.
portfolios/holder.py
View file @
3aa4d189
...
...
@@ -65,10 +65,14 @@ class DividendPortfoliosHolder(PortfoliosHolder):
def
do_rebalance
(
self
,
day
,
risk
:
PortfoliosRisk
,
portfolio
,
last_nav
):
weight
=
{
int
(
x
[
0
]):
x
[
1
]
for
x
in
json
.
loads
(
portfolio
)
.
items
()}
dividend_acc
=
0
fund_dividend
=
0
if
last_nav
:
share
=
{
int
(
x
):
y
for
x
,
y
in
json
.
loads
(
last_nav
[
'portfolios'
])[
'share'
]
.
items
()}
fund_div_tuple
=
self
.
get_navs_and_div
(
fund_ids
=
tuple
(
set
(
weight
)
|
set
(
share
)),
day
=
day
)
navs
=
fund_div_tuple
[
0
]
fund_dividend
=
fund_div_tuple
[
1
]
fund_dividend
=
last_nav
[
'fund_div'
]
+
sum
(
map
(
lambda
k
:
share
[
k
]
*
fund_dividend
[
k
],
filter
(
lambda
k
:
k
in
fund_dividend
,
share
.
keys
())))
dividend_acc
=
last_nav
[
'div_acc'
]
fund_av
=
round
(
sum
([
navs
[
x
]
*
y
for
x
,
y
in
share
.
items
()]),
4
)
+
last_nav
[
'fund_div'
]
# 每年的首个季度调整配息
...
...
@@ -93,7 +97,8 @@ class DividendPortfoliosHolder(PortfoliosHolder):
dividend
=
self
.
_last_div
fund_av
=
fund_av
-
self
.
_last_div
dividend_acc
=
self
.
_last_div
+
dividend_acc
nav
=
last_nav
[
'nav'
]
*
(
fund_av
+
dividend
)
/
last_nav
[
'asset_nav'
]
asset_nav
=
fund_av
+
fund_dividend
+
dividend
nav
=
last_nav
[
'nav'
]
*
asset_nav
/
last_nav
[
'asset_nav'
]
else
:
fund_av
=
self
.
init_nav
fund_div_tuple
=
self
.
get_navs_and_div
(
fund_ids
=
tuple
(
weight
),
day
=
day
)
...
...
@@ -103,9 +108,8 @@ class DividendPortfoliosHolder(PortfoliosHolder):
fund_av
=
fund_av
-
dividend
dividend_acc
=
dividend
+
dividend_acc
nav
=
self
.
init_nav
asset_nav
=
fund_av
+
fund_dividend
+
dividend
share
=
{
x
:
fund_av
*
w
/
navs
[
x
]
for
x
,
w
in
weight
.
items
()}
fund_dividend
=
0
asset_nav
=
fund_av
+
fund_dividend
+
dividend
rhp
.
insert
({
'date'
:
day
,
'risk'
:
risk
,
...
...
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