taler-docs

Documentation for GNU Taler components, APIs and protocols
Log | Files | Refs | README | LICENSE

commit 5941e1343baf6d3935327f0c6ab79fe27d61872b
parent 5ae77c795699ddbb4d21dc568678560aecc643f0
Author: Florian Dold <florian@dold.me>
Date:   Thu, 27 Mar 2025 16:05:10 +0100

tops: document more VQF stats, clarify prop derivation

Diffstat:
Mdeployments/tops.rst | 148++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-----------------
1 file changed, 117 insertions(+), 31 deletions(-)

diff --git a/deployments/tops.rst b/deployments/tops.rst @@ -237,10 +237,14 @@ Properties * Is the customer a international org PEP? -* ``AML_HIGH_RISK :: Boolean`` +* ``AML_HIGH_RISK_CUSTOMER :: Boolean`` * Is the customer classified as high-risk? +* ``AML_HIGH_RISK_COUNTRY :: Boolean`` + + * Is the customer associated with high-risk (VQF Dok. Nr. 902.4.1) country? + * ``AML_ACCOUNT_IDLE :: Boolean`` * The account has been marked as idle (typically by a batch process that checks @@ -269,7 +273,8 @@ Account opening/closing: PEP/Risk classification: -* ``INCR_HIGH_RISK`` / ``DECR_HIGH_RISK`` +* ``INCR_HIGH_RISK_CUSTOMER`` / ``DECR_HIGH_RISK_CUSTOMER`` +* ``INCR_HIGH_RISK_COUNTRY`` / ``INCR_HIGH_RISK_COUNTRY`` * ``INCR_PEP`` / ``DECR_PEP`` * ``INCR_FOREIGN_PEP`` / ``DECR_FOREIGN_PEP`` * ``INCR_DOMESTIC_PEP`` / ``DECR_DOMESTIC_PEP`` @@ -1499,6 +1504,13 @@ When the AML officer submits a form, the AML SPA will derive some pre-defined properties and events from the filled-in form attributes. The AML Officer can change (override) these derived properties and events. +* Assumptions: + + * Properties are always calculated only based on new attributes and the previous properties. They are never calculated + from older attribute collections or the current rules. + * The AML officer can always override derived properties or events. + * In the future, we might derive *rules* from properties, but we don't do that right now. + The derivation is defined in pseudo-code. The following special variables/functions are available: @@ -1549,8 +1561,12 @@ Events: emit(INCR_INTERNATIONAL_ORG_PEP); } - if (newProps.AML_HIGH_RISK) { - emit(INCR_HIGH_RISK); + if (newProps.AML_HIGH_RISK_CUSTOMER) { + emit(INCR_HIGH_RISK_CUSTOMER); + } + + if (newProps.AML_HIGH_RISK_COUNTRY) { + emit(INCR_HIGH_RISK_COUNTRY); } } @@ -1565,7 +1581,8 @@ properties: newProps.AML_FOREIGN_PEP = form.PEP_FOREIGN; newProps.AML_DOMESTIC_PEP = form.PEP_DOMESTIC; newProps.AML_INTERNATIONAL_ORG_PEP = form.PEP_INTERNATIONAL_ORGANIZATION; - newProps.AML_HIGH_RISK = form.RISK_CLASSIFICATION_LEVEL == "HIGH_RISK"; + newProps.AML_HIGH_RISK_CUSTOMER = form.RISK_CLASSIFICATION_LEVEL == "HIGH_RISK"; + newProps.AML_HIGH_RISK_COUNTRY = form.COUNTRY_RISK_NATIONALITY_LEVEL == "HIGH"; Events: @@ -1693,41 +1710,110 @@ Event Reporting (VQF) The VQF self-declaration contains the following questions that we need to answer with statistics derived via events: - **Original German Text** +.. code:: none + + Original German Text: + + 3. Anzahl der betreuten GwG-Files + + 3.1. GwG-Files für dauernde Geschäftsbeziehungen (gemäss Art. 7 lit. b SRO-Reglement) + + 3.1.1. Anzahl der am 01.01.20XX betreuten GwG-Files + + 3.1.2. Zwischen 01.01.20XX und 31.12.20XX hinzugekommene GwG-Files + + 3.1.3. Anzahl der während des Jahres 20XX betreuten GwG-Files + (Relevante Zahl für die jährliche GwG-File Gebühr / Jahresrechnung) + + 3.1.4. Zwischen 01.01.20XX und 31.12.20XX beendigte GwG-Files + + 3.1.5. Anzahl der am 31.12.20XX betreuten GwG-Files (gerechnet ab dem 01.01.20XX) + + 4. Angaben zu Kundenstruktur, Produkten, Betriebsstruktur + + 4.1. Führten Sie im Jahre 2024 Geschäftsbeziehungen mit erhöhtem Risiko (Art. 58 SRO-Reglement)? + + 4.2. Falls bei Ziff. 4.1 mit "Ja" geantwortet, bei wie vielen davon handelt es + sich um politisch exponierte Personen (PEP)? (nummerische Anzahl) + + 4.3. Wie viele von den genannten PEP sind ausländische PEP? + (nummerische Anzahl) + + 4.4. Falls bei Ziff. 4.1 mit "Ja" geantwortet, wie viele weitere + (zusätzlich zu den in Ziff. 4.2 / PEP genannten) + Geschäftsbeziehungen mit erhöhten Risiken führten Sie? + (nummerische Anzahl) + + 4.5. Total der Geschäftsbeziehungen mit erhöhtem Risiko + + 4.6. Führten Sie im Jahre 2024 Geschäftsbeziehungen mit + Vertragspartnern oder wirtschaftlich berechtigten Personen mit + Nationalität oder Domizil/Sitz in einem Land mit Risikostufe + "High" gemäss VQF-Länderliste (VQF Dok. Nr. 902.4.1)? + + 5. Meldungen an die Meldestelle (MROS) + + 5.1. Meldepflicht (Art. 9 Abs. 1 GwG) (nummerische Anzahl) + 5.2. Melderecht (Art. 305ter Abs. 2 StGB) (nummerische Anzahl) + 5.3. Total der an die Meldestelle (MROS) und den VQF erfolgten MROS-Meldungen + + + English Translation + + TBD. + + +Based on this, we have the following statistics: + +* Number of open accounts on January 1st (self-declaration 3.1.1) + + * Implemementation: ``evtcount(INCR_ACCOUNT_OPEN, start=0, end=jan_first_20xx) - evtcount(DECR_ACCOUNT_OPEN, start=0, end=jan_first_20xx)`` + +* Number of newly opened accounts between 01.01.20XX and 31.12.20XX (self-declaration 3.1.2.) + + * Implemementation: ``evtcount(INCR_ACCOUNT_OPEN, start=jan_first_20xx, end=dec_last_20xx)`` + +* Number of AML files managed during the year 20XX (self-declaration 3.1.3.) + + * All accounts ever opened except the ones that were closed *before* 20xx + * Implemementation: ``evtcount(INCR_ACCOUNT_OPEN, start=0, end=dec_last_20xx) - evtcount(DECR_ACCOUNT_OPEN, start=0, end=jan_first_20xx)`` + +* Number of AML files closed between 01.01.20XX and 31.12.20XX (self-declaration 3.1.4) + + * Implemementation: ``evtcount(DECR_ACCOUNT_OPEN, start=jan_first_20xx, end=dec_last_20xx)`` + +* Were there business relationships in the year 20XX with high risk? (self-declaration 4.1) + + * Implementation: ``evtcount(INCR_HIGH_RISK_CUSTOMER, start=0, end=dec_last_20xx) - evtcount(DECR_HIGH_RISK_CUSTOMER, start=0, end=dec_last_20xx) > 0`` + +* Of those, how many were with PEPs? (self-declaration 4.2.) + + * Implementation: ``evtcount(INCR_PEP, start=0, end=dec_last_20xx) - evtcount(DECR_PEP, start=0, end=dec_last_20xx)`` + +* Of those PEPs, how many were with *foreign* PEPs? (self-declaration 4.3.) + + * Implementation: ``evtcount(INCR_FOREIGN_PEP, start=0, end=dec_last_20xx) - evtcount(DECR_FOREIGN_PEP, start=0, end=dec_last_20xx)`` + +* Number of other additional (other than PEPs and foreign PEPs) high-risk business relationships in 20XX (self-declaration 4.4.) - Meldungen an die Meldestelle (MROS) + * Implementation: Difference between 4.5. and 4.2 - * Meldepflicht (Art. 9 Abs. 1 GwG) (nummerische Anzahl) - * Melderecht (Art. 305ter Abs. 2 StGB) (nummerische Anzahl) - * Total der an die Meldestelle (MROS) und den VQF erfolgten MROS-Meldungen +* Number of high-risk business relationship n total in 20xx (self-declaration 4.5.) - GwG-Files für dauernde Geschäftsbeziehungen (gemäss Art. 7 lit. b SRO-Reglement) + * Implementation: ``evtcount(INCR_HIGH_RISK_CUSTOMER, start=0, end=dec_last_20xx) - evtcount(DECR_HIGH_RISK_CUSTOMER, start=0, end=dec_last_20xx)`` - * Anzahl der am 01.01.20XX betreuten GwG-Files - * Zwischen 01.01.20XX und 31.12.20XX hinzugekommene GwG-Files - * Anzahl der während des Jahres 20XX betreuten GwG-Files - * Relevante Zahl für die jährliche GwG-File Gebühr / Jahresrechnung - * Zwischen 01.01.20XX und 31.12.20XX beendigte GwG-Files - * Anzahl der am 31.12.20XX betreuten GwG-Files (gerechnet ab dem 01.01.20XX) +* Number of reports (substantiated suspicion) to MROS during 20xx (self-declaration 5.1) - **English Translation** + * Implementation: ``evtcount(REPORTED_SUSPICION_SUBSTANTIATED, range=year_20xx)`` - Reports to the Money Laundering Reporting Office Switzerland (MROS) +* Number of reports (simple suspicion) to MROS during 20xx (self-declaration 5.2) - * Obligation to report (Art. 9 para. 1 AMLA) (numerical count) - * Right to report (Art. 305ter para. 2 Swiss Criminal Code) (numerical count) - * Total reports made to the Money Laundering Reporting Office Switzerland (MROS) and the VQF + * Implementation: ``evtcount(REPORTED_SUSPICION_SIMPLE, range=year_20xx)`` - AMLA Files for ongoing business relationships (according to Art. 7 lit. b SRO regulations) +* Total number of reports to MROS during 20xx (self-declaration 5.3) - * Number of AMLA files managed as of 01.01.20XX - * AMLA files added between 01.01.20XX and 31.12.20XX - * Number of AMLA files managed during the year 20XX - * Relevant number for the annual AMLA file fee / annual invoice - * AMLA files terminated between 01.01.20XX and 31.12.20XX - * Number of AMLA files managed as of 31.12.20XX (calculated from 01.01.20XX) + * Implementation: ``evtcount(REPORTED_SUSPICION_SIMPLE, range=year_20xx) + evtcount(REPORTED_SUSPICION_SUBSTANTIATED, range=year_20xx)`` -FIXME: Define how we implement each of these! Event Reporting (TOPS) ^^^^^^^^^^^^^^^^^^^^^^ @@ -1736,7 +1822,7 @@ The following event-based statistics are custom-defined by us and shown in the A * Number of accounts that are opened: - * Implementation: ``evtcount(INCR_ACCOUNT_OPEN) - evtcount(DECR_ACCOUNT_OPENED)`` + * Implementation: ``evtcount(INCR_ACCOUNT_OPEN) - evtcount(DECR_ACCOUNT_OPEN)`` * Number of new GwG files in the last year.