ForeignExchangeOptionNotificationV02

trea.012.001.02

Scope The ForeignExchangeOptionNotification message is sent by a central system to a participant to provide details of a foreign exchange option trade. Usage The notification is sent by the central settlement system to the two trading parties after it has received Create, Amend or Cancel messages from both. The message may also contain information on the settlement of the trade and/or premium.

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
%% ForeignExchangeOptionNotificationV02 recursion level 0 with max 0
ForeignExchangeOptionNotificationV02 *-- "1..1" TradePartyIdentification4 : TradingSideIdentification
ForeignExchangeOptionNotificationV02 *-- "1..1" TradePartyIdentification4 : CounterpartySideIdentification
ForeignExchangeOptionNotificationV02 *-- "1..1" OptionData2 : OptionData
ForeignExchangeOptionNotificationV02 *-- "1..1" TradeStatus1 : TradeStatus
ForeignExchangeOptionNotificationV02 *-- "0..1" SettlementData2 : SettlementData
  

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

TradingSideIdentification building block

Specifies the trading side of the currency option trade which is reported. 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 non deliverable trade which is reported. 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

OptionData building block

Provides information on the conditions of the option. Set of data which contains the link to a previously notified option trade. For comparison, see the ISO20022 official specification

classDiagram
   direction tb
%% OptionData2 recursion level 0 with max 1
class OptionData2{
    TradeDate IsoISODate
    NotificationIdentification IsoMax35Text
    CommonReference IsoMax35Text
    RelatedReference IsoMax35Text
    AmendOrCancelReason IsoMax35Text
}
OptionData2 *-- "1..1" Option3 : Option
%% Option3 recursion level 1 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
  

OptionData2 members

Member name Description Data Type / Multiplicity
TradeDate Date at which the trading parties have agreed on an option trade. IsoISODate - Required 1..1
NotificationIdentification Refers to the identification of a trade assigned by the trading side of a foreign exchange option trade. IsoMax35Text - Required 1..1
CommonReference Reference common to the parties of a trade. IsoMax35Text - Optional 0..1
RelatedReference Refers to the identification of a previous event in the life of a foreign exchange option trade. IsoMax35Text - Optional 0..1
AmendOrCancelReason Describes the reason for the cancellation or the amendment. IsoMax35Text - Optional 0..1
Option Set of data defining a foreign exchange option sold. Option3 - Required 1..1

TradeStatus building block

Provides information on the status of a trade in a settlement system. Specifies the status of a trade in a central settlement system. For comparison, see the ISO20022 official specification

classDiagram
   direction tb
%% TradeStatus1 recursion level 0 with max 1
class TradeStatus1{
    AllegedTrade IsoYesNoIndicator
    MatchingSystemUniqueReference IsoMax35Text
    Status TradeStatus1Code
    ExtendedStatus IsoExtended350Code
    StatusSubType IsoMax70Text
    StatusTime IsoISODateTime
    StatusOriginator IsoMax35Text
}
  

TradeStatus1 members

Member name Description Data Type / Multiplicity
AllegedTrade Specifies whether a trade is alleged or not. IsoYesNoIndicator - Optional 0..1
MatchingSystemUniqueReference Reference to the unique identification assigned to a trade by a central matching system. IsoMax35Text - Required 1..1
Status Specifies the status of a trade. TradeStatus1Code - Optional 0..1
ExtendedStatus Description of the status of a trade when no coded form is available. IsoExtended350Code - Optional 0..1
StatusSubType Additional information on the status of a trade in a central system. IsoMax70Text - Optional 0..1
StatusTime Specifies the time at which a status was assigned. IsoISODateTime - Optional 0..1
StatusOriginator Identifies the party which assigned a status to a treasury trade. IsoMax35Text - Optional 0..1

SettlementData building block

Provides information on the settlement of a trade. Provides information on the settlement of a treasury trade. For comparison, see the ISO20022 official specification

classDiagram
   direction tb
%% SettlementData2 recursion level 0 with max 1
class SettlementData2{
    CashFlowUniqueReference IsoMax35Text
    SettlementSystemUniqueReference IsoMax35Text
    SettlementAmount IsoActiveOrHistoricCurrencyAndAmount
    SettledAmount IsoActiveOrHistoricCurrencyAndAmount
    RejectedAmount IsoActiveOrHistoricCurrencyAndAmount
    SettlementDate IsoISODate
    SettlementStatus SettlementStatus1Code
    ExtendedSettlementStatus IsoExtended350Code
    SettlementStatusSubType IsoMax70Text
    Suspended IsoYesNoIndicator
    Pending IsoYesNoIndicator
}
SettlementData2 *-- "1..1" IPartyIdentification8Choice : PayingParty
SettlementData2 *-- "1..1" IPartyIdentification8Choice : ReceivingParty
%% IPartyIdentification8Choice recursion level 1 with max 1
%% IPartyIdentification8Choice recursion level 1 with max 1
  

SettlementData2 members

Member name Description Data Type / Multiplicity
CashFlowUniqueReference Unique reference supplied by the trade processing system. IsoMax35Text - Optional 0..1
SettlementSystemUniqueReference Unique reference assigned by a settlement system. IsoMax35Text - Optional 0..1
SettlementAmount Original amount which should be settled. This information should be provided when the trade is partially settled or when the settlement is rejected. IsoActiveOrHistoricCurrencyAndAmount - Required 1..1
SettledAmount Funds which the trading side is expected to receive. IsoActiveOrHistoricCurrencyAndAmount - Optional 0..1
RejectedAmount Amount that cannot be settled by a settlement system. IsoActiveOrHistoricCurrencyAndAmount - Optional 0..1
PayingParty Specifies the party that pays the settlement amount. IPartyIdentification8Choice - Required 1..1
ReceivingParty Specifies the party that receives the settlement amount. IPartyIdentification8Choice - Required 1..1
SettlementDate Date on which the settlement is due to settle. IsoISODate - Required 1..1
SettlementStatus Specifies the status of a settlement eg rejected, settled or awaiting authorisation. SettlementStatus1Code - Required 1..1
ExtendedSettlementStatus Description of the status of the settlement of a trade when no coded form is available. IsoExtended350Code - Required 1..1
SettlementStatusSubType Additional information about the cause of the rejection of a settlement. IsoMax70Text - Optional 0..1
Suspended Cash settlement is suspended. IsoYesNoIndicator - Required 1..1
Pending Cash settlement is pending. IsoYesNoIndicator - Required 1..1

Extensibility and generalization considerations

To facilitate generalized design patterns in the system, the ForeignExchangeOptionNotificationV02 implementation follows a specific implementaiton pattern. First of all, ForeignExchangeOptionNotificationV02 impleemnts IOuterRecord indicating it is the outermost logical part of the message definition. Like all message wrappers, ForeignExchangeOptionNotificationV02Document implements IOuterDocument. Because ForeignExchangeOptionNotificationV02 implements IOuterDocument, it is a suitable template parameter for IOuterDocument, and causes the internal ‘Message’ to be of type ForeignExchangeOptionNotificationV02.

classDiagram
    class IOuterRecord
    ForeignExchangeOptionNotificationV02 --|> IOuterRecord : Implements
    ForeignExchangeOptionNotificationV02Document --|> IOuterDocument~ForeignExchangeOptionNotificationV02~ : Implements
    class IOuterDocument~ForeignExchangeOptionNotificationV02~ {
        ForeignExchangeOptionNotificationV02 Message
     }
  

Document wrapper for serialization

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

classDiagram
    ForeignExchangeOptionNotificationV02Document *-- ForeignExchangeOptionNotificationV02 : 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.012.001.02">
    <FXOptnNtfctnV02>
        <TradgSdId>
            <!-- TradingSideIdentification inner content -->
        </TradgSdId>
        <CtrPtySdId>
            <!-- CounterpartySideIdentification inner content -->
        </CtrPtySdId>
        <OptnData>
            <!-- OptionData inner content -->
        </OptnData>
        <TradSts>
            <!-- TradeStatus inner content -->
        </TradSts>
        <SttlmData>
            <!-- SettlementData inner content -->
        </SttlmData>
    </FXOptnNtfctnV02>
</Document>

Data from ISO specification

This is the technical data from the specification document.

<messageDefinition
  xmi:id="_QCIK6NE8Ed-BzquC8wXy7w_-2045814163"
  name="ForeignExchangeOptionNotificationV02"
  definition="Scope&#xD;&#xA;The ForeignExchangeOptionNotification message is sent by a central system to a participant to provide details of a foreign exchange option trade.&#xD;&#xA;Usage&#xD;&#xA;The notification is sent by the central settlement system to the two trading parties after it has received Create, Amend or Cancel messages from both. The message may also contain information on the settlement of the trade and/or premium."
  registrationStatus="Registered"
  messageSet="_wRx2x02rEeG_I4xRYCA_7g"
  xmlTag="FXOptnNtfctnV02"
  rootElement="Document"
  xmlns:xmi="http://www.omg.org/XMI">
  <messageBuildingBlock
    xmi:id="_QCIK6dE8Ed-BzquC8wXy7w_-28711885"
    name="TradingSideIdentification"
    definition="Specifies the trading side of the currency option trade which is reported."
    registrationStatus="Provisionally Registered"
    maxOccurs="1"
    minOccurs="1"
    xmlTag="TradgSdId"
    complexType="_PZvPRNp-Ed-ak6NoX_4Aeg_1453147738" />
  <messageBuildingBlock
    xmi:id="_QCIK6tE8Ed-BzquC8wXy7w_-1363683318"
    name="CounterpartySideIdentification"
    definition="Specifies the counterparty of the non deliverable trade which is reported."
    registrationStatus="Provisionally Registered"
    maxOccurs="1"
    minOccurs="1"
    xmlTag="CtrPtySdId"
    complexType="_PZvPRNp-Ed-ak6NoX_4Aeg_1453147738" />
  <messageBuildingBlock
    xmi:id="_QCIK69E8Ed-BzquC8wXy7w_1138794159"
    name="OptionData"
    definition="Provides information on the conditions of the option."
    registrationStatus="Provisionally Registered"
    maxOccurs="1"
    minOccurs="1"
    xmlTag="OptnData"
    complexType="_U8r6ddp-Ed-ak6NoX_4Aeg_254982681" />
  <messageBuildingBlock
    xmi:id="_QCR74NE8Ed-BzquC8wXy7w_1207820711"
    name="TradeStatus"
    definition="Provides information on the status of a trade in a settlement system."
    registrationStatus="Provisionally Registered"
    maxOccurs="1"
    minOccurs="1"
    xmlTag="TradSts"
    complexType="_Q7Ma8dp-Ed-ak6NoX_4Aeg_-931990425" />
  <messageBuildingBlock
    xmi:id="_QCR74dE8Ed-BzquC8wXy7w_949234653"
    name="SettlementData"
    definition="Provides information on the settlement of a trade."
    registrationStatus="Provisionally Registered"
    maxOccurs="1"
    minOccurs="0"
    xmlTag="SttlmData"
    complexType="_TJMjldp-Ed-ak6NoX_4Aeg_1219011122" />
  <messageDefinitionIdentifier
    businessArea="trea"
    messageFunctionality="012"
    flavour="001"
    version="02" />
</messageDefinition>

ISO Building Blocks

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