MarginReportV02

secl.005.001.02

Scope The MarginReport message is sent by the central counterparty (CCP) to a clearing member to report on:

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:

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&#xD;&#xA;The MarginReport message is sent by the central counterparty (CCP) to a clearing member to report on:&#xD;&#xA;- the exposure resulting from the trade positions&#xD;&#xA;- the value of the collateral held by the CCP (market value of this collateral) and&#xD;&#xA;- the resulting difference representing the risk encountered by the CCP.&#xD;&#xA;&#xD;&#xA;The message definition is intended for use with the ISO20022 Business Application Header.&#xD;&#xA;&#xD;&#xA;Usage&#xD;&#xA;There are four possibilities to report the above information. Indeed, the margin report may be structured as follows:&#xD;&#xA;- per clearing member: the report will only show the information for the clearing member, or&#xD;&#xA;- per clearing member and per financial instrument: the report will show the information for the clearing member, structured by security identification, or&#xD;&#xA;- 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&#xD;&#xA;- 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.