ores.refdata.csa

Table of Contents

A Credit Support Annex holds the collateral terms of a netting set: thresholds, minimum transfer amounts, margining frequencies, the margin period of risk and the eligible collateral. Netting reduces exposure, and collateral mitigates what remains (see Netting sets).

A CSA has a lifecycle of its own: it is added, changed or switched off without touching the trades in its set. A set has at most one active CSA; an inactive one keeps its terms, as ORE keeps the details of a set whose CSA flag is off. The columns follow ORE's CSADetails one for one, and the eligible collateral currencies are rows of their own.

1. Flags

2. Columns

2.1. id

UUID uniquely identifying this CSA.

Surrogate key for the CSA record.

2.2. netting_set_id

The netting set these collateral terms govern.

References the netting sets table.

ctx.generate_uuid()

2.3. party_id

The legal entity of the firm the CSA belongs to.

References the parties table. It is the party of the CSA's netting set, and fixed for the CSA's life. A CSA is a contract between one legal entity and one counterparty. The insert trigger derives it from the netting set and ignores what the caller sent, so the two cannot differ.

ctx.generate_uuid()

2.4. is_active

Whether the CSA is in force.

ORE's ActiveCSAFlag. A set has at most one active CSA; an inactive one keeps its terms.

true

2.5. bilateral

Who posts collateral.

Bilateral, CallOnly or PostOnly, as ORE names them.

std::optional<std::string>("Bilateral")

2.6. csa_currency

The currency the CSA is denominated in.

An ISO currency code. Not checked against the currencies table: like the currency columns of the instrument models, it holds what the ORE document states.

std::optional<std::string>("EUR")

2.7. index_name

The index that accrues interest on collateral.

ORE's Index, such as EUR-EONIA.

std::optional<std::string>("EUR-EONIA")

2.8. threshold_pay

The exposure the firm may owe before it must post.

Not negative.

std::nullopt

2.9. threshold_receive

The exposure the counterparty may owe before it must post.

Not negative.

std::nullopt

2.10. minimum_transfer_amount_pay

The smallest transfer the firm makes.

Not negative.

std::nullopt

2.11. minimum_transfer_amount_receive

The smallest transfer the counterparty makes.

Not negative.

std::nullopt

2.12. independent_amount_held

The independent amount held.

ORE's IndependentAmountHeld.

std::nullopt

2.13. independent_amount_type

How the independent amount is expressed.

ORE's IndependentAmountType; FIXED is the only value ORE defines.

std::nullopt

2.14. call_frequency

How often the firm calls for collateral.

A period, such as 1D.

std::optional<std::string>("1D")

2.15. post_frequency

How often the firm posts collateral.

A period, such as 1D.

std::optional<std::string>("1D")

2.16. margin_period_of_risk

The time to close out after a default.

A period, such as 2W.

std::optional<std::string>("2W")

2.17. collateral_compounding_spread_receive

The spread on collateral the firm receives.

ORE's CollateralCompoundingSpreadReceive.

std::nullopt

2.18. collateral_compounding_spread_pay

The spread on collateral the firm posts.

ORE's CollateralCompoundingSpreadPay.

std::nullopt

2.19. apply_initial_margin

Whether initial margin applies.

ORE's ApplyInitialMargin.

std::nullopt

2.20. initial_margin_type

Who posts initial margin.

Bilateral, CallOnly or PostOnly, as ORE names them.

std::nullopt

2.21. calculate_im_amount

Whether ORE calculates the initial margin amount.

ORE's CalculateIMAmount.

std::nullopt

2.22. calculate_vm_amount

Whether ORE calculates the variation margin amount.

ORE's CalculateVMAmount.

std::nullopt

2.23. non_exempt_im_regulations

The regulations under which initial margin is not exempt.

ORE's NonExemptIMRegulations, as written.

std::nullopt

3. Artefact columns

The import names the netting set by code where the store holds its uuid and party, and carries the eligible collateral currencies as a comma separated list in posting order. Publishing resolves the set in the target tenant.

3.1. netting_set_code

3.2. version

3.3. is_active

3.4. bilateral

3.5. csa_currency

3.6. index_name

3.7. threshold_pay

3.8. threshold_receive

3.9. minimum_transfer_amount_pay

3.10. minimum_transfer_amount_receive

3.11. independent_amount_held

3.12. independent_amount_type

3.13. call_frequency

3.14. post_frequency

3.15. margin_period_of_risk

3.16. collateral_compounding_spread_receive

3.17. collateral_compounding_spread_pay

3.18. apply_initial_margin

3.19. initial_margin_type

3.20. calculate_im_amount

3.21. calculate_vm_amount

3.22. non_exempt_im_regulations

3.23. eligible_currencies

4. SQL

4.1. Flags

4.2. Checks

expression
"bilateral" is null or "bilateral" in ('Bilateral', 'CallOnly', 'PostOnly')
"initial_margin_type" is null or "initial_margin_type" in ('Bilateral', 'CallOnly', 'PostOnly')
"independent_amount_type" is null or "independent_amount_type" = 'FIXED'
"threshold_pay" is null or "threshold_pay" >= 0
"threshold_receive" is null or "threshold_receive" >= 0
"minimum_transfer_amount_pay" is null or "minimum_transfer_amount_pay" >= 0
"minimum_transfer_amount_receive" is null or "minimum_transfer_amount_receive" >= 0

4.3. Indexes

name columns unique current_only where_extra
active_set netting_set_id true true is_active

4.4. Party id from parent

5. Foreign keys

5.1. party_id

5.2. netting_set_id

6. C++

6.1. Flags

6.2. Repository

6.3. Domain includes

#include <optional>
#include <string>
#include <boost/uuid/uuid.hpp>

6.4. Entity includes

#include <optional>
#include <string>

6.5. Conventions

6.6. Table display

column header
is_active Active
bilateral Bilateral
csa_currency Currency
margin_period_of_risk MPOR
modified_by Modified By
version Version

6.7. Presentation

6.7.1. Detail fields

field label widget type is_key is_required placeholder
bilateral Bilateral bilateralEdit line_edit false false Bilateral, CallOnly, PostOnly
csa_currency Currency csaCurrencyEdit line_edit false false ISO currency code
index_name Index indexNameEdit line_edit false false Collateral index
margin_period_of_risk MPOR mporEdit line_edit false false Period, such as 2W

6.7.2. Columns

enum_name field header type width
IsActive is_active Active string 60
Bilateral bilateral Bilateral string 100
CsaCurrency csa_currency Currency string 80
MarginPeriodOfRisk margin_period_of_risk MPOR string 80
Version version Version int 80
ModifiedBy modified_by Modified By string 120
RecordedAt recorded_at Recorded At timestamp 150

7. See also

Emacs 29.3 (Org mode 9.6.15)