wbportfolio 2.2.4__py2.py3-none-any.whl → 2.2.6__py2.py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of wbportfolio might be problematic. Click here for more details.

Files changed (24) hide show
  1. wbportfolio/fixtures/product_factsheets.yaml +1 -0
  2. wbportfolio/fixtures/wbportfolio.yaml.gz +0 -0
  3. wbportfolio/fixtures/wbrisk_management.yaml.gz +0 -0
  4. wbportfolio/import_export/backends/refinitiv/adjustment.py +40 -0
  5. wbportfolio/jinja2/wbportfolio/sql/aum_nnm.sql +119 -0
  6. wbportfolio/kpi_handlers/nnm.py +163 -0
  7. wbportfolio/models/llm/wbcrm/analyze_relationship.py +58 -0
  8. wbportfolio/static/wbportfolio/css/macro_review.css +17 -0
  9. wbportfolio/static/wbportfolio/markdown/documentation/account_holding_reconciliation.md +16 -0
  10. wbportfolio/static/wbportfolio/markdown/documentation/aggregate_asset_position_liquidity.md +25 -0
  11. wbportfolio/static/wbportfolio/markdown/documentation/company.md +78 -0
  12. wbportfolio/static/wbportfolio/markdown/documentation/earnings_instrument.md +14 -0
  13. wbportfolio/static/wbportfolio/markdown/documentation/financial_analysis_instrument_ratios.md +94 -0
  14. wbportfolio/static/wbportfolio/markdown/documentation/financial_statistics.md +44 -0
  15. wbportfolio/static/wbportfolio/markdown/documentation/person.md +70 -0
  16. wbportfolio/templates/portfolio/email/customer_report.html +6 -0
  17. wbportfolio/templates/portfolio/email/customer_trade_notification.html +26 -0
  18. wbportfolio/templates/portfolio/email/email_base_template.html +420 -0
  19. wbportfolio/templates/portfolio/email/rebalancing_report.html +34 -0
  20. wbportfolio/templates/portfolio/macro/macro_review.html +88 -0
  21. {wbportfolio-2.2.4.dist-info → wbportfolio-2.2.6.dist-info}/METADATA +3 -2
  22. {wbportfolio-2.2.4.dist-info → wbportfolio-2.2.6.dist-info}/RECORD +24 -4
  23. {wbportfolio-2.2.4.dist-info → wbportfolio-2.2.6.dist-info}/WHEEL +1 -1
  24. {wbportfolio-2.2.4.dist-info → wbportfolio-2.2.6.dist-info}/licenses/LICENSE +0 -0
@@ -0,0 +1,44 @@
1
+ # Financial Statistics
2
+
3
+ Here is a list of different financial statistics that can help to evaluate performance and risk of an instrument against
4
+ his benchmark.
5
+
6
+ ### Meaning:
7
+ 1. Mean Return: it is the average of all the returns during the period.
8
+ 2. Volatility: it is a statistical measure of the dispersion of returns.
9
+ 3. Maximum Drawdown: a drawdown is the return between the current price and the last highest price. If the current price
10
+ is the last highest price, the drawdown is 0. Therefore, drawdowns are only negative values. The maximum drawdown
11
+ (MDD) is the biggest fall in terms of return.
12
+ 4. Longest Drawdown Period: the longest number of days to recover his last highest price.
13
+ 5. Last cumulative return: a cumulative return on an investment is the aggregate amount that the investment has gained
14
+ or lost over time, independent of the amount of time involved. The last cumulative return is the return between the
15
+ first price and last price over the period.
16
+ 6. Value at Risk: the Value at Risk (VaR) is a downside risk measure. The idea is to keep the worst returns which are
17
+ lower than a specific return based on a quantile (default value is 5%). Once we have these worst returns, the VaR is
18
+ the highest one (so the "least bad"). The quantile number for the VaR is called alpha in finance. This process is the
19
+ historical VaR approach.
20
+ 7. Conditional Value at Risk: The CVaR is a downside risk measure. It is the same process as the VaR, however it is the
21
+ mean of the worst returns. The CVaR is an absolute value (always positive).
22
+ 8. Skewness: in statistics, skewness is the degree of asymmetry observed in a probability function. For instance,
23
+ negative skewness occurs when the returns to the left of (less than) the mean are fewer but farther from it than
24
+ returns to the right of (greater than) the mean.
25
+ 9. Excess Kurtosis: Like Skewness, Kurtosis is a statistical measure that is used to describe distribution. Whereas
26
+ skewness differentiates extreme values in one versus the other tail, kurtosis measures extreme values in either tail.
27
+ For instance, a higher kurtosis means that there are more extreme returns (positive and negative).
28
+ 10. Compound Annual Growth Rate: The CAGR is a rate of return that would be required for an investment to grow from its
29
+ beginning balance to its ending balance, assuming the profits were reinvested at the end of each year of the
30
+ investment’s life span.
31
+ 11. Sortino Ratio: it is a downside risk ratio. In finance, the most important risk is not volatility, but rather the
32
+ risk of not achieving the return in relation to an investment goal. Here it is not the same formula as investopedia,
33
+ so it is not the Sortino Ratio as everybody know. Here we use the target level instead of the risk free rate (it is
34
+ mostly the same thing). To calculate the Sortino Ratio, first we need only the returns that are below the target
35
+ level (default value is 0). Then, we take those returns, square them, sum them, divide by the total number of
36
+ returns (not only those who are below the target level) and finally square root them. This is what we call the
37
+ « below-target semi-deviation ». Calculate the annualized return and also annualized the below-target
38
+ semi-deviation. Take the annualized return, soustract by the target level and finally divide by the annualized
39
+ below-target semi-deviation.
40
+ 12. Adjusted Sortino Ratio: it is just the Sortino Ratio divided by square root of 2.
41
+ 13. Calmar Ratio: it is the CAGR divided by the MDD.
42
+ 14. Sterling Ratio: it is the annualized returns soustracted by the risk free rate, divided by the MDD.
43
+ 15. Burke Ratio: it is the annualized returns soustracted by the risk free rate, divided by the square root of the sum
44
+ of the square of the drawdowns.
@@ -0,0 +1,70 @@
1
+ # Persons
2
+ A list of every person saved in the database.
3
+
4
+ ## Columns:
5
+ Each column title has three lines on the right if you hover over it. Click on them to show options for that column. The second tab of the options menu will allow you to filter the column, the third to completely hide entire columns. Click on anywhere else on the column to order it, cycling between ascending, descending and no ordering. Hold shift while clicking to order multiple columns with individual weights.
6
+
7
+ ### Name:
8
+ The first and last name of the person.
9
+
10
+ ### Primary Employer:
11
+ The primary employer of the person.
12
+
13
+ ### Status:
14
+ The primary employer's status. Company statuses can be added, edited and deleted by managers under CRM > Administration > Customer Status.
15
+
16
+ ### Position:
17
+ The position of the person within its primary employer. Positions can be added, edited and deleted by managers under CRM > Administration > Company Positions.
18
+
19
+ ### City:
20
+ The city of the person's primary address. Hover over the name to display the full address.
21
+
22
+ ### Primary Phone Number:
23
+ The person's primary phone number.
24
+
25
+ ### Tier:
26
+ The person's primary employer's tier. Tiers range from 1 to 5 and are automatically computed.
27
+
28
+ ### AUM Invested:
29
+ The person's primary employer's assets under management managed by the main company.
30
+
31
+ ### AUM:
32
+ Total assets under management for the person's primary employer.
33
+
34
+ ### Potential:
35
+ The potential reflects how much potential a person's primary employer (regardless of whether this employer is a client or propective) has. Formula: AUM * (Asset Allocation * Asset Allocation Max Investment) - Invested AUM. The field is populated automatically.
36
+
37
+ ### Primary Relationship Manager:
38
+ The primary relationship manager of this person. Hover over the name to display further information about the person.
39
+
40
+ ### Last Activity:
41
+ The name and end date of the person's last activity. Hover over it to display further information about the activity. Column can also be ordered by end date of the activity.
42
+
43
+ ### Activity Heat:
44
+ A visual representation of the person's activeness. The data representation ranges from 0 to 1 which needs to be kept in mind to be able to apply a proper filter to the column.
45
+
46
+ ## Filters:
47
+
48
+ ### Specializations:
49
+ Filter persons by their specializations.
50
+
51
+ ### No Activity:
52
+ Filter persons with no activity for x amount of time.
53
+
54
+ ### Has User Account:
55
+ Filter persons by if they have a user account on the workbench.
56
+
57
+ ### Email:
58
+ Filter persons by their email address.
59
+
60
+ ## Search Field:
61
+ Typing in the search field allows to filter the persons by name.
62
+
63
+ ## Buttons:
64
+ Each row can be right-clicked to reveal two buttons at the end of it.
65
+
66
+ ### Activities:
67
+ Displays all activities for the row's person.
68
+
69
+ ### Relationship Managers:
70
+ Displays all relationship managers of the row's person.
@@ -0,0 +1,6 @@
1
+ {% extends "notifications/email_template.html" %}
2
+
3
+ {% block body %}
4
+ <p style="font-size: 20px; color: #313952; text-align: center;"><strong>Dear {{profile.first_name}} {{profile.last_name}}</strong></p>
5
+ <p style="text-align: center;">Attached you find the requested Excel-Report for {{customer.search_name}}</p>
6
+ {% endblock %}
@@ -0,0 +1,26 @@
1
+ {% extends "wbcore/email_base_template.html" %}
2
+
3
+ {% block body %}
4
+ <p>
5
+ <strong>A Customer Trade was saved that might be related to your managed sub accounts:</strong><br />
6
+ </p>
7
+ <p style="text-align: left; text-decoration: underline;">Claim info:</p>
8
+ <p style="text-align: left;">
9
+ <ul style="text-align: left;">
10
+ <li><b>Bank:</b> {{model.bank}}</li>
11
+ <li><b>Product:</b> {{model.product.title}}</li>
12
+ <li><b>Trade Date:</b> {{model.transaction_date}}</li>
13
+ <li><b>Shares:</b> {{model.shares}}</li>
14
+ <li><b>Price:</b> {{model.price}}</li>
15
+ {% if notification.external_identifier %}
16
+ <li><b>External Identifier:</b> {{model.external_id}}</li>
17
+ {% endif %}
18
+ {% if notification.message %}
19
+ <li><b>Related SubAccounts:</b> {{notification.message}}</li>
20
+ {% endif %}
21
+ {% if model.comment%}
22
+ <li><b>Comment:</b> <i>{{model.comment|safe}}</i></li>
23
+ {% endif %}
24
+ </ul>
25
+ </p>
26
+ {% endblock %}
@@ -0,0 +1,420 @@
1
+ <!DOCTYPE html>
2
+ <html lang="en" xmlns="http://www.w3.org/1999/xhtml" xmlns:v="urn:schemas-microsoft-com:vml"
3
+ xmlns:o="urn:schemas-microsoft-com:office:office">
4
+
5
+ <head>
6
+ <meta charset="utf-8"> <!-- utf-8 works for most cases -->
7
+ <meta name="viewport" content="width=device-width"> <!-- Forcing initial-scale shouldn't be necessary -->
8
+ <meta http-equiv="X-UA-Compatible" content="IE=edge"> <!-- Use the latest (edge) version of IE rendering engine -->
9
+ <meta name="x-apple-disable-message-reformatting"> <!-- Disable auto-scale in iOS 10 Mail entirely -->
10
+ <meta http-equiv="Content-Type" content="text/html charset=UTF-8" />
11
+ <title>{{ email_title }}</title> <!-- The title tag shows in email notifications, like Android 4.4. -->
12
+
13
+
14
+ <style type="text/css">
15
+ table {
16
+ border-collapse: separate;
17
+ }
18
+
19
+ a,
20
+ a:link,
21
+ a:visited {
22
+ text-decoration: none;
23
+ color: #00788a;
24
+ }
25
+
26
+ a:hover {
27
+ text-decoration: underline;
28
+ }
29
+
30
+ h2,
31
+ h2 a,
32
+ h2 a:visited,
33
+ h3,
34
+ h3 a,
35
+ h3 a:visited,
36
+ h4,
37
+ h5,
38
+ h6,
39
+ .t_cht {
40
+ color: #000 !important;
41
+ }
42
+
43
+ .ExternalClass p,
44
+ .ExternalClass span,
45
+ .ExternalClass font,
46
+ .ExternalClass td {
47
+ line-height: 100%;
48
+ }
49
+
50
+ .ExternalClass {
51
+ width: 100%;
52
+ }
53
+ </style>
54
+ </style>
55
+ <!-- CSS Reset : BEGIN -->
56
+ <style>
57
+ /* What it does: Remove spaces around the email design added by some email clients. */
58
+ /* Beware: It can remove the padding / margin and add a background color to the compose a reply window. */
59
+ html,
60
+ body {
61
+ margin: 0 auto !important;
62
+ padding: 0 !important;
63
+ height: 100% !important;
64
+ width: 100% !important;
65
+ }
66
+
67
+ /* What it does: Stops email clients resizing small text. */
68
+ * {
69
+ -ms-text-size-adjust: 100%;
70
+ -webkit-text-size-adjust: 100%;
71
+ }
72
+
73
+ /* What it does: Centers email on Android 4.4 */
74
+ div[style*="margin: 16px 0"] {
75
+ margin: 0 !important;
76
+ }
77
+
78
+ /* What it does: Stops Outlook from adding extra spacing to tables. */
79
+ table,
80
+ td {
81
+ mso-table-lspace: 0pt !important;
82
+ mso-table-rspace: 0pt !important;
83
+ }
84
+
85
+ /* What it does: Fixes webkit padding issue. Fix for Yahoo mail table alignment bug. Applies table-layout to the first 2 tables then removes for anything nested deeper. */
86
+ table {
87
+ border-spacing: 0 !important;
88
+ border-collapse: collapse !important;
89
+ table-layout: fixed !important;
90
+ margin: 0 auto !important;
91
+ }
92
+
93
+ table table table {
94
+ table-layout: auto;
95
+ }
96
+
97
+ /* What it does: Uses a better rendering method when resizing images in IE. */
98
+ img {
99
+ -ms-interpolation-mode: bicubic;
100
+ }
101
+
102
+ /* What it does: A work-around for email clients meddling in triggered links. */
103
+ *[x-apple-data-detectors],
104
+ /* iOS */
105
+ .x-gmail-data-detectors,
106
+ /* Gmail */
107
+ .x-gmail-data-detectors *,
108
+ .aBn {
109
+ border-bottom: 0 !important;
110
+ cursor: default !important;
111
+ color: inherit !important;
112
+ text-decoration: none !important;
113
+ font-size: inherit !important;
114
+ font-family: inherit !important;
115
+ font-weight: inherit !important;
116
+ line-height: inherit !important;
117
+ }
118
+
119
+ /* What it does: Prevents Gmail from displaying an download button on large, non-linked images. */
120
+ .a6S {
121
+ display: none !important;
122
+ opacity: 0.01 !important;
123
+ }
124
+
125
+ /* If the above doesn't work, add a .g-img class to any image in question. */
126
+ img.g-img+div {
127
+ display: none !important;
128
+ }
129
+
130
+ /* What it does: Prevents underlining the button text in Windows 10 */
131
+ .button-link {
132
+ text-decoration: none !important;
133
+ }
134
+
135
+ /* What it does: Removes right gutter in Gmail iOS app: https://github.com/TedGoas/Cerberus/issues/89 */
136
+ /* Create one of these media queries for each additional viewport size you'd like to fix */
137
+
138
+ /* iPhone 4, 4S, 5, 5S, 5C, and 5SE */
139
+ @media only screen and (min-device-width: 320px) and (max-device-width: 374px) {
140
+ .email-container {
141
+ min-width: 320px !important;
142
+ }
143
+ }
144
+
145
+ /* iPhone 6, 6S, 7, 8, and X */
146
+ @media only screen and (min-device-width: 375px) and (max-device-width: 413px) {
147
+ .email-container {
148
+ min-width: 375px !important;
149
+ }
150
+ }
151
+
152
+ /* iPhone 6+, 7+, and 8+ */
153
+ @media only screen and (min-device-width: 414px) {
154
+ .email-container {
155
+ min-width: 414px !important;
156
+ }
157
+ }
158
+
159
+ /**
160
+ * Google webfonts. Recommended to include the .woff version for cross-client compatibility.
161
+ */
162
+ @media screen {
163
+ @font-face {
164
+ font-family: 'Source Sans Pro';
165
+ font-style: normal;
166
+ font-weight: 400;
167
+ src: local('Source Sans Pro Regular'), local('SourceSansPro-Regular'), url(https://fonts.gstatic.com/s/sourcesanspro/v10/ODelI1aHBYDBqgeIAH2zlBM0YzuT7MdOe03otPbuUS0.woff) format('woff');
168
+ }
169
+
170
+ @font-face {
171
+ font-family: 'Source Sans Pro';
172
+ font-style: normal;
173
+ font-weight: 700;
174
+ src: local('Source Sans Pro Bold'), local('SourceSansPro-Bold'), url(https://fonts.gstatic.com/s/sourcesanspro/v10/toadOcfmlt9b38dHJxOBGFkQc6VGVFSmCnC_l7QZG60.woff) format('woff');
175
+ }
176
+ }
177
+
178
+ /**
179
+ * Avoid browser level font resizing.
180
+ * 1. Windows Mobile
181
+ * 2. iOS / OSX
182
+ */
183
+ body,
184
+ table,
185
+ td,
186
+ a {
187
+ -ms-text-size-adjust: 100%;
188
+ /* 1 */
189
+ -webkit-text-size-adjust: 100%;
190
+ /* 2 */
191
+ }
192
+
193
+ /**
194
+ * Remove extra space added to tables and cells in Outlook.
195
+ */
196
+ table,
197
+ td {
198
+ mso-table-rspace: 0pt;
199
+ mso-table-lspace: 0pt;
200
+ }
201
+
202
+ /**
203
+ * Better fluid images in Internet Explorer.
204
+ */
205
+ img {
206
+ -ms-interpolation-mode: bicubic;
207
+ }
208
+
209
+ /**
210
+ * Remove blue links for iOS devices.
211
+ */
212
+ a[x-apple-data-detectors] {
213
+ font-family: inherit !important;
214
+ font-size: inherit !important;
215
+ font-weight: inherit !important;
216
+ line-height: inherit !important;
217
+ color: inherit !important;
218
+ text-decoration: none !important;
219
+ }
220
+
221
+ /**
222
+ * Fix centering issues in Android 4.4.
223
+ */
224
+ div[style*="margin: 16px 0;"] {
225
+ margin: 0 !important;
226
+ }
227
+
228
+ body {
229
+ width: 100% !important;
230
+ height: 100% !important;
231
+ padding: 0 !important;
232
+ margin: 0 !important;
233
+ }
234
+
235
+ /**
236
+ * Collapse table borders to avoid space between cells.
237
+ */
238
+ table {
239
+ border-collapse: collapse !important;
240
+ }
241
+
242
+ a {
243
+ color: #1a82e2;
244
+ }
245
+
246
+ img {
247
+ height: auto;
248
+ line-height: 100%;
249
+ text-decoration: none;
250
+ border: 0;
251
+ outline: none;
252
+ }
253
+ </style>
254
+ <!-- CSS Reset : END -->
255
+
256
+ <style>
257
+ .fluid {
258
+ width: 100%;
259
+ }
260
+
261
+ .fixed {
262
+ width: 800px;
263
+ }
264
+
265
+ #body-table {
266
+ width: 100%;
267
+ margin: auto;
268
+ border-collapse: collapse;
269
+ table-layout: fixed;
270
+ }
271
+
272
+ #body-table #white-row> .white-col{
273
+ height: 25px;
274
+ background-color: #eaf2ff;
275
+ }
276
+
277
+ #body-table #first-row>.spacer-left,
278
+ #body-table #first-row>.spacer-right {
279
+ height: 44px;
280
+ background-color: white;
281
+ }
282
+
283
+ #body-table #title-row>.spacer-left,
284
+ #body-table #title-row>.spacer-right {
285
+ height: 50px;
286
+ background-color: #eaf2ff;
287
+ }
288
+
289
+ #body-table #title-logo {
290
+ position: relative;
291
+ height: 90px;
292
+ vertical-align: middle;
293
+ text-align: center;
294
+ }
295
+
296
+ #body-table #content-row>.spacer-left,
297
+ #body-table #content-row>.spacer-right {
298
+ background-color: #eaf2ff;
299
+ }
300
+
301
+ #body-table #content-row>#body-content {
302
+ position: relative;
303
+ background-color: #fff;
304
+ padding: 30px;
305
+ }
306
+
307
+ #body-table #spacer-row>.spacer-left,
308
+ #body-table #spacer-row>.spacer-middle,
309
+ #body-table #spacer-row>.spacer-right {
310
+ height: 50px;
311
+ background-color: #eaf2ff;
312
+ }
313
+
314
+ #body-table #footer-row {
315
+ border-top: 1px solid #ccdff3;
316
+ }
317
+
318
+ #body-table #footer-row>.spacer-left,
319
+ #body-table #footer-row>#footer-content,
320
+ #body-table #footer-row>.spacer-right {
321
+ background-color: #eaf2ff;
322
+ padding-top: 15px;
323
+ }
324
+
325
+ #body-table #footer-row>#footer-content {
326
+ padding-bottom: 40px !important;
327
+ }
328
+
329
+ #footer-content>p {
330
+ font-size: 10px !important;
331
+ color: #a4b3cb !important;
332
+ margin-top: 0 !important;
333
+ }
334
+ </style>
335
+
336
+ </head>
337
+
338
+ <body width="100%" bgcolor="white" style="margin: 0; mso-line-height-rule: exactly;text-align: center;">
339
+
340
+
341
+ <!-- Visually Hidden Preheader Text : BEGIN -->
342
+ <div
343
+ style="display: none; font-size: 1px; line-height: 1px; max-height: 0px; max-width: 0px; opacity: 0; overflow: hidden; mso-hide: all; font-family: sans-serif;">
344
+ {% block email_hidden_header %}
345
+ {% endblock %}
346
+ </div>
347
+ <!-- Visually Hidden Preheader Text : END -->
348
+
349
+ <!-- Email Body : BEGIN -->
350
+ <table id="body-table" role="presentation" cellspacing="0" cellpadding="0" border="0" align="center"
351
+ class="email-container">
352
+ <colgroup>
353
+ <col class="fluid">
354
+ <col class="fixed">
355
+ <col class="fluid">
356
+ </colgroup>
357
+ <tr id="white-row">
358
+ <td class="white-col"></td>
359
+ <td class="white-col"></td>
360
+ <td class="white-col"></td>
361
+ </tr>
362
+ <tr id="first-row">
363
+ <td class="spacer-left"></td>
364
+ <td rowspan="2" id="title-logo" style="background-color: #3c4859;">
365
+ <img width="800px" alt="Atonra logo" border="0"
366
+ style="width: 800px; max-width: 800px; position: absolute; top: 0; left: 0;"
367
+ src="https://atonra.fra1.digitaloceanspaces.com/public/atonra_banderol.png" alt="Logo">
368
+ </td>
369
+
370
+ <td class="spacer-right"></td>
371
+ </tr>
372
+ <tr id="title-row">
373
+ <td class="spacer-left"></td>
374
+ <td class="spacer-right"></td>
375
+ </tr>
376
+ <tr id="content-row">
377
+ <td class="spacer-left"></td>
378
+ <td id="body-content">
379
+ {% block body %}
380
+ <p style="margin: 0;" style="font-size: 16px; color: #3c4859; text-align: center;"><b>{{salutation}}</b></p>
381
+ {{content|safe}}
382
+ {% endblock %}
383
+ </td>
384
+ <td class="spacer-right"></td>
385
+ </tr>
386
+ <tr id="spacer-row">
387
+ <td class="spacer-left"></td>
388
+ <td class="spacer-middle"></td>
389
+ <td class="spacer-right"></td>
390
+ </tr>
391
+ <tr id="footer-row" style="background-color: #ccdff3; border-top: 1px solid #ccdff3;">
392
+ <td class="spacer-left"></td>
393
+ <td id="footer-content">
394
+ <p style="margin: 0;" style="text-align: center">
395
+ <b>AtonRâ Partners SA</b><br />
396
+ 7, rue de la Croix d’Or, 1204 Geneva, Switzerland<br />
397
+ T +41 22 906 16 16<br />
398
+ <a href="https://www.atonra.ch" target="">Website</a>
399
+ </p>
400
+ <p style="margin: 0;" style="text-align: center"><b>About AtonRâ Partners:</b> AtonRâ Partners is an asset management
401
+ company, founded in
402
+ 2004 with head office in Geneva, incorporated under Swiss law, duly approved by the Swiss Financial
403
+ Market Supervisory Authority (FINMA) under the Swiss Collective Investment Schemes Act. AtonRâ
404
+ Partners is a conviction-driven asset manager combining industrial and scientific research with
405
+ financial analysis. AtonRâ Partners focuses on long-term trends powerful enough to be turned into
406
+ thematic equity portfolios.</p>
407
+ {% if unsubscribe %}
408
+ <p style="margin: 0;" style="text-align: center">If you receive this email because you are subscribed to our mailing list:
409
+ Please feel free to {{unsubscribe|safe}} </p>
410
+ {% endif %}
411
+ </td>
412
+ <td class="spacer-right"></td>
413
+ </tr>
414
+
415
+ </table>
416
+ <!-- Email Footer : END -->
417
+
418
+ </body>
419
+
420
+ </html>
@@ -0,0 +1,34 @@
1
+ {% load portfolio_tags %}
2
+ {% load mathfilters %}
3
+ <style>
4
+ .fixed {
5
+ width: 700px;
6
+ }
7
+ </style>
8
+ <p>Please find bellow the rebalancing summary that the system automatically detected</p>
9
+ </br>
10
+ <p>We detected {{map_rebalancing|length}} rebalanced equity that day.</p>
11
+ {% for equity_repr, report_dict in map_rebalancing.items %}
12
+ <p><b>{{ equity_repr }}</b></p>
13
+ <table style="width: 100%; border-collapse: collapse; table-layout: fixed;">
14
+ <colgroup>
15
+ <col span="1" style="width: 85%;text-align: left;">
16
+ <col span="1" style="width: 15%;">
17
+ </colgroup>
18
+ <tr>
19
+ <th style="text-align: left;">Product</th>
20
+ <th>Weight Δ</th>
21
+ </tr>
22
+ {% for product_repr, value in report_dict.items %}
23
+ <tr>
24
+ {% if value|abs <= rebalancing_threshold %}
25
+ <td style="background-color: rgb(241, 72, 50)">{{ product_repr }}</td>
26
+ <td style="background-color: rgb(241, 72, 50)">{{ value|percent_filter:3 }}</td>
27
+ {% else %}
28
+ <td style="background-color: rgb(110, 207, 20)">{{ product_repr }}</td>
29
+ <td style="background-color: rgb(110, 207, 20)">{{ value|percent_filter:3 }}</td>
30
+ {% endif %}
31
+ </tr>
32
+ {% endfor %}
33
+ </table>
34
+ {% endfor %}
@@ -0,0 +1,88 @@
1
+ {% load static %}
2
+
3
+ <!DOCTYPE html>
4
+ <html lang="en">
5
+ <head>
6
+ <meta charset="UTF-8" />
7
+ <meta http-equiv="X-UA-Compatible" content="IE=edge" />
8
+ <meta name="viewport" content="width=device-width, initial-scale=1.0" />
9
+ <title>Macro Review</title>
10
+ <link
11
+ rel="stylesheet"
12
+ href="https://cdnjs.cloudflare.com/ajax/libs/bulma/0.9.4/css/bulma.min.css"
13
+ />
14
+ <link rel="stylesheet" href="{% static 'wbportfolio/css/macro_review.css' %}" />
15
+ <style>
16
+ ul{
17
+ list-style-type: disc;
18
+ }
19
+ h1 {
20
+ display: block;
21
+ font-size: 2em;
22
+ margin-top: 0.67em;
23
+ margin-bottom: 0.67em;
24
+ margin-left: 0;
25
+ margin-right: 0;
26
+ font-weight: bold;
27
+ }
28
+ h2 {
29
+ display: block;
30
+ font-size: 1.5em;
31
+ margin-top: 0.83em;
32
+ margin-bottom: 0.83em;
33
+ margin-left: 0;
34
+ margin-right: 0;
35
+ font-weight: bold;
36
+ }
37
+ h3 {
38
+ display: block;
39
+ font-size: 1.17em;
40
+ margin-top: 1em;
41
+ margin-bottom: 1em;
42
+ margin-left: 0;
43
+ margin-right: 0;
44
+ font-weight: bold;
45
+ }
46
+ h4 {
47
+ display: block;
48
+ margin-top: 1.33em;
49
+ margin-bottom: 1.33em;
50
+ margin-left: 0;
51
+ margin-right: 0;
52
+ font-weight: bold;
53
+ }
54
+ h5 {
55
+ display: block;
56
+ font-size: .83em;
57
+ margin-top: 1.67em;
58
+ margin-bottom: 1.67em;
59
+ margin-left: 0;
60
+ margin-right: 0;
61
+ font-weight: bold;
62
+ }
63
+ h6 {
64
+ display: block;
65
+ font-size: .67em;
66
+ margin-top: 2.33em;
67
+ margin-bottom: 2.33em;
68
+ margin-left: 0;
69
+ margin-right: 0;
70
+ font-weight: bold;
71
+ }
72
+
73
+ </style>
74
+ </head>
75
+ <body>
76
+ <div class="box page-header">
77
+ <img class="page-logo" src="{{ logo.url }}" />
78
+ <div>
79
+ <strong>{{ review_title }} <br>Review from {{ start }} to {{ end }}.</strong>
80
+ </div>
81
+ </div>
82
+ <div class="box">
83
+ {% if comment %}
84
+ {{ comment|safe }}
85
+ {% endif %}
86
+ </div>
87
+ </body>
88
+ </html>