Snowflake Analytics & Risk Platform¶
| System ID | SD06 |
| Repo | bank-risk-platform |
| Business domain | BD03 |
| Tech owner | Data & Risk Engineering |
| Build status | Not started |
The bank's analytical brain. All risk models, regulatory calculations, and intelligence outputs run in Snowflake. Results written back to Postgres for operational use. No manual spreadsheet calculations.
Architecture¶
See ADR-002 for the Snowflake-as-analytical-store decision and the write-back pattern that governs how results flow to operational systems.
Critical constraints¶
- Snowflake is the analytical store only — no operational system may query Snowflake inline during a customer request.
- All risk model outputs must be written back to Postgres before operational systems consume them.
- MOD-036 prudential returns must be submitted by RBNZ/APRA deadlines without manual intervention.
- MOD-038 must block downstream model runs if data quality checks fail.
Deployment notes — as of 2026-05-14¶
Most Phase 3–4 modules (MOD-032, MOD-035, MOD-038, MOD-039, MOD-040, MOD-085,
MOD-086, MOD-098) are deployed to dev as of commit 629c644.
Three modules remain undeployed. The shared AWS SCP blocker was resolved
(bank-platform commit 911a11f7). Diagnostic update 2026-05-14: SHOW GRANTS
(live dev account, ACCOUNTADMIN) confirmed BANK_NONPROD_RISK_ROLE was already
granted to BANK_RISK_PLATFORM_DEPLOY since 2026-04-30. The earlier diagnosis
attributing MOD-056/080 failures to a missing grant was incorrect. The real
blocker on MOD-056/080 is that HAS_DCM=false was set as a workaround,
preventing Phase-2 ownership transfer from ever running against real credentials:
-
MOD-041 —
HAS_DCM=false/HAS_DBT_PROJECT=falseworkaround skips the Snowpark deploy step, soNORMALISE_MERCHANTUDF is never deployed. Resolution: flipHAS_DCM=trueandHAS_DBT_PROJECT=true— the Snowpark path should deploy the UDF automatically once the flags are restored. -
MOD-056 —
HAS_DCM=falseworkaround prevented Phase-2 ownership transfer from running. After flippingHAS_DCM=true, the expected next blocker is schema ownership: theREGULATORYschema is owned byBANK_NONPROD_RISK_ROLE, notSF_ROLE; dbt creating views in that schema asSF_ROLEwill fail with "Insufficient privileges". Resolution options: (A) extend Phase-2 inrisk-platform.gitlab-ci.ymlto also transfer schema ownership, or (B) add explicitGRANT CREATE VIEW / DYNAMIC TABLE ON SCHEMA REGULATORY TO ROLE SF_ROLE. -
MOD-080 — Same Phase-2 / schema-ownership issue as MOD-056 (schema
STATUTORY), plus an independent code bug:reconciliation_status_currentDynamic Table hastarget_lag='5 minutes'while its upstream dependencytrial_balance_periodhastarget_lag='15 minutes'— Snowflake requires downstream DTs to have lag ≥ their dependencies. Fix: bumpreconciliation_status_current.sqltarget_lag to'15 minutes'(independent of the Phase-2 / schema-ownership fix).
Modules¶
| Module | Name | Status | Policies |
|---|---|---|---|
| MOD-032 | LCR / NSFR calculator | Deployed | CLQ-002 · REP-002 · GOV-002 |
| MOD-033 | RWA & capital ratio engine | Deployed | CLQ-001 · REP-002 · CLQ-006 · GOV-002 |
| MOD-034 | Stress testing scenario engine | Not started | CLQ-003 · CLQ-005 · GOV-002 |
| MOD-035 | IRRBB / EVE / NII model | Deployed | CLQ-004 · REP-002 · GOV-002 |
| MOD-036 | Prudential return builder (RBNZ / APRA) | Deployed | REP-001 · REP-002 · REP-005 |
| MOD-037 | AUSTRAC / RBNZ AML reporting pipeline | Not started | REP-003 · AML-001 · AML-006 · REP-005 |
| MOD-038 | Data quality & reconciliation monitor | Deployed | REP-005 · DT-004 · GOV-006 |
| MOD-039 | Customer risk score model | Deployed | AML-002 · AML-005 · DT-005 |
| MOD-040 | Churn & health score engine | Deployed | CON-001 · CON-003 |
| MOD-041 | Categorisation & merchant enrichment model | Deployed | CON-005 · DT-005 |
| MOD-055 | Onboarding fraud scoring engine | Not started | AML-013 |
| MOD-056 | Compliance visibility engine | Deployed | REP-006 · GOV-006 |
| MOD-057 | Statistical returns & survey engine | Deployed | REP-008 · REP-005 |
| MOD-058 | Regulatory incident & breach notification engine | Not started | REP-009 |
| MOD-060 | FATCA/CRS/AEOI reporting engine | Deployed | REP-011 · PRI-004 · REP-005 |
| MOD-080 | Statutory financial reporting & ERP integration | Deployed | REP-004 · REP-001 · GOV-006 |
| MOD-085 | Market rates ingestion & normalisation | Deployed | REP-005 · CLQ-002 |
| MOD-086 | Funds transfer pricing engine | Deployed | REP-001 · CLQ-003 |
| MOD-088 | Expense classification engine | Not started | PRI-001 |
| MOD-089 | Geo-spatial processor | Not started | PRI-001 |
| MOD-092 | Tax logic engine | Not started | PRI-001 |
| MOD-094 | Property attribution engine | Not started | PRI-001 |
| MOD-095 | Ring-fencing logic engine | Not started | PRI-001 |
| MOD-098 | Cost attribution engine | Deployed | REP-001 |
| MOD-101 | Wealth intelligence engine | Not started | |
| MOD-105 | Product eligibility engine | Not started | CON-006 · CON-001 · CRE-001 |
| MOD-106 | ROTE engine | Not started | CON-006 · CRE-001 |
| MOD-107 | Next best product engine | Not started | CON-006 · CON-001 |
| MOD-147 | Related party exposure monitor | Not started | GOV-009 · GOV-009 · CRE-005 |
| MOD-150 | Risk management platform | Not started | OPS-003 · OPS-004 · OPS-005 · OPS-006 · OPS-007 · DT-003 · DT-005 · DT-008 · GOV-002 · REP-009 · PRI-002 · CLQ-002 |
| MOD-152 | Climate risk assessment | Not started | CLQ-007 · REP-012 · GOV-002 |
| MOD-165 | Synthetic swap book aggregator | Not started | CLQ-001 · REP-002 · REP-004 |
| MOD-170 | Regulatory Submissions Portal | Deployed | REP-005 · REP-001 · REP-002 · GOV-002 |
| MOD-171 | Risk Intelligence Dashboard | Deployed | GOV-002 · REP-002 · DT-005 |
| MOD-172 | Operations & Model Intelligence Dashboard | Deployed | DT-005 · OPS-003 · REP-002 |
| MOD-173 | Model risk register & inventory | Not started | DT-013 · DT-005 |
| MOD-174 | Model performance monitoring & drift detection | Not started | DT-013 · DT-005 |
| MOD-175 | Model change control & re-approval workflow | Not started | DT-013 · DT-005 |
Compiled 2026-05-22 from source/entities/system-domains/SD06.yaml