TradeLegStatementV03

secl.003.001.03

Scope The TradeLegStatement message is sent by the central counterparty (CCP) to a clearing member to report all trades that have been executed by the trading platform.

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

Usage The TradeLegStatement message may be either sent:

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
%% TradeLegStatementV03 recursion level 0 with max 0
TradeLegStatementV03 *-- "1..1" Statement31 : StatementParameters
TradeLegStatementV03 *-- "1..1" Pagination : Pagination
TradeLegStatementV03 *-- "1..1" IPartyIdentification35Choice : ClearingMember
TradeLegStatementV03 *-- "0..1" SecuritiesAccount18 : ClearingAccount
TradeLegStatementV03 *-- "1..1" TradeLegStatement3 : StatementDetails
TradeLegStatementV03 *-- "0..1" SupplementaryData1 : SupplementaryData
  

Now, we will zero-in one-by-one on each of these building blocks.

StatementParameters building block

Provides various statement parameters such as the statement identification, the statement date and time or the statement frequency. Provides statement details such as the account owner identification (ie, the clearing member identification) and optionaly the non clearing member identification, the clearing account or the list of trade legs. For comparison, see the ISO20022 official specification

classDiagram
   direction tb
%% Statement31 recursion level 0 with max 1
class Statement31{
    StatementIdentification IsoMax35Text
    UpdateType StatementUpdateType1Code
    Frequency EventFrequency6Code
    ReportNumber IsoExact5NumericText
    ActivityIndicator IsoYesNoIndicator
}
Statement31 *-- "1..1" IDateAndDateTimeChoice : StatementDateAndTime
%% IDateAndDateTimeChoice recursion level 1 with max 1
  

Statement31 members

Member name Description Data Type / Multiplicity
StatementIdentification Identification that is common to all pages of a statement. IsoMax35Text - Required 1..1
StatementDateAndTime Date of the statement. IDateAndDateTimeChoice - Required 1..1
UpdateType Indicates whether the statement is complete or contains changes only. StatementUpdateType1Code - Required 1..1
Frequency Frequency of the statement. EventFrequency6Code - Required 1..1
ReportNumber Sequential number of the statement. IsoExact5NumericText - Optional 0..1
ActivityIndicator Indicates whether there is activity or information update reported in the statement. IsoYesNoIndicator - Required 1..1

Pagination building block

Page number of the message (within a statement) and continuation indicator to indicate that the statement is to continue or that the message is the last page of the statement. 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

ClearingAccount building block

Identifies the clearing member account at the Central counterparty through which the trade must be cleared (sometimes called position account). Account to or from which a securities entry is made. For comparison, see the ISO20022 official specification

classDiagram
   direction tb
%% SecuritiesAccount18 recursion level 0 with max 1
class SecuritiesAccount18{
    Identification IsoMax35Text
    Type ClearingAccountType1Code
    Name IsoMax70Text
}
  

SecuritiesAccount18 members

Member name Description Data Type / Multiplicity
Identification Unambiguous identification for the account between the account owner and the account servicer. IsoMax35Text - Required 1..1
Type Specifies if the account is a House, a Client or a Liquidity Provider (Market Maker) account. ClearingAccountType1Code - Required 1..1
Name Description of the account. IsoMax70Text - Optional 0..1

StatementDetails building block

Provides the statement details. Provides the trade leg statement details. For comparison, see the ISO20022 official specification

classDiagram
   direction tb
%% TradeLegStatement3 recursion level 0 with max 1
TradeLegStatement3 *-- "0..1" SecuritiesAccount18 : ClearingAccount
TradeLegStatement3 *-- "0..1" IPartyIdentification35Choice : ClearingSegment
TradeLegStatement3 *-- "0..1" PartyIdentificationAndAccount31 : NonClearingMember
TradeLegStatement3 *-- "1..0" TradeLeg9 : TradeLegsDetails
%% SecuritiesAccount18 recursion level 1 with max 1
class SecuritiesAccount18{
    Identification IsoMax35Text
    Type ClearingAccountType1Code
    Name IsoMax70Text
}
%% IPartyIdentification35Choice recursion level 1 with max 1
%% 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
%% TradeLeg9 recursion level 1 with max 1
class TradeLeg9{
    TradeLegIdentification IsoMax35Text
    TradeIdentification IsoMax35Text
    TradeExecutionIdentification IsoMax35Text
    OrderIdentification IsoMax35Text
    AllocationIdentification IsoMax35Text
    TradeDate IsoISODateTime
    TransactionDateAndTime IsoISODateTime
    TradingCurrency CurrencyCode
    BuySellIndicator Side1Code
    TradeType TradeType1Code
    DerivativeRelatedTrade IsoYesNoIndicator
    TradeRegistrationOrigin IsoMax35Text
    TradingCapacity TradingCapacity5Code
    TradePostingCode TradePosting1Code
}
TradeLeg9 *-- "0..1" SecuritiesAccount19 : MarginAccount
TradeLeg9 *-- "0..1" SecuritiesAccount19 : DeliveryAccount
TradeLeg9 *-- "0..1" PartyIdentificationAndAccount31 : NonClearingMember
TradeLeg9 *-- "0..1" IDateFormat15Choice : SettlementDate
TradeLeg9 *-- "1..1" SecurityIdentification14 : FinancialInstrumentIdentification
TradeLeg9 *-- "1..1" IFinancialInstrumentQuantity1Choice : TradeQuantity
TradeLeg9 *-- "1..1" Price4 : DealPrice
TradeLeg9 *-- "0..1" AmountAndDirection21 : AccruedInterestAmount
TradeLeg9 *-- "1..1" MarketIdentification84 : PlaceOfTrade
TradeLeg9 *-- "0..1" MarketIdentification85 : PlaceOfListing
TradeLeg9 *-- "0..1" PartyIdentificationAndAccount100 : Broker
TradeLeg9 *-- "1..1" IPartyIdentification35Choice : TradingParty
TradeLeg9 *-- "0..1" SecuritiesAccount19 : TradingPartyAccount
TradeLeg9 *-- "0..1" ISafekeepingPlaceFormat7Choice : SafekeepingPlace
TradeLeg9 *-- "0..1" SecuritiesAccount19 : SafekeepingAccount
TradeLeg9 *-- "0..1" Settlement1 : SettlementDetails
TradeLeg9 *-- "0..1" Clearing4 : ClearingDetails
TradeLeg9 *-- "0..1" AmountAndDirection21 : GrossAmount
  

TradeLegStatement3 members

Member name Description Data Type / Multiplicity
ClearingAccount Identifies the clearing member account at the Central counterparty through which the trade must be cleared (sometimes called position account). SecuritiesAccount18 - Optional 0..1
ClearingSegment Clearing organisation that will clear the trade. Note: This field allows Clearing Member Firm to segregate flows coming from clearing counterparty’s clearing system. Indeed, Clearing Member Firms receive messages from the same system (same sender) and this field allows them to know if the message is related to equities or derivatives. IPartyIdentification35Choice - Optional 0..1
NonClearingMember Provides the identification for the non-clearing member. PartyIdentificationAndAccount31 - Optional 0..1
TradeLegsDetails Provides the lists of all trades during the period in consideration for the statement. TradeLeg9 - Unknown 1..0

SupplementaryData building block

Additional information that can not 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 TradeLegStatementV03 implementation follows a specific implementaiton pattern. First of all, TradeLegStatementV03 impleemnts IOuterRecord indicating it is the outermost logical part of the message definition. Like all message wrappers, TradeLegStatementV03Document implements IOuterDocument. Because TradeLegStatementV03 implements IOuterDocument, it is a suitable template parameter for IOuterDocument, and causes the internal ‘Message’ to be of type TradeLegStatementV03.

classDiagram
    class IOuterRecord
    TradeLegStatementV03 --|> IOuterRecord : Implements
    TradeLegStatementV03Document --|> IOuterDocument~TradeLegStatementV03~ : Implements
    class IOuterDocument~TradeLegStatementV03~ {
        TradeLegStatementV03 Message
     }
  

Document wrapper for serialization

The only real purpose TradeLegStatementV03Document serves is to cause the document to be serialized into the ‘urn:iso:std:iso:20022:tech:xsd:secl.003.001.03’ namespace. Therefore, it will probably be the usual practice to build the message and construct this wrapper at the last minute using TradeLegStatementV03.ToDocument() method. The returned TradeLegStatementV03Document value will serialize correctly according to ISO 20022 standards.

classDiagram
    TradeLegStatementV03Document *-- TradeLegStatementV03 : 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.003.001.03">
    <TradLegStmt>
        <StmtParams>
            <!-- StatementParameters inner content -->
        </StmtParams>
        <Pgntn>
            <!-- Pagination inner content -->
        </Pgntn>
        <ClrMmb>
            <!-- ClearingMember inner content -->
        </ClrMmb>
        <ClrAcct>
            <!-- ClearingAccount inner content -->
        </ClrAcct>
        <StmtDtls>
            <!-- StatementDetails inner content -->
        </StmtDtls>
        <SplmtryData>
            <!-- SupplementaryData inner content -->
        </SplmtryData>
    </TradLegStmt>
</Document>

Data from ISO specification

This is the technical data from the specification document.

<messageDefinition
  xmi:id="_DlZHIS0mEeSRe9rElPHBfg"
  name="TradeLegStatementV03"
  definition="Scope&#xD;&#xA;The TradeLegStatement message is sent by the central counterparty (CCP) to a clearing member to report all trades that have been executed by the trading platform.&#xD;&#xA;&#xD;&#xA;The message definition is intended for use with the ISO20022 Business Application Header.&#xD;&#xA;&#xD;&#xA;Usage&#xD;&#xA;The TradeLegStatement message may be either sent:&#xD;&#xA;- during the day (to report trades execution by batch) or&#xD;&#xA;- as an end of day report."
  registrationStatus="Registered"
  messageSet="_vZbScWwCEeSvG_1tXIrsqQ"
  xmlTag="TradLegStmt"
  rootElement="Document"
  xmlns:xmi="http://www.omg.org/XMI">
  <messageBuildingBlock
    xmi:id="_DlZuMS0mEeSRe9rElPHBfg"
    name="StatementParameters"
    definition="Provides various statement parameters such as the statement identification, the statement date and time or the statement frequency."
    registrationStatus="Provisionally Registered"
    maxOccurs="1"
    minOccurs="1"
    xmlTag="StmtParams"
    complexType="_QllXWNp-Ed-ak6NoX_4Aeg_530575505" />
  <messageBuildingBlock
    xmi:id="_DlZuMy0mEeSRe9rElPHBfg"
    name="Pagination"
    definition="Page number of the message (within a statement) and continuation indicator to indicate that the statement is to continue or that the message is the last page of the statement."
    registrationStatus="Provisionally Registered"
    maxOccurs="1"
    minOccurs="1"
    xmlTag="Pgntn"
    complexType="_Q65gBdp-Ed-ak6NoX_4Aeg_-21330104" />
  <messageBuildingBlock
    xmi:id="_DlZuNS0mEeSRe9rElPHBfg"
    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="_DlZuNy0mEeSRe9rElPHBfg"
    name="ClearingAccount"
    definition="Identifies the clearing member account at the Central counterparty through which the trade must be cleared (sometimes called position account)."
    registrationStatus="Provisionally Registered"
    maxOccurs="1"
    minOccurs="0"
    xmlTag="ClrAcct"
    complexType="_T_SeENp-Ed-ak6NoX_4Aeg_924781717" />
  <messageBuildingBlock
    xmi:id="_DlZuOS0mEeSRe9rElPHBfg"
    name="StatementDetails"
    definition="Provides the statement details."
    registrationStatus="Provisionally Registered"
    minOccurs="1"
    xmlTag="StmtDtls"
    complexType="_dEWFES6XEeSQQqw1BT_aMg" />
  <messageBuildingBlock
    xmi:id="_DlZuOy0mEeSRe9rElPHBfg"
    name="SupplementaryData"
    definition="Additional information that can not 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="003"
    flavour="001"
    version="03" />
</messageDefinition>

ISO Building Blocks

The following items are used as building blocks to construct this message.