secl.005.001.02
Scope The MarginReport message is sent by the central counterparty (CCP) to a clearing member to report on:
- the exposure resulting from the trade positions
- the value of the collateral held by the CCP (market value of this collateral) and
- the resulting difference representing the risk encountered by the CCP.
The message definition is intended for use with the ISO20022 Business Application Header.
Usage There are four possibilities to report the above information. Indeed, the margin report may be structured as follows:
- per clearing member: the report will only show the information for the clearing member, or
- per clearing member and per financial instrument: the report will show the information for the clearing member, structured by security identification, or
- per clearing member and per non clearing member: the report will show the information for the clearing member (that is for global clearing member only) structured by non clearing member(s), or
- per clearing member and per non clearing member and per security identification: the report will show the information for the clearing member (global clearing member only) structured by non clearing member(s) and by security identification.
Message Construction
Every ISO20022 message has at the highest level what we call ‘building blocks’. Because the message is constructed as immutable records, the association is by composition. Below you can see the relationship between the message and its constituent building blocks: For comparison, see the ISO20022 official specification
classDiagram direction LR %% MarginReportV02 recursion level 0 with max 0 MarginReportV02 *-- "1..1" ReportParameters3 : ReportParameters MarginReportV02 *-- "1..1" Pagination : Pagination MarginReportV02 *-- "1..1" IPartyIdentification35Choice : ClearingMember MarginReportV02 *-- "0..1" MarginCalculation1 : ReportSummary MarginReportV02 *-- "1..1" MarginReport2 : ReportDetails MarginReportV02 *-- "0..1" SupplementaryData1 : SupplementaryData
Now, we will zero-in one-by-one on each of these building blocks.
ReportParameters building block
Provides parameters of the margin report such as the creation date and time, the report currency or the calculation date and time. Provides the parameters of the report. For comparison, see the ISO20022 official specification
classDiagram direction tb %% ReportParameters3 recursion level 0 with max 1 class ReportParameters3{ ReportIdentification IsoMax35Text ReportCurrency CurrencyCode CalculationDateAndTime IsoISODateTime Frequency EventFrequency6Code ReportNumber IsoExact5NumericText } ReportParameters3 *-- "1..1" IDateAndDateTimeChoice : ReportDateAndTime %% IDateAndDateTimeChoice recursion level 1 with max 1
ReportParameters3 members
Member name | Description | Data Type / Multiplicity |
---|---|---|
ReportIdentification | Unique identification of the report. | IsoMax35Text - Required 1..1 |
ReportDateAndTime | Date (and time) and time of the report. | IDateAndDateTimeChoice - Required 1..1 |
ReportCurrency | Currency used for the calculation of the margin. | CurrencyCode - Required 1..1 |
CalculationDateAndTime | Date of calculation of the margin. | IsoISODateTime - Required 1..1 |
Frequency | Frequency of the report. | EventFrequency6Code - Required 1..1 |
ReportNumber | Sequential number of the report. | IsoExact5NumericText - Optional 0..1 |
Pagination building block
Page number of the message (within a report) and continuation indicator to indicate that the report is to continue or that the message is the last page of the report. Number used to sequence pages when it is not possible for data to be conveyed in a single message and the data has to be split across several pages (messages). For comparison, see the ISO20022 official specification
classDiagram direction tb %% Pagination recursion level 0 with max 1 class Pagination{ PageNumber IsoMax5NumericText LastPageIndicator IsoYesNoIndicator }
Pagination members
Member name | Description | Data Type / Multiplicity |
---|---|---|
PageNumber | Page number. | IsoMax5NumericText - Required 1..1 |
LastPageIndicator | Indicates the last page. | IsoYesNoIndicator - Required 1..1 |
ClearingMember building block
Provides the identification of the account owner, that is the clearing member (individual clearing member or general clearing member). Choice of identification of a party. The party can be identified by giving a BIC or a proprietary code. For comparison, see the ISO20022 official specification
classDiagram direction tb %% IPartyIdentification35Choice recursion level 0 with max 1
PartyIdentification35Choice members
Member name | Description | Data Type / Multiplicity |
---|
ReportSummary building block
Provides details on the valuation of the collateral on deposit. Provides the total margin amount, the collateral amount on deposit and the total minimum requirement that used to calculate the margin result, either an excess or a deficit. For comparison, see the ISO20022 official specification
classDiagram direction tb %% MarginCalculation1 recursion level 0 with max 1 class MarginCalculation1{ MinimumRequirementDeposit IsoActiveCurrencyAndAmount } MarginCalculation1 *-- "1..1" AmountAndDirection20 : TotalMarginAmount MarginCalculation1 *-- "0..0" Collateral6 : CollateralOnDeposit MarginCalculation1 *-- "0..1" IMarginResult1Choice : MarginResult %% AmountAndDirection20 recursion level 1 with max 1 class AmountAndDirection20{ Amount IsoActiveOrHistoricCurrencyAndAmount CreditDebitIndicator CreditDebitCode } %% Collateral6 recursion level 1 with max 1 class Collateral6{ PostHaircutValue IsoActiveCurrencyAndAmount MarketValue IsoActiveCurrencyAndAmount CollateralType CollateralType1Code } %% IMarginResult1Choice recursion level 1 with max 1
MarginCalculation1 members
Member name | Description | Data Type / Multiplicity |
---|---|---|
TotalMarginAmount | Total margin requirement (expressed in the reporting currency) that must be provided by the clearing member to the central counterparty. This is the total requirement calculated to cover the initial margin and the variation margin. | AmountAndDirection20 - Required 1..1 |
CollateralOnDeposit | Provides details on the valuation of the collateral on deposit. | Collateral6 - Unknown 0..0 |
MinimumRequirementDeposit | Minimum requirement (expressed in the reporting currency) for a participant if their requirement falls below a specific amount set by the central counterparty. | IsoActiveCurrencyAndAmount - Optional 0..1 |
MarginResult | Provide details on the margin result taking into consideration the total margin amount and the minimum requirements deposit. | IMarginResult1Choice - Optional 0..1 |
ReportDetails building block
Provides the margin report details. Provides the details on the margin report per margin account, and optionally per non-clearing member. For comparison, see the ISO20022 official specification
classDiagram direction tb %% MarginReport2 recursion level 0 with max 1 class MarginReport2{ CollateralisedMarginAccountIndicator IsoYesNoIndicator } MarginReport2 *-- "0..0" IMarginProductType1Choice : MarginProduct MarginReport2 *-- "1..1" SecuritiesAccount18 : MarginAccount MarginReport2 *-- "0..0" PartyIdentificationAndAccount31 : NonClearingMember MarginReport2 *-- "0..1" MarginCalculation1 : MarginCalculationSummary MarginReport2 *-- "1..0" MarginCalculation2 : MarginCalculation %% IMarginProductType1Choice recursion level 1 with max 1 %% SecuritiesAccount18 recursion level 1 with max 1 class SecuritiesAccount18{ Identification IsoMax35Text Type ClearingAccountType1Code Name IsoMax70Text } %% PartyIdentificationAndAccount31 recursion level 1 with max 1 PartyIdentificationAndAccount31 *-- "1..1" IPartyIdentification33Choice : Identification PartyIdentificationAndAccount31 *-- "0..1" AlternatePartyIdentification4 : AlternateIdentification PartyIdentificationAndAccount31 *-- "0..1" PartyTextInformation1 : AdditionalInformation PartyIdentificationAndAccount31 *-- "0..1" SecuritiesAccount18 : ClearingAccount %% MarginCalculation1 recursion level 1 with max 1 class MarginCalculation1{ MinimumRequirementDeposit IsoActiveCurrencyAndAmount } MarginCalculation1 *-- "1..1" AmountAndDirection20 : TotalMarginAmount MarginCalculation1 *-- "0..0" Collateral6 : CollateralOnDeposit MarginCalculation1 *-- "0..1" IMarginResult1Choice : MarginResult %% MarginCalculation2 recursion level 1 with max 1 class MarginCalculation2{ MinimumRequirementDeposit IsoActiveCurrencyAndAmount } MarginCalculation2 *-- "0..1" SecurityIdentification14 : FinancialInstrumentIdentification MarginCalculation2 *-- "0..1" Amount2 : ExposureAmount MarginCalculation2 *-- "1..1" AmountAndDirection20 : TotalMarginAmount MarginCalculation2 *-- "0..0" Collateral6 : CollateralOnDeposit MarginCalculation2 *-- "0..1" IMarginResult1Choice : MarginResult MarginCalculation2 *-- "0..1" Margin3 : MarginTypeAmount
MarginReport2 members
Member name | Description | Data Type / Multiplicity |
---|---|---|
MarginProduct | Specifies if the margin is related to equities or fixed income. | IMarginProductType1Choice - Unknown 0..0 |
MarginAccount | Identifies the clearing member’s account. | SecuritiesAccount18 - Required 1..1 |
CollateralisedMarginAccountIndicator | Used to indicate whether the reported margin account is collateralised or not. If not collateralised, the account is configured for informational reporting. | IsoYesNoIndicator - Optional 0..1 |
NonClearingMember | Provides details about the non clearing member identification and account. | PartyIdentificationAndAccount31 - Unknown 0..0 |
MarginCalculationSummary | Provides the margin calculation summary per margin account. | MarginCalculation1 - Optional 0..1 |
MarginCalculation | Provides the margin details such as the exposure amount and the initial margin. | MarginCalculation2 - Unknown 1..0 |
SupplementaryData building block
Additional information that can’t be captured in the structured fields and/or any other specific block. Additional information that can not be captured in the structured fields and/or any other specific block. For comparison, see the ISO20022 official specification
classDiagram direction tb %% SupplementaryData1 recursion level 0 with max 1 class SupplementaryData1{ PlaceAndName IsoMax350Text } SupplementaryData1 *-- "1..1" IsoSupplementaryDataEnvelope1 : Envelope %% IsoSupplementaryDataEnvelope1 recursion level 1 with max 1
SupplementaryData1 members
Member name | Description | Data Type / Multiplicity |
---|---|---|
PlaceAndName | Unambiguous reference to the location where the supplementary data must be inserted in the message instance. In the case of XML, this is expressed by a valid XPath. | IsoMax350Text - Optional 0..1 |
Envelope | Technical element wrapping the supplementary data. | IsoSupplementaryDataEnvelope1 - Required 1..1 |
Extensibility and generalization considerations
To facilitate generalized design patterns in the system, the MarginReportV02 implementation follows a specific implementaiton pattern. First of all, MarginReportV02 impleemnts IOuterRecord indicating it is the outermost logical part of the message definition. Like all message wrappers, MarginReportV02Document implements IOuterDocument. Because MarginReportV02 implements IOuterDocument, it is a suitable template parameter for IOuterDocument, and causes the internal ‘Message’ to be of type MarginReportV02.
classDiagram class IOuterRecord MarginReportV02 --|> IOuterRecord : Implements MarginReportV02Document --|> IOuterDocument~MarginReportV02~ : Implements class IOuterDocument~MarginReportV02~ { MarginReportV02 Message }
Document wrapper for serialization
The only real purpose MarginReportV02Document serves is to cause the document to be serialized into the ‘urn:iso:std:iso:20022:tech:xsd:secl.005.001.02’ namespace. Therefore, it will probably be the usual practice to build the message and construct this wrapper at the last minute using MarginReportV02.ToDocument() method. The returned MarginReportV02Document value will serialize correctly according to ISO 20022 standards.
classDiagram MarginReportV02Document *-- MarginReportV02 : Document
Sample of message format
This is an abbreviated version of what the message should look like.
<Document xmlns="urn:iso:std:iso:20022:tech:xsd:secl.005.001.02">
<MrgnRpt>
<RptParams>
<!-- ReportParameters inner content -->
</RptParams>
<Pgntn>
<!-- Pagination inner content -->
</Pgntn>
<ClrMmb>
<!-- ClearingMember inner content -->
</ClrMmb>
<RptSummry>
<!-- ReportSummary inner content -->
</RptSummry>
<RptDtls>
<!-- ReportDetails inner content -->
</RptDtls>
<SplmtryData>
<!-- SupplementaryData inner content -->
</SplmtryData>
</MrgnRpt>
</Document>
Data from ISO specification
This is the technical data from the specification document.
<messageDefinition
xmi:id="_-hxndaMOEeCojJW5vEuTEQ_-1836673720"
name="MarginReportV02"
definition="Scope
The MarginReport message is sent by the central counterparty (CCP) to a clearing member to report on:
- the exposure resulting from the trade positions
- the value of the collateral held by the CCP (market value of this collateral) and
- the resulting difference representing the risk encountered by the CCP.

The message definition is intended for use with the ISO20022 Business Application Header.

Usage
There are four possibilities to report the above information. Indeed, the margin report may be structured as follows:
- per clearing member: the report will only show the information for the clearing member, or
- per clearing member and per financial instrument: the report will show the information for the clearing member, structured by security identification, or
- per clearing member and per non clearing member: the report will show the information for the clearing member (that is for global clearing member only) structured by non clearing member(s), or
- per clearing member and per non clearing member and per security identification: the report will show the information for the clearing member (global clearing member only) structured by non clearing member(s) and by security identification."
registrationStatus="Registered"
messageSet="_vZbScWwCEeSvG_1tXIrsqQ"
xmlTag="MrgnRpt"
rootElement="Document"
xmlns:xmi="http://www.omg.org/XMI">
<messageBuildingBlock
xmi:id="_-hxndqMOEeCojJW5vEuTEQ_-1337157018"
name="ReportParameters"
definition="Provides parameters of the margin report such as the creation date and time, the report currency or the calculation date and time."
registrationStatus="Provisionally Registered"
maxOccurs="1"
minOccurs="1"
xmlTag="RptParams"
complexType="_QlScaNp-Ed-ak6NoX_4Aeg_1048103905" />
<messageBuildingBlock
xmi:id="_-h7YcKMOEeCojJW5vEuTEQ_1347382157"
name="Pagination"
definition="Page number of the message (within a report) and continuation indicator to indicate that the report is to continue or that the message is the last page of the report."
registrationStatus="Provisionally Registered"
maxOccurs="1"
minOccurs="1"
xmlTag="Pgntn"
complexType="_Q65gBdp-Ed-ak6NoX_4Aeg_-21330104" />
<messageBuildingBlock
xmi:id="_-h7YcaMOEeCojJW5vEuTEQ_1960737925"
name="ClearingMember"
definition="Provides the identification of the account owner, that is the clearing member (individual clearing member or general clearing member)."
registrationStatus="Provisionally Registered"
maxOccurs="1"
minOccurs="1"
xmlTag="ClrMmb"
complexType="_QPYd4dp-Ed-ak6NoX_4Aeg_-1523931735" />
<messageBuildingBlock
xmi:id="_-h7YcqMOEeCojJW5vEuTEQ_-1484768145"
name="ReportSummary"
definition="Provides details on the valuation of the collateral on deposit."
registrationStatus="Provisionally Registered"
maxOccurs="1"
minOccurs="0"
xmlTag="RptSummry"
complexType="_-dwqLKMOEeCojJW5vEuTEQ_1443454160" />
<messageBuildingBlock
xmi:id="_-h7Yc6MOEeCojJW5vEuTEQ_963665572"
name="ReportDetails"
definition="Provides the margin report details."
registrationStatus="Provisionally Registered"
minOccurs="1"
xmlTag="RptDtls"
complexType="_-eDlF6MOEeCojJW5vEuTEQ_-651188683" />
<messageBuildingBlock
xmi:id="_-h7YdKMOEeCojJW5vEuTEQ_-33406781"
name="SupplementaryData"
definition="Additional information that can't be captured in the structured fields and/or any other specific block."
registrationStatus="Provisionally Registered"
minOccurs="0"
xmlTag="SplmtryData"
complexType="_Qn0zC9p-Ed-ak6NoX_4Aeg_468227563" />
<messageDefinitionIdentifier
businessArea="secl"
messageFunctionality="005"
flavour="001"
version="02" />
</messageDefinition>
ISO Building Blocks
The following items are used as building blocks to construct this message.