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:
- during the day (to report trades execution by batch) or
- as an end of day report.
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
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:
- during the day (to report trades execution by batch) or
- 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.