trea.004.001.02
Scope The CreateNonDeliverableForwardValuation message is sent by a participant to a central system or to a counterparty to notify the valuation of a non deliverable trade. Usage The two trading parties will both send similar notifications to the central settlement system and the central settlement system will send notifications to both.
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 %% CreateNonDeliverableForwardValuationV02 recursion level 0 with max 0 CreateNonDeliverableForwardValuationV02 *-- "1..1" TradeAgreement1 : TradeInformation CreateNonDeliverableForwardValuationV02 *-- "1..1" TradePartyIdentification3 : TradingSideIdentification CreateNonDeliverableForwardValuationV02 *-- "1..1" TradePartyIdentification3 : CounterpartySideIdentification CreateNonDeliverableForwardValuationV02 *-- "1..1" AmountsAndValueDate1 : TradeAmounts CreateNonDeliverableForwardValuationV02 *-- "1..1" ValuationData2 : ValuationInformation CreateNonDeliverableForwardValuationV02 *-- "1..1" AgreedRate1 : ValuationRate
Now, we will zero-in one-by-one on each of these building blocks.
TradeInformation building block
Provides identification and date of the valuation of the non deliverable trade which is created. Date and identification of a trade. For comparison, see the ISO20022 official specification
classDiagram direction tb %% TradeAgreement1 recursion level 0 with max 1 class TradeAgreement1{ TradeDate IsoISODate NotificationIdentification IsoMax35Text CommonReference IsoMax35Text }
TradeAgreement1 members
Member name | Description | Data Type / Multiplicity |
---|---|---|
TradeDate | Date at which the trading parties agree on a treasury trade. | IsoISODate - Required 1..1 |
NotificationIdentification | Identification of a notification.This identification must be unique amongst all notifications of same type confirmed by the same party. | IsoMax35Text - Required 1..1 |
CommonReference | Reference common to the parties of a trade. | IsoMax35Text - Optional 0..1 |
TradingSideIdentification building block
Specifies the trading side of the valuation of the non deliverable trade which is created. Entity involved in an activity. For comparison, see the ISO20022 official specification
classDiagram direction tb %% TradePartyIdentification3 recursion level 0 with max 1 TradePartyIdentification3 *-- "0..1" FundIdentification2 : FundInformation TradePartyIdentification3 *-- "1..1" IPartyIdentification8Choice : SubmittingParty TradePartyIdentification3 *-- "1..1" IPartyIdentification8Choice : TradeParty %% FundIdentification2 recursion level 1 with max 1 class FundIdentification2{ FundIdentification IsoMax35Text AccountIdentificationWithCustodian IsoMax35Text } FundIdentification2 *-- "0..1" IPartyIdentification8Choice : CustodianIdentification %% IPartyIdentification8Choice recursion level 1 with max 1 %% IPartyIdentification8Choice recursion level 1 with max 1
TradePartyIdentification3 members
Member name | Description | Data Type / Multiplicity |
---|---|---|
FundInformation | Identifies the fund which is one of the parties in a treasury trade. | FundIdentification2 - Optional 0..1 |
SubmittingParty | Specifies the party which submits a treasury trade to a matching system or to a settlement system or to a counterparty. | IPartyIdentification8Choice - Required 1..1 |
TradeParty | Specifies the party which originated a treasury trade. This party may be the same as the submitting party. | IPartyIdentification8Choice - Required 1..1 |
CounterpartySideIdentification building block
Specifies the counterparty of the valuation of the non deliverable trade which is created. Entity involved in an activity. For comparison, see the ISO20022 official specification
classDiagram direction tb %% TradePartyIdentification3 recursion level 0 with max 1 TradePartyIdentification3 *-- "0..1" FundIdentification2 : FundInformation TradePartyIdentification3 *-- "1..1" IPartyIdentification8Choice : SubmittingParty TradePartyIdentification3 *-- "1..1" IPartyIdentification8Choice : TradeParty %% FundIdentification2 recursion level 1 with max 1 class FundIdentification2{ FundIdentification IsoMax35Text AccountIdentificationWithCustodian IsoMax35Text } FundIdentification2 *-- "0..1" IPartyIdentification8Choice : CustodianIdentification %% IPartyIdentification8Choice recursion level 1 with max 1 %% IPartyIdentification8Choice recursion level 1 with max 1
TradePartyIdentification3 members
Member name | Description | Data Type / Multiplicity |
---|---|---|
FundInformation | Identifies the fund which is one of the parties in a treasury trade. | FundIdentification2 - Optional 0..1 |
SubmittingParty | Specifies the party which submits a treasury trade to a matching system or to a settlement system or to a counterparty. | IPartyIdentification8Choice - Required 1..1 |
TradeParty | Specifies the party which originated a treasury trade. This party may be the same as the submitting party. | IPartyIdentification8Choice - Required 1..1 |
TradeAmounts building block
Specifies the amounts of the valuation of the non deliverable trade which is created. Specifies the value date and the amounts traded in a foreign exchange transaction. For comparison, see the ISO20022 official specification
classDiagram direction tb %% AmountsAndValueDate1 recursion level 0 with max 1 class AmountsAndValueDate1{ TradingSideBuyAmount IsoActiveOrHistoricCurrencyAndAmount TradingSideSellAmount IsoActiveOrHistoricCurrencyAndAmount SettlementDate IsoISODate }
AmountsAndValueDate1 members
Member name | Description | Data Type / Multiplicity |
---|---|---|
TradingSideBuyAmount | Currency and amount bought in a foreign exchange trade. | IsoActiveOrHistoricCurrencyAndAmount - Required 1..1 |
TradingSideSellAmount | Currency and amount sold in a foreign exchange trade. | IsoActiveOrHistoricCurrencyAndAmount - Required 1..1 |
SettlementDate | Date on which the trade is settled, ie, the amounts are due. | IsoISODate - Required 1..1 |
ValuationInformation building block
Specifies the valuation information of the valuation of the non deliverable trade which is created. Set of data which contains the link to the opening of the non deliverable trade and supplementary information on its valuation. For comparison, see the ISO20022 official specification
classDiagram direction tb %% ValuationData2 recursion level 0 with max 1 class ValuationData2{ ValuationReference IsoMax35Text SettlementCurrency ActiveOrHistoricCurrencyCode AdditionalValuationInformation IsoMax140Text } ValuationData2 *-- "0..1" IPartyIdentification8Choice : SettlementParty %% IPartyIdentification8Choice recursion level 1 with max 1
ValuationData2 members
Member name | Description | Data Type / Multiplicity |
---|---|---|
ValuationReference | Reference to the latest trade identification of the NDF opening trade. | IsoMax35Text - Required 1..1 |
SettlementCurrency | Specifies the currency in which the non deliverable trade has to be settled ie the deliverable currency. | ActiveOrHistoricCurrencyCode - Optional 0..1 |
AdditionalValuationInformation | Free format text that may contain information on the valuation such as the currency, the place, the time or the source of the rate. | IsoMax140Text - Optional 0..1 |
SettlementParty | Party through which the settlement will take place. It may contain the BIC of a central settlement system eg CLSBUS33. | IPartyIdentification8Choice - Optional 0..1 |
ValuationRate building block
Specifies the valuation rate of the valuation of the non deliverable trade which is created. Information needed to process a currency exchange or conversion. For comparison, see the ISO20022 official specification
classDiagram direction tb %% AgreedRate1 recursion level 0 with max 1 class AgreedRate1{ ExchangeRate IsoBaseOneRate UnitCurrency CurrencyCode QuotedCurrency CurrencyCode }
AgreedRate1 members
Member name | Description | Data Type / Multiplicity |
---|---|---|
ExchangeRate | The value of one currency expressed in relation to another currency. ExchangeRate expresses the ratio between UnitCurrency and QuotedCurrency (ExchangeRate = UnitCurrency/QuotedCurrency). | IsoBaseOneRate - Required 1..1 |
UnitCurrency | Currency in which the rate of exchange is expressed in a currency exchange. In the example 1GBP = xxxCUR, the unit currency is GBP. | CurrencyCode - Optional 0..1 |
QuotedCurrency | Currency into which the base currency is converted, in a currency exchange. | CurrencyCode - Optional 0..1 |
Extensibility and generalization considerations
To facilitate generalized design patterns in the system, the CreateNonDeliverableForwardValuationV02 implementation follows a specific implementaiton pattern. First of all, CreateNonDeliverableForwardValuationV02 impleemnts IOuterRecord indicating it is the outermost logical part of the message definition. Like all message wrappers, CreateNonDeliverableForwardValuationV02Document implements IOuterDocument. Because CreateNonDeliverableForwardValuationV02 implements IOuterDocument, it is a suitable template parameter for IOuterDocument, and causes the internal ‘Message’ to be of type CreateNonDeliverableForwardValuationV02.
classDiagram class IOuterRecord CreateNonDeliverableForwardValuationV02 --|> IOuterRecord : Implements CreateNonDeliverableForwardValuationV02Document --|> IOuterDocument~CreateNonDeliverableForwardValuationV02~ : Implements class IOuterDocument~CreateNonDeliverableForwardValuationV02~ { CreateNonDeliverableForwardValuationV02 Message }
Document wrapper for serialization
The only real purpose CreateNonDeliverableForwardValuationV02Document serves is to cause the document to be serialized into the ‘urn:iso:std:iso:20022:tech:xsd:trea.004.001.02’ namespace. Therefore, it will probably be the usual practice to build the message and construct this wrapper at the last minute using CreateNonDeliverableForwardValuationV02.ToDocument() method. The returned CreateNonDeliverableForwardValuationV02Document value will serialize correctly according to ISO 20022 standards.
classDiagram CreateNonDeliverableForwardValuationV02Document *-- CreateNonDeliverableForwardValuationV02 : 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:trea.004.001.02">
<CretNDFValtnV02>
<TradInf>
<!-- TradeInformation inner content -->
</TradInf>
<TradgSdId>
<!-- TradingSideIdentification inner content -->
</TradgSdId>
<CtrPtySdId>
<!-- CounterpartySideIdentification inner content -->
</CtrPtySdId>
<TradAmts>
<!-- TradeAmounts inner content -->
</TradAmts>
<ValtnInf>
<!-- ValuationInformation inner content -->
</ValtnInf>
<ValtnRate>
<!-- ValuationRate inner content -->
</ValtnRate>
</CretNDFValtnV02>
</Document>
Data from ISO specification
This is the technical data from the specification document.
<messageDefinition
xmi:id="_PNYUONE8Ed-BzquC8wXy7w_1806193871"
name="CreateNonDeliverableForwardValuationV02"
definition="Scope
The CreateNonDeliverableForwardValuation message is sent by a participant to a central system or to a counterparty to notify the valuation of a non deliverable trade.
Usage
The two trading parties will both send similar notifications to the central settlement system and the central settlement system will send notifications to both."
registrationStatus="Registered"
messageSet="_wRx2x02rEeG_I4xRYCA_7g"
xmlTag="CretNDFValtnV02"
rootElement="Document"
xmlns:xmi="http://www.omg.org/XMI">
<messageBuildingBlock
xmi:id="_PNYUOdE8Ed-BzquC8wXy7w_1867450436"
name="TradeInformation"
definition="Provides identification and date of the valuation of the non deliverable trade which is created."
registrationStatus="Provisionally Registered"
maxOccurs="1"
minOccurs="1"
xmlTag="TradInf"
complexType="_TJ8xgdp-Ed-ak6NoX_4Aeg_290674431" />
<messageBuildingBlock
xmi:id="_PNYUOtE8Ed-BzquC8wXy7w_1743430709"
name="TradingSideIdentification"
definition="Specifies the trading side of the valuation of the non deliverable trade which is created."
registrationStatus="Provisionally Registered"
maxOccurs="1"
minOccurs="1"
xmlTag="TradgSdId"
complexType="_PdKWsdp-Ed-ak6NoX_4Aeg_-1580495666" />
<messageBuildingBlock
xmi:id="_PNYUO9E8Ed-BzquC8wXy7w_2094371836"
name="CounterpartySideIdentification"
definition="Specifies the counterparty of the valuation of the non deliverable trade which is created."
registrationStatus="Provisionally Registered"
maxOccurs="1"
minOccurs="1"
xmlTag="CtrPtySdId"
complexType="_PdKWsdp-Ed-ak6NoX_4Aeg_-1580495666" />
<messageBuildingBlock
xmi:id="_PNheINE8Ed-BzquC8wXy7w_1514664860"
name="TradeAmounts"
definition="Specifies the amounts of the valuation of the non deliverable trade which is created."
registrationStatus="Provisionally Registered"
maxOccurs="1"
minOccurs="1"
xmlTag="TradAmts"
complexType="_TITy0tp-Ed-ak6NoX_4Aeg_290674075" />
<messageBuildingBlock
xmi:id="_PNheIdE8Ed-BzquC8wXy7w_1542371945"
name="ValuationInformation"
definition="Specifies the valuation information of the valuation of the non deliverable trade which is created."
registrationStatus="Provisionally Registered"
maxOccurs="1"
minOccurs="1"
xmlTag="ValtnInf"
complexType="_TIKBxNp-Ed-ak6NoX_4Aeg_-1153647347" />
<messageBuildingBlock
xmi:id="_PNheItE8Ed-BzquC8wXy7w_1810190650"
name="ValuationRate"
definition="Specifies the valuation rate of the valuation of the non deliverable trade which is created."
registrationStatus="Provisionally Registered"
maxOccurs="1"
minOccurs="1"
xmlTag="ValtnRate"
complexType="_QLW5ctp-Ed-ak6NoX_4Aeg_290674057" />
<messageDefinitionIdentifier
businessArea="trea"
messageFunctionality="004"
flavour="001"
version="02" />
</messageDefinition>
ISO Building Blocks
The following items are used as building blocks to construct this message.