trea.009.001.02
Scope The CreateForeignExchangeOption message is sent by a participant to a central system or to a counterparty to confirm a foreign currency option contract. Usage Both trading parties will send a notification to the central settlement system. The central settlement system will then send a ForeignExchangeOptionNotification to both. This message is only suitable for Simple (i.e. not Barrier) Vanilla (i.e. not Binary, Digital, Notouch) Foreign Exchange Options.
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 %% CreateForeignExchangeOptionV02 recursion level 0 with max 0 CreateForeignExchangeOptionV02 *-- "1..1" TradeAgreement1 : TradeInformation CreateForeignExchangeOptionV02 *-- "1..1" TradePartyIdentification4 : TradingSideIdentification CreateForeignExchangeOptionV02 *-- "1..1" TradePartyIdentification4 : CounterpartySideIdentification CreateForeignExchangeOptionV02 *-- "1..1" Option3 : Option
Now, we will zero-in one-by-one on each of these building blocks.
TradeInformation building block
Provides identification and date of the foreign exchange option 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 currency option trade which is created. Entity involved in an activity. For comparison, see the ISO20022 official specification
classDiagram direction tb %% TradePartyIdentification4 recursion level 0 with max 1 class TradePartyIdentification4{ BuyerOrSellerIndicator OptionParty1Code } TradePartyIdentification4 *-- "0..1" FundIdentification2 : FundInformation TradePartyIdentification4 *-- "1..1" IPartyIdentification8Choice : SubmittingParty TradePartyIdentification4 *-- "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
TradePartyIdentification4 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 |
BuyerOrSellerIndicator | Specifies the party which is the buyer or the seller. | OptionParty1Code - Required 1..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 currency option trade which is created. Entity involved in an activity. For comparison, see the ISO20022 official specification
classDiagram direction tb %% TradePartyIdentification4 recursion level 0 with max 1 class TradePartyIdentification4{ BuyerOrSellerIndicator OptionParty1Code } TradePartyIdentification4 *-- "0..1" FundIdentification2 : FundInformation TradePartyIdentification4 *-- "1..1" IPartyIdentification8Choice : SubmittingParty TradePartyIdentification4 *-- "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
TradePartyIdentification4 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 |
BuyerOrSellerIndicator | Specifies the party which is the buyer or the seller. | OptionParty1Code - Required 1..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 |
Option building block
Specifies the parameters of the currency option which is sold by the trading side. List of elements which provide the parameters of an option trade. For comparison, see the ISO20022 official specification
classDiagram direction tb %% Option3 recursion level 0 with max 1 class Option3{ ExerciseStyle OptionStyle2Code EarliestExerciseDate IsoISODate ExpiryDateAndTime IsoISODateTime ExpiryLocation IsoMax4AlphaNumericText SettlementType SettlementType1Code AdditionalOptionInformation IsoMax140Text } Option3 *-- "1..1" AmountsAndValueDate2 : OptionAmounts Option3 *-- "1..1" AgreedRate1 : StrikePrice Option3 *-- "1..1" PremiumAmount2 : Premium %% AmountsAndValueDate2 recursion level 1 with max 1 class AmountsAndValueDate2{ CallAmount IsoActiveOrHistoricCurrencyAndAmount PutAmount IsoActiveOrHistoricCurrencyAndAmount FinalSettlementDate IsoISODate } %% AgreedRate1 recursion level 1 with max 1 class AgreedRate1{ ExchangeRate IsoBaseOneRate UnitCurrency CurrencyCode QuotedCurrency CurrencyCode } %% PremiumAmount2 recursion level 1 with max 1 class PremiumAmount2{ Amount IsoActiveOrHistoricCurrencyAndAmount SettlementDate IsoISODate } PremiumAmount2 *-- "0..1" IPremiumQuote1Choice : PremiumQuote PremiumAmount2 *-- "0..1" IPartyIdentification8Choice : SettlementParty
Option3 members
Member name | Description | Data Type / Multiplicity |
---|---|---|
OptionAmounts | Specifies the call and the put amount of the underlying foreign exchange trade. | AmountsAndValueDate2 - Required 1..1 |
StrikePrice | Specifies the rate of exchange at which the foreign exchange option has been struck. | AgreedRate1 - Required 1..1 |
ExerciseStyle | Defines how an option can be exercised. | OptionStyle2Code - Required 1..1 |
EarliestExerciseDate | First date on which an american option can be exercised. | IsoISODate - Optional 0..1 |
ExpiryDateAndTime | Date on which a privilege (eg, option, right, warrant.) expires. If it is an European option, the option holder can only exercise the right or let it lapse on expiry date. If it is an American option, the option holder can exercise the right up to the expiry date. | IsoISODateTime - Required 1..1 |
ExpiryLocation | Financial center where option expires. | IsoMax4AlphaNumericText - Required 1..1 |
SettlementType | Indicates whether the trade is to be settled as principal or netted off against another trade. | SettlementType1Code - Required 1..1 |
AdditionalOptionInformation | Free format text that may contain information on the option. | IsoMax140Text - Optional 0..1 |
Premium | Specifies the amount of the premium of a foreign exchange option trade and its settlement place. | PremiumAmount2 - Required 1..1 |
Extensibility and generalization considerations
To facilitate generalized design patterns in the system, the CreateForeignExchangeOptionV02 implementation follows a specific implementaiton pattern. First of all, CreateForeignExchangeOptionV02 impleemnts IOuterRecord indicating it is the outermost logical part of the message definition. Like all message wrappers, CreateForeignExchangeOptionV02Document implements IOuterDocument. Because CreateForeignExchangeOptionV02 implements IOuterDocument, it is a suitable template parameter for IOuterDocument, and causes the internal ‘Message’ to be of type CreateForeignExchangeOptionV02.
classDiagram class IOuterRecord CreateForeignExchangeOptionV02 --|> IOuterRecord : Implements CreateForeignExchangeOptionV02Document --|> IOuterDocument~CreateForeignExchangeOptionV02~ : Implements class IOuterDocument~CreateForeignExchangeOptionV02~ { CreateForeignExchangeOptionV02 Message }
Document wrapper for serialization
The only real purpose CreateForeignExchangeOptionV02Document serves is to cause the document to be serialized into the ‘urn:iso:std:iso:20022:tech:xsd:trea.009.001.02’ namespace. Therefore, it will probably be the usual practice to build the message and construct this wrapper at the last minute using CreateForeignExchangeOptionV02.ToDocument() method. The returned CreateForeignExchangeOptionV02Document value will serialize correctly according to ISO 20022 standards.
classDiagram CreateForeignExchangeOptionV02Document *-- CreateForeignExchangeOptionV02 : 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.009.001.02">
<CretFXOptnV02>
<TradInf>
<!-- TradeInformation inner content -->
</TradInf>
<TradgSdId>
<!-- TradingSideIdentification inner content -->
</TradgSdId>
<CtrPtySdId>
<!-- CounterpartySideIdentification inner content -->
</CtrPtySdId>
<Optn>
<!-- Option inner content -->
</Optn>
</CretFXOptnV02>
</Document>
Data from ISO specification
This is the technical data from the specification document.
<messageDefinition
xmi:id="_NMokeNE8Ed-BzquC8wXy7w_-2015071704"
name="CreateForeignExchangeOptionV02"
definition="Scope
The CreateForeignExchangeOption message is sent by a participant to a central system or to a counterparty to confirm a foreign currency option contract.
Usage
Both trading parties will send a notification to the central settlement system. The central settlement system will then send a ForeignExchangeOptionNotification to both.
This message is only suitable for Simple (i.e. not Barrier) Vanilla (i.e. not Binary, Digital, Notouch) Foreign Exchange Options."
registrationStatus="Registered"
messageSet="_wRx2x02rEeG_I4xRYCA_7g"
xmlTag="CretFXOptnV02"
rootElement="Document"
xmlns:xmi="http://www.omg.org/XMI">
<messageBuildingBlock
xmi:id="_NMokedE8Ed-BzquC8wXy7w_538111256"
name="TradeInformation"
definition="Provides identification and date of the foreign exchange option trade which is created."
registrationStatus="Provisionally Registered"
maxOccurs="1"
minOccurs="1"
xmlTag="TradInf"
complexType="_TJ8xgdp-Ed-ak6NoX_4Aeg_290674431" />
<messageBuildingBlock
xmi:id="_NMoketE8Ed-BzquC8wXy7w_-1232874677"
name="TradingSideIdentification"
definition="Specifies the trading side of the currency option trade which is created."
registrationStatus="Provisionally Registered"
maxOccurs="1"
minOccurs="1"
xmlTag="TradgSdId"
complexType="_PZvPRNp-Ed-ak6NoX_4Aeg_1453147738" />
<messageBuildingBlock
xmi:id="_NMoke9E8Ed-BzquC8wXy7w_-1637375932"
name="CounterpartySideIdentification"
definition="Specifies the counterparty of the currency option trade which is created."
registrationStatus="Provisionally Registered"
maxOccurs="1"
minOccurs="1"
xmlTag="CtrPtySdId"
complexType="_PZvPRNp-Ed-ak6NoX_4Aeg_1453147738" />
<messageBuildingBlock
xmi:id="_NMxuYNE8Ed-BzquC8wXy7w_2080302723"
name="Option"
definition="Specifies the parameters of the currency option which is sold by the trading side."
registrationStatus="Provisionally Registered"
maxOccurs="1"
minOccurs="1"
xmlTag="Optn"
complexType="_TLSOQNp-Ed-ak6NoX_4Aeg_-1226899977" />
<messageDefinitionIdentifier
businessArea="trea"
messageFunctionality="009"
flavour="001"
version="02" />
</messageDefinition>
ISO Building Blocks
The following items are used as building blocks to construct this message.