Commit 31e1830d authored by wenwen.tang's avatar wenwen.tang 😕

bugfix

parent c078f40a
...@@ -240,6 +240,7 @@ class InvTrustPortfoliosHolder(DividendPortfoliosHolder): ...@@ -240,6 +240,7 @@ class InvTrustPortfoliosHolder(DividendPortfoliosHolder):
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()}
share_nav = {int(x): y for x, y in json.loads(last_nav['portfolios'])['share_nav'].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 = fund_div_tuple[1]
...@@ -247,7 +248,8 @@ class InvTrustPortfoliosHolder(DividendPortfoliosHolder): ...@@ -247,7 +248,8 @@ class InvTrustPortfoliosHolder(DividendPortfoliosHolder):
map(lambda k: share[k] * fund_dividend[k], filter(lambda k: k in fund_dividend, share.keys()))) map(lambda k: share[k] * fund_dividend[k], filter(lambda k: k in fund_dividend, share.keys())))
dividend_acc = last_nav['div_acc'] + fund_dividend dividend_acc = last_nav['div_acc'] + fund_dividend
fund_av = round(sum([navs[x] * y for x, y in share.items()]), 4) fund_av = round(sum([navs[x] * y for x, y in share.items()]), 4)
fund_nav = fund_av + dividend_acc fund_nav = round(sum([navs[x] * y for x, y in share_nav.items()]), 4)
fund_nav += fund_dividend
asset_nav = fund_av asset_nav = fund_av
share = {x: fund_av * w / navs[x] for x, w in weight.items()} share = {x: fund_av * w / navs[x] for x, w in weight.items()}
# 若调仓当日,有基金产生配息 # 若调仓当日,有基金产生配息
...@@ -320,10 +322,8 @@ class InvTrustPortfoliosHolder(DividendPortfoliosHolder): ...@@ -320,10 +322,8 @@ class InvTrustPortfoliosHolder(DividendPortfoliosHolder):
map(lambda k: share[k] * fund_dividend[k], filter(lambda k: k in fund_dividend, share.keys()))) map(lambda k: share[k] * fund_dividend[k], filter(lambda k: k in fund_dividend, share.keys())))
dividend_acc = dividend_acc + port_div + fund_dividend dividend_acc = dividend_acc + port_div + fund_dividend
fund_av = round(sum([navs[x] * y for x, y in share.items()]), 4) fund_av = round(sum([navs[x] * y for x, y in share.items()]), 4)
if fund_dividend > 0: fund_nav = round(sum([navs[x] * y for x, y in share_nav.items()]), 4)
fund_nav = fund_av + dividend_acc fund_nav += fund_dividend
else:
fund_nav = round(sum([navs[x] * y for x, y in share_nav.items()]), 4)
weight = {x: round(y * navs[x] / fund_av, 2) for x, y in share.items()} weight = {x: round(y * navs[x] / fund_av, 2) for x, y in share.items()}
weight_nav = {x: round(y * navs[x] / fund_av, 2) for x, y in share_nav.items()} weight_nav = {x: round(y * navs[x] / fund_av, 2) for x, y in share_nav.items()}
weight = format_weight(weight) weight = format_weight(weight)
......
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