Commit 3aa4d189 authored by wenwen.tang's avatar wenwen.tang 😕

update

parent ae553a7d
...@@ -65,10 +65,14 @@ class DividendPortfoliosHolder(PortfoliosHolder): ...@@ -65,10 +65,14 @@ class DividendPortfoliosHolder(PortfoliosHolder):
def do_rebalance(self, day, risk: PortfoliosRisk, portfolio, last_nav): def do_rebalance(self, day, risk: PortfoliosRisk, portfolio, last_nav):
weight = {int(x[0]): x[1] for x in json.loads(portfolio).items()} weight = {int(x[0]): x[1] for x in json.loads(portfolio).items()}
dividend_acc = 0 dividend_acc = 0
fund_dividend = 0
if last_nav: if last_nav:
share = {int(x): y for x, y in json.loads(last_nav['portfolios'])['share'].items()} 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) fund_div_tuple = self.get_navs_and_div(fund_ids=tuple(set(weight) | set(share)), day=day)
navs = fund_div_tuple[0] 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'] dividend_acc = last_nav['div_acc']
fund_av = round(sum([navs[x] * y for x, y in share.items()]), 4) + last_nav['fund_div'] 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): ...@@ -93,7 +97,8 @@ class DividendPortfoliosHolder(PortfoliosHolder):
dividend = self._last_div dividend = self._last_div
fund_av = fund_av - self._last_div fund_av = fund_av - self._last_div
dividend_acc = self._last_div + dividend_acc 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: else:
fund_av = self.init_nav fund_av = self.init_nav
fund_div_tuple = self.get_navs_and_div(fund_ids=tuple(weight), day=day) fund_div_tuple = self.get_navs_and_div(fund_ids=tuple(weight), day=day)
...@@ -103,9 +108,8 @@ class DividendPortfoliosHolder(PortfoliosHolder): ...@@ -103,9 +108,8 @@ class DividendPortfoliosHolder(PortfoliosHolder):
fund_av = fund_av - dividend fund_av = fund_av - dividend
dividend_acc = dividend + dividend_acc dividend_acc = dividend + dividend_acc
nav = self.init_nav nav = self.init_nav
share = {x: fund_av * w / navs[x] for x, w in weight.items()}
fund_dividend = 0
asset_nav = fund_av + fund_dividend + dividend asset_nav = fund_av + fund_dividend + dividend
share = {x: fund_av * w / navs[x] for x, w in weight.items()}
rhp.insert({ rhp.insert({
'date': day, 'date': day,
'risk': risk, 'risk': risk,
......
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