> ## Documentation Index
> Fetch the complete documentation index at: https://docs.activeviam.com/llms.txt
> Use this file to discover all available pages before exploring further.

# EU-DA support

> The `EU-DA` parameter set of Atoti FRTB adds the treatments of the EU delegated act on top of `CRR3`, along with CRR3 treatments missing from the `CRR3` parameter set.

export const productName = "Atoti FRTB";

This page describes the `EU-DA` parameter set. It lists the relief taken from the EU delegated act and the CRR3 provisions added, then explains how to enable the two optional treatments. The delegated act is [Commission Delegated Regulation (EU) 2026/1221](https://eur-lex.europa.eu/eli/reg_del/2026/1221/oj) of 4 June 2026. It amends Regulation (EU) No 575/2013, the Capital Requirements Regulation that CRR3 amends as well. It was published in the Official Journal on 11 September 2026 and applies from 1 January 2027. Its relief provisions run until 31 December 2029. The Commission summarized the changes in [Temporary adjustments to Basel III market risk rules](https://finance.ec.europa.eu/publications/commission-adopts-temporary-adjustments-basel-iii-market-risk-rules-safeguard-eu-banks_en).

{productName} 6.0.10 adds an `EU-DA` parameter set and every treatment on this page. This page builds on the [CRR3 support](./crr3).

## Which treatments does the EU-DA parameter set add?

The ERM II currencies of Article 325bd(5a) and bucket 3b of Article 325as are permanent CRR3 provisions. They ship under `EU-DA` so that existing `CRR3` results are unchanged.

| Treatment | CRR article | Applies until | Enabled by |
| - | - | - | - |
| [SBM Risk Charge multiplier](#what-changes-for-the-sbm-risk-charge) | [495s](https://eur-lex.europa.eu/eli/reg_del/2026/1221/oj) | 31 December 2029 | `EU-DA` parameter set |
| [Carbon trading buckets 3a and 3b](#what-changes-for-carbon-trading) | [325as](https://eur-lex.europa.eu/legal-content/EN/TXT/?uri=CELEX%3A32024R1623) | Permanent | `EU-DA` parameter set |
| [Carbon trading tenor correlation divisor](#what-changes-for-carbon-trading) | [495r](https://eur-lex.europa.eu/eli/reg_del/2026/1221/oj) | 31 December 2029 | `EU-DA` parameter set |
| [ERM II currencies in GIRR](#what-changes-for-erm-ii-currencies) | [325bd(5a)](https://eur-lex.europa.eu/legal-content/EN/TXT/?uri=CELEX%3A32024R1623) | Permanent | `EU-DA` parameter set |
| [RRAO Zero Risk Weight flag](#what-changes-for-rrao) | [495p](https://eur-lex.europa.eu/eli/reg_del/2026/1221/oj) | 31 December 2029 | `frtb.eu-da.rrao-zero-risk-weight.enabled` |
| [DRC contractual maturity](#what-changes-for-drc) | [495q](https://eur-lex.europa.eu/eli/reg_del/2026/1221/oj) | 31 December 2029; the field stays available afterwards | `frtb.eu-da.drc-contractual-maturity.enabled` |

## Which configuration files are added?

The `EU-DA` parameter set is declared in the [ParameterSet](../../configuration/parameterset) configuration file, with `CRR3` as its parent. The configuration that differs from `CRR3` ships in four files in `sample-data/configuration/EU-DA/`, each row carrying `EU-DA` in its `ParameterSet` column. A deployment with its own configuration directory copies the four files into it and adds the `EU-DA,CRR3` row to its `ParameterSet.csv`.

| File | Rows |
| - | - |
| [FRTBParameters](../../configuration/frtbparameters) | • `sa.sbm-risk-charge.multiplier` = `0.9`<br />• `sa.commodity.rho-tenor.correlation.bucket-divisors` = `3a=0.991` |
| [GIRR\_Major\_Currency](../../configuration/girr_major_currency) | The seven Basel currencies plus DKK |
| [Commodity\_BucketRiskWeights](../../configuration/commodity_bucketriskweights) | All thirteen buckets, with 3a and 3b |
| [Commodity\_IntraBucketCorrelations](../../configuration/commodity_intrabucketcorrelations) | All thirteen buckets, with 3a and 3b |

Every FRTBParameters parameter not in the `EU-DA` file falls back to `CRR3`, following the fallback logic of [Parameter sets](./parameter-sets). The currency list, the commodity buckets and the divisor list are each overridden as a whole set. The rows declared under `EU-DA` are the set `EU-DA` uses. A deployment maintaining its own set must restate it under `EU-DA`.

The shipped `EU-DA` rows are dated 2016-01-01 with no end date, so the relief applies to every as-of date from then on. Ending it after 31 December 2029 is the deployment's responsibility.

## What changes for the SBM Risk Charge?

Until 31 December 2029, Article 495s(1) multiplies the capital requirement of the sensitivities-based method, under Article 325h(4), by 0.9. The `sa.sbm-risk-charge.multiplier` parameter holds this multiplier per parameter set and AsOfDate. `EU-DA` sets it to `0.9`; every other parameter set keeps the default of `1.0`. The `SBM Risk Charge (transitional)` measure applies it:

| Measure | Behavior under `EU-DA` |
| - | - |
| [SBM Risk Charge](../../cube/measures/standardisedapproach/aggregated-riskcharge-by-class#sbm-risk-charge) | Unchanged. |
| [SBM Risk Charge (transitional)](../../cube/measures/standardisedapproach/aggregated-riskcharge-by-class#sbm-risk-charge-transitional) | `SBM Risk Charge` multiplied by `0.9`. |
| [Portfolio Risk Charge](../../cube/measures/standardisedapproach/aggregated-riskcharge-by-class#portfolio-risk-charge) | Built from the multiplied value. |
| [SA](../../cube/measures/standardisedapproach/aggregated-riskcharge-by-class#sa) | Built from the multiplied value. |

A parameter set that overrides the multiplier in its own FRTBParameters rows sees the reduction in its capital requirement.

## What changes for carbon trading?

Article 325as splits commodity bucket 3 into an electricity bucket and two carbon trading buckets, EU ETS and non-EU ETS. `CRR3` ships buckets 3 and 3a only; `EU-DA` adds bucket 3b and relabels 3a. Articles 325at and 325au, which set the intra-bucket and inter-bucket correlations, are not amended. Table 10 of Article 325at still names only bucket 3, "electricity and carbon trading", at 40%. Applying that 0.4 to 3a and 3b, and the inter-bucket correlation between buckets 3, 3a and 3b, are therefore interpretations.

| Bucket | Description | Risk weight | Intra-bucket correlation |
| - | - | - | - |
| 3 | Energy-Electricity | 0.6 | 0.4 |
| 3a | Energy-EU ETS carbon trading | 0.4 | 0.4 |
| 3b | Energy-non-EU ETS carbon trading | 0.6 | 0.4 |

[Commodity\_Buckets](../../input-files/commodity-buckets) assigns each underlying one bucket for all parameter sets. A row in [Underlying\_Desc\_Overrides](../../input-files/underlying-description-overrides) moves an underlying to another bucket under one parameter set. The row names the underlying, the bucket and the parameter set. Inheritance applies, so a row declared under `CRR3` also holds under `EU-DA`. As an example, the sample data assigns `carbon emissions trading` and `non-EU ETS carbon emissions trading` to bucket 3. It then moves the first to 3a under `CRR3` and the second to 3b under `EU-DA`.

Until 31 December 2029, Article 495r also divides the Delta tenor correlation of EU ETS carbon trading by 99.1%. `EU-DA` ships this as the `3a=0.991` entry of `sa.commodity.rho-tenor.correlation.bucket-divisors`, which takes `bucket=divisor` entries separated by `;`. Bucket 3a's tenor correlation is therefore `0.99 / 0.991` under `EU-DA`, and a bucket with no entry keeps the `0.99` set by `sa.commodity.rho-tenor.correlation`.

## What changes for ERM II currencies?

Article 325bd(5a) places the currencies of Member States in Exchange Rate Mechanism II (ERM II) in the most-liquid-currency sub-category. Article 325ae(3) divides the GIRR risk weights of that sub-category by the square root of 2. Therefore, `EU-DA` ships its own major currency list, `GIRR_Major_Currency_EU-DA.csv`, holding the seven Basel currencies plus DKK, the only ERM II currency. For the major currencies and how they are configured, see [GIRR\_Major\_Currency](../../configuration/girr_major_currency).

## What changes for RRAO?

<Warning>
  This treatment is off by default. To enable it, set `frtb.eu-da.rrao-zero-risk-weight.enabled` to `true`. See [How to enable the opt-in treatments](#how-to-enable-the-opt-in-treatments).
</Warning>

Until 31 December 2029, Article 495p applies a zero multiplier to the residual risk add-on of three instrument categories. It applies only if the instrument attracts no residual risk add-on for another reason. The categories are:

* Instruments referencing future realized volatility as an underlying.
* Options exercisable on a finite set of predetermined dates.
* Options on the difference between two constant maturity swap rates in the same currency.

Article 495p derogates from Article 325u and is mandatory for those instruments. An institution reporting under `EU-DA` must therefore enable the treatment and flag them. The `RRAO Zero Risk Weight` flag, supplied in the input data, marks a position as eligible for the zero multiplier. The property is global: the flag applies under every parameter set, not only `EU-DA`. RRAO rows synthesized from `Trade_Attributes.csv` under `rrao.use-trade-attributes=true` carry no flag and always take `N`. Flagging such a trade requires migrating it to [RRAO\_Trade.csv](../../input-files/rrao-trade).

The flag can be overridden per parameter set through the [RRAOOverrides](../../datastore/standardisedapproach/rrao-overrides) store, so one jurisdiction can apply the zero multiplier while another does not. A row flagged `Y` that leaves `RRAO Category` empty gets `ZRW` appended to its derived category, for example `RRAO Y Y ZRW` instead of `RRAO Y Y`. An override keyed on the old derived category must be re-keyed. A row carrying `N`, or no value, keeps the category it derived before 6.0.10.

Enabling the treatment adds:

1. An `RRAO Zero Risk Weight` column at the end of the [RRAO Trade](../../input-files/rrao-trade), [RRAO Summary](../../input-files/rrao-summary) and [RRAO Overrides](../../input-files/rrao-overrides) input files, where the flag is supplied. The trade and summary columns are added only while `frtb.eu-da.rrao-zero-risk-weight.add-input-file-column` is `true`, its default.
2. A field of the same name on the [RRAO](../../datastore/standardisedapproach/rrao) and [RRAOOverrides](../../datastore/standardisedapproach/rrao-overrides) stores, holding the flag.
3. An [RRAO Zero Risk Weight](../../cube/dimensions/risk#rrao-zero-risk-weight-optional) level in the `Risk` dimension of the SA cube.

A position flagged `RRAO Zero Risk Weight = Y` contributes to the [RRAO measures](../../cube/measures/standardisedapproach/rrao) as follows. A position flagged `Residual Risk = N` is shown for comparison.

| Measure | `RRAO Zero Risk Weight = Y` | `Residual Risk = N` |
| - | - | - |
| `RRAO Notional (All Trades)` | Notional | Notional |
| `RRAO Notional`<br />`RRAO Notional Exotic`<br />`RRAO Notional Other` | Notional | Omitted |
| `RRAO Exotic`<br />`RRAO Other`<br />`Residual Risk Add On` | 0 | Omitted |

## What changes for DRC?

<Warning>
  This treatment is off by default. To enable it, set `frtb.eu-da.drc-contractual-maturity.enabled` to `true`. See [How to enable the opt-in treatments](#how-to-enable-the-opt-in-treatments).
</Warning>

Until 31 December 2029, Article 495q lets an institution reassign the maturity of two kinds of equity exposure. Cash equity positions hedging derivatives may take the maturity of those derivatives. Equity derivative exposures may take a flat three months. It derogates from Article 325x(4) and is optional. A Default Risk Charge exposure therefore carries two maturities: the contractual one, and the assigned one the calculation uses after reassignment. The existing `Maturity` column supplies the assigned maturity. The `ContractualMaturity` field keeps the contractual one beside it, for reporting only: no measure reads it. The property is global: the field exists under every parameter set, not only `EU-DA`.

Enabling the treatment adds:

1. A `ContractualMaturity` column at the end of the [SA DRC trade](../../input-files/sa-drc-trade) and [SA DRC summary](../../input-files/sa-drc-summary) input files, where the contractual maturity is supplied.
2. A field of the same name on the [SASensitivities](../../datastore/standardisedapproach/sa-sensitivities) store, holding the contractual maturity.
3. A [DRC Contractual Maturity](../../cube/dimensions/default-risk-charge#drc-contractual-maturity-optional) level in the `Default Risk Charge` dimension of the SA cube.

## How to enable the opt-in treatments

These steps cover the two opt-in treatments, [RRAO Zero Risk Weight](#what-changes-for-rrao) and [DRC contractual maturity](#what-changes-for-drc). Each step names the treatment it applies to.

### Step 1: Migrate a DirectQuery database

An Atoti DirectQuery database needs the new columns before the application restarts with a property set. Without `CONTRACTUAL_MATURITY`, the application fails at startup. In-memory deployments skip this step.

* RRAO Zero Risk Weight: a nullable `RRAO_ZERO_RISK_WEIGHT` string, last on the [RRAO](../../database/rrao) and [RRAOOVERRIDES](../../database/rraooverrides) tables.
* DRC contractual maturity: a nullable `CONTRACTUAL_MATURITY` string on [SASENSITIVITIES](../../database/sasensitivities).

The shipped table-creation scripts already declare these columns. For an existing database, a migration script per platform adds them: [Snowflake](../../assets/sql/migrate-snowflake-6.0.10.sql), [Databricks](../../assets/sql/migrate-databricks-6.0.10.sql), [ClickHouse](../../assets/sql/migrate-clickhouse-6.0.10.sql) and [MSSQL](../../assets/sql/migrate-mssql-6.0.10.sql). Each script also backfills `CONTRACTUAL_MATURITY` from the assigned `MATURITY` of the matching `RISK_FACTOR_DESCRIPTION` row. The columns are nullable, so a script can be applied before the properties are set.

The backfill runs once. Every later load must fill `CONTRACTUAL_MATURITY` itself: with the contractual maturity, or with the assigned `MATURITY` where there is none.

For RRAO Zero Risk Weight, a null `RRAO_ZERO_RISK_WEIGHT` reads as a null member on the level rather than `N`. See the [RRAO](../../datastore/standardisedapproach/rrao) store.

### Step 2: Set the properties

Set the property of each treatment in `frtb-config.properties`. Both `enabled` properties are listed in [Startup properties](../../configuration/startup-properties).

```properties theme={"languages":{"custom":["/engine/python-sdk/6.2/languages/pycon.tmLanguage.json"]}}
frtb.eu-da.rrao-zero-risk-weight.enabled=true
frtb.eu-da.drc-contractual-maturity.enabled=true
```

* A project that maintains its own `frtb-config.properties` must also carry `frtb.eu-da.rrao-zero-risk-weight.level`, the descriptor of the RRAO Zero Risk Weight cube level. See [Cube levels for post-processors](../../configuration/frtb-config_properties#cube-levels-for-post-processors).
* The property appends the column to the shipped `rraoFileColumns` and `rraoSummaryFileColumns` beans only. A project that overrides those beans must append the column itself.

### Step 3: Update pinned parser columns

Only in-memory deployments load CSV topics, so Atoti DirectQuery skips this step. The shipped Java configuration appends each new column to the parser columns of its topics. It cannot append to a `parser.columns` list pinned in a Data Load Controller file. A deployment whose Data Load Controller file pins those lists, as `sample-data/application-dlc-in-memory.yaml` does for all five topics, must append the columns by hand.

For RRAO Zero Risk Weight, the `RRAO` and `RRAO_Summary` topics take `RRAO Zero Risk Weight` after `Asset Class`:

```yaml theme={"languages":{"custom":["/engine/python-sdk/6.2/languages/pycon.tmLanguage.json"]}}
            - Asset Class
            - RRAO Zero Risk Weight
```

For DRC contractual maturity, the `DRC`, `DRC_Summary` and `IMA_DRC` topics take `ContractualMaturity` after `Instrument Type`. The `IMA_DRC` topic reads the same trade file as `DRC`, so it must parse the column, which it then ignores:

```yaml theme={"languages":{"custom":["/engine/python-sdk/6.2/languages/pycon.tmLanguage.json"]}}
            - Instrument Type
            - ContractualMaturity
```

<Warning>
  A DRC file carrying more columns than its parser columns declare loads no row. The loader raises a `SourceLoadingException` for every row, startup still succeeds, and the loss shows only in the log. This happens with a pinned list left unchanged, and with a file carrying the column while the property is off.
</Warning>

A DRC file without the column, or with an empty or unconvertible value in it, still loads. The `Maturity` value is stored instead. That fallback runs on in-memory loads only, not under Atoti DirectQuery.

### Step 4: Update Java customizations

`RRAOWeightedNotional` receives RRAO Zero Risk Weight as a second leaf level, held in `protected ILevelInfo zeroRiskWeightLevel`. A subclass that overrides `init` without calling `super.init(properties)`, or that overrides `evaluateLeaf`, loses the treatment silently.

`EuDelegatedActProperties.class` is registered by both `FRTBConfig` and `SADatastoreConfig`, so replacing either one alone is safe. A project that replaces both must add the class to its own `@EnableConfigurationProperties`.

A project bean that changes the `SASensitivities` field layout must declare `@Order(DatastoreCustomisationSpringBeanOrder.PROJECT)`, as described in [How are customizations ordered?](../../dev/dev-ref-impl/dev-datastore/customization-order#how-are-customizations-ordered). A project publishing `SASensitivities` tuples positionally supplies one extra value for `ContractualMaturity`. The field sits at its `ACCELERATOR` position, before project and sign-off fields, so read the resulting field order first.

### Step 5: Update extracts and dashboards

The `SACubeRRAOExport` extract, `frtb-application/src/main/resources/DEETemplateOrders/SACubeRRAOExport.json`, writes an `RRAO_Summary` file that is loaded back in as an input file. It exports the pre-6.0.10 columns, so once RRAO Zero Risk Weight is enabled its output no longer matches the expected file layout. A deployment reloading it must do one of the following:

* Make the extract export the flag, by adding the RRAO Zero Risk Weight level to its query and to its output columns.
* Keep the old summary layout, by setting `frtb.eu-da.rrao-zero-risk-weight.add-input-file-column=false` and pinning the parser columns by hand. The `RRAO` topic takes the flag column, the `RRAO_Summary` topic does not. Positions loaded from the extract then carry no flag.

The shipped dashboards do not use the new levels. Add them to custom dashboards by hand.

### Step 6: Supply the values in the input files

Add `RRAO Zero Risk Weight` (`Y` or `N`) to [RRAO Trade](../../input-files/rrao-trade), [RRAO Summary](../../input-files/rrao-summary) or [RRAO Overrides](../../input-files/rrao-overrides), and `ContractualMaturity` to [SA DRC trade](../../input-files/sa-drc-trade) or [SA DRC summary](../../input-files/sa-drc-summary). Under Atoti DirectQuery, fill the matching table columns on every load.

### Step 7: Restart and verify

Restart the application, then check the load:

1. Search the application log for `SourceLoadingException` entries naming a DRC file.
2. Query the [DRC Contractual Maturity](../../cube/dimensions/default-risk-charge#drc-contractual-maturity-optional) and [RRAO Zero Risk Weight](../../cube/dimensions/risk#rrao-zero-risk-weight-optional) levels of the SA cube. A null member means a load left the column empty.
