wbfdm 1.49.5__py2.py3-none-any.whl → 1.59.4__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.
- wbfdm/admin/exchanges.py +1 -1
- wbfdm/admin/instruments.py +3 -2
- wbfdm/analysis/financial_analysis/change_point_detection.py +88 -0
- wbfdm/analysis/financial_analysis/statement_with_estimates.py +5 -6
- wbfdm/analysis/financial_analysis/utils.py +6 -0
- wbfdm/contrib/dsws/client.py +3 -3
- wbfdm/contrib/dsws/dataloaders/market_data.py +31 -3
- wbfdm/contrib/internal/dataloaders/market_data.py +43 -9
- wbfdm/contrib/metric/backends/base.py +2 -2
- wbfdm/contrib/metric/backends/statistics.py +47 -13
- wbfdm/contrib/metric/dispatch.py +3 -0
- wbfdm/contrib/metric/exceptions.py +1 -1
- wbfdm/contrib/metric/filters.py +19 -0
- wbfdm/contrib/metric/models.py +6 -0
- wbfdm/contrib/metric/orchestrators.py +4 -4
- wbfdm/contrib/metric/signals.py +7 -0
- wbfdm/contrib/metric/tasks.py +2 -3
- wbfdm/contrib/metric/viewsets/configs/display.py +2 -2
- wbfdm/contrib/metric/viewsets/mixins.py +6 -6
- wbfdm/contrib/msci/client.py +6 -2
- wbfdm/contrib/qa/database_routers.py +1 -1
- wbfdm/contrib/qa/dataloaders/adjustments.py +2 -1
- wbfdm/contrib/qa/dataloaders/corporate_actions.py +2 -1
- wbfdm/contrib/qa/dataloaders/financials.py +19 -1
- wbfdm/contrib/qa/dataloaders/fx_rates.py +86 -0
- wbfdm/contrib/qa/dataloaders/market_data.py +29 -40
- wbfdm/contrib/qa/dataloaders/officers.py +1 -1
- wbfdm/contrib/qa/dataloaders/statements.py +18 -3
- wbfdm/contrib/qa/jinja2/qa/sql/ibes/financials.sql +1 -1
- wbfdm/contrib/qa/sync/exchanges.py +2 -1
- wbfdm/contrib/qa/sync/utils.py +76 -17
- wbfdm/dataloaders/protocols.py +12 -1
- wbfdm/dataloaders/proxies.py +15 -1
- wbfdm/dataloaders/types.py +7 -1
- wbfdm/enums.py +2 -0
- wbfdm/factories/instruments.py +4 -2
- wbfdm/figures/financials/financial_analysis_charts.py +2 -8
- wbfdm/filters/classifications.py +2 -2
- wbfdm/filters/financials.py +9 -18
- wbfdm/filters/financials_analysis.py +36 -16
- wbfdm/filters/instrument_prices.py +8 -5
- wbfdm/filters/instruments.py +21 -7
- wbfdm/import_export/backends/cbinsights/utils/client.py +8 -8
- wbfdm/import_export/backends/refinitiv/utils/controller.py +1 -1
- wbfdm/import_export/handlers/instrument.py +160 -104
- wbfdm/import_export/handlers/option.py +2 -2
- wbfdm/import_export/parsers/cbinsights/equities.py +2 -3
- wbfdm/jinja2.py +2 -1
- wbfdm/locale/de/LC_MESSAGES/django.mo +0 -0
- wbfdm/locale/de/LC_MESSAGES/django.po +257 -0
- wbfdm/locale/en/LC_MESSAGES/django.mo +0 -0
- wbfdm/locale/en/LC_MESSAGES/django.po +255 -0
- wbfdm/locale/fr/LC_MESSAGES/django.mo +0 -0
- wbfdm/locale/fr/LC_MESSAGES/django.po +257 -0
- wbfdm/migrations/0031_exchange_apply_round_lot_size_and_more.py +23 -0
- wbfdm/migrations/0032_alter_instrumentprice_outstanding_shares.py +18 -0
- wbfdm/migrations/0033_alter_controversy_review.py +18 -0
- wbfdm/migrations/0034_alter_instrumentlist_instrument_list_type.py +18 -0
- wbfdm/models/esg/controversies.py +19 -23
- wbfdm/models/exchanges/exchanges.py +8 -4
- wbfdm/models/fields.py +2 -2
- wbfdm/models/fk_fields.py +3 -3
- wbfdm/models/instruments/instrument_lists.py +1 -0
- wbfdm/models/instruments/instrument_prices.py +8 -1
- wbfdm/models/instruments/instrument_relationships.py +3 -0
- wbfdm/models/instruments/instruments.py +139 -26
- wbfdm/models/instruments/llm/create_instrument_news_relationships.py +29 -22
- wbfdm/models/instruments/mixin/financials_computed.py +0 -4
- wbfdm/models/instruments/mixin/financials_serializer_fields.py +118 -118
- wbfdm/models/instruments/mixin/instruments.py +7 -4
- wbfdm/models/instruments/options.py +6 -0
- wbfdm/models/instruments/private_equities.py +3 -0
- wbfdm/models/instruments/querysets.py +138 -37
- wbfdm/models/instruments/utils.py +5 -0
- wbfdm/serializers/exchanges.py +1 -0
- wbfdm/serializers/instruments/__init__.py +1 -0
- wbfdm/serializers/instruments/instruments.py +9 -2
- wbfdm/serializers/instruments/mixins.py +3 -3
- wbfdm/tasks.py +13 -2
- wbfdm/tests/analysis/financial_analysis/test_statement_with_estimates.py +0 -1
- wbfdm/tests/models/test_instrument_prices.py +0 -14
- wbfdm/tests/models/test_instruments.py +21 -9
- wbfdm/tests/models/test_queryset.py +89 -0
- wbfdm/viewsets/configs/display/exchanges.py +1 -1
- wbfdm/viewsets/configs/display/financial_summary.py +2 -2
- wbfdm/viewsets/configs/display/instrument_prices.py +2 -70
- wbfdm/viewsets/configs/display/instruments.py +3 -4
- wbfdm/viewsets/configs/display/instruments_relationships.py +3 -1
- wbfdm/viewsets/configs/display/prices.py +1 -0
- wbfdm/viewsets/configs/display/statement_with_estimates.py +1 -2
- wbfdm/viewsets/configs/endpoints/classifications.py +0 -12
- wbfdm/viewsets/configs/endpoints/instrument_prices.py +4 -23
- wbfdm/viewsets/configs/titles/instrument_prices.py +2 -1
- wbfdm/viewsets/esg.py +2 -2
- wbfdm/viewsets/financial_analysis/financial_metric_analysis.py +2 -2
- wbfdm/viewsets/financial_analysis/financial_ratio_analysis.py +1 -1
- wbfdm/viewsets/financial_analysis/financial_summary.py +6 -6
- wbfdm/viewsets/financial_analysis/statement_with_estimates.py +7 -3
- wbfdm/viewsets/instruments/financials_analysis.py +9 -12
- wbfdm/viewsets/instruments/instrument_prices.py +9 -9
- wbfdm/viewsets/instruments/instruments.py +9 -7
- wbfdm/viewsets/instruments/utils.py +3 -3
- wbfdm/viewsets/market_data.py +1 -1
- wbfdm/viewsets/prices.py +5 -0
- wbfdm/viewsets/statements/statements.py +7 -3
- {wbfdm-1.49.5.dist-info → wbfdm-1.59.4.dist-info}/METADATA +2 -1
- {wbfdm-1.49.5.dist-info → wbfdm-1.59.4.dist-info}/RECORD +108 -95
- {wbfdm-1.49.5.dist-info → wbfdm-1.59.4.dist-info}/WHEEL +1 -1
- wbfdm/menu.py +0 -11
|
@@ -18,7 +18,7 @@ class FundamentalSerializerFieldMixin:
|
|
|
18
18
|
wb_serializer.decorator(decorator_type="text", position="left", value="{{currency_repr}}")
|
|
19
19
|
],
|
|
20
20
|
read_only=True,
|
|
21
|
-
**get_default_attrs(cls, "revenue")
|
|
21
|
+
**get_default_attrs(cls, "revenue"),
|
|
22
22
|
),
|
|
23
23
|
"revenue_growth": wb_serializer.FloatField(
|
|
24
24
|
percent=True, precision=3, read_only=True, **get_default_attrs(cls, "revenue_growth")
|
|
@@ -30,7 +30,7 @@ class FundamentalSerializerFieldMixin:
|
|
|
30
30
|
wb_serializer.decorator(decorator_type="text", position="left", value="{{currency_repr}}")
|
|
31
31
|
],
|
|
32
32
|
read_only=True,
|
|
33
|
-
**get_default_attrs(cls, "cost_of_good_sold_without_depreciation")
|
|
33
|
+
**get_default_attrs(cls, "cost_of_good_sold_without_depreciation"),
|
|
34
34
|
),
|
|
35
35
|
"cost_of_good_sold": wb_serializer.FloatField(
|
|
36
36
|
display_mode=DisplayMode.SHORTENED,
|
|
@@ -39,7 +39,7 @@ class FundamentalSerializerFieldMixin:
|
|
|
39
39
|
wb_serializer.decorator(decorator_type="text", position="left", value="{{currency_repr}}")
|
|
40
40
|
],
|
|
41
41
|
read_only=True,
|
|
42
|
-
**get_default_attrs(cls, "cost_of_good_sold")
|
|
42
|
+
**get_default_attrs(cls, "cost_of_good_sold"),
|
|
43
43
|
),
|
|
44
44
|
"gross_profit": wb_serializer.FloatField(
|
|
45
45
|
display_mode=DisplayMode.SHORTENED,
|
|
@@ -48,7 +48,7 @@ class FundamentalSerializerFieldMixin:
|
|
|
48
48
|
wb_serializer.decorator(decorator_type="text", position="left", value="{{currency_repr}}")
|
|
49
49
|
],
|
|
50
50
|
read_only=True,
|
|
51
|
-
**get_default_attrs(cls, "gross_profit")
|
|
51
|
+
**get_default_attrs(cls, "gross_profit"),
|
|
52
52
|
),
|
|
53
53
|
"gross_profit_margin": wb_serializer.FloatField(
|
|
54
54
|
percent=True, precision=3, read_only=True, **get_default_attrs(cls, "gross_profit_margin")
|
|
@@ -59,7 +59,7 @@ class FundamentalSerializerFieldMixin:
|
|
|
59
59
|
wb_serializer.decorator(decorator_type="text", position="left", value="{{currency_repr}}")
|
|
60
60
|
],
|
|
61
61
|
read_only=True,
|
|
62
|
-
**get_default_attrs(cls, "eps")
|
|
62
|
+
**get_default_attrs(cls, "eps"),
|
|
63
63
|
),
|
|
64
64
|
"eps_growth": wb_serializer.FloatField(
|
|
65
65
|
percent=True, precision=3, read_only=True, **get_default_attrs(cls, "eps_growth")
|
|
@@ -70,7 +70,7 @@ class FundamentalSerializerFieldMixin:
|
|
|
70
70
|
wb_serializer.decorator(decorator_type="text", position="left", value="{{currency_repr}}")
|
|
71
71
|
],
|
|
72
72
|
read_only=True,
|
|
73
|
-
**get_default_attrs(cls, "diluted_eps")
|
|
73
|
+
**get_default_attrs(cls, "diluted_eps"),
|
|
74
74
|
),
|
|
75
75
|
"ebitda": wb_serializer.FloatField(
|
|
76
76
|
display_mode=DisplayMode.SHORTENED,
|
|
@@ -79,7 +79,7 @@ class FundamentalSerializerFieldMixin:
|
|
|
79
79
|
wb_serializer.decorator(decorator_type="text", position="left", value="{{currency_repr}}")
|
|
80
80
|
],
|
|
81
81
|
read_only=True,
|
|
82
|
-
**get_default_attrs(cls, "ebitda")
|
|
82
|
+
**get_default_attrs(cls, "ebitda"),
|
|
83
83
|
),
|
|
84
84
|
"ebitda_margin": wb_serializer.FloatField(
|
|
85
85
|
percent=True, precision=3, read_only=True, **get_default_attrs(cls, "ebitda_margin")
|
|
@@ -91,7 +91,7 @@ class FundamentalSerializerFieldMixin:
|
|
|
91
91
|
wb_serializer.decorator(decorator_type="text", position="left", value="{{currency_repr}}")
|
|
92
92
|
],
|
|
93
93
|
read_only=True,
|
|
94
|
-
**get_default_attrs(cls, "ebit")
|
|
94
|
+
**get_default_attrs(cls, "ebit"),
|
|
95
95
|
),
|
|
96
96
|
"ebit_margin": wb_serializer.FloatField(
|
|
97
97
|
percent=True, precision=3, read_only=True, **get_default_attrs(cls, "ebit_margin")
|
|
@@ -103,7 +103,7 @@ class FundamentalSerializerFieldMixin:
|
|
|
103
103
|
wb_serializer.decorator(decorator_type="text", position="left", value="{{currency_repr}}")
|
|
104
104
|
],
|
|
105
105
|
read_only=True,
|
|
106
|
-
**get_default_attrs(cls, "net_profit")
|
|
106
|
+
**get_default_attrs(cls, "net_profit"),
|
|
107
107
|
),
|
|
108
108
|
"net_profit_margin": wb_serializer.FloatField(
|
|
109
109
|
percent=True, precision=3, read_only=True, **get_default_attrs(cls, "net_profit_margin")
|
|
@@ -118,7 +118,7 @@ class FundamentalSerializerFieldMixin:
|
|
|
118
118
|
wb_serializer.decorator(decorator_type="text", position="left", value="{{currency_repr}}")
|
|
119
119
|
],
|
|
120
120
|
read_only=True,
|
|
121
|
-
**get_default_attrs(cls, "cost_research_development")
|
|
121
|
+
**get_default_attrs(cls, "cost_research_development"),
|
|
122
122
|
),
|
|
123
123
|
"interest_expense": wb_serializer.FloatField(
|
|
124
124
|
display_mode=DisplayMode.SHORTENED,
|
|
@@ -127,7 +127,7 @@ class FundamentalSerializerFieldMixin:
|
|
|
127
127
|
wb_serializer.decorator(decorator_type="text", position="left", value="{{currency_repr}}")
|
|
128
128
|
],
|
|
129
129
|
read_only=True,
|
|
130
|
-
**get_default_attrs(cls, "interest_expense")
|
|
130
|
+
**get_default_attrs(cls, "interest_expense"),
|
|
131
131
|
),
|
|
132
132
|
"interest_expense_to_sales_ratio": wb_serializer.FloatField(
|
|
133
133
|
percent=True, precision=3, read_only=True, **get_default_attrs(cls, "interest_expense_to_sales_ratio")
|
|
@@ -139,7 +139,7 @@ class FundamentalSerializerFieldMixin:
|
|
|
139
139
|
wb_serializer.decorator(decorator_type="text", position="left", value="{{currency_repr}}")
|
|
140
140
|
],
|
|
141
141
|
read_only=True,
|
|
142
|
-
**get_default_attrs(cls, "sga")
|
|
142
|
+
**get_default_attrs(cls, "sga"),
|
|
143
143
|
),
|
|
144
144
|
"sga_to_sales_ratio": wb_serializer.FloatField(
|
|
145
145
|
percent=True, precision=3, read_only=True, **get_default_attrs(cls, "sga_to_sales_ratio")
|
|
@@ -151,13 +151,13 @@ class FundamentalSerializerFieldMixin:
|
|
|
151
151
|
wb_serializer.decorator(decorator_type="text", position="left", value="{{currency_repr}}")
|
|
152
152
|
],
|
|
153
153
|
read_only=True,
|
|
154
|
-
**get_default_attrs(cls, "deprecation_and_amortization")
|
|
154
|
+
**get_default_attrs(cls, "deprecation_and_amortization"),
|
|
155
155
|
),
|
|
156
156
|
"deprecation_and_amortization_to_sales_ratio": wb_serializer.FloatField(
|
|
157
157
|
percent=True,
|
|
158
158
|
precision=3,
|
|
159
159
|
read_only=True,
|
|
160
|
-
**get_default_attrs(cls, "deprecation_and_amortization_to_sales_ratio")
|
|
160
|
+
**get_default_attrs(cls, "deprecation_and_amortization_to_sales_ratio"),
|
|
161
161
|
),
|
|
162
162
|
"free_cash": wb_serializer.FloatField(
|
|
163
163
|
display_mode=DisplayMode.SHORTENED,
|
|
@@ -166,7 +166,7 @@ class FundamentalSerializerFieldMixin:
|
|
|
166
166
|
wb_serializer.decorator(decorator_type="text", position="left", value="{{currency_repr}}")
|
|
167
167
|
],
|
|
168
168
|
read_only=True,
|
|
169
|
-
**get_default_attrs(cls, "free_cash")
|
|
169
|
+
**get_default_attrs(cls, "free_cash"),
|
|
170
170
|
),
|
|
171
171
|
"free_cash_flow": wb_serializer.FloatField(
|
|
172
172
|
display_mode=DisplayMode.SHORTENED,
|
|
@@ -175,7 +175,7 @@ class FundamentalSerializerFieldMixin:
|
|
|
175
175
|
wb_serializer.decorator(decorator_type="text", position="left", value="{{currency_repr}}")
|
|
176
176
|
],
|
|
177
177
|
read_only=True,
|
|
178
|
-
**get_default_attrs(cls, "free_cash_flow")
|
|
178
|
+
**get_default_attrs(cls, "free_cash_flow"),
|
|
179
179
|
),
|
|
180
180
|
"free_cash_flow_growth": wb_serializer.FloatField(
|
|
181
181
|
percent=True, precision=3, read_only=True, **get_default_attrs(cls, "free_cash_flow_growth")
|
|
@@ -190,7 +190,7 @@ class FundamentalSerializerFieldMixin:
|
|
|
190
190
|
wb_serializer.decorator(decorator_type="text", position="left", value="{{currency_repr}}")
|
|
191
191
|
],
|
|
192
192
|
read_only=True,
|
|
193
|
-
**get_default_attrs(cls, "cash_from_operation")
|
|
193
|
+
**get_default_attrs(cls, "cash_from_operation"),
|
|
194
194
|
),
|
|
195
195
|
"working_capital": wb_serializer.FloatField(
|
|
196
196
|
display_mode=DisplayMode.SHORTENED,
|
|
@@ -199,7 +199,7 @@ class FundamentalSerializerFieldMixin:
|
|
|
199
199
|
wb_serializer.decorator(decorator_type="text", position="left", value="{{currency_repr}}")
|
|
200
200
|
],
|
|
201
201
|
read_only=True,
|
|
202
|
-
**get_default_attrs(cls, "working_capital")
|
|
202
|
+
**get_default_attrs(cls, "working_capital"),
|
|
203
203
|
),
|
|
204
204
|
"capital_expenditures": wb_serializer.FloatField(
|
|
205
205
|
display_mode=DisplayMode.SHORTENED,
|
|
@@ -208,7 +208,7 @@ class FundamentalSerializerFieldMixin:
|
|
|
208
208
|
wb_serializer.decorator(decorator_type="text", position="left", value="{{currency_repr}}")
|
|
209
209
|
],
|
|
210
210
|
read_only=True,
|
|
211
|
-
**get_default_attrs(cls, "capital_expenditures")
|
|
211
|
+
**get_default_attrs(cls, "capital_expenditures"),
|
|
212
212
|
),
|
|
213
213
|
"investment_cash": wb_serializer.FloatField(
|
|
214
214
|
display_mode=DisplayMode.SHORTENED,
|
|
@@ -217,7 +217,7 @@ class FundamentalSerializerFieldMixin:
|
|
|
217
217
|
wb_serializer.decorator(decorator_type="text", position="left", value="{{currency_repr}}")
|
|
218
218
|
],
|
|
219
219
|
read_only=True,
|
|
220
|
-
**get_default_attrs(cls, "investment_cash")
|
|
220
|
+
**get_default_attrs(cls, "investment_cash"),
|
|
221
221
|
),
|
|
222
222
|
"financing_cash": wb_serializer.FloatField(
|
|
223
223
|
display_mode=DisplayMode.SHORTENED,
|
|
@@ -226,7 +226,7 @@ class FundamentalSerializerFieldMixin:
|
|
|
226
226
|
wb_serializer.decorator(decorator_type="text", position="left", value="{{currency_repr}}")
|
|
227
227
|
],
|
|
228
228
|
read_only=True,
|
|
229
|
-
**get_default_attrs(cls, "financing_cash")
|
|
229
|
+
**get_default_attrs(cls, "financing_cash"),
|
|
230
230
|
),
|
|
231
231
|
"shareholder_equity": wb_serializer.FloatField(
|
|
232
232
|
display_mode=DisplayMode.SHORTENED,
|
|
@@ -235,7 +235,7 @@ class FundamentalSerializerFieldMixin:
|
|
|
235
235
|
wb_serializer.decorator(decorator_type="text", position="left", value="{{currency_repr}}")
|
|
236
236
|
],
|
|
237
237
|
read_only=True,
|
|
238
|
-
**get_default_attrs(cls, "shareholder_equity")
|
|
238
|
+
**get_default_attrs(cls, "shareholder_equity"),
|
|
239
239
|
),
|
|
240
240
|
"total_assets": wb_serializer.FloatField(
|
|
241
241
|
display_mode=DisplayMode.SHORTENED,
|
|
@@ -244,7 +244,7 @@ class FundamentalSerializerFieldMixin:
|
|
|
244
244
|
wb_serializer.decorator(decorator_type="text", position="left", value="{{currency_repr}}")
|
|
245
245
|
],
|
|
246
246
|
read_only=True,
|
|
247
|
-
**get_default_attrs(cls, "total_assets")
|
|
247
|
+
**get_default_attrs(cls, "total_assets"),
|
|
248
248
|
),
|
|
249
249
|
"current_liabilities": wb_serializer.FloatField(
|
|
250
250
|
display_mode=DisplayMode.SHORTENED,
|
|
@@ -253,7 +253,7 @@ class FundamentalSerializerFieldMixin:
|
|
|
253
253
|
wb_serializer.decorator(decorator_type="text", position="left", value="{{currency_repr}}")
|
|
254
254
|
],
|
|
255
255
|
read_only=True,
|
|
256
|
-
**get_default_attrs(cls, "current_liabilities")
|
|
256
|
+
**get_default_attrs(cls, "current_liabilities"),
|
|
257
257
|
),
|
|
258
258
|
"total_liabilities": wb_serializer.FloatField(
|
|
259
259
|
display_mode=DisplayMode.SHORTENED,
|
|
@@ -262,7 +262,7 @@ class FundamentalSerializerFieldMixin:
|
|
|
262
262
|
wb_serializer.decorator(decorator_type="text", position="left", value="{{currency_repr}}")
|
|
263
263
|
],
|
|
264
264
|
read_only=True,
|
|
265
|
-
**get_default_attrs(cls, "total_liabilities")
|
|
265
|
+
**get_default_attrs(cls, "total_liabilities"),
|
|
266
266
|
),
|
|
267
267
|
"total_debt": wb_serializer.FloatField(
|
|
268
268
|
display_mode=DisplayMode.SHORTENED,
|
|
@@ -271,7 +271,7 @@ class FundamentalSerializerFieldMixin:
|
|
|
271
271
|
wb_serializer.decorator(decorator_type="text", position="left", value="{{currency_repr}}")
|
|
272
272
|
],
|
|
273
273
|
read_only=True,
|
|
274
|
-
**get_default_attrs(cls, "total_debt")
|
|
274
|
+
**get_default_attrs(cls, "total_debt"),
|
|
275
275
|
),
|
|
276
276
|
"cash_and_cash_equivalents": wb_serializer.FloatField(
|
|
277
277
|
display_mode=DisplayMode.SHORTENED,
|
|
@@ -280,7 +280,7 @@ class FundamentalSerializerFieldMixin:
|
|
|
280
280
|
wb_serializer.decorator(decorator_type="text", position="left", value="{{currency_repr}}")
|
|
281
281
|
],
|
|
282
282
|
read_only=True,
|
|
283
|
-
**get_default_attrs(cls, "cash_and_cash_equivalents")
|
|
283
|
+
**get_default_attrs(cls, "cash_and_cash_equivalents"),
|
|
284
284
|
),
|
|
285
285
|
"net_debt": wb_serializer.FloatField(
|
|
286
286
|
display_mode=DisplayMode.SHORTENED,
|
|
@@ -289,7 +289,7 @@ class FundamentalSerializerFieldMixin:
|
|
|
289
289
|
wb_serializer.decorator(decorator_type="text", position="left", value="{{currency_repr}}")
|
|
290
290
|
],
|
|
291
291
|
read_only=True,
|
|
292
|
-
**get_default_attrs(cls, "net_debt")
|
|
292
|
+
**get_default_attrs(cls, "net_debt"),
|
|
293
293
|
),
|
|
294
294
|
"cash_and_short_term_investments": wb_serializer.FloatField(
|
|
295
295
|
display_mode=DisplayMode.SHORTENED,
|
|
@@ -298,7 +298,7 @@ class FundamentalSerializerFieldMixin:
|
|
|
298
298
|
wb_serializer.decorator(decorator_type="text", position="left", value="{{currency_repr}}")
|
|
299
299
|
],
|
|
300
300
|
read_only=True,
|
|
301
|
-
**get_default_attrs(cls, "cash_and_short_term_investments")
|
|
301
|
+
**get_default_attrs(cls, "cash_and_short_term_investments"),
|
|
302
302
|
),
|
|
303
303
|
"net_change_in_cash": wb_serializer.FloatField(
|
|
304
304
|
display_mode=DisplayMode.SHORTENED,
|
|
@@ -307,7 +307,7 @@ class FundamentalSerializerFieldMixin:
|
|
|
307
307
|
wb_serializer.decorator(decorator_type="text", position="left", value="{{currency_repr}}")
|
|
308
308
|
],
|
|
309
309
|
read_only=True,
|
|
310
|
-
**get_default_attrs(cls, "net_change_in_cash")
|
|
310
|
+
**get_default_attrs(cls, "net_change_in_cash"),
|
|
311
311
|
),
|
|
312
312
|
"receivables": wb_serializer.FloatField(
|
|
313
313
|
display_mode=DisplayMode.SHORTENED,
|
|
@@ -316,7 +316,7 @@ class FundamentalSerializerFieldMixin:
|
|
|
316
316
|
wb_serializer.decorator(decorator_type="text", position="left", value="{{currency_repr}}")
|
|
317
317
|
],
|
|
318
318
|
read_only=True,
|
|
319
|
-
**get_default_attrs(cls, "receivables")
|
|
319
|
+
**get_default_attrs(cls, "receivables"),
|
|
320
320
|
),
|
|
321
321
|
"inventories": wb_serializer.FloatField(
|
|
322
322
|
display_mode=DisplayMode.SHORTENED,
|
|
@@ -325,7 +325,7 @@ class FundamentalSerializerFieldMixin:
|
|
|
325
325
|
wb_serializer.decorator(decorator_type="text", position="left", value="{{currency_repr}}")
|
|
326
326
|
],
|
|
327
327
|
read_only=True,
|
|
328
|
-
**get_default_attrs(cls, "inventories")
|
|
328
|
+
**get_default_attrs(cls, "inventories"),
|
|
329
329
|
),
|
|
330
330
|
"payables": wb_serializer.FloatField(
|
|
331
331
|
display_mode=DisplayMode.SHORTENED,
|
|
@@ -334,7 +334,7 @@ class FundamentalSerializerFieldMixin:
|
|
|
334
334
|
wb_serializer.decorator(decorator_type="text", position="left", value="{{currency_repr}}")
|
|
335
335
|
],
|
|
336
336
|
read_only=True,
|
|
337
|
-
**get_default_attrs(cls, "payables")
|
|
337
|
+
**get_default_attrs(cls, "payables"),
|
|
338
338
|
),
|
|
339
339
|
"book_value_per_share": wb_serializer.FloatField(
|
|
340
340
|
display_mode=DisplayMode.SHORTENED,
|
|
@@ -343,7 +343,7 @@ class FundamentalSerializerFieldMixin:
|
|
|
343
343
|
wb_serializer.decorator(decorator_type="text", position="left", value="{{currency_repr}}")
|
|
344
344
|
],
|
|
345
345
|
read_only=True,
|
|
346
|
-
**get_default_attrs(cls, "book_value_per_share")
|
|
346
|
+
**get_default_attrs(cls, "book_value_per_share"),
|
|
347
347
|
),
|
|
348
348
|
"current_assets": wb_serializer.FloatField(
|
|
349
349
|
display_mode=DisplayMode.SHORTENED,
|
|
@@ -352,13 +352,13 @@ class FundamentalSerializerFieldMixin:
|
|
|
352
352
|
wb_serializer.decorator(decorator_type="text", position="left", value="{{currency_repr}}")
|
|
353
353
|
],
|
|
354
354
|
read_only=True,
|
|
355
|
-
**get_default_attrs(cls, "current_assets")
|
|
355
|
+
**get_default_attrs(cls, "current_assets"),
|
|
356
356
|
),
|
|
357
357
|
"employee_count": wb_serializer.FloatField(
|
|
358
358
|
display_mode=DisplayMode.SHORTENED,
|
|
359
359
|
precision=1,
|
|
360
360
|
read_only=True,
|
|
361
|
-
**get_default_attrs(cls, "employee_count")
|
|
361
|
+
**get_default_attrs(cls, "employee_count"),
|
|
362
362
|
),
|
|
363
363
|
"employee_count_growth": wb_serializer.FloatField(
|
|
364
364
|
percent=True, precision=3, read_only=True, **get_default_attrs(cls, "employee_count_growth")
|
|
@@ -370,7 +370,7 @@ class FundamentalSerializerFieldMixin:
|
|
|
370
370
|
wb_serializer.decorator(decorator_type="text", position="left", value="{{currency_repr}}")
|
|
371
371
|
],
|
|
372
372
|
read_only=True,
|
|
373
|
-
**get_default_attrs(cls, "entreprise_value")
|
|
373
|
+
**get_default_attrs(cls, "entreprise_value"),
|
|
374
374
|
),
|
|
375
375
|
"net_debt_to_ebitda_ratio": wb_serializer.FloatField(
|
|
376
376
|
precision=2, read_only=True, **get_default_attrs(cls, "net_debt_to_ebitda_ratio")
|
|
@@ -382,7 +382,7 @@ class FundamentalSerializerFieldMixin:
|
|
|
382
382
|
wb_serializer.decorator(decorator_type="text", position="left", value="{{currency_repr}}")
|
|
383
383
|
],
|
|
384
384
|
read_only=True,
|
|
385
|
-
**get_default_attrs(cls, "burn_rate")
|
|
385
|
+
**get_default_attrs(cls, "burn_rate"),
|
|
386
386
|
),
|
|
387
387
|
"operating_burn_rate": wb_serializer.FloatField(
|
|
388
388
|
display_mode=DisplayMode.SHORTENED,
|
|
@@ -391,7 +391,7 @@ class FundamentalSerializerFieldMixin:
|
|
|
391
391
|
wb_serializer.decorator(decorator_type="text", position="left", value="{{currency_repr}}")
|
|
392
392
|
],
|
|
393
393
|
read_only=True,
|
|
394
|
-
**get_default_attrs(cls, "operating_burn_rate")
|
|
394
|
+
**get_default_attrs(cls, "operating_burn_rate"),
|
|
395
395
|
),
|
|
396
396
|
"free_cash_burn_rate": wb_serializer.FloatField(
|
|
397
397
|
display_mode=DisplayMode.SHORTENED,
|
|
@@ -400,7 +400,7 @@ class FundamentalSerializerFieldMixin:
|
|
|
400
400
|
wb_serializer.decorator(decorator_type="text", position="left", value="{{currency_repr}}")
|
|
401
401
|
],
|
|
402
402
|
read_only=True,
|
|
403
|
-
**get_default_attrs(cls, "free_cash_burn_rate")
|
|
403
|
+
**get_default_attrs(cls, "free_cash_burn_rate"),
|
|
404
404
|
),
|
|
405
405
|
"cash_reserve_to_burn_rate_ratio": wb_serializer.FloatField(
|
|
406
406
|
precision=1, read_only=True, **get_default_attrs(cls, "cash_reserve_to_burn_rate_ratio")
|
|
@@ -426,7 +426,7 @@ class FundamentalSerializerFieldMixin:
|
|
|
426
426
|
"cash_and_short_term_investments_to_current_assets_ratio": wb_serializer.FloatField(
|
|
427
427
|
precision=1,
|
|
428
428
|
read_only=True,
|
|
429
|
-
**get_default_attrs(cls, "cash_and_short_term_investments_to_current_assets_ratio")
|
|
429
|
+
**get_default_attrs(cls, "cash_and_short_term_investments_to_current_assets_ratio"),
|
|
430
430
|
),
|
|
431
431
|
"rd_to_sales_ratio": wb_serializer.FloatField(
|
|
432
432
|
percent=True, precision=3, read_only=True, **get_default_attrs(cls, "rd_to_sales_ratio")
|
|
@@ -452,7 +452,7 @@ class FundamentalSerializerFieldMixin:
|
|
|
452
452
|
wb_serializer.decorator(decorator_type="text", position="left", value="{{currency_repr}}")
|
|
453
453
|
],
|
|
454
454
|
read_only=True,
|
|
455
|
-
**get_default_attrs(cls, "revenue_to_employee_ratio")
|
|
455
|
+
**get_default_attrs(cls, "revenue_to_employee_ratio"),
|
|
456
456
|
),
|
|
457
457
|
"capex_to_sales": wb_serializer.FloatField(
|
|
458
458
|
percent=True, precision=3, read_only=True, **get_default_attrs(cls, "capex_to_sales")
|
|
@@ -479,7 +479,7 @@ class DailyFundamentalSerializerFieldMixin:
|
|
|
479
479
|
wb_serializer.decorator(decorator_type="text", position="left", value="{{currency_repr}}")
|
|
480
480
|
],
|
|
481
481
|
read_only=True,
|
|
482
|
-
**get_default_attrs(cls, "eps_ttm")
|
|
482
|
+
**get_default_attrs(cls, "eps_ttm"),
|
|
483
483
|
),
|
|
484
484
|
"eps_ftw": wb_serializer.FloatField(
|
|
485
485
|
precision=2,
|
|
@@ -487,7 +487,7 @@ class DailyFundamentalSerializerFieldMixin:
|
|
|
487
487
|
wb_serializer.decorator(decorator_type="text", position="left", value="{{currency_repr}}")
|
|
488
488
|
],
|
|
489
489
|
read_only=True,
|
|
490
|
-
**get_default_attrs(cls, "eps_ftw")
|
|
490
|
+
**get_default_attrs(cls, "eps_ftw"),
|
|
491
491
|
),
|
|
492
492
|
"free_cash": wb_serializer.FloatField(
|
|
493
493
|
precision=1,
|
|
@@ -495,7 +495,7 @@ class DailyFundamentalSerializerFieldMixin:
|
|
|
495
495
|
wb_serializer.decorator(decorator_type="text", position="left", value="{{currency_repr}}")
|
|
496
496
|
],
|
|
497
497
|
read_only=True,
|
|
498
|
-
**get_default_attrs(cls, "free_cash")
|
|
498
|
+
**get_default_attrs(cls, "free_cash"),
|
|
499
499
|
),
|
|
500
500
|
"free_cash_flow": wb_serializer.FloatField(
|
|
501
501
|
display_mode=DisplayMode.SHORTENED,
|
|
@@ -504,7 +504,7 @@ class DailyFundamentalSerializerFieldMixin:
|
|
|
504
504
|
wb_serializer.decorator(decorator_type="text", position="left", value="{{currency_repr}}")
|
|
505
505
|
],
|
|
506
506
|
read_only=True,
|
|
507
|
-
**get_default_attrs(cls, "free_cash_flow")
|
|
507
|
+
**get_default_attrs(cls, "free_cash_flow"),
|
|
508
508
|
),
|
|
509
509
|
"free_cash_flow_ttm_growth": wb_serializer.FloatField(
|
|
510
510
|
percent=True, precision=3, read_only=True, **get_default_attrs(cls, "free_cash_flow_ttm_growth")
|
|
@@ -532,7 +532,7 @@ class ForecastSerializerFieldMixin:
|
|
|
532
532
|
wb_serializer.decorator(decorator_type="text", position="left", value="{{currency_repr}}")
|
|
533
533
|
],
|
|
534
534
|
read_only=True,
|
|
535
|
-
**get_default_attrs(cls, "revenue_y1")
|
|
535
|
+
**get_default_attrs(cls, "revenue_y1"),
|
|
536
536
|
),
|
|
537
537
|
"revenue_y2": wb_serializer.FloatField(
|
|
538
538
|
display_mode=DisplayMode.SHORTENED,
|
|
@@ -541,7 +541,7 @@ class ForecastSerializerFieldMixin:
|
|
|
541
541
|
wb_serializer.decorator(decorator_type="text", position="left", value="{{currency_repr}}")
|
|
542
542
|
],
|
|
543
543
|
read_only=True,
|
|
544
|
-
**get_default_attrs(cls, "revenue_y2")
|
|
544
|
+
**get_default_attrs(cls, "revenue_y2"),
|
|
545
545
|
),
|
|
546
546
|
"revenue_y3": wb_serializer.FloatField(
|
|
547
547
|
display_mode=DisplayMode.SHORTENED,
|
|
@@ -550,7 +550,7 @@ class ForecastSerializerFieldMixin:
|
|
|
550
550
|
wb_serializer.decorator(decorator_type="text", position="left", value="{{currency_repr}}")
|
|
551
551
|
],
|
|
552
552
|
read_only=True,
|
|
553
|
-
**get_default_attrs(cls, "revenue_y3")
|
|
553
|
+
**get_default_attrs(cls, "revenue_y3"),
|
|
554
554
|
),
|
|
555
555
|
"revenue_y4": wb_serializer.FloatField(
|
|
556
556
|
display_mode=DisplayMode.SHORTENED,
|
|
@@ -559,7 +559,7 @@ class ForecastSerializerFieldMixin:
|
|
|
559
559
|
wb_serializer.decorator(decorator_type="text", position="left", value="{{currency_repr}}")
|
|
560
560
|
],
|
|
561
561
|
read_only=True,
|
|
562
|
-
**get_default_attrs(cls, "revenue_y4")
|
|
562
|
+
**get_default_attrs(cls, "revenue_y4"),
|
|
563
563
|
),
|
|
564
564
|
"revenue_y5": wb_serializer.FloatField(
|
|
565
565
|
display_mode=DisplayMode.SHORTENED,
|
|
@@ -568,7 +568,7 @@ class ForecastSerializerFieldMixin:
|
|
|
568
568
|
wb_serializer.decorator(decorator_type="text", position="left", value="{{currency_repr}}")
|
|
569
569
|
],
|
|
570
570
|
read_only=True,
|
|
571
|
-
**get_default_attrs(cls, "revenue_y5")
|
|
571
|
+
**get_default_attrs(cls, "revenue_y5"),
|
|
572
572
|
),
|
|
573
573
|
"revenue_growth_y1": wb_serializer.FloatField(
|
|
574
574
|
percent=True, precision=3, read_only=True, **get_default_attrs(cls, "revenue_growth_y1")
|
|
@@ -592,7 +592,7 @@ class ForecastSerializerFieldMixin:
|
|
|
592
592
|
wb_serializer.decorator(decorator_type="text", position="left", value="{{currency_repr}}")
|
|
593
593
|
],
|
|
594
594
|
read_only=True,
|
|
595
|
-
**get_default_attrs(cls, "deprecation_and_amortization_y1")
|
|
595
|
+
**get_default_attrs(cls, "deprecation_and_amortization_y1"),
|
|
596
596
|
),
|
|
597
597
|
"deprecation_and_amortization_y2": wb_serializer.FloatField(
|
|
598
598
|
display_mode=DisplayMode.SHORTENED,
|
|
@@ -601,7 +601,7 @@ class ForecastSerializerFieldMixin:
|
|
|
601
601
|
wb_serializer.decorator(decorator_type="text", position="left", value="{{currency_repr}}")
|
|
602
602
|
],
|
|
603
603
|
read_only=True,
|
|
604
|
-
**get_default_attrs(cls, "deprecation_and_amortization_y2")
|
|
604
|
+
**get_default_attrs(cls, "deprecation_and_amortization_y2"),
|
|
605
605
|
),
|
|
606
606
|
"deprecation_and_amortization_y3": wb_serializer.FloatField(
|
|
607
607
|
display_mode=DisplayMode.SHORTENED,
|
|
@@ -610,7 +610,7 @@ class ForecastSerializerFieldMixin:
|
|
|
610
610
|
wb_serializer.decorator(decorator_type="text", position="left", value="{{currency_repr}}")
|
|
611
611
|
],
|
|
612
612
|
read_only=True,
|
|
613
|
-
**get_default_attrs(cls, "deprecation_and_amortization_y3")
|
|
613
|
+
**get_default_attrs(cls, "deprecation_and_amortization_y3"),
|
|
614
614
|
),
|
|
615
615
|
"deprecation_and_amortization_y4": wb_serializer.FloatField(
|
|
616
616
|
display_mode=DisplayMode.SHORTENED,
|
|
@@ -619,7 +619,7 @@ class ForecastSerializerFieldMixin:
|
|
|
619
619
|
wb_serializer.decorator(decorator_type="text", position="left", value="{{currency_repr}}")
|
|
620
620
|
],
|
|
621
621
|
read_only=True,
|
|
622
|
-
**get_default_attrs(cls, "deprecation_and_amortization_y4")
|
|
622
|
+
**get_default_attrs(cls, "deprecation_and_amortization_y4"),
|
|
623
623
|
),
|
|
624
624
|
"deprecation_and_amortization_y5": wb_serializer.FloatField(
|
|
625
625
|
display_mode=DisplayMode.SHORTENED,
|
|
@@ -628,37 +628,37 @@ class ForecastSerializerFieldMixin:
|
|
|
628
628
|
wb_serializer.decorator(decorator_type="text", position="left", value="{{currency_repr}}")
|
|
629
629
|
],
|
|
630
630
|
read_only=True,
|
|
631
|
-
**get_default_attrs(cls, "deprecation_and_amortization_y5")
|
|
631
|
+
**get_default_attrs(cls, "deprecation_and_amortization_y5"),
|
|
632
632
|
),
|
|
633
633
|
"gross_profit_margin_without_depreciation_y1": wb_serializer.FloatField(
|
|
634
634
|
percent=True,
|
|
635
635
|
precision=3,
|
|
636
636
|
read_only=True,
|
|
637
|
-
**get_default_attrs(cls, "gross_profit_margin_without_depreciation_y1")
|
|
637
|
+
**get_default_attrs(cls, "gross_profit_margin_without_depreciation_y1"),
|
|
638
638
|
),
|
|
639
639
|
"gross_profit_margin_without_depreciation_y2": wb_serializer.FloatField(
|
|
640
640
|
percent=True,
|
|
641
641
|
precision=3,
|
|
642
642
|
read_only=True,
|
|
643
|
-
**get_default_attrs(cls, "gross_profit_margin_without_depreciation_y2")
|
|
643
|
+
**get_default_attrs(cls, "gross_profit_margin_without_depreciation_y2"),
|
|
644
644
|
),
|
|
645
645
|
"gross_profit_margin_without_depreciation_y3": wb_serializer.FloatField(
|
|
646
646
|
percent=True,
|
|
647
647
|
precision=3,
|
|
648
648
|
read_only=True,
|
|
649
|
-
**get_default_attrs(cls, "gross_profit_margin_without_depreciation_y3")
|
|
649
|
+
**get_default_attrs(cls, "gross_profit_margin_without_depreciation_y3"),
|
|
650
650
|
),
|
|
651
651
|
"gross_profit_margin_without_depreciation_y4": wb_serializer.FloatField(
|
|
652
652
|
percent=True,
|
|
653
653
|
precision=3,
|
|
654
654
|
read_only=True,
|
|
655
|
-
**get_default_attrs(cls, "gross_profit_margin_without_depreciation_y4")
|
|
655
|
+
**get_default_attrs(cls, "gross_profit_margin_without_depreciation_y4"),
|
|
656
656
|
),
|
|
657
657
|
"gross_profit_margin_without_depreciation_y5": wb_serializer.FloatField(
|
|
658
658
|
percent=True,
|
|
659
659
|
precision=3,
|
|
660
660
|
read_only=True,
|
|
661
|
-
**get_default_attrs(cls, "gross_profit_margin_without_depreciation_y5")
|
|
661
|
+
**get_default_attrs(cls, "gross_profit_margin_without_depreciation_y5"),
|
|
662
662
|
),
|
|
663
663
|
"gross_profit_margin_y1": wb_serializer.FloatField(
|
|
664
664
|
percent=True, precision=3, read_only=True, **get_default_attrs(cls, "gross_profit_margin_y1")
|
|
@@ -682,7 +682,7 @@ class ForecastSerializerFieldMixin:
|
|
|
682
682
|
wb_serializer.decorator(decorator_type="text", position="left", value="{{currency_repr}}")
|
|
683
683
|
],
|
|
684
684
|
read_only=True,
|
|
685
|
-
**get_default_attrs(cls, "gross_profit_y1")
|
|
685
|
+
**get_default_attrs(cls, "gross_profit_y1"),
|
|
686
686
|
),
|
|
687
687
|
"gross_profit_y2": wb_serializer.FloatField(
|
|
688
688
|
display_mode=DisplayMode.SHORTENED,
|
|
@@ -691,7 +691,7 @@ class ForecastSerializerFieldMixin:
|
|
|
691
691
|
wb_serializer.decorator(decorator_type="text", position="left", value="{{currency_repr}}")
|
|
692
692
|
],
|
|
693
693
|
read_only=True,
|
|
694
|
-
**get_default_attrs(cls, "gross_profit_y2")
|
|
694
|
+
**get_default_attrs(cls, "gross_profit_y2"),
|
|
695
695
|
),
|
|
696
696
|
"gross_profit_y3": wb_serializer.FloatField(
|
|
697
697
|
display_mode=DisplayMode.SHORTENED,
|
|
@@ -700,7 +700,7 @@ class ForecastSerializerFieldMixin:
|
|
|
700
700
|
wb_serializer.decorator(decorator_type="text", position="left", value="{{currency_repr}}")
|
|
701
701
|
],
|
|
702
702
|
read_only=True,
|
|
703
|
-
**get_default_attrs(cls, "gross_profit_y3")
|
|
703
|
+
**get_default_attrs(cls, "gross_profit_y3"),
|
|
704
704
|
),
|
|
705
705
|
"gross_profit_y4": wb_serializer.FloatField(
|
|
706
706
|
display_mode=DisplayMode.SHORTENED,
|
|
@@ -709,7 +709,7 @@ class ForecastSerializerFieldMixin:
|
|
|
709
709
|
wb_serializer.decorator(decorator_type="text", position="left", value="{{currency_repr}}")
|
|
710
710
|
],
|
|
711
711
|
read_only=True,
|
|
712
|
-
**get_default_attrs(cls, "gross_profit_y4")
|
|
712
|
+
**get_default_attrs(cls, "gross_profit_y4"),
|
|
713
713
|
),
|
|
714
714
|
"gross_profit_y5": wb_serializer.FloatField(
|
|
715
715
|
display_mode=DisplayMode.SHORTENED,
|
|
@@ -718,7 +718,7 @@ class ForecastSerializerFieldMixin:
|
|
|
718
718
|
wb_serializer.decorator(decorator_type="text", position="left", value="{{currency_repr}}")
|
|
719
719
|
],
|
|
720
720
|
read_only=True,
|
|
721
|
-
**get_default_attrs(cls, "gross_profit_y5")
|
|
721
|
+
**get_default_attrs(cls, "gross_profit_y5"),
|
|
722
722
|
),
|
|
723
723
|
"reported_net_profit_y1": wb_serializer.FloatField(
|
|
724
724
|
display_mode=DisplayMode.SHORTENED,
|
|
@@ -727,7 +727,7 @@ class ForecastSerializerFieldMixin:
|
|
|
727
727
|
wb_serializer.decorator(decorator_type="text", position="left", value="{{currency_repr}}")
|
|
728
728
|
],
|
|
729
729
|
read_only=True,
|
|
730
|
-
**get_default_attrs(cls, "reported_net_profit_y1")
|
|
730
|
+
**get_default_attrs(cls, "reported_net_profit_y1"),
|
|
731
731
|
),
|
|
732
732
|
"reported_net_profit_y2": wb_serializer.FloatField(
|
|
733
733
|
display_mode=DisplayMode.SHORTENED,
|
|
@@ -736,7 +736,7 @@ class ForecastSerializerFieldMixin:
|
|
|
736
736
|
wb_serializer.decorator(decorator_type="text", position="left", value="{{currency_repr}}")
|
|
737
737
|
],
|
|
738
738
|
read_only=True,
|
|
739
|
-
**get_default_attrs(cls, "reported_net_profit_y2")
|
|
739
|
+
**get_default_attrs(cls, "reported_net_profit_y2"),
|
|
740
740
|
),
|
|
741
741
|
"reported_net_profit_y3": wb_serializer.FloatField(
|
|
742
742
|
display_mode=DisplayMode.SHORTENED,
|
|
@@ -745,7 +745,7 @@ class ForecastSerializerFieldMixin:
|
|
|
745
745
|
wb_serializer.decorator(decorator_type="text", position="left", value="{{currency_repr}}")
|
|
746
746
|
],
|
|
747
747
|
read_only=True,
|
|
748
|
-
**get_default_attrs(cls, "reported_net_profit_y3")
|
|
748
|
+
**get_default_attrs(cls, "reported_net_profit_y3"),
|
|
749
749
|
),
|
|
750
750
|
"reported_net_profit_y4": wb_serializer.FloatField(
|
|
751
751
|
display_mode=DisplayMode.SHORTENED,
|
|
@@ -754,7 +754,7 @@ class ForecastSerializerFieldMixin:
|
|
|
754
754
|
wb_serializer.decorator(decorator_type="text", position="left", value="{{currency_repr}}")
|
|
755
755
|
],
|
|
756
756
|
read_only=True,
|
|
757
|
-
**get_default_attrs(cls, "reported_net_profit_y4")
|
|
757
|
+
**get_default_attrs(cls, "reported_net_profit_y4"),
|
|
758
758
|
),
|
|
759
759
|
"reported_net_profit_y5": wb_serializer.FloatField(
|
|
760
760
|
display_mode=DisplayMode.SHORTENED,
|
|
@@ -763,7 +763,7 @@ class ForecastSerializerFieldMixin:
|
|
|
763
763
|
wb_serializer.decorator(decorator_type="text", position="left", value="{{currency_repr}}")
|
|
764
764
|
],
|
|
765
765
|
read_only=True,
|
|
766
|
-
**get_default_attrs(cls, "reported_net_profit_y5")
|
|
766
|
+
**get_default_attrs(cls, "reported_net_profit_y5"),
|
|
767
767
|
),
|
|
768
768
|
"adjusted_net_profit_y1": wb_serializer.FloatField(
|
|
769
769
|
display_mode=DisplayMode.SHORTENED,
|
|
@@ -772,7 +772,7 @@ class ForecastSerializerFieldMixin:
|
|
|
772
772
|
wb_serializer.decorator(decorator_type="text", position="left", value="{{currency_repr}}")
|
|
773
773
|
],
|
|
774
774
|
read_only=True,
|
|
775
|
-
**get_default_attrs(cls, "adjusted_net_profit_y1")
|
|
775
|
+
**get_default_attrs(cls, "adjusted_net_profit_y1"),
|
|
776
776
|
),
|
|
777
777
|
"adjusted_net_profit_y2": wb_serializer.FloatField(
|
|
778
778
|
display_mode=DisplayMode.SHORTENED,
|
|
@@ -781,7 +781,7 @@ class ForecastSerializerFieldMixin:
|
|
|
781
781
|
wb_serializer.decorator(decorator_type="text", position="left", value="{{currency_repr}}")
|
|
782
782
|
],
|
|
783
783
|
read_only=True,
|
|
784
|
-
**get_default_attrs(cls, "adjusted_net_profit_y2")
|
|
784
|
+
**get_default_attrs(cls, "adjusted_net_profit_y2"),
|
|
785
785
|
),
|
|
786
786
|
"adjusted_net_profit_y3": wb_serializer.FloatField(
|
|
787
787
|
display_mode=DisplayMode.SHORTENED,
|
|
@@ -790,7 +790,7 @@ class ForecastSerializerFieldMixin:
|
|
|
790
790
|
wb_serializer.decorator(decorator_type="text", position="left", value="{{currency_repr}}")
|
|
791
791
|
],
|
|
792
792
|
read_only=True,
|
|
793
|
-
**get_default_attrs(cls, "adjusted_net_profit_y3")
|
|
793
|
+
**get_default_attrs(cls, "adjusted_net_profit_y3"),
|
|
794
794
|
),
|
|
795
795
|
"adjusted_net_profit_y4": wb_serializer.FloatField(
|
|
796
796
|
display_mode=DisplayMode.SHORTENED,
|
|
@@ -799,7 +799,7 @@ class ForecastSerializerFieldMixin:
|
|
|
799
799
|
wb_serializer.decorator(decorator_type="text", position="left", value="{{currency_repr}}")
|
|
800
800
|
],
|
|
801
801
|
read_only=True,
|
|
802
|
-
**get_default_attrs(cls, "adjusted_net_profit_y4")
|
|
802
|
+
**get_default_attrs(cls, "adjusted_net_profit_y4"),
|
|
803
803
|
),
|
|
804
804
|
"adjusted_net_profit_y5": wb_serializer.FloatField(
|
|
805
805
|
display_mode=DisplayMode.SHORTENED,
|
|
@@ -808,7 +808,7 @@ class ForecastSerializerFieldMixin:
|
|
|
808
808
|
wb_serializer.decorator(decorator_type="text", position="left", value="{{currency_repr}}")
|
|
809
809
|
],
|
|
810
810
|
read_only=True,
|
|
811
|
-
**get_default_attrs(cls, "adjusted_net_profit_y5")
|
|
811
|
+
**get_default_attrs(cls, "adjusted_net_profit_y5"),
|
|
812
812
|
),
|
|
813
813
|
"net_profit_margin_y1": wb_serializer.FloatField(
|
|
814
814
|
percent=True, precision=3, read_only=True, **get_default_attrs(cls, "net_profit_margin_y1")
|
|
@@ -832,7 +832,7 @@ class ForecastSerializerFieldMixin:
|
|
|
832
832
|
wb_serializer.decorator(decorator_type="text", position="left", value="{{currency_repr}}")
|
|
833
833
|
],
|
|
834
834
|
read_only=True,
|
|
835
|
-
**get_default_attrs(cls, "ebitda_y1")
|
|
835
|
+
**get_default_attrs(cls, "ebitda_y1"),
|
|
836
836
|
),
|
|
837
837
|
"ebitda_y2": wb_serializer.FloatField(
|
|
838
838
|
display_mode=DisplayMode.SHORTENED,
|
|
@@ -841,7 +841,7 @@ class ForecastSerializerFieldMixin:
|
|
|
841
841
|
wb_serializer.decorator(decorator_type="text", position="left", value="{{currency_repr}}")
|
|
842
842
|
],
|
|
843
843
|
read_only=True,
|
|
844
|
-
**get_default_attrs(cls, "ebitda_y2")
|
|
844
|
+
**get_default_attrs(cls, "ebitda_y2"),
|
|
845
845
|
),
|
|
846
846
|
"ebitda_y3": wb_serializer.FloatField(
|
|
847
847
|
display_mode=DisplayMode.SHORTENED,
|
|
@@ -850,7 +850,7 @@ class ForecastSerializerFieldMixin:
|
|
|
850
850
|
wb_serializer.decorator(decorator_type="text", position="left", value="{{currency_repr}}")
|
|
851
851
|
],
|
|
852
852
|
read_only=True,
|
|
853
|
-
**get_default_attrs(cls, "ebitda_y3")
|
|
853
|
+
**get_default_attrs(cls, "ebitda_y3"),
|
|
854
854
|
),
|
|
855
855
|
"ebitda_y4": wb_serializer.FloatField(
|
|
856
856
|
display_mode=DisplayMode.SHORTENED,
|
|
@@ -859,7 +859,7 @@ class ForecastSerializerFieldMixin:
|
|
|
859
859
|
wb_serializer.decorator(decorator_type="text", position="left", value="{{currency_repr}}")
|
|
860
860
|
],
|
|
861
861
|
read_only=True,
|
|
862
|
-
**get_default_attrs(cls, "ebitda_y4")
|
|
862
|
+
**get_default_attrs(cls, "ebitda_y4"),
|
|
863
863
|
),
|
|
864
864
|
"ebitda_y5": wb_serializer.FloatField(
|
|
865
865
|
display_mode=DisplayMode.SHORTENED,
|
|
@@ -868,7 +868,7 @@ class ForecastSerializerFieldMixin:
|
|
|
868
868
|
wb_serializer.decorator(decorator_type="text", position="left", value="{{currency_repr}}")
|
|
869
869
|
],
|
|
870
870
|
read_only=True,
|
|
871
|
-
**get_default_attrs(cls, "ebitda_y5")
|
|
871
|
+
**get_default_attrs(cls, "ebitda_y5"),
|
|
872
872
|
),
|
|
873
873
|
"ebitda_margin_y1": wb_serializer.FloatField(
|
|
874
874
|
percent=True, precision=3, read_only=True, **get_default_attrs(cls, "ebitda_margin_y1")
|
|
@@ -892,7 +892,7 @@ class ForecastSerializerFieldMixin:
|
|
|
892
892
|
wb_serializer.decorator(decorator_type="text", position="left", value="{{currency_repr}}")
|
|
893
893
|
],
|
|
894
894
|
read_only=True,
|
|
895
|
-
**get_default_attrs(cls, "ebit_y1")
|
|
895
|
+
**get_default_attrs(cls, "ebit_y1"),
|
|
896
896
|
),
|
|
897
897
|
"ebit_y2": wb_serializer.FloatField(
|
|
898
898
|
display_mode=DisplayMode.SHORTENED,
|
|
@@ -901,7 +901,7 @@ class ForecastSerializerFieldMixin:
|
|
|
901
901
|
wb_serializer.decorator(decorator_type="text", position="left", value="{{currency_repr}}")
|
|
902
902
|
],
|
|
903
903
|
read_only=True,
|
|
904
|
-
**get_default_attrs(cls, "ebit_y2")
|
|
904
|
+
**get_default_attrs(cls, "ebit_y2"),
|
|
905
905
|
),
|
|
906
906
|
"ebit_y3": wb_serializer.FloatField(
|
|
907
907
|
display_mode=DisplayMode.SHORTENED,
|
|
@@ -910,7 +910,7 @@ class ForecastSerializerFieldMixin:
|
|
|
910
910
|
wb_serializer.decorator(decorator_type="text", position="left", value="{{currency_repr}}")
|
|
911
911
|
],
|
|
912
912
|
read_only=True,
|
|
913
|
-
**get_default_attrs(cls, "ebit_y3")
|
|
913
|
+
**get_default_attrs(cls, "ebit_y3"),
|
|
914
914
|
),
|
|
915
915
|
"ebit_y4": wb_serializer.FloatField(
|
|
916
916
|
display_mode=DisplayMode.SHORTENED,
|
|
@@ -919,7 +919,7 @@ class ForecastSerializerFieldMixin:
|
|
|
919
919
|
wb_serializer.decorator(decorator_type="text", position="left", value="{{currency_repr}}")
|
|
920
920
|
],
|
|
921
921
|
read_only=True,
|
|
922
|
-
**get_default_attrs(cls, "ebit_y4")
|
|
922
|
+
**get_default_attrs(cls, "ebit_y4"),
|
|
923
923
|
),
|
|
924
924
|
"ebit_y5": wb_serializer.FloatField(
|
|
925
925
|
display_mode=DisplayMode.SHORTENED,
|
|
@@ -928,7 +928,7 @@ class ForecastSerializerFieldMixin:
|
|
|
928
928
|
wb_serializer.decorator(decorator_type="text", position="left", value="{{currency_repr}}")
|
|
929
929
|
],
|
|
930
930
|
read_only=True,
|
|
931
|
-
**get_default_attrs(cls, "ebit_y5")
|
|
931
|
+
**get_default_attrs(cls, "ebit_y5"),
|
|
932
932
|
),
|
|
933
933
|
"ebit_margin_y1": wb_serializer.FloatField(
|
|
934
934
|
percent=True, precision=3, read_only=True, **get_default_attrs(cls, "ebit_margin_y1")
|
|
@@ -951,7 +951,7 @@ class ForecastSerializerFieldMixin:
|
|
|
951
951
|
wb_serializer.decorator(decorator_type="text", position="left", value="{{currency_repr}}")
|
|
952
952
|
],
|
|
953
953
|
read_only=True,
|
|
954
|
-
**get_default_attrs(cls, "eps_y1")
|
|
954
|
+
**get_default_attrs(cls, "eps_y1"),
|
|
955
955
|
),
|
|
956
956
|
"eps_y2": wb_serializer.FloatField(
|
|
957
957
|
precision=2,
|
|
@@ -959,7 +959,7 @@ class ForecastSerializerFieldMixin:
|
|
|
959
959
|
wb_serializer.decorator(decorator_type="text", position="left", value="{{currency_repr}}")
|
|
960
960
|
],
|
|
961
961
|
read_only=True,
|
|
962
|
-
**get_default_attrs(cls, "eps_y2")
|
|
962
|
+
**get_default_attrs(cls, "eps_y2"),
|
|
963
963
|
),
|
|
964
964
|
"eps_y3": wb_serializer.FloatField(
|
|
965
965
|
precision=2,
|
|
@@ -967,7 +967,7 @@ class ForecastSerializerFieldMixin:
|
|
|
967
967
|
wb_serializer.decorator(decorator_type="text", position="left", value="{{currency_repr}}")
|
|
968
968
|
],
|
|
969
969
|
read_only=True,
|
|
970
|
-
**get_default_attrs(cls, "eps_y3")
|
|
970
|
+
**get_default_attrs(cls, "eps_y3"),
|
|
971
971
|
),
|
|
972
972
|
"eps_y4": wb_serializer.FloatField(
|
|
973
973
|
precision=2,
|
|
@@ -975,7 +975,7 @@ class ForecastSerializerFieldMixin:
|
|
|
975
975
|
wb_serializer.decorator(decorator_type="text", position="left", value="{{currency_repr}}")
|
|
976
976
|
],
|
|
977
977
|
read_only=True,
|
|
978
|
-
**get_default_attrs(cls, "eps_y4")
|
|
978
|
+
**get_default_attrs(cls, "eps_y4"),
|
|
979
979
|
),
|
|
980
980
|
"eps_y5": wb_serializer.FloatField(
|
|
981
981
|
precision=2,
|
|
@@ -983,7 +983,7 @@ class ForecastSerializerFieldMixin:
|
|
|
983
983
|
wb_serializer.decorator(decorator_type="text", position="left", value="{{currency_repr}}")
|
|
984
984
|
],
|
|
985
985
|
read_only=True,
|
|
986
|
-
**get_default_attrs(cls, "eps_y5")
|
|
986
|
+
**get_default_attrs(cls, "eps_y5"),
|
|
987
987
|
),
|
|
988
988
|
"eps_growth_y1": wb_serializer.FloatField(
|
|
989
989
|
percent=True, precision=3, read_only=True, **get_default_attrs(cls, "eps_growth_y1")
|
|
@@ -1004,7 +1004,7 @@ class ForecastSerializerFieldMixin:
|
|
|
1004
1004
|
wb_serializer.decorator(decorator_type="text", position="left", value="{{currency_repr}}")
|
|
1005
1005
|
],
|
|
1006
1006
|
read_only=True,
|
|
1007
|
-
**get_default_attrs(cls, "eps_growth_y5")
|
|
1007
|
+
**get_default_attrs(cls, "eps_growth_y5"),
|
|
1008
1008
|
),
|
|
1009
1009
|
"net_debt_y1": wb_serializer.FloatField(
|
|
1010
1010
|
display_mode=DisplayMode.SHORTENED,
|
|
@@ -1013,7 +1013,7 @@ class ForecastSerializerFieldMixin:
|
|
|
1013
1013
|
wb_serializer.decorator(decorator_type="text", position="left", value="{{currency_repr}}")
|
|
1014
1014
|
],
|
|
1015
1015
|
read_only=True,
|
|
1016
|
-
**get_default_attrs(cls, "net_debt_y1")
|
|
1016
|
+
**get_default_attrs(cls, "net_debt_y1"),
|
|
1017
1017
|
),
|
|
1018
1018
|
"net_debt_y2": wb_serializer.FloatField(
|
|
1019
1019
|
display_mode=DisplayMode.SHORTENED,
|
|
@@ -1022,7 +1022,7 @@ class ForecastSerializerFieldMixin:
|
|
|
1022
1022
|
wb_serializer.decorator(decorator_type="text", position="left", value="{{currency_repr}}")
|
|
1023
1023
|
],
|
|
1024
1024
|
read_only=True,
|
|
1025
|
-
**get_default_attrs(cls, "net_debt_y2")
|
|
1025
|
+
**get_default_attrs(cls, "net_debt_y2"),
|
|
1026
1026
|
),
|
|
1027
1027
|
"net_debt_y3": wb_serializer.FloatField(
|
|
1028
1028
|
display_mode=DisplayMode.SHORTENED,
|
|
@@ -1031,7 +1031,7 @@ class ForecastSerializerFieldMixin:
|
|
|
1031
1031
|
wb_serializer.decorator(decorator_type="text", position="left", value="{{currency_repr}}")
|
|
1032
1032
|
],
|
|
1033
1033
|
read_only=True,
|
|
1034
|
-
**get_default_attrs(cls, "net_debt_y3")
|
|
1034
|
+
**get_default_attrs(cls, "net_debt_y3"),
|
|
1035
1035
|
),
|
|
1036
1036
|
"net_debt_y4": wb_serializer.FloatField(
|
|
1037
1037
|
display_mode=DisplayMode.SHORTENED,
|
|
@@ -1040,7 +1040,7 @@ class ForecastSerializerFieldMixin:
|
|
|
1040
1040
|
wb_serializer.decorator(decorator_type="text", position="left", value="{{currency_repr}}")
|
|
1041
1041
|
],
|
|
1042
1042
|
read_only=True,
|
|
1043
|
-
**get_default_attrs(cls, "net_debt_y4")
|
|
1043
|
+
**get_default_attrs(cls, "net_debt_y4"),
|
|
1044
1044
|
),
|
|
1045
1045
|
"net_debt_y5": wb_serializer.FloatField(
|
|
1046
1046
|
display_mode=DisplayMode.SHORTENED,
|
|
@@ -1049,7 +1049,7 @@ class ForecastSerializerFieldMixin:
|
|
|
1049
1049
|
wb_serializer.decorator(decorator_type="text", position="left", value="{{currency_repr}}")
|
|
1050
1050
|
],
|
|
1051
1051
|
read_only=True,
|
|
1052
|
-
**get_default_attrs(cls, "net_debt_y5")
|
|
1052
|
+
**get_default_attrs(cls, "net_debt_y5"),
|
|
1053
1053
|
),
|
|
1054
1054
|
"net_debt_to_ebitda_ratio_y1": wb_serializer.FloatField(
|
|
1055
1055
|
precision=1, read_only=True, **get_default_attrs(cls, "net_debt_to_ebitda_ratio_y1")
|
|
@@ -1073,7 +1073,7 @@ class ForecastSerializerFieldMixin:
|
|
|
1073
1073
|
wb_serializer.decorator(decorator_type="text", position="left", value="{{currency_repr}}")
|
|
1074
1074
|
],
|
|
1075
1075
|
read_only=True,
|
|
1076
|
-
**get_default_attrs(cls, "entreprise_value_y1")
|
|
1076
|
+
**get_default_attrs(cls, "entreprise_value_y1"),
|
|
1077
1077
|
),
|
|
1078
1078
|
"entreprise_value_y2": wb_serializer.FloatField(
|
|
1079
1079
|
display_mode=DisplayMode.SHORTENED,
|
|
@@ -1082,7 +1082,7 @@ class ForecastSerializerFieldMixin:
|
|
|
1082
1082
|
wb_serializer.decorator(decorator_type="text", position="left", value="{{currency_repr}}")
|
|
1083
1083
|
],
|
|
1084
1084
|
read_only=True,
|
|
1085
|
-
**get_default_attrs(cls, "entreprise_value_y2")
|
|
1085
|
+
**get_default_attrs(cls, "entreprise_value_y2"),
|
|
1086
1086
|
),
|
|
1087
1087
|
"entreprise_value_y3": wb_serializer.FloatField(
|
|
1088
1088
|
display_mode=DisplayMode.SHORTENED,
|
|
@@ -1091,7 +1091,7 @@ class ForecastSerializerFieldMixin:
|
|
|
1091
1091
|
wb_serializer.decorator(decorator_type="text", position="left", value="{{currency_repr}}")
|
|
1092
1092
|
],
|
|
1093
1093
|
read_only=True,
|
|
1094
|
-
**get_default_attrs(cls, "entreprise_value_y3")
|
|
1094
|
+
**get_default_attrs(cls, "entreprise_value_y3"),
|
|
1095
1095
|
),
|
|
1096
1096
|
"entreprise_value_y4": wb_serializer.FloatField(
|
|
1097
1097
|
display_mode=DisplayMode.SHORTENED,
|
|
@@ -1100,7 +1100,7 @@ class ForecastSerializerFieldMixin:
|
|
|
1100
1100
|
wb_serializer.decorator(decorator_type="text", position="left", value="{{currency_repr}}")
|
|
1101
1101
|
],
|
|
1102
1102
|
read_only=True,
|
|
1103
|
-
**get_default_attrs(cls, "entreprise_value_y4")
|
|
1103
|
+
**get_default_attrs(cls, "entreprise_value_y4"),
|
|
1104
1104
|
),
|
|
1105
1105
|
"entreprise_value_y5": wb_serializer.FloatField(
|
|
1106
1106
|
display_mode=DisplayMode.SHORTENED,
|
|
@@ -1109,7 +1109,7 @@ class ForecastSerializerFieldMixin:
|
|
|
1109
1109
|
wb_serializer.decorator(decorator_type="text", position="left", value="{{currency_repr}}")
|
|
1110
1110
|
],
|
|
1111
1111
|
read_only=True,
|
|
1112
|
-
**get_default_attrs(cls, "entreprise_value_y5")
|
|
1112
|
+
**get_default_attrs(cls, "entreprise_value_y5"),
|
|
1113
1113
|
),
|
|
1114
1114
|
"free_cash_flow_y1": wb_serializer.FloatField(
|
|
1115
1115
|
precision=2,
|
|
@@ -1117,7 +1117,7 @@ class ForecastSerializerFieldMixin:
|
|
|
1117
1117
|
wb_serializer.decorator(decorator_type="text", position="left", value="{{currency_repr}}")
|
|
1118
1118
|
],
|
|
1119
1119
|
read_only=True,
|
|
1120
|
-
**get_default_attrs(cls, "free_cash_flow_y1")
|
|
1120
|
+
**get_default_attrs(cls, "free_cash_flow_y1"),
|
|
1121
1121
|
),
|
|
1122
1122
|
"free_cash_flow_y2": wb_serializer.FloatField(
|
|
1123
1123
|
precision=2,
|
|
@@ -1125,7 +1125,7 @@ class ForecastSerializerFieldMixin:
|
|
|
1125
1125
|
wb_serializer.decorator(decorator_type="text", position="left", value="{{currency_repr}}")
|
|
1126
1126
|
],
|
|
1127
1127
|
read_only=True,
|
|
1128
|
-
**get_default_attrs(cls, "free_cash_flow_y2")
|
|
1128
|
+
**get_default_attrs(cls, "free_cash_flow_y2"),
|
|
1129
1129
|
),
|
|
1130
1130
|
"free_cash_flow_y3": wb_serializer.FloatField(
|
|
1131
1131
|
precision=2,
|
|
@@ -1133,7 +1133,7 @@ class ForecastSerializerFieldMixin:
|
|
|
1133
1133
|
wb_serializer.decorator(decorator_type="text", position="left", value="{{currency_repr}}")
|
|
1134
1134
|
],
|
|
1135
1135
|
read_only=True,
|
|
1136
|
-
**get_default_attrs(cls, "free_cash_flow_y3")
|
|
1136
|
+
**get_default_attrs(cls, "free_cash_flow_y3"),
|
|
1137
1137
|
),
|
|
1138
1138
|
"free_cash_flow_y4": wb_serializer.FloatField(
|
|
1139
1139
|
precision=2,
|
|
@@ -1141,7 +1141,7 @@ class ForecastSerializerFieldMixin:
|
|
|
1141
1141
|
wb_serializer.decorator(decorator_type="text", position="left", value="{{currency_repr}}")
|
|
1142
1142
|
],
|
|
1143
1143
|
read_only=True,
|
|
1144
|
-
**get_default_attrs(cls, "free_cash_flow_y4")
|
|
1144
|
+
**get_default_attrs(cls, "free_cash_flow_y4"),
|
|
1145
1145
|
),
|
|
1146
1146
|
"free_cash_flow_y5": wb_serializer.FloatField(
|
|
1147
1147
|
precision=2,
|
|
@@ -1149,7 +1149,7 @@ class ForecastSerializerFieldMixin:
|
|
|
1149
1149
|
wb_serializer.decorator(decorator_type="text", position="left", value="{{currency_repr}}")
|
|
1150
1150
|
],
|
|
1151
1151
|
read_only=True,
|
|
1152
|
-
**get_default_attrs(cls, "free_cash_flow_y5")
|
|
1152
|
+
**get_default_attrs(cls, "free_cash_flow_y5"),
|
|
1153
1153
|
),
|
|
1154
1154
|
"free_cash_flow_growth_y1": wb_serializer.FloatField(
|
|
1155
1155
|
percent=True, precision=3, read_only=True, **get_default_attrs(cls, "free_cash_flow_growth_y1")
|
|
@@ -1187,7 +1187,7 @@ class ForecastSerializerFieldMixin:
|
|
|
1187
1187
|
wb_serializer.decorator(decorator_type="text", position="left", value="{{currency_repr}}")
|
|
1188
1188
|
],
|
|
1189
1189
|
read_only=True,
|
|
1190
|
-
**get_default_attrs(cls, "expected_book_value_per_share_y1")
|
|
1190
|
+
**get_default_attrs(cls, "expected_book_value_per_share_y1"),
|
|
1191
1191
|
),
|
|
1192
1192
|
"expected_book_value_per_share_y2": wb_serializer.FloatField(
|
|
1193
1193
|
precision=2,
|
|
@@ -1195,7 +1195,7 @@ class ForecastSerializerFieldMixin:
|
|
|
1195
1195
|
wb_serializer.decorator(decorator_type="text", position="left", value="{{currency_repr}}")
|
|
1196
1196
|
],
|
|
1197
1197
|
read_only=True,
|
|
1198
|
-
**get_default_attrs(cls, "expected_book_value_per_share_y2")
|
|
1198
|
+
**get_default_attrs(cls, "expected_book_value_per_share_y2"),
|
|
1199
1199
|
),
|
|
1200
1200
|
"expected_book_value_per_share_y3": wb_serializer.FloatField(
|
|
1201
1201
|
precision=2,
|
|
@@ -1203,7 +1203,7 @@ class ForecastSerializerFieldMixin:
|
|
|
1203
1203
|
wb_serializer.decorator(decorator_type="text", position="left", value="{{currency_repr}}")
|
|
1204
1204
|
],
|
|
1205
1205
|
read_only=True,
|
|
1206
|
-
**get_default_attrs(cls, "expected_book_value_per_share_y3")
|
|
1206
|
+
**get_default_attrs(cls, "expected_book_value_per_share_y3"),
|
|
1207
1207
|
),
|
|
1208
1208
|
"expected_book_value_per_share_y4": wb_serializer.FloatField(
|
|
1209
1209
|
precision=2,
|
|
@@ -1211,7 +1211,7 @@ class ForecastSerializerFieldMixin:
|
|
|
1211
1211
|
wb_serializer.decorator(decorator_type="text", position="left", value="{{currency_repr}}")
|
|
1212
1212
|
],
|
|
1213
1213
|
read_only=True,
|
|
1214
|
-
**get_default_attrs(cls, "expected_book_value_per_share_y4")
|
|
1214
|
+
**get_default_attrs(cls, "expected_book_value_per_share_y4"),
|
|
1215
1215
|
),
|
|
1216
1216
|
"expected_book_value_per_share_y5": wb_serializer.FloatField(
|
|
1217
1217
|
precision=2,
|
|
@@ -1219,7 +1219,7 @@ class ForecastSerializerFieldMixin:
|
|
|
1219
1219
|
wb_serializer.decorator(decorator_type="text", position="left", value="{{currency_repr}}")
|
|
1220
1220
|
],
|
|
1221
1221
|
read_only=True,
|
|
1222
|
-
**get_default_attrs(cls, "expected_book_value_per_share_y5")
|
|
1222
|
+
**get_default_attrs(cls, "expected_book_value_per_share_y5"),
|
|
1223
1223
|
),
|
|
1224
1224
|
"capital_expenditures_y1": wb_serializer.FloatField(
|
|
1225
1225
|
display_mode=DisplayMode.SHORTENED,
|
|
@@ -1228,7 +1228,7 @@ class ForecastSerializerFieldMixin:
|
|
|
1228
1228
|
wb_serializer.decorator(decorator_type="text", position="left", value="{{currency_repr}}")
|
|
1229
1229
|
],
|
|
1230
1230
|
read_only=True,
|
|
1231
|
-
**get_default_attrs(cls, "capital_expenditures_y1")
|
|
1231
|
+
**get_default_attrs(cls, "capital_expenditures_y1"),
|
|
1232
1232
|
),
|
|
1233
1233
|
"capital_expenditures_y2": wb_serializer.FloatField(
|
|
1234
1234
|
display_mode=DisplayMode.SHORTENED,
|
|
@@ -1237,7 +1237,7 @@ class ForecastSerializerFieldMixin:
|
|
|
1237
1237
|
wb_serializer.decorator(decorator_type="text", position="left", value="{{currency_repr}}")
|
|
1238
1238
|
],
|
|
1239
1239
|
read_only=True,
|
|
1240
|
-
**get_default_attrs(cls, "capital_expenditures_y2")
|
|
1240
|
+
**get_default_attrs(cls, "capital_expenditures_y2"),
|
|
1241
1241
|
),
|
|
1242
1242
|
"capital_expenditures_y3": wb_serializer.FloatField(
|
|
1243
1243
|
display_mode=DisplayMode.SHORTENED,
|
|
@@ -1246,7 +1246,7 @@ class ForecastSerializerFieldMixin:
|
|
|
1246
1246
|
wb_serializer.decorator(decorator_type="text", position="left", value="{{currency_repr}}")
|
|
1247
1247
|
],
|
|
1248
1248
|
read_only=True,
|
|
1249
|
-
**get_default_attrs(cls, "capital_expenditures_y3")
|
|
1249
|
+
**get_default_attrs(cls, "capital_expenditures_y3"),
|
|
1250
1250
|
),
|
|
1251
1251
|
"capital_expenditures_y4": wb_serializer.FloatField(
|
|
1252
1252
|
display_mode=DisplayMode.SHORTENED,
|
|
@@ -1255,7 +1255,7 @@ class ForecastSerializerFieldMixin:
|
|
|
1255
1255
|
wb_serializer.decorator(decorator_type="text", position="left", value="{{currency_repr}}")
|
|
1256
1256
|
],
|
|
1257
1257
|
read_only=True,
|
|
1258
|
-
**get_default_attrs(cls, "capital_expenditures_y4")
|
|
1258
|
+
**get_default_attrs(cls, "capital_expenditures_y4"),
|
|
1259
1259
|
),
|
|
1260
1260
|
"capital_expenditures_y5": wb_serializer.FloatField(
|
|
1261
1261
|
display_mode=DisplayMode.SHORTENED,
|
|
@@ -1264,7 +1264,7 @@ class ForecastSerializerFieldMixin:
|
|
|
1264
1264
|
wb_serializer.decorator(decorator_type="text", position="left", value="{{currency_repr}}")
|
|
1265
1265
|
],
|
|
1266
1266
|
read_only=True,
|
|
1267
|
-
**get_default_attrs(cls, "capital_expenditures_y5")
|
|
1267
|
+
**get_default_attrs(cls, "capital_expenditures_y5"),
|
|
1268
1268
|
),
|
|
1269
1269
|
"capex_to_sales_y1": wb_serializer.FloatField(
|
|
1270
1270
|
percent=True, precision=3, read_only=True, **get_default_attrs(cls, "capex_to_sales_y1")
|
|
@@ -1371,7 +1371,7 @@ class InstrumentPriceSerializerFieldMixin:
|
|
|
1371
1371
|
display_mode=DisplayMode.SHORTENED,
|
|
1372
1372
|
precision=2,
|
|
1373
1373
|
read_only=True,
|
|
1374
|
-
**get_default_attrs(cls, "outstanding_shares")
|
|
1374
|
+
**get_default_attrs(cls, "outstanding_shares"),
|
|
1375
1375
|
),
|
|
1376
1376
|
"outstanding_shares_consolidated": wb_serializer.FloatField(
|
|
1377
1377
|
read_only=True, **get_default_attrs(cls, "outstanding_shares_consolidated")
|