wbportfolio 1.55.8__py2.py3-none-any.whl → 1.55.10rc0__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.
- wbportfolio/admin/portfolio.py +11 -5
- wbportfolio/api_clients/ubs.py +11 -9
- wbportfolio/contrib/company_portfolio/configs/display.py +4 -4
- wbportfolio/contrib/company_portfolio/configs/previews.py +3 -3
- wbportfolio/contrib/company_portfolio/filters.py +10 -10
- wbportfolio/contrib/company_portfolio/scripts.py +7 -2
- wbportfolio/factories/product_groups.py +3 -3
- wbportfolio/factories/products.py +3 -3
- wbportfolio/import_export/handlers/asset_position.py +3 -3
- wbportfolio/import_export/handlers/dividend.py +1 -1
- wbportfolio/import_export/handlers/fees.py +2 -2
- wbportfolio/import_export/handlers/trade.py +3 -3
- wbportfolio/import_export/parsers/default_mapping.py +1 -1
- wbportfolio/import_export/parsers/jpmorgan/customer_trade.py +2 -2
- wbportfolio/import_export/parsers/jpmorgan/fees.py +2 -2
- wbportfolio/import_export/parsers/jpmorgan/strategy.py +2 -2
- wbportfolio/import_export/parsers/jpmorgan/valuation.py +2 -2
- wbportfolio/import_export/parsers/leonteq/trade.py +2 -1
- wbportfolio/import_export/parsers/natixis/utils.py +6 -2
- wbportfolio/import_export/parsers/sg_lux/equity.py +4 -3
- wbportfolio/import_export/parsers/sg_lux/sylk.py +12 -11
- wbportfolio/import_export/parsers/sg_lux/valuation.py +4 -2
- wbportfolio/import_export/parsers/societe_generale/strategy.py +3 -3
- wbportfolio/import_export/parsers/tellco/customer_trade.py +2 -1
- wbportfolio/import_export/parsers/tellco/valuation.py +4 -3
- wbportfolio/import_export/parsers/ubs/equity.py +2 -1
- wbportfolio/import_export/parsers/ubs/valuation.py +2 -1
- wbportfolio/import_export/utils.py +3 -1
- wbportfolio/metric/backends/base.py +2 -2
- wbportfolio/migrations/0089_orderproposal_min_weighting.py +71 -0
- wbportfolio/models/asset.py +2 -1
- wbportfolio/models/custodians.py +3 -3
- wbportfolio/models/exceptions.py +1 -1
- wbportfolio/models/graphs/utils.py +11 -11
- wbportfolio/models/orders/order_proposals.py +20 -2
- wbportfolio/models/orders/orders.py +6 -0
- wbportfolio/models/portfolio.py +27 -7
- wbportfolio/models/portfolio_relationship.py +6 -0
- wbportfolio/models/products.py +3 -0
- wbportfolio/models/rebalancing.py +3 -0
- wbportfolio/models/roles.py +4 -10
- wbportfolio/models/transactions/claim.py +6 -5
- wbportfolio/pms/typing.py +1 -1
- wbportfolio/rebalancing/models/market_capitalization_weighted.py +1 -5
- wbportfolio/risk_management/backends/controversy_portfolio.py +1 -1
- wbportfolio/risk_management/backends/instrument_list_portfolio.py +1 -1
- wbportfolio/risk_management/tests/test_stop_loss_instrument.py +2 -2
- wbportfolio/risk_management/tests/test_stop_loss_portfolio.py +1 -1
- wbportfolio/serializers/orders/order_proposals.py +1 -0
- wbportfolio/serializers/transactions/claim.py +2 -2
- wbportfolio/tasks.py +42 -4
- wbportfolio/tests/models/orders/test_order_proposals.py +32 -0
- wbportfolio/tests/models/test_portfolios.py +5 -5
- wbportfolio/tests/models/test_splits.py +1 -6
- wbportfolio/tests/viewsets/test_products.py +1 -0
- wbportfolio/viewsets/charts/assets.py +6 -4
- wbportfolio/viewsets/configs/buttons/mixins.py +2 -2
- wbportfolio/viewsets/configs/display/reconciliations.py +4 -4
- wbportfolio/viewsets/orders/configs/displays/order_proposals.py +5 -5
- {wbportfolio-1.55.8.dist-info → wbportfolio-1.55.10rc0.dist-info}/METADATA +1 -1
- {wbportfolio-1.55.8.dist-info → wbportfolio-1.55.10rc0.dist-info}/RECORD +63 -64
- wbportfolio/fdm/__init__.py +0 -0
- wbportfolio/fdm/tasks.py +0 -42
- {wbportfolio-1.55.8.dist-info → wbportfolio-1.55.10rc0.dist-info}/WHEEL +0 -0
- {wbportfolio-1.55.8.dist-info → wbportfolio-1.55.10rc0.dist-info}/licenses/LICENSE +0 -0
|
@@ -924,13 +924,13 @@ class TestPortfolioModel(PortfolioTestMixin):
|
|
|
924
924
|
|
|
925
925
|
analytic_portfolio = portfolio.get_analytic_portfolio(weekday)
|
|
926
926
|
assert analytic_portfolio.weights.tolist() == [float(a1.weighting), float(a2.weighting)]
|
|
927
|
-
|
|
927
|
+
expected_x = pd.DataFrame(
|
|
928
928
|
[[float(p11.net_value / p10.net_value - Decimal(1)), float(p21.net_value / p20.net_value - Decimal(1))]],
|
|
929
929
|
columns=[i1.id, i2.id],
|
|
930
930
|
index=[(weekday + BDay(1)).date()],
|
|
931
931
|
)
|
|
932
|
-
|
|
933
|
-
pd.testing.assert_frame_equal(analytic_portfolio.X,
|
|
932
|
+
expected_x.index = pd.to_datetime(expected_x.index)
|
|
933
|
+
pd.testing.assert_frame_equal(analytic_portfolio.X, expected_x, check_names=False, check_freq=False)
|
|
934
934
|
|
|
935
935
|
def test_get_total_asset_value(self, weekday, portfolio, asset_position_factory):
|
|
936
936
|
a1 = asset_position_factory.create(date=weekday, portfolio=portfolio)
|
|
@@ -1010,7 +1010,7 @@ class TestPortfolioModel(PortfolioTestMixin):
|
|
|
1010
1010
|
assert len(res) == 1
|
|
1011
1011
|
assert a.date == weekday
|
|
1012
1012
|
assert a.underlying_quote == instrument
|
|
1013
|
-
assert a.underlying_quote_price
|
|
1013
|
+
assert a.underlying_quote_price is None
|
|
1014
1014
|
assert a.initial_price == p.net_value
|
|
1015
1015
|
assert a.weighting == pytest.approx(weights[instrument.id], abs=Decimal(10e-6))
|
|
1016
1016
|
assert a.currency_fx_rate_portfolio_to_usd == fx_portfolio
|
|
@@ -1053,7 +1053,7 @@ class TestPortfolioModel(PortfolioTestMixin):
|
|
|
1053
1053
|
assert next(gen)[0] == middle_date, "Drifting weight with a non automatic rebalancer stops the iteration"
|
|
1054
1054
|
try:
|
|
1055
1055
|
next(gen)
|
|
1056
|
-
|
|
1056
|
+
raise AssertionError("the next iteration should stop and return the rebalancing")
|
|
1057
1057
|
except StopIteration as e:
|
|
1058
1058
|
rebalancing_order_proposal = e.value
|
|
1059
1059
|
assert rebalancing_order_proposal.trade_date == rebalancing_date
|
|
@@ -14,10 +14,6 @@ fake = Faker()
|
|
|
14
14
|
|
|
15
15
|
@pytest.mark.django_db
|
|
16
16
|
class TestAdjustmentModel:
|
|
17
|
-
@pytest.fixture()
|
|
18
|
-
def applied_adjustment(self):
|
|
19
|
-
return AdjustmentFactory.create(status=Adjustment.Status.APPLIED)
|
|
20
|
-
|
|
21
17
|
@pytest.fixture()
|
|
22
18
|
def old_adjustment(self):
|
|
23
19
|
return AdjustmentFactory.create(status=Adjustment.Status.PENDING, date=fake.past_date())
|
|
@@ -205,7 +201,7 @@ class TestAdjustmentModel:
|
|
|
205
201
|
post_adjustment_on_prices(adjustment.id)
|
|
206
202
|
a1.refresh_from_db()
|
|
207
203
|
adjustment.refresh_from_db()
|
|
208
|
-
a1.applied_adjustment == adjustment
|
|
204
|
+
assert a1.applied_adjustment == adjustment
|
|
209
205
|
assert adjustment.status == Adjustment.Status.APPLIED
|
|
210
206
|
|
|
211
207
|
@patch("wbportfolio.models.adjustments.send_notification")
|
|
@@ -230,5 +226,4 @@ class TestAdjustmentModel:
|
|
|
230
226
|
mock_check_fct.return_value = False
|
|
231
227
|
post_adjustment_on_prices(adjustment.id)
|
|
232
228
|
adjustment.refresh_from_db()
|
|
233
|
-
mock_delay_fct.call_args[0] == user_porftolio_manager.id
|
|
234
229
|
assert adjustment.status == Adjustment.Status.PENDING
|
|
@@ -23,6 +23,7 @@ class TestProductModelViewSet:
|
|
|
23
23
|
portfolio_factory.create_batch(4, invested_timespan=DateRange(date.min, date.max))
|
|
24
24
|
+ portfolio_factory.create_batch(2, invested_timespan=DateRange(date.min, date.max)),
|
|
25
25
|
product_factory.create_batch(6),
|
|
26
|
+
strict=False,
|
|
26
27
|
):
|
|
27
28
|
InstrumentPortfolioThroughModel.objects.update_or_create(
|
|
28
29
|
instrument=product, defaults={"portfolio": portfolio}
|
|
@@ -101,7 +101,9 @@ class AbstractDistributionMixin(UserPortfolioRequestPermissionMixin):
|
|
|
101
101
|
columns = {}
|
|
102
102
|
level_representations = self.classification_group.get_levels_representation()
|
|
103
103
|
for key, label in zip(
|
|
104
|
-
reversed(self.classification_group.get_fields_names(sep="_")),
|
|
104
|
+
reversed(self.classification_group.get_fields_names(sep="_")),
|
|
105
|
+
reversed(level_representations[1:]),
|
|
106
|
+
strict=False,
|
|
105
107
|
):
|
|
106
108
|
columns[key] = label
|
|
107
109
|
columns["label"] = "Classification"
|
|
@@ -169,8 +171,8 @@ class AbstractDistributionMixin(UserPortfolioRequestPermissionMixin):
|
|
|
169
171
|
dict(Classification.objects.filter(id__in=df["classification"].dropna()).values_list("id", "name"))
|
|
170
172
|
)
|
|
171
173
|
elif self.group_by == AssetPositionGroupBy.CASH:
|
|
172
|
-
df.loc[df["id"]
|
|
173
|
-
df.loc[df["id"]
|
|
174
|
+
df.loc[df["id"], "label"] = "Cash"
|
|
175
|
+
df.loc[~df["id"], "label"] = "Non-Cash"
|
|
174
176
|
elif self.group_by == AssetPositionGroupBy.COUNTRY:
|
|
175
177
|
df["label"] = df["id"].map(dict(Geography.objects.filter(id__in=df["id"]).values_list("id", "name")))
|
|
176
178
|
elif self.group_by == AssetPositionGroupBy.CURRENCY:
|
|
@@ -307,7 +309,7 @@ class ContributorPortfolioChartView(UserPortfolioRequestPermissionMixin, viewset
|
|
|
307
309
|
|
|
308
310
|
text_forex = df_forex.contribution_forex.apply(lambda x: f"{x:,.2%}")
|
|
309
311
|
text_equity = contribution_equity.apply(lambda x: f"{x:,.2%}")
|
|
310
|
-
|
|
312
|
+
self.nb_rows = df.shape[0]
|
|
311
313
|
fig.add_trace(
|
|
312
314
|
go.Bar(
|
|
313
315
|
y=df.instrument_id,
|
|
@@ -7,7 +7,7 @@ from wbfdm.models.instruments import Instrument
|
|
|
7
7
|
|
|
8
8
|
class InstrumentButtonMixin:
|
|
9
9
|
@classmethod
|
|
10
|
-
def add_instrument_request_button(
|
|
10
|
+
def add_instrument_request_button(cls, request=None, view=None, pk=None, **kwargs):
|
|
11
11
|
buttons = [
|
|
12
12
|
bt.WidgetButton(key="assets", label="Implemented Portfolios (Assets)"),
|
|
13
13
|
# bt.WidgetButton(
|
|
@@ -44,7 +44,7 @@ class InstrumentButtonMixin:
|
|
|
44
44
|
)
|
|
45
45
|
|
|
46
46
|
@classmethod
|
|
47
|
-
def add_transactions_request_button(
|
|
47
|
+
def add_transactions_request_button(cls, request=None, view=None, pk=None, **kwargs):
|
|
48
48
|
return bt.DropDownButton(
|
|
49
49
|
label="Transactions",
|
|
50
50
|
icon=WBIcon.UNFOLD.icon,
|
|
@@ -49,14 +49,14 @@ class AccountReconciliationLineDisplayViewConfig(DisplayViewConfig):
|
|
|
49
49
|
]
|
|
50
50
|
editable = [dp.FormattingRule(style={"fontWeight": "bold"})]
|
|
51
51
|
equal = [dp.FormattingRule(condition=("==", False, "is_equal"), style={"backgroundColor": "orange"})]
|
|
52
|
-
|
|
52
|
+
border_left = [
|
|
53
53
|
dp.FormattingRule(
|
|
54
54
|
style={
|
|
55
55
|
"borderLeft": "1px solid #bdc3c7",
|
|
56
56
|
}
|
|
57
57
|
)
|
|
58
58
|
]
|
|
59
|
-
|
|
59
|
+
border_right = [
|
|
60
60
|
dp.FormattingRule(
|
|
61
61
|
style={
|
|
62
62
|
"borderRight": "1px solid #bdc3c7",
|
|
@@ -111,7 +111,7 @@ class AccountReconciliationLineDisplayViewConfig(DisplayViewConfig):
|
|
|
111
111
|
key="shares_external",
|
|
112
112
|
label="Shares",
|
|
113
113
|
width=90,
|
|
114
|
-
formatting_rules=[*equal, *editable, *
|
|
114
|
+
formatting_rules=[*equal, *editable, *border_left],
|
|
115
115
|
),
|
|
116
116
|
dp.Field(
|
|
117
117
|
key="nominal_value_external",
|
|
@@ -128,7 +128,7 @@ class AccountReconciliationLineDisplayViewConfig(DisplayViewConfig):
|
|
|
128
128
|
key="assets_under_management_external",
|
|
129
129
|
label="AuM",
|
|
130
130
|
width=120,
|
|
131
|
-
formatting_rules=[*equal, *
|
|
131
|
+
formatting_rules=[*equal, *border_right],
|
|
132
132
|
),
|
|
133
133
|
],
|
|
134
134
|
),
|
|
@@ -132,12 +132,12 @@ class OrderProposalDisplayConfig(DisplayViewConfig):
|
|
|
132
132
|
layouts={
|
|
133
133
|
default(): Layout(
|
|
134
134
|
grid_template_areas=[
|
|
135
|
-
["status", "status", "status"],
|
|
136
|
-
["trade_date", "total_cash_weight", "min_order_value"],
|
|
137
|
-
["rebalancing_model", "target_portfolio", "target_portfolio"]
|
|
135
|
+
["status", "status", "status", "status"],
|
|
136
|
+
["trade_date", "total_cash_weight", "min_order_value", "min_weighting"],
|
|
137
|
+
["rebalancing_model", "rebalancing_model", "target_portfolio", "target_portfolio"]
|
|
138
138
|
if self.view.new_mode
|
|
139
|
-
else ["rebalancing_model", "creator", "approver"],
|
|
140
|
-
["comment", "comment", "comment"],
|
|
139
|
+
else ["rebalancing_model", "rebalancing_model", "creator", "approver"],
|
|
140
|
+
["comment", "comment", "comment", "comment"],
|
|
141
141
|
],
|
|
142
142
|
),
|
|
143
143
|
},
|
|
@@ -4,14 +4,14 @@ wbportfolio/constants.py,sha256=86bfJ-xAyJQGv8DDxhVP_BM7Jr_lxQMhe4SkrxpfN_c,119
|
|
|
4
4
|
wbportfolio/dynamic_preferences_registry.py,sha256=SV-4JWBZBYhXt5cNMglx-yRJhxpejP_jo157ghjq2q0,2294
|
|
5
5
|
wbportfolio/permissions.py,sha256=F147DXfitbw6IdMQGEFfymCJkiG5YGkWKsLdVVliPyw,320
|
|
6
6
|
wbportfolio/preferences.py,sha256=JpowIFTrnjfomogJNrYmmfv7V35bRZNNGL_zooKzEhc,465
|
|
7
|
-
wbportfolio/tasks.py,sha256=
|
|
7
|
+
wbportfolio/tasks.py,sha256=fjmG0FrCkwoHKDk7re6-vjKpI0q_HFtYLF8cddZHvnw,3243
|
|
8
8
|
wbportfolio/urls.py,sha256=PE9UwW2RR8FEUnPc3foaDIW7T49vTwO1TyBPYaSorw0,10539
|
|
9
9
|
wbportfolio/utils.py,sha256=QZ4t0j2NwKYmgWJM77yvXSp-8wVcZmFvNi5_v7YA3ac,750
|
|
10
10
|
wbportfolio/admin/__init__.py,sha256=oTmHrq_4H4OyEna3R_3tIh7pyCyNYVsMDD8y06IYMfQ,675
|
|
11
11
|
wbportfolio/admin/asset.py,sha256=Nukw4axCnctQFlAtPkPJyalEga7RtTp7jr138MOdWSM,1254
|
|
12
12
|
wbportfolio/admin/custodians.py,sha256=rJ9wFdiFM5t3WrmAfNXWzjxDAWrbnlSstfNjQxSmTNE,332
|
|
13
13
|
wbportfolio/admin/indexes.py,sha256=XPiVGBRDD7SV7YvSDv9pAo513IjIbEOBS_pcvVP_UfQ,440
|
|
14
|
-
wbportfolio/admin/portfolio.py,sha256=
|
|
14
|
+
wbportfolio/admin/portfolio.py,sha256=OiUFpxqK7V0iL8dO6LxE_LOepvr20b2CIDRiKPkdEns,4063
|
|
15
15
|
wbportfolio/admin/portfolio_relationships.py,sha256=mLRQUvezcUQfEls0p6pe0P1qVf335zD5pX4eRVf119M,711
|
|
16
16
|
wbportfolio/admin/product_groups.py,sha256=0iXpoj-gGwLeF6BmCohX7d5qrVhCgIxNWUQmJcM67q0,1391
|
|
17
17
|
wbportfolio/admin/products.py,sha256=vEtUpSlnCLLCs4SXkI5UFO7iPsXhRUk7PsNvfD7FS40,2550
|
|
@@ -30,7 +30,7 @@ wbportfolio/admin/transactions/trades.py,sha256=LanpSm6iaR9cmNvSJwpRFPkOgN46K_Y9
|
|
|
30
30
|
wbportfolio/analysis/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
31
31
|
wbportfolio/analysis/claims.py,sha256=wcTniEVdDnmME8LHrYbo-WWpQ5EzNPgAT2KJIGQ0IIA,10688
|
|
32
32
|
wbportfolio/api_clients/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
33
|
-
wbportfolio/api_clients/ubs.py,sha256=
|
|
33
|
+
wbportfolio/api_clients/ubs.py,sha256=DezqTcZ_TJnMsTRQnnHisWCu_Vxx-CtE0pwr_SYQBi0,6742
|
|
34
34
|
wbportfolio/contrib/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
35
35
|
wbportfolio/contrib/company_portfolio/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
36
36
|
wbportfolio/contrib/company_portfolio/admin.py,sha256=roUsuOjYDWX0OGWVBjCcW3MAcwJHJYHnqZ_pLpwakmQ,549
|
|
@@ -38,18 +38,18 @@ wbportfolio/contrib/company_portfolio/apps.py,sha256=0oNM07ecjGE4nU0zzUWuQI_LPq4
|
|
|
38
38
|
wbportfolio/contrib/company_portfolio/constants.py,sha256=5twPBUq9MlNzepwkmleA0pm_eeTlg2e3VqLP8OFfKVE,62
|
|
39
39
|
wbportfolio/contrib/company_portfolio/dynamic_preferences_registry.py,sha256=k69EVXR2n9Ovzy4rmXCFCQRt0YampqniG7tlkcc9dN0,2700
|
|
40
40
|
wbportfolio/contrib/company_portfolio/factories.py,sha256=LvEYhBURUz3aK5KtTshBZpU66ph_DbLXKKDzf3Sw4Vo,1243
|
|
41
|
-
wbportfolio/contrib/company_portfolio/filters.py,sha256=
|
|
41
|
+
wbportfolio/contrib/company_portfolio/filters.py,sha256=jLDo3PRhofuqR2EA7G2R2aiAd_pTCZO4BvUZh0AN1HQ,4995
|
|
42
42
|
wbportfolio/contrib/company_portfolio/management.py,sha256=CofBifGGGKfA06uWRDWXY_9y7y-PGNRz3VhsVaDeAz8,857
|
|
43
43
|
wbportfolio/contrib/company_portfolio/models.py,sha256=dfrIR6sI3He1TIHCjdAP3yIZ0cPvc97ZUX_ZzkkhzGg,12943
|
|
44
|
-
wbportfolio/contrib/company_portfolio/scripts.py,sha256=
|
|
44
|
+
wbportfolio/contrib/company_portfolio/scripts.py,sha256=wFfc1L-it0UTaBwNFs8hhGARbJoaNzmnlsXh6KEbslU,2497
|
|
45
45
|
wbportfolio/contrib/company_portfolio/serializers.py,sha256=Y4Osxp0M7m_wy7DSbOt7ESfbob8KrfPBCnbzAuEsmmk,12160
|
|
46
46
|
wbportfolio/contrib/company_portfolio/tasks.py,sha256=ZXezolvlj8_b5hvfcjH5IO5tXvwb8goNG8xPfk6YFNA,835
|
|
47
47
|
wbportfolio/contrib/company_portfolio/urls.py,sha256=eyq6IpaDPG1oL8-AqPS5nC5BeFewKPA1BN_HI7M3i1c,1118
|
|
48
48
|
wbportfolio/contrib/company_portfolio/viewsets.py,sha256=o-_D_bEt283xngDbsMwdRQxFyuK7rfSChI8u5dGYyLM,8312
|
|
49
49
|
wbportfolio/contrib/company_portfolio/configs/__init__.py,sha256=AVH0v-uOJBPRKggz7fO7IpRyVJ1YlQiF-if_cMsOvvM,72
|
|
50
|
-
wbportfolio/contrib/company_portfolio/configs/display.py,sha256=
|
|
50
|
+
wbportfolio/contrib/company_portfolio/configs/display.py,sha256=wuscS82RDL5uTfXOmpAp_4EyTUyDAgmvUlEHg4ro7_Q,6372
|
|
51
51
|
wbportfolio/contrib/company_portfolio/configs/endpoints.py,sha256=QWkxvGOjCyPtB9cIc9hQHcqkeZv_KEvfGue-JgAn2p4,1662
|
|
52
|
-
wbportfolio/contrib/company_portfolio/configs/previews.py,sha256=
|
|
52
|
+
wbportfolio/contrib/company_portfolio/configs/previews.py,sha256=pSZTESST-s8yBhKDcnpB_eGjufrp4NYAqlIGxEN8TOM,1395
|
|
53
53
|
wbportfolio/contrib/company_portfolio/migrations/0001_initial.py,sha256=WAB7FJL4PdMhQAB-k_tZcMZ2SjAOmqHKj86NrzxWbXE,9856
|
|
54
54
|
wbportfolio/contrib/company_portfolio/migrations/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
55
55
|
wbportfolio/contrib/company_portfolio/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
@@ -70,8 +70,8 @@ wbportfolio/factories/portfolio_cash_flow.py,sha256=e8LWkk5Gy0FU4HoCL9xPseCtLlVI
|
|
|
70
70
|
wbportfolio/factories/portfolio_cash_targets.py,sha256=6bYaKjV56yRbjRaQzime218Dho652pcpkAqwhq63D3g,678
|
|
71
71
|
wbportfolio/factories/portfolio_swing_pricings.py,sha256=CLT9AgZKPwChfPDATl-r2r8IVsM5U6S5gDJ8BzsweyI,828
|
|
72
72
|
wbportfolio/factories/portfolios.py,sha256=kZDuBXnGiMrliQ67UfXHQElv5y1nVLXN_7Au3RnZr-8,1553
|
|
73
|
-
wbportfolio/factories/product_groups.py,sha256=
|
|
74
|
-
wbportfolio/factories/products.py,sha256=
|
|
73
|
+
wbportfolio/factories/product_groups.py,sha256=0vo3wjHBST3kmkXYt3llSUFN8QEomAQLDpt2hSBkkvw,1951
|
|
74
|
+
wbportfolio/factories/products.py,sha256=yNGCCqKFNhTI76Qb046s8I34V26cuyMtJ64Ugxpznnc,2868
|
|
75
75
|
wbportfolio/factories/rebalancing.py,sha256=I6_c_gDuhBYsmDPOU_b8e9W-Aa8I95gWXS_K8N5-xiQ,719
|
|
76
76
|
wbportfolio/factories/reconciliations.py,sha256=Ne3rBZ_yvjlAtWW7qDLprHrLhNCtLL_RXU3yDHc3s3c,916
|
|
77
77
|
wbportfolio/factories/roles.py,sha256=tot54YX70sNqZrAg5zGJTHd7_PFjZed_mny4lGlnwEA,857
|
|
@@ -79,8 +79,6 @@ wbportfolio/factories/trades.py,sha256=ZHfj20KjeTu57sNaZzfSw2JqCoI9q4BjfPp5qRMVs
|
|
|
79
79
|
wbportfolio/factories/orders/__init__.py,sha256=QG7on_F9GiuJgvGbM0BNDVdfGwwBz_WGbmCFNbKPZzc,83
|
|
80
80
|
wbportfolio/factories/orders/order_proposals.py,sha256=3QGG6eI2sWYGJenn17gz37A2PJgjZLlPqAsqci1lFXI,702
|
|
81
81
|
wbportfolio/factories/orders/orders.py,sha256=tTw2U-xvUsFpG4zad3KCHZPQx1FVg-zPjwEN73XEOjg,907
|
|
82
|
-
wbportfolio/fdm/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
83
|
-
wbportfolio/fdm/tasks.py,sha256=v7UmrQhHAgJOQ3AC3VRvJ4YIKveqsqyWnvM33UQOUDI,1367
|
|
84
82
|
wbportfolio/filters/__init__.py,sha256=m44CdyYMtku8rMGyiX8KSmMdvyqaElKW4UMkEqOC1VM,1374
|
|
85
83
|
wbportfolio/filters/assets.py,sha256=rvBNtQ8OcvYXSmaVdgjH7IITvaBZ558Y9sCj0B_WDpw,18866
|
|
86
84
|
wbportfolio/filters/assets_and_net_new_money_progression.py,sha256=IYl_qMFO9QKhXhCTtz2JrOjlAKdEkykNlu4DO_H7HkQ,1403
|
|
@@ -105,7 +103,7 @@ wbportfolio/fixtures/product_factsheets.yaml,sha256=z5o-viDbgwWkssDJXZYayasFgw1n
|
|
|
105
103
|
wbportfolio/fixtures/wbportfolio.yaml.gz,sha256=902nxQZM6VcVcc0wI9AYaSedcJIfsK5letLF31j1Jdg,1479453
|
|
106
104
|
wbportfolio/fixtures/wbrisk_management.yaml.gz,sha256=alFDRu8S9R6IsaIkpJe_v36B2GvHgHeNJVumUB5m_NQ,155413
|
|
107
105
|
wbportfolio/import_export/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
108
|
-
wbportfolio/import_export/utils.py,sha256=
|
|
106
|
+
wbportfolio/import_export/utils.py,sha256=Za6gycrXxXIupqn5EJdgEWaee7FPtk0R33kJm4uogos,1145
|
|
109
107
|
wbportfolio/import_export/backends/__init__.py,sha256=Ki5jE95usAbxfV3zeZMkAmjh7G8TodBkKTDBPa_HJX0,40
|
|
110
108
|
wbportfolio/import_export/backends/utils.py,sha256=nM0i5rhQ66Vgm7WH3jIiNvNGuC-Cy_vtXkSzrUiGc0Q,1355
|
|
111
109
|
wbportfolio/import_export/backends/refinitiv/adjustment.py,sha256=ahVjWMHY1FuuDnMeascAlVUa3Mys6rvROG1uKDq6QeA,1554
|
|
@@ -120,25 +118,25 @@ wbportfolio/import_export/backends/wbfdm/dividend.py,sha256=iAQXnYPXmtG_Jrc8THAJ
|
|
|
120
118
|
wbportfolio/import_export/backends/wbfdm/mixin.py,sha256=JNtjgqGLson1nu_Chqb8MWyuiF3Ws8ox2vapxIRBYKE,400
|
|
121
119
|
wbportfolio/import_export/handlers/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
122
120
|
wbportfolio/import_export/handlers/adjustment.py,sha256=6bdTIYFmc8_HFxcdwtnYwglMyCfAD8XrTIrEb2zWY0g,1757
|
|
123
|
-
wbportfolio/import_export/handlers/asset_position.py,sha256=
|
|
124
|
-
wbportfolio/import_export/handlers/dividend.py,sha256=
|
|
125
|
-
wbportfolio/import_export/handlers/fees.py,sha256=
|
|
121
|
+
wbportfolio/import_export/handlers/asset_position.py,sha256=VNfPOmUta5f4YO_nRFvsiVeGaDwzLF1QDhXFQd0fCX4,9137
|
|
122
|
+
wbportfolio/import_export/handlers/dividend.py,sha256=34iu1SfnyCVSObklo9eiF-ECTQhSvkiZn2pUmrWOaV4,4408
|
|
123
|
+
wbportfolio/import_export/handlers/fees.py,sha256=RoOaBwnIMzCx5q7qSzCQbS3L_eOa9Y-RSZ_ZG3QHbNo,2507
|
|
126
124
|
wbportfolio/import_export/handlers/orders.py,sha256=GU3_tIy-tAw9aU-ifsnmMZPBB9sqfkFC_S1d9VziTwg,3136
|
|
127
125
|
wbportfolio/import_export/handlers/portfolio_cash_flow.py,sha256=W7QPNqEvvsq0RS016EAFBp1ezvc6G9Rk-hviRZh8o6Y,2737
|
|
128
126
|
wbportfolio/import_export/handlers/register.py,sha256=sYyXkE8b1DPZ5monxylZn0kjxLVdNYYZR-p61dwEoDM,2271
|
|
129
|
-
wbportfolio/import_export/handlers/trade.py,sha256=
|
|
127
|
+
wbportfolio/import_export/handlers/trade.py,sha256=TvnL0IhEzoEXxyr7o3a4id6fkB4InJfScUZC1YPfNq0,11187
|
|
130
128
|
wbportfolio/import_export/parsers/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
131
|
-
wbportfolio/import_export/parsers/default_mapping.py,sha256=
|
|
129
|
+
wbportfolio/import_export/parsers/default_mapping.py,sha256=YdqvoRNo4CbMnMpeYA5DSHSj9fc7rZA4_q9Zeojg344,1393
|
|
132
130
|
wbportfolio/import_export/parsers/jpmorgan/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
133
|
-
wbportfolio/import_export/parsers/jpmorgan/customer_trade.py,sha256=
|
|
134
|
-
wbportfolio/import_export/parsers/jpmorgan/fees.py,sha256=
|
|
135
|
-
wbportfolio/import_export/parsers/jpmorgan/strategy.py,sha256=
|
|
136
|
-
wbportfolio/import_export/parsers/jpmorgan/valuation.py,sha256=
|
|
131
|
+
wbportfolio/import_export/parsers/jpmorgan/customer_trade.py,sha256=yv01rA9KNzjqe24Ho647fSoPl34jG9Z-QFe0iaKRZKA,2868
|
|
132
|
+
wbportfolio/import_export/parsers/jpmorgan/fees.py,sha256=9F5fZP3rUwUZFq4UPQZRo1zdKsT-E9AHfr12DLFUB-g,2096
|
|
133
|
+
wbportfolio/import_export/parsers/jpmorgan/strategy.py,sha256=ROjZmmkQxxgzKSljyJsEsibWgUcDg5dxS5WonCbppKw,4484
|
|
134
|
+
wbportfolio/import_export/parsers/jpmorgan/valuation.py,sha256=exNIIyxRwdGw-FWjbGUeqeIiXPkSmHWVrUDAdwD7H4g,1235
|
|
137
135
|
wbportfolio/import_export/parsers/leonteq/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
138
136
|
wbportfolio/import_export/parsers/leonteq/customer_trade.py,sha256=GdqCRWx-D-Z8yvBQU41MWj4j-X2BAnbJ6oAL6sdTnIQ,1896
|
|
139
137
|
wbportfolio/import_export/parsers/leonteq/equity.py,sha256=Lr3nRPBa9Vg3_CQnuwpzyY0W8fG_pba0spASec9fYeU,3758
|
|
140
138
|
wbportfolio/import_export/parsers/leonteq/fees.py,sha256=SJaYGURhSdBCf4jFaQAN9t5noT_nU9XpQbaLIs2nNQo,2652
|
|
141
|
-
wbportfolio/import_export/parsers/leonteq/trade.py,sha256=
|
|
139
|
+
wbportfolio/import_export/parsers/leonteq/trade.py,sha256=pKtUT7kcZ6YkSS_eYAUsWjGiTpf-ODU3YhZRUS8O828,3371
|
|
142
140
|
wbportfolio/import_export/parsers/leonteq/valuation.py,sha256=s9ovRv4Cx4cFQhjElPCTrguy4Q3iCzbt22TS7Kc3Jl0,1259
|
|
143
141
|
wbportfolio/import_export/parsers/natixis/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
144
142
|
wbportfolio/import_export/parsers/natixis/customer_trade.py,sha256=YFqneuhkwGEF5NSZ6r2Fgf8xnOUCgVN2Vjv0oyPDlIY,2498
|
|
@@ -151,7 +149,7 @@ wbportfolio/import_export/parsers/natixis/dividend.py,sha256=qx8DXu6NXMy1M_iunA4
|
|
|
151
149
|
wbportfolio/import_export/parsers/natixis/equity.py,sha256=GSObiFxvhlbGuSZnJq-D8yRgLlsAxJ4oMxYeR6GmFNE,2501
|
|
152
150
|
wbportfolio/import_export/parsers/natixis/fees.py,sha256=oIC9moGm4s-6525q4_Syt4Yexj3SDgB5kYSfcsdzLcY,1666
|
|
153
151
|
wbportfolio/import_export/parsers/natixis/trade.py,sha256=BJum1W0fYe9emHU7RgL-AjHkiclrckQYkG8VkyCnfvM,2579
|
|
154
|
-
wbportfolio/import_export/parsers/natixis/utils.py,sha256=
|
|
152
|
+
wbportfolio/import_export/parsers/natixis/utils.py,sha256=oy0Qq_f7lqOcAoK5sKZ3s_sdfiouJMRtajdy_Q_-8Gc,2828
|
|
155
153
|
wbportfolio/import_export/parsers/natixis/valuation.py,sha256=qk5eDz-b9bIttDGnZxQZnm9pDIalb-LCGxmeTyMKRmQ,1523
|
|
156
154
|
wbportfolio/import_export/parsers/refinitiv/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
157
155
|
wbportfolio/import_export/parsers/refinitiv/adjustment.py,sha256=64AQoLOZQWn5HCLpflJ4OgQB3gCB3w_6Y4YLhcmuClg,819
|
|
@@ -161,28 +159,28 @@ wbportfolio/import_export/parsers/sg_lux/customer_trade.py,sha256=gTEUIaxlZvXXCg
|
|
|
161
159
|
wbportfolio/import_export/parsers/sg_lux/customer_trade_pending_slk.py,sha256=WyRpKXkNhpK4H9aNjW7_ggcCGlN_-9ETlR1QsE9xl_k,5068
|
|
162
160
|
wbportfolio/import_export/parsers/sg_lux/customer_trade_slk.py,sha256=D_1c0v6lTXkopjZzr9pQb575HxrMFe91tKk8xT1X3Ns,3604
|
|
163
161
|
wbportfolio/import_export/parsers/sg_lux/customer_trade_without_pw.py,sha256=nMYV9-OwY_TagU36Ab0dOweZYzVriFWHXPYjauBg2Yk,2034
|
|
164
|
-
wbportfolio/import_export/parsers/sg_lux/equity.py,sha256=
|
|
162
|
+
wbportfolio/import_export/parsers/sg_lux/equity.py,sha256=ABDvdVmpGE13RUkKpC6OpgrrQ91U45lbmG_r3JRx4b4,6119
|
|
165
163
|
wbportfolio/import_export/parsers/sg_lux/fees.py,sha256=AK2TGOjI3JrOjtACEQd-4ffuedtIus-_gWug6wN6RQs,1846
|
|
166
164
|
wbportfolio/import_export/parsers/sg_lux/perf_fees.py,sha256=6HAV3Pu2aaYARjMQvN24Op2rru_YdjeI9J9ADDQVH8s,1513
|
|
167
165
|
wbportfolio/import_export/parsers/sg_lux/portfolio_cash_flow.py,sha256=ftLKWukUl9AcGWHQmJZnShVZpkO4rOl04PGlLcalDdQ,889
|
|
168
166
|
wbportfolio/import_export/parsers/sg_lux/portfolio_future_cash_flow.py,sha256=2kkEOwZz1hwiPB9rlMp_vkv5azMrJUfyWl7GMaAwGUc,1074
|
|
169
167
|
wbportfolio/import_export/parsers/sg_lux/registers.py,sha256=NPkIAY5vJ40_EweQNjgiDVpi-HBK2OFFjwxXhWp85d0,6288
|
|
170
|
-
wbportfolio/import_export/parsers/sg_lux/sylk.py,sha256=
|
|
168
|
+
wbportfolio/import_export/parsers/sg_lux/sylk.py,sha256=vwOjvOUulrFIxB8C47eu2y9vBgN8BzT6KaXeLtVR1bI,7707
|
|
171
169
|
wbportfolio/import_export/parsers/sg_lux/utils.py,sha256=xrtEkdz_ypGFRTWn3-Kz6GzqhxY9mexSdWImBEc9xT8,1307
|
|
172
|
-
wbportfolio/import_export/parsers/sg_lux/valuation.py,sha256=
|
|
170
|
+
wbportfolio/import_export/parsers/sg_lux/valuation.py,sha256=Y2SUBsswsWf9uUUkiO7SMSBQHGTJj4qu9aL7AfvH4-o,1832
|
|
173
171
|
wbportfolio/import_export/parsers/societe_generale/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
174
172
|
wbportfolio/import_export/parsers/societe_generale/customer_trade.py,sha256=eUgd_ZwK8WZh8-oXTLH4t_F9fXE6SCSOreIqXwVwT0w,2110
|
|
175
|
-
wbportfolio/import_export/parsers/societe_generale/strategy.py,sha256=
|
|
173
|
+
wbportfolio/import_export/parsers/societe_generale/strategy.py,sha256=pY80JDCa0ITVHNZkM2VYY_75elSCV7zlo1qh1ZXVEW0,4513
|
|
176
174
|
wbportfolio/import_export/parsers/societe_generale/valuation.py,sha256=mxaV2cL5WKg2omrwLxcYkeLnb95S-NpG15FTGAJRy58,1225
|
|
177
175
|
wbportfolio/import_export/parsers/tellco/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
178
|
-
wbportfolio/import_export/parsers/tellco/customer_trade.py,sha256=
|
|
176
|
+
wbportfolio/import_export/parsers/tellco/customer_trade.py,sha256=UAVcEC7Ff2Qa2-vnL2-NaRxFrqxA9HW0erMBm2RzrbQ,2157
|
|
179
177
|
wbportfolio/import_export/parsers/tellco/equity.py,sha256=3mPqh-kridsNCy5K4sa43SRsZIzNnRCr_3qGYlm356Q,3353
|
|
180
|
-
wbportfolio/import_export/parsers/tellco/valuation.py,sha256=
|
|
178
|
+
wbportfolio/import_export/parsers/tellco/valuation.py,sha256=LwZLY1sy2sIjZXMezfZkBzvc6MeluM8xnuuDn4QGDQs,1685
|
|
181
179
|
wbportfolio/import_export/parsers/ubs/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
182
180
|
wbportfolio/import_export/parsers/ubs/customer_trade.py,sha256=PYXVZRBoI0B6NJGhHoTboBzfA-U16hrIDDdPu--RLNs,2089
|
|
183
|
-
wbportfolio/import_export/parsers/ubs/equity.py,sha256=
|
|
181
|
+
wbportfolio/import_export/parsers/ubs/equity.py,sha256=_QMvNbwPCT20rbPtobGhG5vXLHglh8Bu45taDXIIBhs,3493
|
|
184
182
|
wbportfolio/import_export/parsers/ubs/historical_customer_trade.py,sha256=1IggU7Ogg8-gdwLqBtz-FZ6l-UKsjbtM-KomM8u6QpA,1746
|
|
185
|
-
wbportfolio/import_export/parsers/ubs/valuation.py,sha256=
|
|
183
|
+
wbportfolio/import_export/parsers/ubs/valuation.py,sha256=Mz1uq7ftQgcBFVEfp3E0NfeTPQLj4i07HUTRF3jqCds,1619
|
|
186
184
|
wbportfolio/import_export/parsers/ubs/api/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
187
185
|
wbportfolio/import_export/parsers/ubs/api/asset_position.py,sha256=vDpGuHDvn0c-x72WVQtIqUc15UxoAQL-XFOsKzNoBjk,4136
|
|
188
186
|
wbportfolio/import_export/parsers/ubs/api/fees.py,sha256=W6KfZn185nwXePwxL90Jp3Y_HCtkEzivuSSv2IfT2qs,1068
|
|
@@ -212,7 +210,7 @@ wbportfolio/locale/fr/LC_MESSAGES/django.mo,sha256=t4lh3zX7kshbDAFzXa5HU_YGPXkPz
|
|
|
212
210
|
wbportfolio/locale/fr/LC_MESSAGES/django.po,sha256=EdY0xnTQG8al2Fi_Ml2rxEZ7cr-YhRkAT2G3ABjhAZI,5266
|
|
213
211
|
wbportfolio/metric/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
214
212
|
wbportfolio/metric/backends/__init__.py,sha256=jfim5By5KqXfraENRFlhXy3i3gIzmElD6sfwL3qK2KM,108
|
|
215
|
-
wbportfolio/metric/backends/base.py,sha256=
|
|
213
|
+
wbportfolio/metric/backends/base.py,sha256=y4bwa7DW5GmTjSmdHgtOnz3BmMlMi_xuoyB0zk_p86Y,2789
|
|
216
214
|
wbportfolio/metric/backends/constants.py,sha256=NU5BlMb_HIiN9NWtw_hSfWK0y0q4W9-HQG7eJoZqI_g,7373
|
|
217
215
|
wbportfolio/metric/backends/portfolio_base.py,sha256=9gC2RhBVt9R38rEIvBmWdgUC6mEOP5vFqEEew_sWIeU,10012
|
|
218
216
|
wbportfolio/metric/backends/portfolio_esg.py,sha256=MSiki-ZN-7YF0gev1kGFDrbfBi8Nfw6yJeLZlSRy6tw,2442
|
|
@@ -271,43 +269,44 @@ wbportfolio/migrations/0085_order_desired_target_weight.py,sha256=L8p5t4PqjWIwqw
|
|
|
271
269
|
wbportfolio/migrations/0086_orderproposal_total_cash_weight.py,sha256=IE65OYYBOSQjj6znl9jmsMalxDmKdnHV1DbVz_ZX_M4,689
|
|
272
270
|
wbportfolio/migrations/0087_product_order_routing_custodian_adapter.py,sha256=4OHTjdXNwJ-My8EgUGYWM_vRBccjYgghjN4fLV0n1yQ,4564
|
|
273
271
|
wbportfolio/migrations/0088_orderproposal_total_effective_portfolio_contribution.py,sha256=6Q41GSbWg_L8r6FUcQ9MrdpRazOdUlc7tD8_bmg8a3Y,521
|
|
272
|
+
wbportfolio/migrations/0089_orderproposal_min_weighting.py,sha256=DgJdIRka1eZSrEZqkUBHiVPpCfOvChWPrWdx-ZExO6Q,3906
|
|
274
273
|
wbportfolio/migrations/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
275
274
|
wbportfolio/models/__init__.py,sha256=qU4e7HKyh8NL_0Mg92PcbHTewCv7Ya2gei1DMGe1LWE,980
|
|
276
275
|
wbportfolio/models/adjustments.py,sha256=osXWkJZOiansPWYPyHtl7Z121zDWi7u1YMtrBQtbHVo,10272
|
|
277
|
-
wbportfolio/models/asset.py,sha256=
|
|
276
|
+
wbportfolio/models/asset.py,sha256=EBq_pse5mmV3gQ-7yjfMBYmm8de9LS1wIiq2Dw_JF_Y,39196
|
|
278
277
|
wbportfolio/models/builder.py,sha256=txZE_gEDgkPgSxSF0AlvZiRyhRQixD4Ame0wEF6Fjoo,14028
|
|
279
|
-
wbportfolio/models/custodians.py,sha256=
|
|
280
|
-
wbportfolio/models/exceptions.py,sha256=
|
|
278
|
+
wbportfolio/models/custodians.py,sha256=QhSC3mfd6rSPp8wizabLbKmFDrrskZTSkxNdBJMdtCk,3815
|
|
279
|
+
wbportfolio/models/exceptions.py,sha256=EZnqSr5PxikiS4oDknRakEmlninJh_c-tOHRYv3IMjE,57
|
|
281
280
|
wbportfolio/models/indexes.py,sha256=gvW4K9U9Bj8BmVCqFYdWiXvDWhjHINRON8XhNsZUiQY,639
|
|
282
|
-
wbportfolio/models/portfolio.py,sha256=
|
|
281
|
+
wbportfolio/models/portfolio.py,sha256=DUuHV7SWFEbKpfcZn-vXSj9SdD7-GULpoadzxnCdggI,55532
|
|
283
282
|
wbportfolio/models/portfolio_cash_flow.py,sha256=uElG7IJUBY8qvtrXftOoskX6EA-dKgEG1JJdvHeWV7g,7336
|
|
284
283
|
wbportfolio/models/portfolio_cash_targets.py,sha256=WmgG-etPisZsh2yaFQpz7EkpvAudKBEzqPsO715w52U,1498
|
|
285
|
-
wbportfolio/models/portfolio_relationship.py,sha256=
|
|
284
|
+
wbportfolio/models/portfolio_relationship.py,sha256=sJaEghyMPcPThUR5s7a2h8f78YyjvaV22xJFl5-i_tU,5387
|
|
286
285
|
wbportfolio/models/portfolio_swing_pricings.py,sha256=_LqYC1VRjnnFFmVqFPRdnbgYsVxocMVpClTk2dnooig,1778
|
|
287
286
|
wbportfolio/models/product_groups.py,sha256=qoT8qv6tRdD6zmNDxsHO6dtnWw1-TRnyS5NqOq_gwhI,7901
|
|
288
|
-
wbportfolio/models/products.py,sha256=
|
|
289
|
-
wbportfolio/models/rebalancing.py,sha256=
|
|
287
|
+
wbportfolio/models/products.py,sha256=EBU6zBMPhT3GYhwQIQt3VAAehlFs3szbJRUytg8aY_c,23260
|
|
288
|
+
wbportfolio/models/rebalancing.py,sha256=8FKVyDvpO35_TyEtq8dhk4f_toroBaGXTuiCByejkHs,7827
|
|
290
289
|
wbportfolio/models/registers.py,sha256=qA6T33t4gxFYnabQFBMd90WGIr6wxxirDLKDFqjOfok,4667
|
|
291
|
-
wbportfolio/models/roles.py,sha256=
|
|
290
|
+
wbportfolio/models/roles.py,sha256=3tuQAQ3Bw5AVWAwiaukHTgGq1_bcod7p5cttS3uQnU0,7193
|
|
292
291
|
wbportfolio/models/signals.py,sha256=jZKC43nIqVdLapwo3getIMSqPUwbK5M36MmvA50jY24,1041
|
|
293
292
|
wbportfolio/models/utils.py,sha256=iBdMjRCvr6aOL0nLgfSCWUKe0h39h3IGmUbYo6l9t6w,394
|
|
294
293
|
wbportfolio/models/graphs/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
295
294
|
wbportfolio/models/graphs/portfolio.py,sha256=NwkehWvTcyTYrKO5ku3eNNaYLuBwuLdSbTEuugGuSIU,6541
|
|
296
|
-
wbportfolio/models/graphs/utils.py,sha256=
|
|
295
|
+
wbportfolio/models/graphs/utils.py,sha256=4QlUkRaTToXwkHBWEPj_eWABntpgl-8gkTqEEfwuiys,2347
|
|
297
296
|
wbportfolio/models/llm/wbcrm/analyze_relationship.py,sha256=etKdmt9m6Ra5u7EA9t98RVSqFKpbFd4iwBVaH9T26M8,2320
|
|
298
297
|
wbportfolio/models/mixins/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
299
298
|
wbportfolio/models/mixins/instruments.py,sha256=SuMPquQ93D4pZMK-4hQbJtV58_NOyf3wVOctQq7LNXQ,7054
|
|
300
299
|
wbportfolio/models/mixins/liquidity_stress_test.py,sha256=iQVzT3QM7VtHnqfj9gT6KUIe4wC4MJXery-AXJHUYns,58820
|
|
301
300
|
wbportfolio/models/orders/__init__.py,sha256=EH9UacGR3npBMje5FGTeLOh1xqFBh9kc24WbGmBIA3g,69
|
|
302
|
-
wbportfolio/models/orders/order_proposals.py,sha256=
|
|
303
|
-
wbportfolio/models/orders/orders.py,sha256=
|
|
301
|
+
wbportfolio/models/orders/order_proposals.py,sha256=JmSZXYqaQtS9tV-iHYgIulG_G5_6bKZqTqsmJK9iY0w,58198
|
|
302
|
+
wbportfolio/models/orders/orders.py,sha256=OpUbKzY2g6XA3n8hyU-FTauEQE5UKLEdOPQkdi4rktU,10520
|
|
304
303
|
wbportfolio/models/orders/routing.py,sha256=OpeP-rfMm1UN7a3vbNxBEQxqtGfE57AeGWnbTZa1fRQ,2223
|
|
305
304
|
wbportfolio/models/reconciliations/__init__.py,sha256=MXH5fZIPGDRBgJkO6wVu_NLRs8fkP1im7G6d-h36lQY,127
|
|
306
305
|
wbportfolio/models/reconciliations/account_reconciliation_lines.py,sha256=QP6M7hMcyFbuXBa55Y-azui6Dl_WgbzMntEqWzQkbfM,7394
|
|
307
306
|
wbportfolio/models/reconciliations/account_reconciliations.py,sha256=rofSxetFfEJov6mPyoTvGxELA16HILyJZtQvm_kwYU0,4405
|
|
308
307
|
wbportfolio/models/reconciliations/reconciliations.py,sha256=kF-BNhUoT4TCn1RIgPSkdEk1iX4NQeZlGGFd_ZulAZU,686
|
|
309
308
|
wbportfolio/models/transactions/__init__.py,sha256=NrnVHxcpi0Kc6SkTiSlWn4JMWoelvkE9bNouClcvqGA,133
|
|
310
|
-
wbportfolio/models/transactions/claim.py,sha256=
|
|
309
|
+
wbportfolio/models/transactions/claim.py,sha256=A_1OBULlkOWCNr-d-g9ySSTeqCdao4_7BDwChBpB7io,25900
|
|
311
310
|
wbportfolio/models/transactions/dividends.py,sha256=mmOdGWR35yndUMoCuG24Y6BdtxDhSk2gMQ-8LVguqzg,1890
|
|
312
311
|
wbportfolio/models/transactions/fees.py,sha256=wJtlzbBCAq1UHvv0wqWTE2BEjCF5RMtoaSDS3kODFRo,7112
|
|
313
312
|
wbportfolio/models/transactions/trades.py,sha256=2cDNjf1hJwFwrDT1SLacUU-Nkt5kU62zjI3WIj_Q0vQ,16340
|
|
@@ -316,7 +315,7 @@ wbportfolio/order_routing/__init__.py,sha256=kYloUGytPBNB8KVy5ysm9PlEEU_sGPk5c3c
|
|
|
316
315
|
wbportfolio/order_routing/adapters/__init__.py,sha256=YiM5FFvLucDTBgIn3mCBjKNSRU7K2pokHdbWBoaZA94,1549
|
|
317
316
|
wbportfolio/order_routing/adapters/ubs.py,sha256=_Z9-j1a6_F08VlNIjLLn5XmhoKSZQTTH14lGeTgbu9A,6328
|
|
318
317
|
wbportfolio/pms/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
319
|
-
wbportfolio/pms/typing.py,sha256=
|
|
318
|
+
wbportfolio/pms/typing.py,sha256=zhFHlYgO9oC5sxBz0oWkXfEVw-Oez_Ex4ojyQSHC0Oo,10627
|
|
320
319
|
wbportfolio/pms/analytics/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
321
320
|
wbportfolio/pms/analytics/portfolio.py,sha256=u_S-e6HUQwAyq90gweDmxyTHWrIc5nd84sLuUF2iJzA,2031
|
|
322
321
|
wbportfolio/pms/analytics/utils.py,sha256=EfhKdo9B2ABaUPppb8DgZSqpNkSze8Rjej1xDjv-XcQ,282
|
|
@@ -329,16 +328,16 @@ wbportfolio/rebalancing/decorators.py,sha256=162ZmXV2YQGI830LWvEnJ95RexMzHvaCGfc
|
|
|
329
328
|
wbportfolio/rebalancing/models/__init__.py,sha256=AQjG7Tu5vlmhqncVoYOjpBKU2UIvgo9FuP2_jD2w-UI,232
|
|
330
329
|
wbportfolio/rebalancing/models/composite.py,sha256=kDa4-Q3aMOrBGrrfIwTyjik14vF8cjfD-ArIm8FCR9A,1671
|
|
331
330
|
wbportfolio/rebalancing/models/equally_weighted.py,sha256=iv6FiICGQX1mPnkK2L4oDeCH_-4yF8SL8YUBzjXBZsI,1306
|
|
332
|
-
wbportfolio/rebalancing/models/market_capitalization_weighted.py,sha256=
|
|
331
|
+
wbportfolio/rebalancing/models/market_capitalization_weighted.py,sha256=sNu3DYPlX19stqZO4c5CLubsMJJhnj3m7zYbabR05rg,5536
|
|
333
332
|
wbportfolio/rebalancing/models/model_portfolio.py,sha256=_j892V6YCrXLzNZdpxuKmaNu_VYfamStwb6Z-4sECPA,1326
|
|
334
333
|
wbportfolio/reports/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
335
334
|
wbportfolio/reports/monthly_position_report.py,sha256=e7BzjDd6eseUOwLwQJXKvWErQ58YnCsznHU2VtR6izM,2981
|
|
336
335
|
wbportfolio/risk_management/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
337
336
|
wbportfolio/risk_management/backends/__init__.py,sha256=4N3GYcIb0XgZUQWEHxCejOCRabUtLM6ha9UdOWJKUfI,368
|
|
338
337
|
wbportfolio/risk_management/backends/accounts.py,sha256=VMHwhzeFV2bzobb1RlEJadTVix1lkbbfdpo-zG3YN5c,7988
|
|
339
|
-
wbportfolio/risk_management/backends/controversy_portfolio.py,sha256=
|
|
338
|
+
wbportfolio/risk_management/backends/controversy_portfolio.py,sha256=aoRt29QGFNWPf_7yr0Dpjv2AwsA0SJpZdNf8NCfe7JY,2843
|
|
340
339
|
wbportfolio/risk_management/backends/exposure_portfolio.py,sha256=8T97J0pbnGdme_Ji9ntA5FV9MCouSxDz5grMvRvpl70,10760
|
|
341
|
-
wbportfolio/risk_management/backends/instrument_list_portfolio.py,sha256=
|
|
340
|
+
wbportfolio/risk_management/backends/instrument_list_portfolio.py,sha256=PS-OtT0ReFnZ-bsOCtAQhPjhE0Nc5AyEqy4gLya3fhk,4177
|
|
342
341
|
wbportfolio/risk_management/backends/liquidity_risk.py,sha256=OnuUypmN86RDnch1JOb8UJo5j1z1_X7sjazqAo7cbwM,3694
|
|
343
342
|
wbportfolio/risk_management/backends/liquidity_stress_instrument.py,sha256=oitzsaZu-HhYn9Avku3322GtDmf6QGsfyRzGPGZoM1Y,3612
|
|
344
343
|
wbportfolio/risk_management/backends/mixins.py,sha256=g0hkQRjn3-S6vMIai6t2_tf6uWoG_D3WdamQwDTlMu0,10052
|
|
@@ -354,8 +353,8 @@ wbportfolio/risk_management/tests/test_exposure_portfolio.py,sha256=hKTygdBdZB-Z
|
|
|
354
353
|
wbportfolio/risk_management/tests/test_instrument_list_portfolio.py,sha256=1pAsuMhxOWZHxQnVlTnRuzq8qIe6_86EYbkTnPlWRjE,2763
|
|
355
354
|
wbportfolio/risk_management/tests/test_liquidity_risk.py,sha256=UtzBrW7LeY0Z0ARX9pg4CUjgdw8u5Hfrdkddro5EEZ8,1713
|
|
356
355
|
wbportfolio/risk_management/tests/test_product_integrity.py,sha256=wqJ4b5DO2BrEVQF4eVX2B9AvfrRMAyC_lppGrgKc_ug,1959
|
|
357
|
-
wbportfolio/risk_management/tests/test_stop_loss_instrument.py,sha256=
|
|
358
|
-
wbportfolio/risk_management/tests/test_stop_loss_portfolio.py,sha256=
|
|
356
|
+
wbportfolio/risk_management/tests/test_stop_loss_instrument.py,sha256=OczeyM32uPtND4_Tk4Y1saPqI3XURTQKDKydv_-FRF0,4175
|
|
357
|
+
wbportfolio/risk_management/tests/test_stop_loss_portfolio.py,sha256=O30YW4NMV0Ja2AGA-EQsu17--9H_Yz66r5IAM6xDM94,5184
|
|
359
358
|
wbportfolio/risk_management/tests/test_ucits_portfolio.py,sha256=UcZLhatl8iU9AhNNYv6OBs_cjILZKaws2nvUen6orkc,1807
|
|
360
359
|
wbportfolio/serializers/__init__.py,sha256=l05IdXIG5POdXDRy3mk5ZlFJknE-FVla64tGB9TigW0,1817
|
|
361
360
|
wbportfolio/serializers/adjustments.py,sha256=0yTPgDjGRyzSa-ecCklENKtLJXZhq1dryMI3nTRsQRo,783
|
|
@@ -375,10 +374,10 @@ wbportfolio/serializers/registers.py,sha256=zhdKH_mHEBE0VOhm6xpY54bTMtcSaY5BskEa
|
|
|
375
374
|
wbportfolio/serializers/roles.py,sha256=T-9NqTldpvaEMFy-Bib5MB6MeboygEOqcMP61mzzD3Q,2146
|
|
376
375
|
wbportfolio/serializers/signals.py,sha256=hD6R4oFtwhvnsJPteytPKy2JwEelmxrapdfoLSnluaE,7053
|
|
377
376
|
wbportfolio/serializers/orders/__init__.py,sha256=PKJRksA1pWsh8nVfGASoB0m3LyUzVRnq1m9VPp90J7k,271
|
|
378
|
-
wbportfolio/serializers/orders/order_proposals.py,sha256=
|
|
377
|
+
wbportfolio/serializers/orders/order_proposals.py,sha256=Jxea2-Ze8Id5URv4UV-vTfCQGt11tjR27vRRfCs0gXU,4791
|
|
379
378
|
wbportfolio/serializers/orders/orders.py,sha256=7zIl5lwt7RatSVcrmNmLpWX2r2VkND33HQOUkryGjYo,7582
|
|
380
379
|
wbportfolio/serializers/transactions/__init__.py,sha256=-7Pan4n7YI3iDvGXff6okzk4ycEURRxp5n_SHCY_g_I,493
|
|
381
|
-
wbportfolio/serializers/transactions/claim.py,sha256=
|
|
380
|
+
wbportfolio/serializers/transactions/claim.py,sha256=mEt67F2v8HC6roemDT3S0dD0cZIVl1U9sASbLW3Vpyo,11611
|
|
382
381
|
wbportfolio/serializers/transactions/dividends.py,sha256=ADXf9cXe8rq55lC_a8vIzViGLmQ-yDXkgR54k2m-N0w,1814
|
|
383
382
|
wbportfolio/serializers/transactions/fees.py,sha256=3mBzs6vdfST9roeQB-bmLJhipY7i5jBtAXjoTTE-GOg,2388
|
|
384
383
|
wbportfolio/serializers/transactions/trades.py,sha256=4Q7LhSlkGzd2UlTJFHcHufj6U9LLOKzr-POM9_IQ3Sc,9741
|
|
@@ -413,14 +412,14 @@ wbportfolio/tests/models/test_merge.py,sha256=sdsjiZsmR6vsUKwTa5kkvL6QTeAZqtd_EP
|
|
|
413
412
|
wbportfolio/tests/models/test_portfolio_cash_flow.py,sha256=X8dsXexsb1b0lBiuGzu40ps_Az_1UmmKT0eo1vbXH94,5792
|
|
414
413
|
wbportfolio/tests/models/test_portfolio_cash_targets.py,sha256=q8QWAwt-kKRkLC0E05GyRhF_TTQXIi8bdHjXVU0fCV0,965
|
|
415
414
|
wbportfolio/tests/models/test_portfolio_swing_pricings.py,sha256=kr2AOcQkyg2pX3ULjU-o9ye-NVpjMrrfoe-DVbYCbjs,1656
|
|
416
|
-
wbportfolio/tests/models/test_portfolios.py,sha256=
|
|
415
|
+
wbportfolio/tests/models/test_portfolios.py,sha256=PTaJUmNI5acpB2p--GyrDha5PRr6tqXSGZRLoNkoIjE,53827
|
|
417
416
|
wbportfolio/tests/models/test_product_groups.py,sha256=AcdxhurV-n_bBuUsfD1GqVtwLFcs7VI2CRrwzsIUWbU,3337
|
|
418
417
|
wbportfolio/tests/models/test_products.py,sha256=zB3xDGk7k7omI61hU9cnU96oBc3ICiMaYtFC9pidars,9965
|
|
419
418
|
wbportfolio/tests/models/test_roles.py,sha256=4Cn7WyrA2ztJNeWLk5cy9kYo5XLWMbFSvo1O-9JYxeA,3323
|
|
420
|
-
wbportfolio/tests/models/test_splits.py,sha256=
|
|
419
|
+
wbportfolio/tests/models/test_splits.py,sha256=0PvW6WunBByDYRhtFV2LbK-DV92q-1s3kn45NvBL5Es,9500
|
|
421
420
|
wbportfolio/tests/models/utils.py,sha256=ORNJq6NMo1Za22jGZXfTfKeNEnTRlfEt_8SJ6xLaQWg,325
|
|
422
421
|
wbportfolio/tests/models/orders/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
423
|
-
wbportfolio/tests/models/orders/test_order_proposals.py,sha256=
|
|
422
|
+
wbportfolio/tests/models/orders/test_order_proposals.py,sha256=N_l7wgFgd-1uFCE6ZbWCzXEOmOgWaiee-w1VCqKxLnw,35401
|
|
424
423
|
wbportfolio/tests/models/transactions/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
425
424
|
wbportfolio/tests/models/transactions/test_claim.py,sha256=NG3BKB-FVcIDgHSJHCjImxgMM3ISVUMl24xUPmEcPec,5570
|
|
426
425
|
wbportfolio/tests/models/transactions/test_fees.py,sha256=tAp18x2wCNQr11LUnLtHNbBDbbX0v1DZnmW7i-cEi5Q,2423
|
|
@@ -435,7 +434,7 @@ wbportfolio/tests/serializers/test_claims.py,sha256=vQrg73xQXRFEgvx3KI9ivFre_wpB
|
|
|
435
434
|
wbportfolio/tests/viewsets/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
436
435
|
wbportfolio/tests/viewsets/test_assets.py,sha256=-RKdU23dxXEW8f3ZQu3a15U9ljTej3FflGtDEahENsI,2568
|
|
437
436
|
wbportfolio/tests/viewsets/test_performances.py,sha256=Cx5FqPO4K8G7F6-rqiiSDmFNYJPyv999pvR-KCO1FYY,3877
|
|
438
|
-
wbportfolio/tests/viewsets/test_products.py,sha256=
|
|
437
|
+
wbportfolio/tests/viewsets/test_products.py,sha256=4w2Pn4rApWjolKVL9VuTGgz-bv-jF8GFVT9x5D5MbTk,4296
|
|
439
438
|
wbportfolio/tests/viewsets/transactions/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
440
439
|
wbportfolio/tests/viewsets/transactions/test_claims.py,sha256=QEZfMAW07dyoZ63t2umSwGOqvaTULfYfbN_F4ZoSAcw,6368
|
|
441
440
|
wbportfolio/viewsets/__init__.py,sha256=nmWLARDxraY09h4-dpfbOWlx1OylZz3_DpGk_gvJv-o,2475
|
|
@@ -459,7 +458,7 @@ wbportfolio/viewsets/reconciliations.py,sha256=tRS7UBDtMn-07uA9QqYvnCtp_mZGVeULF
|
|
|
459
458
|
wbportfolio/viewsets/registers.py,sha256=eOuEhW2McHsOapCKue7M4eazrJnVpCBVxImpFccq0z0,2401
|
|
460
459
|
wbportfolio/viewsets/roles.py,sha256=vnzS1mlJMZS3GObrss6SfXOr3KRb-OHB1s4Msvtn7xQ,1556
|
|
461
460
|
wbportfolio/viewsets/charts/__init__.py,sha256=zE3bxS0V-nM_yZ610M7qsaToNOJXvTjwFLhH1it3h4M,169
|
|
462
|
-
wbportfolio/viewsets/charts/assets.py,sha256=
|
|
461
|
+
wbportfolio/viewsets/charts/assets.py,sha256=OcxLOmlrGj2EMp-Id0R356vjGdGlIHmUaRHcz_zXZkI,17926
|
|
463
462
|
wbportfolio/viewsets/configs/__init__.py,sha256=K5opfVQvgGwSyw3XwDGkv3lo5i9jBxOJXYhLqyCdfeQ,137
|
|
464
463
|
wbportfolio/viewsets/configs/buttons/__init__.py,sha256=hyvpxwh9ss8Q0xcE006qsTLuSsJeWt9saHRcU4g96tA,791
|
|
465
464
|
wbportfolio/viewsets/configs/buttons/adjustments.py,sha256=sUY_3vxqP0kuqs8i5hklfboZI6QiAOrmu30eb29Xupo,492
|
|
@@ -467,7 +466,7 @@ wbportfolio/viewsets/configs/buttons/assets.py,sha256=6HqSyUpczK66iL0Jg8BbvAJuci
|
|
|
467
466
|
wbportfolio/viewsets/configs/buttons/claims.py,sha256=G1GFK1jQyR9M0dyXthYA6krG2JFvHhc3D7pFh6IUQ30,3684
|
|
468
467
|
wbportfolio/viewsets/configs/buttons/custodians.py,sha256=AE-VFahGreSlg5nejqQVvOy2JvpclXbgSD6bxsyqI_U,3317
|
|
469
468
|
wbportfolio/viewsets/configs/buttons/fees.py,sha256=8z-qo5krw4x_9ujp0s8iR8iY8_5m-wusPNaQkjMxFSA,443
|
|
470
|
-
wbportfolio/viewsets/configs/buttons/mixins.py,sha256=
|
|
469
|
+
wbportfolio/viewsets/configs/buttons/mixins.py,sha256=mTn6EikAU4Sob8qNquhPOdhVTA9NjUanWaye7Bz7NHo,3167
|
|
471
470
|
wbportfolio/viewsets/configs/buttons/portfolios.py,sha256=y1sqYJwhQG9M0AgUEY8yEE3VTdhhVxoup3YBc2IRm-U,5267
|
|
472
471
|
wbportfolio/viewsets/configs/buttons/products.py,sha256=4xH19uYTDL55hKrV24eeeOFrmO1vV5MAwPw5IxNKosQ,3301
|
|
473
472
|
wbportfolio/viewsets/configs/buttons/reconciliations.py,sha256=lw4r22GHpqKPUF1MrB6P9dOkL-FHe5iiBJ0--f8D74E,3145
|
|
@@ -489,7 +488,7 @@ wbportfolio/viewsets/configs/display/product_groups.py,sha256=PwI-A0_ofShT2pub9-
|
|
|
489
488
|
wbportfolio/viewsets/configs/display/product_performance.py,sha256=6Mme48JBn_okwClR44dBK2OK26ejvdasDvBa5DI33_0,10070
|
|
490
489
|
wbportfolio/viewsets/configs/display/products.py,sha256=8Ssmb4IjqXwTX81aKmLVbmWZcD_8uHa08vieO6cgjoM,10686
|
|
491
490
|
wbportfolio/viewsets/configs/display/rebalancing.py,sha256=3A5JFy6-lMcsyoUCW5qPBpwfKqVQRXUA2qDrDz4Yjlc,1108
|
|
492
|
-
wbportfolio/viewsets/configs/display/reconciliations.py,sha256=
|
|
491
|
+
wbportfolio/viewsets/configs/display/reconciliations.py,sha256=E_Jab4cUMd7hhCQrdgev2ymkIqIbUh0B8TNvXiDqEWs,6025
|
|
493
492
|
wbportfolio/viewsets/configs/display/registers.py,sha256=1np75exIk5rfct6UkVN_RnfJ9ozvIkcWJgFV4_4rJns,3182
|
|
494
493
|
wbportfolio/viewsets/configs/display/roles.py,sha256=SFUyCdxSlHZ3NsMrJmpVBSlg-XKGaEFteV89nyLMMAQ,1815
|
|
495
494
|
wbportfolio/viewsets/configs/display/trades.py,sha256=NDmv2aShfshpO1SjzPzsXvn4BswEo4JP6I_aIm9LvP0,9564
|
|
@@ -555,7 +554,7 @@ wbportfolio/viewsets/orders/configs/buttons/__init__.py,sha256=EHzNmAfa0UQFITEF-
|
|
|
555
554
|
wbportfolio/viewsets/orders/configs/buttons/order_proposals.py,sha256=1BPkIYv0-K2DDGa4Gua2_Pxsx7fNurTZ2tYNdL66On0,6495
|
|
556
555
|
wbportfolio/viewsets/orders/configs/buttons/orders.py,sha256=GDO4Y33wkjhDxzpf7B1d_rKzAixegLv5rHam1DV3WkM,290
|
|
557
556
|
wbportfolio/viewsets/orders/configs/displays/__init__.py,sha256=__YJBbz_ZnKpE8WMMDR2PC9Nng-EVlRpGTEQucdrhRA,108
|
|
558
|
-
wbportfolio/viewsets/orders/configs/displays/order_proposals.py,sha256=
|
|
557
|
+
wbportfolio/viewsets/orders/configs/displays/order_proposals.py,sha256=zLoLEw4N1i_LD0e3hJnxzO8ORN2byFZoCxWnAz8DBx0,7362
|
|
559
558
|
wbportfolio/viewsets/orders/configs/displays/orders.py,sha256=R1oaDTGosL430xnYZpJz7ihnCOCO6eAFhDQz-wGYT24,7611
|
|
560
559
|
wbportfolio/viewsets/orders/configs/endpoints/__init__.py,sha256=IB8GEadiEtBDclhkgpcJGXWfCF6qRK_42hxJ4pcdZDU,148
|
|
561
560
|
wbportfolio/viewsets/orders/configs/endpoints/order_proposals.py,sha256=fY3y2YWR9nY-KE8k078NszDsnwOgqOIjHUgLvQjDivU,822
|
|
@@ -567,7 +566,7 @@ wbportfolio/viewsets/transactions/claim.py,sha256=Pb1WftoO-w-ZSTbLRhmQubhy7hgd68
|
|
|
567
566
|
wbportfolio/viewsets/transactions/fees.py,sha256=WT2bWWfgozz4_rpyTKX7dgBBTXD-gu0nlsd2Nk2Zh1Q,7028
|
|
568
567
|
wbportfolio/viewsets/transactions/mixins.py,sha256=WipvJoi5hylkpD0y9VATe30WAcwIHUIroVkK10FYw7k,636
|
|
569
568
|
wbportfolio/viewsets/transactions/trades.py,sha256=xBgOGaJ8aEg-2RxEJ4FDaBs4SGwuLasun3nhpis0WQY,12363
|
|
570
|
-
wbportfolio-1.55.
|
|
571
|
-
wbportfolio-1.55.
|
|
572
|
-
wbportfolio-1.55.
|
|
573
|
-
wbportfolio-1.55.
|
|
569
|
+
wbportfolio-1.55.10rc0.dist-info/METADATA,sha256=6GizbbXgUlDYAtWJbLypIw1ijtGXI58Zke9yPWQnIO8,755
|
|
570
|
+
wbportfolio-1.55.10rc0.dist-info/WHEEL,sha256=tkmg4JIqwd9H8mL30xA7crRmoStyCtGp0VWshokd1Jc,105
|
|
571
|
+
wbportfolio-1.55.10rc0.dist-info/licenses/LICENSE,sha256=jvfVH0SY8_YMHlsJHKe_OajiscQDz4lpTlqT6x24sVw,172
|
|
572
|
+
wbportfolio-1.55.10rc0.dist-info/RECORD,,
|
wbportfolio/fdm/__init__.py
DELETED
|
File without changes
|
wbportfolio/fdm/tasks.py
DELETED
|
@@ -1,42 +0,0 @@
|
|
|
1
|
-
from celery import shared_task
|
|
2
|
-
from wbfdm.models import Controversy, Instrument
|
|
3
|
-
|
|
4
|
-
from wbportfolio.models import AssetPosition, Portfolio
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
@shared_task(queue="portfolio")
|
|
8
|
-
def synchronize_portfolio_controversies():
|
|
9
|
-
active_portfolios = Portfolio.objects.filter_active_and_tracked()
|
|
10
|
-
qs = (
|
|
11
|
-
AssetPosition.objects.filter(portfolio__in=active_portfolios)
|
|
12
|
-
.values("underlying_instrument")
|
|
13
|
-
.distinct("underlying_instrument")
|
|
14
|
-
)
|
|
15
|
-
objs = {}
|
|
16
|
-
securities = Instrument.objects.filter(id__in=qs.values("underlying_instrument"))
|
|
17
|
-
securities_mapping = {security.id: security.get_root() for security in securities}
|
|
18
|
-
for controversy in securities.dl.esg_controversies():
|
|
19
|
-
instrument = securities_mapping[controversy["instrument_id"]]
|
|
20
|
-
obj = Controversy.dict_to_model(controversy, instrument)
|
|
21
|
-
objs[obj.external_id] = obj
|
|
22
|
-
|
|
23
|
-
Controversy.objects.bulk_create(
|
|
24
|
-
objs.values(),
|
|
25
|
-
update_fields=[
|
|
26
|
-
"instrument",
|
|
27
|
-
"headline",
|
|
28
|
-
"description",
|
|
29
|
-
"source",
|
|
30
|
-
"direct_involvement",
|
|
31
|
-
"company_response",
|
|
32
|
-
"review",
|
|
33
|
-
"initiated",
|
|
34
|
-
"flag",
|
|
35
|
-
"status",
|
|
36
|
-
"type",
|
|
37
|
-
"severity",
|
|
38
|
-
],
|
|
39
|
-
unique_fields=["external_id"],
|
|
40
|
-
update_conflicts=True,
|
|
41
|
-
batch_size=10000,
|
|
42
|
-
)
|
|
File without changes
|
|
File without changes
|