Your risk data rules are written. With Soda, they get executed before every report.
BCBS 239 is the Basel Committee’s standard for risk data aggregation and reporting. Soda runs your data quality rules and keeps every result.
The deadline has passed. Most banks still fall short.
Your evidence depends on who kept the spreadsheet.
-
Your rules are scattered across spreadsheets and scripts.
D3fx=IF(C3="","FAIL","OK")AB 1RuleWhere it runs 2Exposure = ledgerSQL script 3LEI filled inspreadsheet 4Rating in rangeVBA macro 5Trial balance tiesemail 6FX rate currentPythonCreditTreasury+ -
The history your supervisor needs is rebuilt from email.
CRCarla! IMPORTANT
The supervisor asked for the March history. Due Friday.
BMBruno
FW: March risk report.msgDSDiego
March was overwritten. Found a copy:
Controls_v6 (copy) (2).xlsx -
Your board’s data quality report is assembled by hand.
CRTreasury hasn't sent its numbers yet.
Turn your data quality rules into checks. Keep evidence from every run.
Soda tests four of the 14 principles; it does not make a bank compliant. The other ten cover governance, architecture, reporting and supervision.
risk.credit_exposure· v14reconciliation: sources: - name: ledger dataset: finance/gl/balances checks: - aggregate_diff: source: ledger function: sum column: exposure_eur attributes: bcbs239: P3
risk.credit_exposure· v14- missing: name: No missing counterparty IDs attributes: bcbs239: P4 - row_count: threshold: must_be_greater_than: 0
risk.credit_exposure· v14- freshness: name: Updated in the last 4 hours column: as_of_date threshold: unit: hour must_be_less_than: 4 attributes: bcbs239: P5
risk.board_report_sep26· v14reconciliation: sources: - name: exposure_source dataset: risk/credit_exposure checks: - rows_diff: source: exposure_source threshold: { must_be: 0 } attributes: bcbs239: P7
Governance writes the rule.
Engineering approves it.
No ticket in between.
Review the same data contract in Git or the interface. Alerts go to Slack, Microsoft Teams or email.
One rule“Total exposure in the board report must match the general ledger.”
Your risk data office proposes it
Proposed, no codeEngineering approves it
In data contract version 15It runs before every report
Passed · difference €0.00The result goes to Collibra
Accuracy · passed
Results go to your catalog. Rule requests stay in Soda.
Self-host your checks. Keep risk data inside your bank.
When a row-level check fails, Diagnostics Warehouse keeps the failed rows in your warehouse, if enabled.
risk.exposure
Keep failed-row sampling off so no rows of risk data reach Soda Cloud.
- The result of each check4 of 4
- Data contract version and approvalv14
- Date and time of each run5 Oct
- Rows of risk data0
Shared contracts help teams work together.
“We went from detection to prevention. Most data quality tooling will tell you something broke after it broke. Our goal is to catch it before that reaches the dashboards and datasets in the first place.”

Investing in data quality is key for cross-functional teams to make accurate, complete decisions.

Data contracts brought transparency and also bigger cooperation between different teams.

We're catching issues we never would've noticed before.

Working with Soda has improved the productivity of my team. Previously we would do a lot of back-and-forth Q&A: “is this file up to date? working? are you sure”.

Questions about BCBS 239.
Scope, the principles, and what Soda covers.
What is BCBS 239?
BCBS 239 is the Basel Committee on Banking Supervision's Principles for effective risk data aggregation and risk reporting, published in January 2013. It sets 14 principles: 11 for banks, on governance and infrastructure, aggregating risk data and reporting it, and 3 for supervisors. It was written after the financial crisis that began in 2007 showed that many banks could not aggregate their risk exposures fully, quickly and accurately.
Who does BCBS 239 apply to?
It is addressed first to systemically important banks. Banks named global systemically important banks (G-SIBs) in 2011 or 2012 had to meet the principles by January 2016, and banks named later have three years from their designation. The Basel Committee strongly suggests that national supervisors apply the principles to domestic systemically important banks three years after their designation, and supervisors may apply them to other banks in proportion to their size and complexity.
What are the 14 principles of BCBS 239?
Governance and infrastructure: 1 Governance, 2 Data architecture and IT infrastructure. Risk data aggregation: 3 Accuracy and integrity, 4 Completeness, 5 Timeliness, 6 Adaptability. Risk reporting: 7 Accuracy, 8 Comprehensiveness, 9 Clarity and usefulness, 10 Frequency, 11 Distribution. Supervisory review: 12 Review, 13 Remedial actions and supervisory measures, 14 Home/host cooperation.
How many banks comply with BCBS 239?
Few. In its November 2023 progress report, its latest, the Basel Committee found that of the 31 G-SIBs it assessed, only two were fully compliant with all the principles, and that no single principle had been fully implemented across all banks. In November 2025, the European Central Bank reported no improvement in the average risk data score of the banks it supervises, compared with the year before.
What does the European Central Bank expect?
The European Central Bank uses the BCBS 239 principles as its benchmark when it assesses the banks it supervises directly. Its Guide on effective risk data aggregation and risk reporting, published in May 2024, names seven areas where it expects substantial progress. One is data quality: controls on accuracy and integrity, completeness and timeliness, automated where appropriate, periodic reconciliation, and a register of data quality issues with their remediation.
Does Soda make a bank compliant with BCBS 239?
No. Compliance is your bank's, and most of the principles are decisions on governance, architecture and reporting. Soda covers the part that is tests on the data: accuracy and reconciliation (Principles 3 and 7), completeness (4) and timeliness (5). It runs those checks before each report, records every result, and tags each check with the principle it serves.
Does our risk data leave our network?
Not when you run Soda self-hosted. The runner executes every check inside your network, and the Diagnostics Warehouse keeps failed rows in your own warehouse. Soda Cloud receives metadata, aggregated check results and monitoring metrics: each check's name and logic, the dataset name, what the check measured and whether it passed. Showing samples of failed rows in Soda Cloud is a separate option, off by default. If you use Soda's hosted runner instead, the checks run from Soda's infrastructure.
What can we show a supervisor?
The history of every run: each check, its result, when it ran and on which version of the data contract, and who proposed and who approved each change to a check. For checks that test single rows, and with the Diagnostics Warehouse turned on, failed rows are kept in your warehouse with their check, so a failure can be traced to the records behind it.
Does Soda work with our data catalog?
Yes. Soda publishes each check's result to Collibra, Alation, Atlan, Microsoft Purview or data.world, next to the dataset it tests, on a schedule. With Collibra it also brings owners, tags and business terms into Soda. Your team sets the integration up together with Soda.
First call · 30 minutes · Zoom
Have the evidence before your supervisor asks.
Bring a risk data rule. See how Soda would run it and record the result.
- Two short steps, then pick a time
- Soda can run inside your network
- 1You
- 2Your company
- 3Your time