wbportfolio 1.46.10__py2.py3-none-any.whl → 1.46.11__py2.py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of wbportfolio might be problematic. Click here for more details.
- wbportfolio/models/portfolio.py +7 -8
- wbportfolio/serializers/transactions/trade_proposals.py +1 -1
- wbportfolio/tests/models/test_portfolios.py +1 -1
- {wbportfolio-1.46.10.dist-info → wbportfolio-1.46.11.dist-info}/METADATA +1 -1
- {wbportfolio-1.46.10.dist-info → wbportfolio-1.46.11.dist-info}/RECORD +7 -7
- {wbportfolio-1.46.10.dist-info → wbportfolio-1.46.11.dist-info}/WHEEL +0 -0
- {wbportfolio-1.46.10.dist-info → wbportfolio-1.46.11.dist-info}/licenses/LICENSE +0 -0
wbportfolio/models/portfolio.py
CHANGED
|
@@ -675,7 +675,7 @@ class Portfolio(DeleteToDisableMixin, WBModel):
|
|
|
675
675
|
asset.save()
|
|
676
676
|
|
|
677
677
|
# We check if there is an instrument attached to the portfolio with calculated NAV and price computation method
|
|
678
|
-
self.estimate_net_asset_values(val_date)
|
|
678
|
+
self.estimate_net_asset_values((val_date + BDay(1)).date()) # updating weighting in t0 influence nav in t+1
|
|
679
679
|
if evaluate_rebalancer:
|
|
680
680
|
self.evaluate_rebalancing(val_date)
|
|
681
681
|
|
|
@@ -1217,13 +1217,12 @@ class Portfolio(DeleteToDisableMixin, WBModel):
|
|
|
1217
1217
|
|
|
1218
1218
|
def default_estimate_net_value(val_date: date, instrument: Instrument) -> float | None:
|
|
1219
1219
|
portfolio = instrument.portfolio
|
|
1220
|
-
if (
|
|
1221
|
-
|
|
1222
|
-
)
|
|
1223
|
-
with suppress(IndexError):
|
|
1224
|
-
|
|
1225
|
-
|
|
1226
|
-
return analytic_portfolio.get_estimate_net_value(float(last_price.net_value))
|
|
1220
|
+
if (previous_date := portfolio.get_latest_asset_position_date(val_date - BDay(1), with_estimated=True)) and (
|
|
1221
|
+
last_price := instrument.get_latest_price(previous_date)
|
|
1222
|
+
):
|
|
1223
|
+
with suppress(IndexError): # we silent any indexerror introduced by no returns for the past days
|
|
1224
|
+
analytic_portfolio, _ = portfolio.get_analytic_portfolio(previous_date)
|
|
1225
|
+
return analytic_portfolio.get_estimate_net_value(float(last_price.net_value))
|
|
1227
1226
|
|
|
1228
1227
|
|
|
1229
1228
|
@receiver(post_save, sender="wbportfolio.Product")
|
|
@@ -46,7 +46,7 @@ class TradeProposalModelSerializer(wb_serializers.ModelSerializer):
|
|
|
46
46
|
obj.reset_trades(target_portfolio=target_portfolio_dto)
|
|
47
47
|
except ValidationError as e:
|
|
48
48
|
if request := self.context.get("request"):
|
|
49
|
-
warning(request, str(e))
|
|
49
|
+
warning(request, str(e), extra_tags="auto_close=0")
|
|
50
50
|
return obj
|
|
51
51
|
|
|
52
52
|
@wb_serializers.register_only_instance_resource()
|
|
@@ -266,7 +266,7 @@ class TestPortfolioModel(PortfolioTestMixin):
|
|
|
266
266
|
for pos in AssetPosition.objects.all():
|
|
267
267
|
assert float(pos.weighting) == pytest.approx(float(pos.total_value_fx_portfolio / total_value), rel=1e-2)
|
|
268
268
|
|
|
269
|
-
mock_estimate_net_asset_values.assert_called_once_with(portfolio, weekday)
|
|
269
|
+
mock_estimate_net_asset_values.assert_called_once_with(portfolio, (weekday + BDay(1)).date())
|
|
270
270
|
mock_compute_metrics.assert_called_once_with(
|
|
271
271
|
weekday, basket_id=portfolio.id, basket_content_type_id=ContentType.objects.get_for_model(Portfolio).id
|
|
272
272
|
)
|
|
@@ -246,7 +246,7 @@ wbportfolio/models/adjustments.py,sha256=osXWkJZOiansPWYPyHtl7Z121zDWi7u1YMtrBQt
|
|
|
246
246
|
wbportfolio/models/asset.py,sha256=TEOsSlbog6Yw0PZiMxjnCccp6ApXAAJNd3BIx_wU7D8,37749
|
|
247
247
|
wbportfolio/models/custodians.py,sha256=owTiS2Vm5CRKzh9M_P9GOVg-s-ndQ9UvRmw3yZP7cw0,3815
|
|
248
248
|
wbportfolio/models/indexes.py,sha256=iLYF2gzNzX4GLj_Nh3fybUcAQ1TslnT0wgQ6mN164QI,728
|
|
249
|
-
wbportfolio/models/portfolio.py,sha256=
|
|
249
|
+
wbportfolio/models/portfolio.py,sha256=LIqTYuxMuYUROjMab-ng4OOqv3kzwrTJsFEvw4ckRDY,57256
|
|
250
250
|
wbportfolio/models/portfolio_cash_flow.py,sha256=2blPiXSw7dbhUVd-7LcxDBb4v0SheNOdvRK3MFYiChA,7273
|
|
251
251
|
wbportfolio/models/portfolio_cash_targets.py,sha256=WmgG-etPisZsh2yaFQpz7EkpvAudKBEzqPsO715w52U,1498
|
|
252
252
|
wbportfolio/models/portfolio_relationship.py,sha256=mMb18UMRWg9kx_9uIPkMktwORuXXLjKdgRPQQvB6fVE,5486
|
|
@@ -339,7 +339,7 @@ wbportfolio/serializers/transactions/claim.py,sha256=kC4E2RZRrpd9i8tGfoiV-gpWDk3
|
|
|
339
339
|
wbportfolio/serializers/transactions/dividends.py,sha256=EULwKDumHBv4r2HsdEGZMZGFaye4dRUNNyXg6-wZXzc,520
|
|
340
340
|
wbportfolio/serializers/transactions/expiry.py,sha256=K3XOSbCyef-xRzOjCr4Qg_YFJ_JuuiJ9u6tDS86l0hg,477
|
|
341
341
|
wbportfolio/serializers/transactions/fees.py,sha256=uPmSWuCeoV2bwVS6RmEz3a0VRBWJHIQr0WhklYc1UAI,1068
|
|
342
|
-
wbportfolio/serializers/transactions/trade_proposals.py,sha256=
|
|
342
|
+
wbportfolio/serializers/transactions/trade_proposals.py,sha256=n8TpI_JwVSIFhf7mhniWIehCQ7Xc3WgpjUujQbeiM0Y,3671
|
|
343
343
|
wbportfolio/serializers/transactions/trades.py,sha256=pONV5NSqrXUnoTEoAxovnnQqu37cZGuB33TYvIOK3rE,10009
|
|
344
344
|
wbportfolio/serializers/transactions/transactions.py,sha256=O137zeCndK-nxIWSRLEj7bXbBZDGa4d6qK6pJIIYK3g,4170
|
|
345
345
|
wbportfolio/static/wbportfolio/css/macro_review.css,sha256=FAVVO8nModxwPXcTKpcfzVxBGPZGJVK1Xn-0dkSfGyc,233
|
|
@@ -371,7 +371,7 @@ wbportfolio/tests/models/test_merge.py,sha256=sdsjiZsmR6vsUKwTa5kkvL6QTeAZqtd_EP
|
|
|
371
371
|
wbportfolio/tests/models/test_portfolio_cash_flow.py,sha256=X8dsXexsb1b0lBiuGzu40ps_Az_1UmmKT0eo1vbXH94,5792
|
|
372
372
|
wbportfolio/tests/models/test_portfolio_cash_targets.py,sha256=q8QWAwt-kKRkLC0E05GyRhF_TTQXIi8bdHjXVU0fCV0,965
|
|
373
373
|
wbportfolio/tests/models/test_portfolio_swing_pricings.py,sha256=kr2AOcQkyg2pX3ULjU-o9ye-NVpjMrrfoe-DVbYCbjs,1656
|
|
374
|
-
wbportfolio/tests/models/test_portfolios.py,sha256=
|
|
374
|
+
wbportfolio/tests/models/test_portfolios.py,sha256=Yd3aTeg8-bKCIJHL4jy14yWVNMEwyb3lzsFyu-Br_mM,52078
|
|
375
375
|
wbportfolio/tests/models/test_product_groups.py,sha256=AcdxhurV-n_bBuUsfD1GqVtwLFcs7VI2CRrwzsIUWbU,3337
|
|
376
376
|
wbportfolio/tests/models/test_products.py,sha256=5YYmQreFnaKLbWmrSib103wgLalqn8u01Fnh3A0XMz8,8217
|
|
377
377
|
wbportfolio/tests/models/test_roles.py,sha256=4Cn7WyrA2ztJNeWLk5cy9kYo5XLWMbFSvo1O-9JYxeA,3323
|
|
@@ -517,7 +517,7 @@ wbportfolio/viewsets/transactions/rebalancing.py,sha256=6rIrdK0rtKL1afJ-tYfAGdQV
|
|
|
517
517
|
wbportfolio/viewsets/transactions/trade_proposals.py,sha256=gXdJJ00D6UavZfBczvZQb5cYPQlU6-xOg_-TnMBzEO0,4742
|
|
518
518
|
wbportfolio/viewsets/transactions/trades.py,sha256=mo5b1wFm0twvGVp-CYnzpGLYMqPcHN8GjH4G_WwFFwc,16237
|
|
519
519
|
wbportfolio/viewsets/transactions/transactions.py,sha256=ixDp-nsNA8t_A06rBCT19hOMJHy0iRmdz1XKdV1OwAs,4450
|
|
520
|
-
wbportfolio-1.46.
|
|
521
|
-
wbportfolio-1.46.
|
|
522
|
-
wbportfolio-1.46.
|
|
523
|
-
wbportfolio-1.46.
|
|
520
|
+
wbportfolio-1.46.11.dist-info/METADATA,sha256=4Ygd8z8FfEEGwkwlVvFH2SFpcdSKcW_Xqgwjq-azBjE,735
|
|
521
|
+
wbportfolio-1.46.11.dist-info/WHEEL,sha256=tkmg4JIqwd9H8mL30xA7crRmoStyCtGp0VWshokd1Jc,105
|
|
522
|
+
wbportfolio-1.46.11.dist-info/licenses/LICENSE,sha256=jvfVH0SY8_YMHlsJHKe_OajiscQDz4lpTlqT6x24sVw,172
|
|
523
|
+
wbportfolio-1.46.11.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|