FpML 4.3 Working Draft

14 May 2007

Repo Component Definitions

Version: 4.3

This Version:

http://www.fpml.org/spec/2007/wd-fpml-4-3-2007-05-14

Latest Version:

http://www.fpml.org/spec/2007/wd-fpml-4-3-2007-05-14

Previous Version:

http://www.fpml.org/spec/2007/wd-fpml-4-3-2007-02-05/

Errata for this Version:

http://www.fpml.org/spec/errata/wd-fpml-4-3-2007-05-14-errata.html

Document built: Mon 05/21/2007 14:40:29.17


Copyright (c) 1999 - 2006 by INTERNATIONAL SWAPS AND DERIVATIVES ASSOCIATION, INC.
Financial Products Markup Language is subject to the FpML public license
A copy of this license is available at http://www.fpml.org/documents/license.html



The FpML specifications provided are without warranty of any kind, either expressed or implied, including, without limitation, warranties that FpML, or the FpML specifications are free of defects, merchantable, fit for a particular purpose or non-infringing. The entire risk as to the quality and performance of the specifications is with you. Should any of the FpML specifications prove defective in any respect, you assume the cost of any necessary servicing or repair. Under no circumstances and under no legal theory, whether tort (including negligence), contract, or otherwise, shall ISDA, any of its members, or any distributor of documents or software containing any of the FpML specifications, or any supplier of any of such parties, be liable to you or any other person for any indirect, special, incidental, or consequential damages of any character including, without limitation, damages for loss of goodwill, work stoppage, computer failure or malfunction, or any and all other commercial damages or losses, even if such party shall have been informed of the possibility of such damages.


Contents

Global Simple Types
DeliveryMethodEnum
MarginTypeEnum
RepoDurationEnum

Global Complex Types
AdjustableOffset
AtomicSettlementTransfer
Attribution
Attributions
AttributionType
CashRepricingEvent
CashTransfer
CollateralSubstitutionEvent
CollateralValuation
CouponEvent
EventReference
ForwardRepoTransactionLeg
InterestPayoutEvent
Margin
MarkToMarketEvent
MidLifeEvent
NetTradeIdentifier
PartySettlementTransferInformation
RateChangeEvent
RateObservationEvent
RelativePrice
Repo
RepoLegId
RepoTransactionLeg
RepoTransactionLegReference
SecurityTransfer
SettlementInstructionReference
SettlementTransfer
SettlementTransferId
SettlementTransferIdentifier
SettlementTransferProcessingInformation
SettlementTransferType
StreamId
StreamReference
TradeAndComponentIdentifier
TradeComponentIdentifier
TradeIdentifierList
Transfer
TransferId
VersionedEventId
VersionedRepoLegId
VersionedSettlementTransferId
VersionedSettlementTransferType
VersionedStreamId
VersionedTransferId

Global Elements
cashRepricing
collateralSubstitution
couponEvent
interestPayout
markToMarketEvent
midLifeEvent
rateChange
rateObservation
repo

Groups
BondChoice.model
BondCollateral.model
BondEquity.model
BondPriceAndYield.model
Settlement.model
SettlementAmountOrCurrency.model
SettlementTransferIdentifier.model
TradeComponentOrIdentifierOrNet.model
UnitContract.model

Schema Listing

Global Simple Types

DeliveryMethodEnum

Description:

This enumeration defines the possible delivery methods for securities.

Contents:

Inherited element(s): (This definition restricts the content defined by the type xsd:token)
ValueSourceDescription
DeliveryVersusPayment

Indicates that a securities delivery must be made against payment in a single transaction

FreeOfPayment

Indicates that a securities delivery can be made without a simultaneous cash payment in exchange.

Used by:

Schema Fragment:

<xsd:simpleType name="DeliveryMethodEnum">
  <xsd:annotation>
    <xsd:documentation xml:lang="en">
      This enumeration defines the possible delivery methods for
      securities.
    </xsd:documentation>
  </xsd:annotation>
  <xsd:restriction base="xsd:token">
    <xsd:enumeration value="DeliveryVersusPayment">
      <xsd:annotation>
        <xsd:documentation xml:lang="en">
          Indicates that a securities delivery must be made against
          payment in a single transaction
        </xsd:documentation>
      </xsd:annotation>
    </xsd:enumeration>
    <xsd:enumeration value="FreeOfPayment">
      <xsd:annotation>
        <xsd:documentation xml:lang="en">
          Indicates that a securities delivery can be made without a
          simultaneous cash payment in exchange.
        </xsd:documentation>
      </xsd:annotation>
    </xsd:enumeration>
  </xsd:restriction>
</xsd:simpleType>

MarginTypeEnum

Description:

This indicator defines if a margin (also called haircut in repo and sec lending litterature) applies to cash or to the financial instrument being exchanged.

Contents:

Inherited element(s): (This definition restricts the content defined by the type xsd:token)
ValueSourceDescription
Cash

When the margin type is Cash, the margin factor is applied to the cash value of the transaction.

Instrument

When the margin type is Instrument, the margin factor is applied to the instrument value for the transaction.

Used by:

Schema Fragment:

<xsd:simpleType name="MarginTypeEnum">
  <xsd:annotation>
    <xsd:documentation xml:lang="en">
      This indicator defines if a margin (also called haircut in repo
      and sec lending litterature) applies to cash or to the financial
      instrument being exchanged.
    </xsd:documentation>
  </xsd:annotation>
  <xsd:restriction base="xsd:token">
    <xsd:enumeration value="Cash">
      <xsd:annotation>
        <xsd:documentation xml:lang="en">
          When the margin type is Cash, the margin factor is applied to
          the cash value of the transaction.
        </xsd:documentation>
      </xsd:annotation>
    </xsd:enumeration>
    <xsd:enumeration value="Instrument">
      <xsd:annotation>
        <xsd:documentation xml:lang="en">
          When the margin type is Instrument, the margin factor is
          applied to the instrument value for the transaction.
        </xsd:documentation>
      </xsd:annotation>
    </xsd:enumeration>
  </xsd:restriction>
</xsd:simpleType>

RepoDurationEnum

Description:

A duration code for a Repo (or Securities Lending) transaction. There are many business and market rules that are derived from the duration of the transaction.

Contents:

Inherited element(s): (This definition restricts the content defined by the type xsd:token)
ValueSourceDescription
Overnight

Indicates that a contract is classified as overnight, meaning that there is one business day difference between the start and end date of the contract. Business rule: When the repo is overnight, the number of business days between the spot and forward value dates must be one. Forward leg must be specified.

Term

Indicates that a contract is a regular term contract, with a start date and an end date. Business rule: When the repo is 'Term', both spot and forward legs must be specified.

Open

Indicates that a contract is open ended; this means that the end date is unspecified, and will be agreed by the two parties at a later date. Business rule: When the repo is Open, the forward transaction leg must not be present.

Used by:

Schema Fragment:

<xsd:simpleType name="RepoDurationEnum">
  <xsd:annotation>
    <xsd:documentation xml:lang="en">
      A duration code for a Repo (or Securities Lending) transaction.
      There are many business and market rules that are derived from
      the duration of the transaction.
    </xsd:documentation>
  </xsd:annotation>
  <xsd:restriction base="xsd:token">
    <xsd:enumeration value="Overnight">
      <xsd:annotation>
        <xsd:documentation xml:lang="en">
          Indicates that a contract is classified as overnight, meaning
          that there is one business day difference between the start
          and end date of the contract. Business rule: When the repo is
          overnight, the number of business days between the spot and
          forward value dates must be one. Forward leg must be
          specified.
        </xsd:documentation>
      </xsd:annotation>
    </xsd:enumeration>
    <xsd:enumeration value="Term">
      <xsd:annotation>
        <xsd:documentation xml:lang="en">
          Indicates that a contract is a regular term contract, with a
          start date and an end date. Business rule: When the repo is
          'Term', both spot and forward legs must be specified.
        </xsd:documentation>
      </xsd:annotation>
    </xsd:enumeration>
    <xsd:enumeration value="Open">
      <xsd:annotation>
        <xsd:documentation xml:lang="en">
          Indicates that a contract is open ended; this means that the
          end date is unspecified, and will be agreed by the two
          parties at a later date. Business rule: When the repo is
          Open, the forward transaction leg must not be present.
        </xsd:documentation>
      </xsd:annotation>
    </xsd:enumeration>
  </xsd:restriction>
</xsd:simpleType>

Global Complex Types

AdjustableOffset

Description:

An adjustable offset can be used to specify a number of days, business or calendar, for example in a notice period.

Figure:

Contents:

Inherited element(s): (This definition inherits the content defined by the type Offset)


There can be one occurance of the following structure; Choice of either

Or


Used by:

Extension of:

Schema Fragment:

<xsd:complexType name="AdjustableOffset">
  <xsd:annotation>
    <xsd:documentation xml:lang="en">
      An adjustable offset can be used to specify a number of days,
      business or calendar, for example in a notice period.
    </xsd:documentation>
  </xsd:annotation>
  <xsd:complexContent>
    <xsd:extension base="Offset">
      <xsd:sequence>
        <xsd:group ref="BusinessCentersOrReference.model" minOccurs="0"/>
      </xsd:sequence>
    </xsd:extension>
  </xsd:complexContent>
</xsd:complexType>

AtomicSettlementTransfer

Description:

Abstract base class for all transfer of cash or securities

Figure:

Contents:

suppress (zero or one occurrence; of the type xsd:boolean)

Attribute: id (xsd:ID)

Used by:

Derived Types:

Schema Fragment:

<xsd:complexType name="AtomicSettlementTransfer" abstract="true">
  <xsd:annotation>
    <xsd:documentation xml:lang="en">
      Abstract base class for all transfer of cash or securities
    </xsd:documentation>
  </xsd:annotation>
  <xsd:sequence>
    <xsd:element name="suppress" type="xsd:boolean" minOccurs="0">
      <xsd:annotation>
        <xsd:documentation xml:lang="en">
          Indicate if this transfer should be suppressed. Absence of
          this flag means that the transfer should not be suppressed.
        </xsd:documentation>
      </xsd:annotation>
    </xsd:element>
  </xsd:sequence>
  <xsd:attribute name="id" type="xsd:ID"/>
</xsd:complexType>

Attribution

Description:

An attribution must specify its type, and an amount. Any of the three amount fields below can be used (and they can all be used at the same time), as long as they are used consistently. You can express an attribution in a maximum of three different currencies (settlement, base, underlying), which are usually the same as the settlement currency on the trade, the base currency used for accounting purposes, and the underlying currency which refers to the currency of an underlying instrument used in a transaction. Note however that these are just guidelines; you can actually specify attributions in any currency that you like, as long as you are consistent. Within an Attributions structure, all attribution/settlementAmounts are expressed in the same currency, defined by the settlementCurrency field (see enclosing Attributions structure). Same holds true for base and underlying amounts.

Figure:

Contents:

type (exactly one occurrence; of the type AttributionType)

settlementAmount (zero or one occurrence; of the type xsd:decimal)

baseAmount (zero or one occurrence; of the type xsd:decimal)

underlyingAmount (zero or one occurrence; of the type xsd:decimal)

Used by:

Schema Fragment:

<xsd:complexType name="Attribution">
  <xsd:annotation>
    <xsd:documentation xml:lang="en">
      An attribution must specify its type, and an amount. Any of the
      three amount fields below can be used (and they can all be used
      at the same time), as long as they are used consistently. You can
      express an attribution in a maximum of three different currencies
      (settlement, base, underlying), which are usually the same as the
      settlement currency on the trade, the base currency used for
      accounting purposes, and the underlying currency which refers to
      the currency of an underlying instrument used in a transaction.
      Note however that these are just guidelines; you can actually
      specify attributions in any currency that you like, as long as
      you are consistent. Within an Attributions structure, all
      attribution/settlementAmounts are expressed in the same currency,
      defined by the settlementCurrency field (see enclosing
      Attributions structure). Same holds true for base and underlying
      amounts.
    </xsd:documentation>
  </xsd:annotation>
  <xsd:sequence>
    <xsd:element name="type" type="AttributionType">
      <xsd:annotation>
        <xsd:documentation xml:lang="en">
          The attribution type. The cash settlement amount specified in
          the enclosing transfer will be broken down into several
          subcomponents (like a PandL explain), and the type of the
          breakdown is defined here. Typical values are in a scheme.
        </xsd:documentation>
      </xsd:annotation>
    </xsd:element>
    <xsd:element name="settlementAmount" type="xsd:decimal" minOccurs="0">
      <xsd:annotation>
        <xsd:documentation xml:lang="en">
          An amount expressed in the settlement currency that was
          indicated in the enclosing Attributions structure. This is
          done to avoid repeating the currency for every amount when we
          know that attributions are expressed in a consistent way,
          with the same currencies.
        </xsd:documentation>
      </xsd:annotation>
    </xsd:element>
    <xsd:element name="baseAmount" type="xsd:decimal" minOccurs="0">
      <xsd:annotation>
        <xsd:documentation xml:lang="en">
          An amount expressed in the base currency defined in the
          enclosing Attributions structure (see baseCurrency). If this
          optional field is present, baseCurrency must be defined in
          the enclosing structure.
        </xsd:documentation>
      </xsd:annotation>
    </xsd:element>
    <xsd:element name="underlyingAmount" type="xsd:decimal" minOccurs="0">
      <xsd:annotation>
        <xsd:documentation xml:lang="en">
          An amount expressed in the currency of an underlyer ( see
          underlyingCurrency). If this field is present then the
          underlyingCurrency field in the enclosing structure must be
          defined.
        </xsd:documentation>
      </xsd:annotation>
    </xsd:element>
  </xsd:sequence>
</xsd:complexType>

Attributions

Description:

A set of attributions, which are a way to break down a cash amount into several components, like the repo interest portion in the final cahflow of the repo, the clean price attribution, etc. An example could be, for a repo worth 1M on a security priced at 100 at maturity with a total interest of 10,000, 1M is attributed to the security 'dirty price', 95,400,000.00 is attributed to the security clean price, ( I am making it up here ); 10,000.00 is attributed to the repo interest, and 200 is attributed to a stamp tax. All attributions are monetary amounts.

Figure:

Contents:

settlementCurrency (exactly one occurrence; of the type Currency)

baseCurrency (exactly one occurrence; of the type Currency)

underlyingCurrency (zero or one occurrence; of the type Currency)

attribution (one or more occurrences; of the type Attribution)

Used by:

Schema Fragment:

<xsd:complexType name="Attributions">
  <xsd:annotation>
    <xsd:documentation xml:lang="en">
      A set of attributions, which are a way to break down a cash
      amount into several components, like the repo interest portion in
      the final cahflow of the repo, the clean price attribution, etc.
      An example could be, for a repo worth 1M on a security priced at
      100 at maturity with a total interest of 10,000, 1M is attributed
      to the security 'dirty price', 95,400,000.00 is attributed to the
      security clean price, ( I am making it up here ); 10,000.00 is
      attributed to the repo interest, and 200 is attributed to a stamp
      tax. All attributions are monetary amounts.
    </xsd:documentation>
  </xsd:annotation>
  <xsd:sequence>
    <xsd:element name="settlementCurrency" type="Currency">
      <xsd:annotation>
        <xsd:documentation xml:lang="en">
          The currency that is used for all the attributions expressed
          with settlementAmount. The reason for this is to avoid
          repeating the currency (for example using FpML:Money) for
          every attribution amount in the structure. We therefore
          assume that attributions are expressed in a maximum of three
          currencies, which we specify here. The settlementCurrency is
          assumed to be the settlement currency of the trade in general
          cases.
        </xsd:documentation>
      </xsd:annotation>
    </xsd:element>
    <xsd:element name="baseCurrency" type="Currency">
      <xsd:annotation>
        <xsd:documentation xml:lang="en">
          The currency that is used for all the attributions expressed
          with baseAmount. The baseCurrency is usually USD within the
          firm, but it is in fact driven by the accounting engine
          expectations.
        </xsd:documentation>
      </xsd:annotation>
    </xsd:element>
    <xsd:element name="underlyingCurrency" type="Currency" minOccurs="0">
      <xsd:annotation>
        <xsd:documentation xml:lang="en">
          The currency that is used for all the attributions expressed
          with underlyingAmount. Underlying currency is the currency of
          issuance for the underlying instrument. So if you need to
          express attributions on a Repo settling in EUR but with GBP
          instruments, you would specify underlyingCurrency to be GBP.
        </xsd:documentation>
      </xsd:annotation>
    </xsd:element>
    <xsd:element name="attribution" type="Attribution" maxOccurs="unbounded">
      <xsd:annotation>
        <xsd:documentation xml:lang="en">
          The attributions go here. There is no limit on the number of
          attributions.
        </xsd:documentation>
      </xsd:annotation>
    </xsd:element>
  </xsd:sequence>
</xsd:complexType>

AttributionType

Description:

An attribution type. Values are defined in a coding scheme. Typical values are RepoInterest, StampTax, WithholdingTax.

Figure:

Contents:

Inherited element(s): (This definition inherits the content defined by the type xsd:normalizedString)

Attribute: attributionTypeScheme (xsd:anyURI)

Used by:

Schema Fragment:

<xsd:complexType name="AttributionType">
  <xsd:annotation>
    <xsd:documentation xml:lang="en">
      An attribution type. Values are defined in a coding scheme.
      Typical values are RepoInterest, StampTax, WithholdingTax.
    </xsd:documentation>
  </xsd:annotation>
  <xsd:simpleContent>
    <xsd:extension base="xsd:normalizedString">
      <xsd:attribute name="attributionTypeScheme" type="xsd:anyURI" default="http://www.fpml.org/coding-scheme/attribution-type-1-0"/>
    </xsd:extension>
  </xsd:simpleContent>
</xsd:complexType>

CashRepricingEvent

Description:

A cash repricing event. This type of event is an adjustment of the price of the underlying collateral done to reflect current market conditions. The par amount is preserved constant, which means that the collateral quantity is unchanged. It is the settlement amount that changes after a cash repricing, so a cash repricing will trigger a cash movement.

Figure:

Contents:

Inherited element(s): (This definition inherits the content defined by the type MidLifeEvent)

collateral (zero or one occurrence; of the type CollateralValuation)

combinedInterestPayout (exactly one occurrence; of the type xsd:boolean)

transfer (zero or one occurrence; of the type Transfer)

Used by:

Extension of:

Schema Fragment:

<xsd:complexType name="CashRepricingEvent">
  <xsd:annotation>
    <xsd:documentation xml:lang="en">
      A cash repricing event. This type of event is an adjustment of
      the price of the underlying collateral done to reflect current
      market conditions. The par amount is preserved constant, which
      means that the collateral quantity is unchanged. It is the
      settlement amount that changes after a cash repricing, so a cash
      repricing will trigger a cash movement.
    </xsd:documentation>
  </xsd:annotation>
  <xsd:complexContent>
    <xsd:extension base="MidLifeEvent">
      <xsd:sequence>
        <xsd:element name="collateral" type="CollateralValuation" minOccurs="0"/>
        <xsd:element name="combinedInterestPayout" type="xsd:boolean">
          <xsd:annotation>
            <xsd:documentation xml:lang="en">
              This value should be set to true if we need to pay the
              accrued interest at the same time. If false, there is no
              payment attributed to the repo accrued interest, only
              cash movement linked to collateral re-valuation.
            </xsd:documentation>
          </xsd:annotation>
        </xsd:element>
        <xsd:element name="transfer" type="Transfer" minOccurs="0"/>
      </xsd:sequence>
    </xsd:extension>
  </xsd:complexContent>
</xsd:complexType>

CashTransfer

Description:

By definition, to specify a cash transfer, we need to say how much we want to transfer, who is the payer ( correspondent ) and who is the receiver ( beneficiary ). Those terms are used in the settlement instruction and allow us to define the direction of the movement.

Figure:

Contents:

Inherited element(s): (This definition inherits the content defined by the type AtomicSettlementTransfer)

transferAmount (exactly one occurrence; of the type Money)

payerPartyReference (exactly one occurrence; of the type PartyOrAccountReference)

receiverPartyReference (exactly one occurrence; of the type PartyOrAccountReference)

attributions (zero or one occurrence; of the type Attributions)

Used by:

Extension of:

Schema Fragment:

<xsd:complexType name="CashTransfer">
  <xsd:annotation>
    <xsd:documentation xml:lang="en">
      By definition, to specify a cash transfer, we need to say how
      much we want to transfer, who is the payer ( correspondent ) and
      who is the receiver ( beneficiary ). Those terms are used in the
      settlement instruction and allow us to define the direction of
      the movement.
    </xsd:documentation>
  </xsd:annotation>
  <xsd:complexContent>
    <xsd:extension base="AtomicSettlementTransfer">
      <xsd:sequence>
        <xsd:element name="transferAmount" type="Money">
          <xsd:annotation>
            <xsd:documentation xml:lang="en">
              The money to transfer.
            </xsd:documentation>
          </xsd:annotation>
        </xsd:element>
        <xsd:group ref="PayerReceiver.model">
          <xsd:annotation>
            <xsd:documentation xml:lang="en">
              The parties paying and receiving the money
            </xsd:documentation>
          </xsd:annotation>
        </xsd:group>
        <xsd:element name="attributions" type="Attributions" minOccurs="0">
          <xsd:annotation>
            <xsd:documentation xml:lang="en">
              For accounting, reporting or regulatory reasons, the
              transfer may have to be explained in a series of
              individual amounts. It may be possible for example to
              break down a transfer amount into constituents (gross,
              tax, net) or into individual amounts (interest, penalty)
              that would be netted at the transfer level. The
              attributions structure allows participants to explain
              their transfer amounts for better traceability. This is
              strictly optional.
            </xsd:documentation>
          </xsd:annotation>
        </xsd:element>
      </xsd:sequence>
    </xsd:extension>
  </xsd:complexContent>
</xsd:complexType>

CollateralSubstitutionEvent

Description:

A collateral substitution is an event where two parties, having previously entered into a repurchase agreement, or securities lending, agree that collateral used for the transaction be substituted with equivalent collateral. The new collateral must be deemed acceptable, in grade and quality and have an equivalent valuation compared substituted collateral at the time of the substitution.

Figure:

Contents:

Inherited element(s): (This definition inherits the content defined by the type MidLifeEvent)

previousCollateral (exactly one occurrence; of the type CollateralValuation)

newCollateral (exactly one occurrence; of the type CollateralValuation)

settlementTransfer (zero or one occurrence; of the type SettlementTransfer)

Used by:

Extension of:

Schema Fragment:

<xsd:complexType name="CollateralSubstitutionEvent">
  <xsd:annotation>
    <xsd:documentation xml:lang="en">
      A collateral substitution is an event where two parties, having
      previously entered into a repurchase agreement, or securities
      lending, agree that collateral used for the transaction be
      substituted with equivalent collateral. The new collateral must
      be deemed acceptable, in grade and quality and have an equivalent
      valuation compared substituted collateral at the time of the
      substitution.
    </xsd:documentation>
  </xsd:annotation>
  <xsd:complexContent>
    <xsd:extension base="MidLifeEvent">
      <xsd:sequence>
        <xsd:element name="previousCollateral" type="CollateralValuation">
          <xsd:annotation>
            <xsd:documentation xml:lang="en">
              The collateral previously pledged in the transaction,
              properly valued as of the date of substitution.
            </xsd:documentation>
          </xsd:annotation>
        </xsd:element>
        <xsd:element name="newCollateral" type="CollateralValuation">
          <xsd:annotation>
            <xsd:documentation xml:lang="en">
              The new collateral to use in the transaction, valued as
              of the date of substitution.
            </xsd:documentation>
          </xsd:annotation>
        </xsd:element>
        <xsd:element name="settlementTransfer" type="SettlementTransfer" minOccurs="0">
          <xsd:annotation>
            <xsd:documentation xml:lang="en">
              The settlement transfer structure may be used by
              participants that want to explicitly restate who will
              deliver what, when and how.
            </xsd:documentation>
          </xsd:annotation>
        </xsd:element>
      </xsd:sequence>
    </xsd:extension>
  </xsd:complexContent>
</xsd:complexType>

CollateralValuation

Description:

This type is used in Repo trades, to specify the valuation of a specific piece of collateral in the transaction. Note that the structure must be used within a structure that has a date attached to it, because the valuations included (such as prices, accruals and inflation factors) are relative to a date. We do not want to add an href to a date because that would be too much complexity for nothing.

Figure:

Contents:


There can be one occurance of the following structure;

assetReference (exactly one occurrence; of the type AssetReference)

Used by:

Schema Fragment:

<xsd:complexType name="CollateralValuation">
  <xsd:annotation>
    <xsd:documentation xml:lang="en">
      This type is used in Repo trades, to specify the valuation of a
      specific piece of collateral in the transaction. Note that the
      structure must be used within a structure that has a date
      attached to it, because the valuations included (such as prices,
      accruals and inflation factors) are relative to a date. We do not
      want to add an href to a date because that would be too much
      complexity for nothing.
    </xsd:documentation>
  </xsd:annotation>
  <xsd:sequence>
    <xsd:choice>
      <xsd:group ref="BondCollateral.model">
        <xsd:annotation>
          <xsd:documentation xml:lang="en">
            When the instrument being used in a transaction is a bond,
            the group above should be used to properly value the
            instrument, in terms of price, accruals and notional.
          </xsd:documentation>
        </xsd:annotation>
      </xsd:group>
      <xsd:group ref="UnitContract.model">
        <xsd:annotation>
          <xsd:documentation xml:lang="en">
            When the instrument being used in a transaction is an
            equity, or any contract traded in units, this group should
            be used to define the quantity, price and valuation of the
            instrument.
          </xsd:documentation>
        </xsd:annotation>
      </xsd:group>
    </xsd:choice>
    <xsd:element name="assetReference" type="AssetReference">
      <xsd:annotation>
        <xsd:documentation xml:lang="en">
          A reference to explicitly identify which asset is being
          valued.
        </xsd:documentation>
      </xsd:annotation>
    </xsd:element>
  </xsd:sequence>
</xsd:complexType>

CouponEvent

Description:

This structure is used for Buy-Sell Back trades to describe when a coupon is paid and what reinvestment rate will be applied. the amount is in the instrument currency. To be able to represent a buy/sell back with more than one collateral we use an href link to the underlying asset. This enables us to represent multiple coupons during the life of the trade, with different reinvestment rates, and possibly different instruments.

Figure:

Contents:

Inherited element(s): (This definition inherits the content defined by the type MidLifeEvent)

couponAmount (exactly one occurrence; of the type xsd:decimal)

reinvestmentRate (exactly one occurrence; of the type xsd:decimal)

assetReference (exactly one occurrence; of the type AssetReference)

transfer (zero or one occurrence; of the type Transfer)

Used by:

Extension of:

Schema Fragment:

<xsd:complexType name="CouponEvent">
  <xsd:annotation>
    <xsd:documentation xml:lang="en">
      This structure is used for Buy-Sell Back trades to describe when
      a coupon is paid and what reinvestment rate will be applied. the
      amount is in the instrument currency. To be able to represent a
      buy/sell back with more than one collateral we use an href link
      to the underlying asset. This enables us to represent multiple
      coupons during the life of the trade, with different reinvestment
      rates, and possibly different instruments.
    </xsd:documentation>
  </xsd:annotation>
  <xsd:complexContent>
    <xsd:extension base="MidLifeEvent">
      <xsd:sequence>
        <xsd:element name="couponAmount" type="xsd:decimal">
          <xsd:annotation>
            <xsd:documentation xml:lang="en">
              The cash value of the coupon paid (not the coupon rate).
              It should be equal to the coupon rate divided by
              frequency (2 for semi annual) times the notional of the
              bond.
            </xsd:documentation>
          </xsd:annotation>
        </xsd:element>
        <xsd:element name="reinvestmentRate" type="xsd:decimal">
          <xsd:annotation>
            <xsd:documentation xml:lang="en">
              The reinvestment rate we will use on the coupon. Very
              often it is equal to the repo rate on the deal, but it
              does not have to. For very long term repos, the
              reinvestment rate will be derived from a curve.
            </xsd:documentation>
          </xsd:annotation>
        </xsd:element>
        <xsd:element name="assetReference" type="AssetReference"/>
        <xsd:element name="transfer" type="Transfer" minOccurs="0">
          <xsd:annotation>
            <xsd:documentation xml:lang="en">
              The transfer structure can be used to explicitly state
              who will pay the coupon. In buy-sell-back trades, whoever
              holds the bond will receive the coupon (from the bond
              issuer) and keep it. If the bond holder passes the coupon
              on to the counterparty we expect to see a transfer from
              bond holder to counterparty here.
            </xsd:documentation>
          </xsd:annotation>
        </xsd:element>
      </xsd:sequence>
    </xsd:extension>
  </xsd:complexContent>
</xsd:complexType>

EventReference

Description:

Reference to a Trade Event.

Figure:

Contents:

Inherited element(s): (This definition inherits the content defined by the type Reference)

Used by:

Extension of:

Schema Fragment:

<xsd:complexType name="EventReference">
  <xsd:annotation>
    <xsd:documentation xml:lang="en">
      Reference to a Trade Event.
    </xsd:documentation>
  </xsd:annotation>
  <xsd:complexContent>
    <xsd:extension base="Reference"/>
  </xsd:complexContent>
</xsd:complexType>

ForwardRepoTransactionLeg

Description:

A transaction leg for a repo is equivalent to a single cash transaction. It is augmented here to carry some values that are of interest for the repo. Also note that the BuyerSeller model in this transaction must be the exact opposite of the one found in the spot leg.

Figure:

Contents:

Inherited element(s): (This definition inherits the content defined by the type RepoTransactionLeg)

repoInterest (zero or one occurrence; of the type xsd:decimal)

Used by:

Extension of:

Schema Fragment:

<xsd:complexType name="ForwardRepoTransactionLeg">
  <xsd:annotation>
    <xsd:documentation xml:lang="en">
      A transaction leg for a repo is equivalent to a single cash
      transaction. It is augmented here to carry some values that are
      of interest for the repo. Also note that the BuyerSeller model in
      this transaction must be the exact opposite of the one found in
      the spot leg.
    </xsd:documentation>
  </xsd:annotation>
  <xsd:complexContent>
    <xsd:extension base="RepoTransactionLeg">
      <xsd:sequence>
        <xsd:element name="repoInterest" type="xsd:decimal" minOccurs="0">
          <xsd:annotation>
            <xsd:documentation xml:lang="en">
              The repo interest is basically the difference between the
              settlement amounts at spot and forward date. It is a
              fully figured amount, but it does not have to be
              specified in the message. It is not a 'Money' amount as
              it is implicitly expressed in the settlement currency.
            </xsd:documentation>
          </xsd:annotation>
        </xsd:element>
      </xsd:sequence>
    </xsd:extension>
  </xsd:complexContent>
</xsd:complexType>

InterestPayoutEvent

Description:

Figure:

Contents:

Inherited element(s): (This definition inherits the content defined by the type MidLifeEvent)

payment (exactly one occurrence; of the type Money)

transfer (zero or one occurrence; of the type Transfer)

Used by:

Extension of:

Schema Fragment:

<xsd:complexType name="InterestPayoutEvent">
  <xsd:complexContent>
    <xsd:extension base="MidLifeEvent">
      <xsd:sequence>
        <xsd:element name="payment" type="Money">
          <xsd:annotation>
            <xsd:documentation xml:lang="en">
              The amount to be paid. Note that we do not specify who is
              paying the amount. Implicitly, the party that pays the
              repo Interest at maturity is the only party that can do
              an interest payout.
            </xsd:documentation>
          </xsd:annotation>
        </xsd:element>
        <xsd:element name="transfer" type="Transfer" minOccurs="0">
          <xsd:annotation>
            <xsd:documentation xml:lang="en">
              When necessary, it is possible to make the interest
              payout fully explicit, with parties and settlement
              instructions. Note that the transfer date *may* differ
              from the eventDate specified by the event; for example
              the date the payment is made can be 1 or 2 days after the
              interest has been calculated. Note that for an interest
              payout the transfer can only contain a cashTransfer as
              there are no security movements for an interest payout.
            </xsd:documentation>
          </xsd:annotation>
        </xsd:element>
      </xsd:sequence>
    </xsd:extension>
  </xsd:complexContent>
</xsd:complexType>

Margin

Description:

Defines the margin, also called haircut in repo and securities lending terminology, that will be applied to a transaction. It is essentially a premium, expressed in percentage, to compensate collateral quality (or lack thereof) and liquidity.

Figure:

Contents:

marginType (exactly one occurrence; of the type MarginTypeEnum)

marginFactor (exactly one occurrence; of the type xsd:decimal)

Used by:

Schema Fragment:

<xsd:complexType name="Margin">
  <xsd:annotation>
    <xsd:documentation xml:lang="en">
      Defines the margin, also called haircut in repo and securities
      lending terminology, that will be applied to a transaction. It is
      essentially a premium, expressed in percentage, to compensate
      collateral quality (or lack thereof) and liquidity.
    </xsd:documentation>
  </xsd:annotation>
  <xsd:sequence>
    <xsd:element name="marginType" type="MarginTypeEnum">
      <xsd:annotation>
        <xsd:documentation xml:lang="en">
          The type of margin being specified to apply to the
          transaction.
        </xsd:documentation>
      </xsd:annotation>
    </xsd:element>
    <xsd:element name="marginFactor" type="xsd:decimal">
      <xsd:annotation>
        <xsd:documentation xml:lang="en">
          The margin is expressed as a multiplication factor (default
          value is 1) to reflect the quality of the collateral. Also
          called margin ratio as per Section 2, paragraph (z) of the
          TBMA/ISMA Global Master Repurchase Agreement.
        </xsd:documentation>
      </xsd:annotation>
    </xsd:element>
  </xsd:sequence>
</xsd:complexType>

MarkToMarketEvent

Description:

A mark to market event. This type of event is an adjustment of the price of the underlying collateral done to reflect current market conditions. Depending on the direction of the collateral valuation, one of the contracting parties will either pledge more/less collateral in the contract, or add/substract cash from the contract value.

Figure:

Contents:

Inherited element(s): (This definition inherits the content defined by the type MidLifeEvent)

collateral (exactly one occurrence; of the type CollateralValuation)

combinedInterestPayout (exactly one occurrence; of the type xsd:boolean)

transfer (zero or one occurrence; of the type Transfer)

Used by:

Extension of:

Schema Fragment:

<xsd:complexType name="MarkToMarketEvent">
  <xsd:annotation>
    <xsd:documentation xml:lang="en">
      A mark to market event. This type of event is an adjustment of
      the price of the underlying collateral done to reflect current
      market conditions. Depending on the direction of the collateral
      valuation, one of the contracting parties will either pledge
      more/less collateral in the contract, or add/substract cash from
      the contract value.
    </xsd:documentation>
  </xsd:annotation>
  <xsd:complexContent>
    <xsd:extension base="MidLifeEvent">
      <xsd:sequence>
        <xsd:element name="collateral" type="CollateralValuation">
          <xsd:annotation>
            <xsd:documentation xml:lang="en">
              The updated collateral valuation for the contract. The
              change compared to the previously agreed valuation
              determines what securities or cash movement will occur.
            </xsd:documentation>
          </xsd:annotation>
        </xsd:element>
        <xsd:element name="combinedInterestPayout" type="xsd:boolean">
          <xsd:annotation>
            <xsd:documentation xml:lang="en">
              Indicates that the parties agree to settle the accrued
              interest on the contract at the time of the repricing.
            </xsd:documentation>
          </xsd:annotation>
        </xsd:element>
        <xsd:element name="transfer" type="Transfer" minOccurs="0">
          <xsd:annotation>
            <xsd:documentation xml:lang="en">
              Participants may use this structure to explicitly restate
              who is receiving/delivering cash and securities.
            </xsd:documentation>
          </xsd:annotation>
        </xsd:element>
      </xsd:sequence>
    </xsd:extension>
  </xsd:complexContent>
</xsd:complexType>

MidLifeEvent

Description:

A mid life event in a repo or securities lending transaction. Such mid life events are bilateral agreements between contracting parties to alter the financial profile of the transaction. Such examples include interest payments, collateral substitutions, or mark-to-market activity (cash or nominal repricing) to re-balance the valuation of cash and collateral in the transaction.

Figure:

Contents:

Inherited element(s): (This definition inherits the content defined by the type Event)

eventDate (exactly one occurrence; of the type IdentifiedDate)

Used by:

Extension of:

Derived Types:

Schema Fragment:

<xsd:complexType name="MidLifeEvent" abstract="true">
  <xsd:annotation>
    <xsd:documentation xml:lang="en">
      A mid life event in a repo or securities lending transaction.
      Such mid life events are bilateral agreements between contracting
      parties to alter the financial profile of the transaction. Such
      examples include interest payments, collateral substitutions, or
      mark-to-market activity (cash or nominal repricing) to re-balance
      the valuation of cash and collateral in the transaction.
    </xsd:documentation>
  </xsd:annotation>
  <xsd:complexContent>
    <xsd:extension base="Event">
      <xsd:sequence>
        <xsd:element name="eventDate" type="IdentifiedDate">
          <xsd:annotation>
            <xsd:documentation xml:lang="en">
              The date the event has been recorded.
            </xsd:documentation>
          </xsd:annotation>
        </xsd:element>
      </xsd:sequence>
    </xsd:extension>
  </xsd:complexContent>
</xsd:complexType>

NetTradeIdentifier

Description:

Identification of a net trade and original trades.

Figure:

Contents:

Inherited element(s): (This definition inherits the content defined by the type PartyTradeIdentifier)

originalTradeIdentifier (one or more occurrences; of the type TradeIdentifierList)

Used by:

Extension of:

Schema Fragment:

<xsd:complexType name="NetTradeIdentifier">
  <xsd:annotation>
    <xsd:documentation xml:lang="en">
      Identification of a net trade and original trades.
    </xsd:documentation>
  </xsd:annotation>
  <xsd:complexContent>
    <xsd:extension base="PartyTradeIdentifier">
      <xsd:sequence>
        <xsd:element name="originalTradeIdentifier" type="TradeIdentifierList" minOccurs="2" maxOccurs="unbounded">
          <xsd:annotation>
            <xsd:documentation xml:lang="en">
              Identification of original trades.
            </xsd:documentation>
          </xsd:annotation>
        </xsd:element>
      </xsd:sequence>
    </xsd:extension>
  </xsd:complexContent>
</xsd:complexType>

PartySettlementTransferInformation

Description:

Additional information about the settlement transfer. We will use this to carry information to drive internal processing.

Figure:

Contents:

partyReference (exactly one occurrence; of the type PartyReference)

processingInformation (exactly one occurrence; of the type SettlementTransferProcessingInformation)

Used by:

Schema Fragment:

<xsd:complexType name="PartySettlementTransferInformation">
  <xsd:annotation>
    <xsd:documentation xml:lang="en">
      Additional information about the settlement transfer. We will use
      this to carry information to drive internal processing.
    </xsd:documentation>
  </xsd:annotation>
  <xsd:sequence>
    <xsd:element name="partyReference" type="PartyReference">
      <xsd:annotation>
        <xsd:documentation xml:lang="en">
          Information contained in this structure is relative to the
          party being referred to.
        </xsd:documentation>
      </xsd:annotation>
    </xsd:element>
    <xsd:element name="processingInformation" type="SettlementTransferProcessingInformation">
      <xsd:annotation>
        <xsd:documentation xml:lang="en">
          Any party specific information that may be required to
          properly execute a transfer. This can be used as a type
          substitution point to insert party specific structures.
        </xsd:documentation>
      </xsd:annotation>
    </xsd:element>
  </xsd:sequence>
</xsd:complexType>

RateChangeEvent

Description:

A rate change is a mid life event where on a given date, the repo rate to apply is changed as a result of a bilateral agreement between the two parties. There is no cash or security movement associated with a rate change. The repo structure allows you to specify repo rates as a schedule, so this type is not strictly required within the repo. We need it for consistency and to allow a discrete event message to declare a rate change on a trade.

Figure:

Contents:

Inherited element(s): (This definition inherits the content defined by the type MidLifeEvent)

rate (exactly one occurrence; of the type xsd:decimal)

Used by:

Extension of:

Schema Fragment:

<xsd:complexType name="RateChangeEvent">
  <xsd:annotation>
    <xsd:documentation xml:lang="en">
      A rate change is a mid life event where on a given date, the repo
      rate to apply is changed as a result of a bilateral agreement
      between the two parties. There is no cash or security movement
      associated with a rate change. The repo structure allows you to
      specify repo rates as a schedule, so this type is not strictly
      required within the repo. We need it for consistency and to allow
      a discrete event message to declare a rate change on a trade.
    </xsd:documentation>
  </xsd:annotation>
  <xsd:complexContent>
    <xsd:extension base="MidLifeEvent">
      <xsd:sequence>
        <xsd:element name="rate" type="xsd:decimal">
          <xsd:annotation>
            <xsd:documentation xml:lang="en">
              The new repo rate, in decimal format that will be
              applicable at the specified event date.
            </xsd:documentation>
          </xsd:annotation>
        </xsd:element>
      </xsd:sequence>
    </xsd:extension>
  </xsd:complexContent>
</xsd:complexType>

RateObservationEvent

Description:

A rate observation is used only when a Repo is done against an index (typically EONIA repos) and we want to record the observed rates during the lifetime of the trade. This is similar in structure to a rate change, but the application context is different. A rate observation has no cash or security movement attached, so there is no transfer structure here. Rate observations are required on floating rate repos to calculate the accrued repo interest.

Figure:

Contents:

Inherited element(s): (This definition inherits the content defined by the type MidLifeEvent)

rate (exactly one occurrence; of the type xsd:decimal)

Used by:

Extension of:

Schema Fragment:

<xsd:complexType name="RateObservationEvent">
  <xsd:annotation>
    <xsd:documentation xml:lang="en">
      A rate observation is used only when a Repo is done against an
      index (typically EONIA repos) and we want to record the observed
      rates during the lifetime of the trade. This is similar in
      structure to a rate change, but the application context is
      different. A rate observation has no cash or security movement
      attached, so there is no transfer structure here. Rate
      observations are required on floating rate repos to calculate the
      accrued repo interest.
    </xsd:documentation>
  </xsd:annotation>
  <xsd:complexContent>
    <xsd:extension base="MidLifeEvent">
      <xsd:sequence>
        <xsd:element name="rate" type="xsd:decimal">
          <xsd:annotation>
            <xsd:documentation xml:lang="en">
              The observed rate at the specified event date that will
              be used to calculate the accrued interest on an index
              repo contract.
            </xsd:documentation>
          </xsd:annotation>
        </xsd:element>
      </xsd:sequence>
    </xsd:extension>
  </xsd:complexContent>
</xsd:complexType>

RelativePrice

Description:

A type which represents Pricing relative to a Benchmark.

Figure:

Contents:

spread (exactly one occurrence; of the type xsd:decimal)


There can be one occurance of the following structure; Choice of either

Used by:

Schema Fragment:

<xsd:complexType name="RelativePrice">
  <xsd:annotation>
    <xsd:documentation xml:lang="en">
      A type which represents Pricing relative to a Benchmark.
    </xsd:documentation>
  </xsd:annotation>
  <xsd:sequence>
    <xsd:element name="spread" type="xsd:decimal">
      <xsd:annotation>
        <xsd:documentation xml:lang="en">
          Basis Point spread over a Benchmark.
        </xsd:documentation>
      </xsd:annotation>
    </xsd:element>
    <xsd:group ref="BondEquity.model" maxOccurs="unbounded">
      <xsd:annotation>
        <xsd:documentation xml:lang="en">
          The benchmark being referred to; either a bond or equity
          product.
        </xsd:documentation>
      </xsd:annotation>
    </xsd:group>
  </xsd:sequence>
</xsd:complexType>

Repo

Description:

A Repo, modeled as an FpML:Product.

Figure:

Contents:

Inherited element(s): (This definition inherits the content defined by the type Product)


There can be one occurance of the following structure; Choice of either

Or


dayCountFraction (exactly one occurrence; of the type DayCountFraction)

noticePeriod (zero or one occurrence; of the type AdjustableOffset)

duration (exactly one occurrence; of the type RepoDurationEnum)

margin (exactly one occurrence; of the type Margin)

spotLeg (exactly one occurrence; of the type RepoTransactionLeg)

forwardLeg (zero or one occurrence; of the type ForwardRepoTransactionLeg)

Mid life events that occur during the lifetime of the Repo go here. midLifeEvent (zero or more occurrences; of the type MidLifeEvent)


There can be one occurance of the following structure; Choice of either

settlementTransfer (zero or one occurrence; of the type SettlementTransfer)

Used by:

Extension of:

Schema Fragment:

<xsd:complexType name="Repo">
  <xsd:annotation>
    <xsd:documentation xml:lang="en">
      A Repo, modeled as an FpML:Product.
    </xsd:documentation>
  </xsd:annotation>
  <xsd:complexContent>
    <xsd:extension base="Product">
      <xsd:sequence>
        <xsd:choice>
          <xsd:element name="fixedRateSchedule" type="Schedule">
            <xsd:annotation>
              <xsd:documentation xml:lang="en">
                The fixed repo rate. It is usually fixed for the
                duration of the agreement but can be changed with
                mid-life events (rate changes) except for buy SellBack
                trades.
              </xsd:documentation>
            </xsd:annotation>
          </xsd:element>
          <xsd:element name="floatingRateCalculation" type="FloatingRateCalculation">
            <xsd:annotation>
              <xsd:documentation xml:lang="en">
                The float index and tenor, with a spread. Use for
                floating rate repos. Most floatings in Europe are
                against EONIA.
              </xsd:documentation>
            </xsd:annotation>
          </xsd:element>
        </xsd:choice>
        <xsd:element name="dayCountFraction" type="DayCountFraction">
          <xsd:annotation>
            <xsd:documentation xml:lang="en">
              The day count fraction.
            </xsd:documentation>
          </xsd:annotation>
        </xsd:element>
        <xsd:element name="noticePeriod" type="AdjustableOffset" minOccurs="0">
          <xsd:annotation>
            <xsd:documentation xml:lang="en">
              Notice period for open ended or long dated repos in
              number of days.
            </xsd:documentation>
          </xsd:annotation>
        </xsd:element>
        <xsd:element name="duration" type="RepoDurationEnum">
          <xsd:annotation>
            <xsd:documentation xml:lang="en">
              A duration code for the contract.
            </xsd:documentation>
          </xsd:annotation>
        </xsd:element>
        <xsd:element name="margin" type="Margin">
          <xsd:annotation>
            <xsd:documentation xml:lang="en">
              The margin, or haircut, that will be applied.
            </xsd:documentation>
          </xsd:annotation>
        </xsd:element>
        <xsd:element name="spotLeg" type="RepoTransactionLeg">
          <xsd:annotation>
            <xsd:documentation xml:lang="en">
              A repo contract is modelled as two purchase/repurchase
              transactions which are called legs. This is the spot leg,
              i.e. the transaction that will be executed on the
              settlement date of the contract.
            </xsd:documentation>
          </xsd:annotation>
        </xsd:element>
        <xsd:element name="forwardLeg" type="ForwardRepoTransactionLeg" minOccurs="0">
          <xsd:annotation>
            <xsd:documentation xml:lang="en">
              The forward leg of the repo contract, i.e. the repurchase
              transaction.
            </xsd:documentation>
          </xsd:annotation>
        </xsd:element>
        <xsd:element ref="midLifeEvent" minOccurs="0" maxOccurs="unbounded">
          <xsd:annotation>
            <xsd:documentation xml:lang="en">
              Mid life events that occur during the lifetime of the
              Repo go here.
            </xsd:documentation>
          </xsd:annotation>
        </xsd:element>
        <xsd:group ref="BondEquity.model" maxOccurs="unbounded">
          <xsd:annotation>
            <xsd:documentation xml:lang="en">
              A list of the financial instruments that the repo
              contract may reference.
            </xsd:documentation>
          </xsd:annotation>
        </xsd:group>
        <xsd:element name="settlementTransfer" type="SettlementTransfer" minOccurs="0">
          <xsd:annotation>
            <xsd:documentation xml:lang="en">
              Participants may choose to explicitly specify the
              different financial exchanges that the product
              represents. This is the equivalent of the
              cashflow-explicit representation of an interest rate
              swap. In this case it is possible to give a
              transfer-explicit representation of a repo contract for
              settlement purposes.
            </xsd:documentation>
          </xsd:annotation>
        </xsd:element>
      </xsd:sequence>
    </xsd:extension>
  </xsd:complexContent>
</xsd:complexType>

RepoLegId

Description:

A Repo Leg Identification.

Figure:

Contents:

Inherited element(s): (This definition inherits the content defined by the type xsd:normalizedString)

Attribute: repoLegIdScheme (xsd:anyURI)

Attribute: id (xsd:ID)

Used by:

Schema Fragment:

<xsd:complexType name="RepoLegId">
  <xsd:annotation>
    <xsd:documentation xml:lang="en">
      A Repo Leg Identification.
    </xsd:documentation>
  </xsd:annotation>
  <xsd:simpleContent>
    <xsd:extension base="xsd:normalizedString">
      <xsd:attribute name="repoLegIdScheme" type="xsd:anyURI" default="http://www.fpml.org/coding-scheme/repo-leg-id-1-0"/>
      <xsd:attribute name="id" type="xsd:ID"/>
    </xsd:extension>
  </xsd:simpleContent>
</xsd:complexType>

RepoTransactionLeg

Description:

A transaction leg for a repo is equivalent to a single cash transaction.

Figure:

Contents:


There can be zero or one occurance of the following structure; Choice of either

Or


buyerPartyReference (exactly one occurrence; of the type PartyOrTradeSideReference)

sellerPartyReference (exactly one occurrence; of the type PartyOrTradeSideReference)

settlementDate (exactly one occurrence; of the type AdjustableOrRelativeDate)


There can be one occurance of the following structure; Choice of either

Or


collateral (zero or more occurrences; of the type CollateralValuation)

Attribute: id (xsd:ID) - optional

Used by:

Derived Types:

Schema Fragment:

<xsd:complexType name="RepoTransactionLeg">
  <xsd:annotation>
    <xsd:documentation xml:lang="en">
      A transaction leg for a repo is equivalent to a single cash
      transaction.
    </xsd:documentation>
  </xsd:annotation>
  <xsd:sequence>
    <xsd:choice minOccurs="0">
      <xsd:element name="id" type="RepoLegId" maxOccurs="unbounded"/>
      <xsd:element name="versionedId" type="VersionedRepoLegId" maxOccurs="unbounded"/>
    </xsd:choice>
    <xsd:group ref="BuyerSeller.model">
      <xsd:annotation>
        <xsd:documentation xml:lang="en">
          References to the buyer and seller of the repo contract.
        </xsd:documentation>
      </xsd:annotation>
    </xsd:group>
    <xsd:group ref="Settlement.model">
      <xsd:annotation>
        <xsd:documentation xml:lang="en">
          The date and monetary amounts specified for the settlement of
          this transaction.
        </xsd:documentation>
      </xsd:annotation>
    </xsd:group>
    <xsd:element name="collateral" type="CollateralValuation" minOccurs="0" maxOccurs="unbounded">
      <xsd:annotation>
        <xsd:documentation xml:lang="en">
          Collateral valuation is used to carry the quantity and price
          details that are required to ensure that a repo contract is
          executed at fair value, with the value of the collateral
          matching the cash amount of the repo. Collateral is declared
          as optional here, with multiple cardinalities, since we can
          do a repo "Multi", with multiple instruments specified, or a
          "Cash Borrow/Loan" and “TriPartyRepo” with no collateral. In
          general cases, however it should be specified.
        </xsd:documentation>
      </xsd:annotation>
    </xsd:element>
  </xsd:sequence>
  <xsd:attribute name="id" type="xsd:ID" use="optional"/>
</xsd:complexType>

RepoTransactionLegReference

Description:

Reference to an Transaction Leg.

Figure:

Contents:

Inherited element(s): (This definition inherits the content defined by the type Reference)

Used by:

Extension of:

Schema Fragment:

<xsd:complexType name="RepoTransactionLegReference">
  <xsd:annotation>
    <xsd:documentation xml:lang="en">
      Reference to an Transaction Leg.
    </xsd:documentation>
  </xsd:annotation>
  <xsd:complexContent>
    <xsd:extension base="Reference"/>
  </xsd:complexContent>
</xsd:complexType>

SecurityTransfer

Description:

The transfer of a security requires an identifier for the security, and a quantity.

Figure:

Contents:

Inherited element(s): (This definition inherits the content defined by the type AtomicSettlementTransfer)

quantity (exactly one occurrence; of the type xsd:decimal)

assetReference (exactly one occurrence; of the type AssetReference)

delivererPartyReference (exactly one occurrence; of the type PartyReference)

receiverPartyReference (exactly one occurrence; of the type PartyReference)

daylightIndicator (zero or one occurrence; of the type xsd:boolean)

Used by:

Extension of:

Schema Fragment:

<xsd:complexType name="SecurityTransfer">
  <xsd:annotation>
    <xsd:documentation xml:lang="en">
      The transfer of a security requires an identifier for the
      security, and a quantity.
    </xsd:documentation>
  </xsd:annotation>
  <xsd:complexContent>
    <xsd:extension base="AtomicSettlementTransfer">
      <xsd:sequence>
        <xsd:element name="quantity" type="xsd:decimal">
          <xsd:annotation>
            <xsd:documentation xml:lang="en">
              The quantity of asset being transfered
            </xsd:documentation>
          </xsd:annotation>
        </xsd:element>
        <xsd:element name="assetReference" type="AssetReference">
          <xsd:annotation>
            <xsd:documentation xml:lang="en">
              The asset being transfered.
            </xsd:documentation>
          </xsd:annotation>
        </xsd:element>
        <xsd:element name="delivererPartyReference" type="PartyReference">
          <xsd:annotation>
            <xsd:documentation xml:lang="en">
              Reference to the party delivering the asset.
            </xsd:documentation>
          </xsd:annotation>
        </xsd:element>
        <xsd:element name="receiverPartyReference" type="PartyReference">
          <xsd:annotation>
            <xsd:documentation xml:lang="en">
              Reference to the party receiving the asset.
            </xsd:documentation>
          </xsd:annotation>
        </xsd:element>
        <xsd:element name="daylightIndicator" type="xsd:boolean" minOccurs="0">
          <xsd:annotation>
            <xsd:documentation xml:lang="en">
              Standard settlement in Euroclear takes place in a batch
              on "value date - 1" (at 4 pm), to allow trades which are
              not included in this batch to be settled on value date,
              the daylight indicator can be used. The MT 540
              instruction will contain an indicator which notifies
              Euroclear whether a transaction can be put forward for
              settlement intra-day. This is the "Daylight Indicator"
              and will be set on all transactions with Euroclear.
              However, to ensure they are included within intra-day
              settlement, the counterparty within Euroclear (ie,
              participant B) must also indicate intra-day settlement
              can take place.
            </xsd:documentation>
          </xsd:annotation>
        </xsd:element>
      </xsd:sequence>
    </xsd:extension>
  </xsd:complexContent>
</xsd:complexType>

SettlementInstructionReference

Description:

Settlement Instruction Reference.

Figure:

Contents:

Inherited element(s): (This definition inherits the content defined by the type Reference)

Used by:

Extension of:

Schema Fragment:

<xsd:complexType name="SettlementInstructionReference">
  <xsd:annotation>
    <xsd:documentation xml:lang="en">
      Settlement Instruction Reference.
    </xsd:documentation>
  </xsd:annotation>
  <xsd:complexContent>
    <xsd:extension base="Reference"/>
  </xsd:complexContent>
</xsd:complexType>

SettlementTransfer

Description:

This is a container to carry 'transfers', i.e. elementary transfers of cash or securities. Transfer instructions are coupled with settlement instructions that are referenced.

Figure:

Contents:


There can be one occurance of the following structure; Choice of either

Or



There can be zero or one occurance of the following structure; Choice of either

Or


transferInformation (zero or more occurrences; of the type PartySettlementTransferInformation)

transfer (one or more occurrences; of the type Transfer)

settlementInstruction (zero or more occurrences; of the type SettlementInstruction)

Used by:

Schema Fragment:

<xsd:complexType name="SettlementTransfer">
  <xsd:annotation>
    <xsd:documentation xml:lang="en">
      This is a container to carry 'transfers', i.e. elementary
      transfers of cash or securities. Transfer instructions are
      coupled with settlement instructions that are referenced.
    </xsd:documentation>
  </xsd:annotation>
  <xsd:sequence>
    <xsd:group ref="SettlementTransferIdentifier.model" minOccurs="0">
      <xsd:annotation>
        <xsd:documentation xml:lang="en">
          Settlement Transfer Identifier which is optional in the
          context of a trade, but should always be used in a transfer
          message.
        </xsd:documentation>
      </xsd:annotation>
    </xsd:group>
    <xsd:element name="transferInformation" type="PartySettlementTransferInformation" minOccurs="0" maxOccurs="unbounded">
      <xsd:annotation>
        <xsd:documentation xml:lang="en">
          Transfer information which applies to all elementary
          transfers.
        </xsd:documentation>
      </xsd:annotation>
    </xsd:element>
    <xsd:element name="transfer" type="Transfer" maxOccurs="unbounded">
      <xsd:annotation>
        <xsd:documentation xml:lang="en">
          An elementary transfer. There can be as many transfers
          specified in this structure as required.
        </xsd:documentation>
      </xsd:annotation>
    </xsd:element>
    <xsd:element name="settlementInstruction" type="SettlementInstruction" minOccurs="0" maxOccurs="unbounded">
      <xsd:annotation>
        <xsd:documentation xml:lang="en">
          Settlement instruction.
        </xsd:documentation>
      </xsd:annotation>
    </xsd:element>
  </xsd:sequence>
</xsd:complexType>

SettlementTransferId

Description:

Settlement Transfer identification.

Figure:

Contents:

Inherited element(s): (This definition inherits the content defined by the type xsd:normalizedString)

Attribute: settlementTransferIdScheme (xsd:anyURI)

Attribute: id (xsd:ID)

Used by:

Schema Fragment:

<xsd:complexType name="SettlementTransferId">
  <xsd:annotation>
    <xsd:documentation xml:lang="en">
      Settlement Transfer identification.
    </xsd:documentation>
  </xsd:annotation>
  <xsd:simpleContent>
    <xsd:extension base="xsd:normalizedString">
      <xsd:attribute name="settlementTransferIdScheme" type="xsd:anyURI" default="http://www.fpml.org/coding-scheme/settlement-transfer-id-1-0"/>
      <xsd:attribute name="id" type="xsd:ID"/>
    </xsd:extension>
  </xsd:simpleContent>
</xsd:complexType>

SettlementTransferIdentifier

Description:

Settlement Transfer identification and classification.

Figure:

Contents:


There can be one occurance of the following structure; Choice of either

Or



There can be zero or one occurance of the following structure; Choice of either

Or


Attribute: id (xsd:ID) - optional

Used by:

Schema Fragment:

<xsd:complexType name="SettlementTransferIdentifier">
  <xsd:annotation>
    <xsd:documentation xml:lang="en">
      Settlement Transfer identification and classification.
    </xsd:documentation>
  </xsd:annotation>
  <xsd:sequence>
    <xsd:group ref="SettlementTransferIdentifier.model">
      <xsd:annotation>
        <xsd:documentation xml:lang="en">
          An identifier for an individual settlement transfer. This
          usually maps to a SWIFT message reference.
        </xsd:documentation>
      </xsd:annotation>
    </xsd:group>
  </xsd:sequence>
  <xsd:attribute name="id" type="xsd:ID" use="optional"/>
</xsd:complexType>

SettlementTransferProcessingInformation

Description:

Type representing settlement transfer processing information.

Figure:

Contents:

owner (zero or one occurrence; of the type xsd:boolean)

Used by:

Schema Fragment:

<xsd:complexType name="SettlementTransferProcessingInformation">
  <xsd:annotation>
    <xsd:documentation xml:lang="en">
      Type representing settlement transfer processing information.
    </xsd:documentation>
  </xsd:annotation>
  <xsd:sequence>
    <xsd:element name="owner" type="xsd:boolean" minOccurs="0">
      <xsd:annotation>
        <xsd:documentation xml:lang="en">
          If present and true the publisher considers this party to be
          the owner of the transfer.
        </xsd:documentation>
      </xsd:annotation>
    </xsd:element>
  </xsd:sequence>
</xsd:complexType>

SettlementTransferType

Description:

A settlement transfer classification.

Figure:

Contents:

Inherited element(s): (This definition inherits the content defined by the type xsd:normalizedString)

Attribute: settlementTransferTypeScheme (xsd:anyURI)

Used by:

Schema Fragment:

<xsd:complexType name="SettlementTransferType">
  <xsd:annotation>
    <xsd:documentation xml:lang="en">
      A settlement transfer classification.
    </xsd:documentation>
  </xsd:annotation>
  <xsd:simpleContent>
    <xsd:extension base="xsd:normalizedString">
      <xsd:attribute name="settlementTransferTypeScheme" type="xsd:anyURI" default="http://www.fpml.org/coding-scheme/settlement-transfer-type-1-0"/>
    </xsd:extension>
  </xsd:simpleContent>
</xsd:complexType>

StreamId

Description:

Stream identification.

Figure:

Contents:

Inherited element(s): (This definition inherits the content defined by the type xsd:normalizedString)

Attribute: streamId (xsd:anyURI)

Used by:

Schema Fragment:

<xsd:complexType name="StreamId">
  <xsd:annotation>
    <xsd:documentation xml:lang="en">
      Stream identification.
    </xsd:documentation>
  </xsd:annotation>
  <xsd:simpleContent>
    <xsd:extension base="xsd:normalizedString">
      <xsd:attribute name="streamId" type="xsd:anyURI" default="http://www.fpml.org/coding-scheme/stream-id-1-0"/>
    </xsd:extension>
  </xsd:simpleContent>
</xsd:complexType>

StreamReference

Description:

Reference to an Stream.

Figure:

Contents:

Inherited element(s): (This definition inherits the content defined by the type Reference)

Used by:

Extension of:

Schema Fragment:

<xsd:complexType name="StreamReference">
  <xsd:annotation>
    <xsd:documentation xml:lang="en">
      Reference to an Stream.
    </xsd:documentation>
  </xsd:annotation>
  <xsd:complexContent>
    <xsd:extension base="Reference"/>
  </xsd:complexContent>
</xsd:complexType>

TradeAndComponentIdentifier

Description:

Contains identification of a trade, and references to a trade component or event.

Figure:

Contents:

Inherited element(s): (This definition inherits the content defined by the type TradeIdentifier)

tradeComponentIdentifier (exactly one occurrence; of the type TradeComponentIdentifier)

Used by:

Extension of:

Schema Fragment:

<xsd:complexType name="TradeAndComponentIdentifier">
  <xsd:annotation>
    <xsd:documentation xml:lang="en">
      Contains identification of a trade, and references to a trade
      component or event.
    </xsd:documentation>
  </xsd:annotation>
  <xsd:complexContent>
    <xsd:extension base="TradeIdentifier">
      <xsd:sequence>
        <xsd:element name="tradeComponentIdentifier" type="TradeComponentIdentifier"/>
      </xsd:sequence>
    </xsd:extension>
  </xsd:complexContent>
</xsd:complexType>

TradeComponentIdentifier

Description:

Trade Component or Event identification or references.

Figure:

Contents:


There can be one occurance of the following structure; Choice of either

Or

Or


Used by:

Schema Fragment:

<xsd:complexType name="TradeComponentIdentifier">
  <xsd:annotation>
    <xsd:documentation xml:lang="en">
      Trade Component or Event identification or references.
    </xsd:documentation>
  </xsd:annotation>
  <xsd:choice>
    <xsd:choice maxOccurs="unbounded">
      <xsd:element name="repoLegId" type="RepoLegId"/>
      <xsd:element name="versionedRepoLegId" type="VersionedRepoLegId"/>
    </xsd:choice>
    <xsd:element name="repoLegReference" type="RepoTransactionLegReference"/>
    <xsd:choice maxOccurs="unbounded">
      <xsd:element name="eventId" type="EventId"/>
      <xsd:element name="versionedEventId" type="VersionedEventId"/>
    </xsd:choice>
    <xsd:element name="eventReference" type="EventReference"/>
    <xsd:choice maxOccurs="unbounded">
      <xsd:element name="streamId" type="StreamId"/>
      <xsd:element name="versionedStreamId" type="VersionedStreamId"/>
    </xsd:choice>
    <xsd:element name="streamReference" type="StreamReference"/>
  </xsd:choice>
</xsd:complexType>

TradeIdentifierList

Description:

A type containing multiple tradeIdentifier.

Figure:

Contents:

tradeIdentifier (one or more occurrences; of the type TradeIdentifier)

Used by:

Schema Fragment:

<xsd:complexType name="TradeIdentifierList">
  <xsd:annotation>
    <xsd:documentation xml:lang="en">
      A type containing multiple tradeIdentifier.
    </xsd:documentation>
  </xsd:annotation>
  <xsd:sequence>
    <xsd:element name="tradeIdentifier" type="TradeIdentifier" maxOccurs="unbounded">
      <xsd:annotation>
        <xsd:documentation xml:lang="en">
          A trade identifier.
        </xsd:documentation>
      </xsd:annotation>
    </xsd:element>
  </xsd:sequence>
</xsd:complexType>

Transfer

Description:

A type used to represent a transfer of cash, or securities, or a simultaneous exchange of securities vs cash.

Figure:

Contents:


There can be zero or one occurance of the following structure; Choice of either

Or



There can be one occurance of the following structure; Choice of either

Or

Or


deliveryMethod (exactly one occurrence; of the type DeliveryMethodEnum)

transferDate (exactly one occurrence; of the type IdentifiedDate)


There can be one occurance of the following structure; Choice of either

settlementInstructionReference (zero or one occurrence; of the type SettlementInstructionReference)

Attribute: id (xsd:ID)

Used by:

Schema Fragment:

<xsd:complexType name="Transfer">
  <xsd:annotation>
    <xsd:documentation xml:lang="en">
      A type used to represent a transfer of cash, or securities, or a
      simultaneous exchange of securities vs cash.
    </xsd:documentation>
  </xsd:annotation>
  <xsd:sequence>
    <xsd:choice minOccurs="0">
      <xsd:element name="id" type="TransferId" maxOccurs="unbounded"/>
      <xsd:element name="versionedId" type="VersionedTransferId" maxOccurs="unbounded"/>
    </xsd:choice>
    <xsd:group ref="TradeComponentOrIdentifierOrNet.model" minOccurs="0"/>
    <xsd:element name="deliveryMethod" type="DeliveryMethodEnum">
      <xsd:annotation>
        <xsd:documentation xml:lang="en">
          Specify the delivery method. There is a business rule
          associated with this field: if deliveryMethod is DVP then you
          must specify a cashTransfer and a securityTransfer at the
          same time. It is incorrect to specify DVP and give only a
          cash transfer instruction.
        </xsd:documentation>
      </xsd:annotation>
    </xsd:element>
    <xsd:element name="transferDate" type="IdentifiedDate">
      <xsd:annotation>
        <xsd:documentation xml:lang="en">
          The date at which the transfer should occur.
        </xsd:documentation>
      </xsd:annotation>
    </xsd:element>
    <xsd:choice>
      <xsd:annotation>
        <xsd:documentation xml:lang="en">
          You can specify either a cash transfer, or a security
          transfer, or both, but the structure below cannot be empty.
          Note the semantics of the structure: If we only have a cash
          transfer it is a pure cash transfer, mapping to a MT202 or
          MT210; if we have a security transfer only, it maps to a
          MT540 or 542 (deliver or receive free). If the structure has
          both cash and security specified it maps to MT541 or MT543
          (deliver or receive against payment). The deliveryMethod tag
          allows us to validate that the transfer is structurally
          valid.
        </xsd:documentation>
      </xsd:annotation>
      <xsd:sequence>
        <xsd:element name="cashTransfer" type="CashTransfer">
          <xsd:annotation>
            <xsd:documentation xml:lang="en">
              A transfer of a cash amount between two parties.
            </xsd:documentation>
          </xsd:annotation>
        </xsd:element>
        <xsd:element name="securityTransfer" type="SecurityTransfer" minOccurs="0">
          <xsd:annotation>
            <xsd:documentation xml:lang="en">
              A transfer of securities between two parties.
            </xsd:documentation>
          </xsd:annotation>
        </xsd:element>
      </xsd:sequence>
      <xsd:element name="securityTransfer" type="SecurityTransfer">
        <xsd:annotation>
          <xsd:documentation xml:lang="en">
            A transfer of securities between two parties.
          </xsd:documentation>
        </xsd:annotation>
      </xsd:element>
    </xsd:choice>
    <xsd:element name="settlementInstructionReference" type="SettlementInstructionReference" minOccurs="0">
      <xsd:annotation>
        <xsd:documentation xml:lang="en">
          Settlement Instruction Reference.
        </xsd:documentation>
      </xsd:annotation>
    </xsd:element>
  </xsd:sequence>
  <xsd:attribute name="id" type="xsd:ID"/>
</xsd:complexType>

TransferId

Description:

A Transfer Identification.

Figure:

Contents:

Inherited element(s): (This definition inherits the content defined by the type xsd:normalizedString)

Attribute: transferIdScheme (xsd:anyURI)

Attribute: id (xsd:ID)

Used by:

Schema Fragment:

<xsd:complexType name="TransferId">
  <xsd:annotation>
    <xsd:documentation xml:lang="en">
      A Transfer Identification.
    </xsd:documentation>
  </xsd:annotation>
  <xsd:simpleContent>
    <xsd:extension base="xsd:normalizedString">
      <xsd:attribute name="transferIdScheme" type="xsd:anyURI" default="http://www.fpml.org/coding-scheme/transfer-id-1-0"/>
      <xsd:attribute name="id" type="xsd:ID"/>
    </xsd:extension>
  </xsd:simpleContent>
</xsd:complexType>

VersionedEventId

Description:

EventId with version control elements.

Figure:

Contents:

id (exactly one occurrence; of the type EventId)

version (exactly one occurrence; of the type xsd:nonNegativeInteger)

effectiveDate (zero or one occurrence; of the type IdentifiedDate)

Used by:

Schema Fragment:

<xsd:complexType name="VersionedEventId">
  <xsd:annotation>
    <xsd:documentation xml:lang="en">
      EventId with version control elements.
    </xsd:documentation>
  </xsd:annotation>
  <xsd:sequence>
    <xsd:element name="id" type="EventId"/>
    <xsd:group ref="VersionHistory.model"/>
  </xsd:sequence>
</xsd:complexType>

VersionedRepoLegId

Description:

Repo Leg Id with version control elements.

Figure:

Contents:

id (exactly one occurrence; of the type RepoLegId)

version (exactly one occurrence; of the type xsd:nonNegativeInteger)

effectiveDate (zero or one occurrence; of the type IdentifiedDate)

Used by:

Schema Fragment:

<xsd:complexType name="VersionedRepoLegId">
  <xsd:annotation>
    <xsd:documentation xml:lang="en">
      Repo Leg Id with version control elements.
    </xsd:documentation>
  </xsd:annotation>
  <xsd:sequence>
    <xsd:element name="id" type="RepoLegId"/>
    <xsd:group ref="VersionHistory.model"/>
  </xsd:sequence>
</xsd:complexType>

VersionedSettlementTransferId

Description:

Settlement Transfer Id with version control elements.

Figure:

Contents:

id (exactly one occurrence; of the type SettlementTransferId)

version (exactly one occurrence; of the type xsd:nonNegativeInteger)

effectiveDate (zero or one occurrence; of the type IdentifiedDate)

Used by:

Schema Fragment:

<xsd:complexType name="VersionedSettlementTransferId">
  <xsd:annotation>
    <xsd:documentation xml:lang="en">
      Settlement Transfer Id with version control elements.
    </xsd:documentation>
  </xsd:annotation>
  <xsd:sequence>
    <xsd:element name="id" type="SettlementTransferId"/>
    <xsd:group ref="VersionHistory.model"/>
  </xsd:sequence>
</xsd:complexType>

VersionedSettlementTransferType

Description:

SettlementTransfer Type with version control elements.

Figure:

Contents:

type (exactly one occurrence; of the type SettlementTransferType)

version (exactly one occurrence; of the type xsd:nonNegativeInteger)

effectiveDate (zero or one occurrence; of the type IdentifiedDate)

Used by:

Schema Fragment:

<xsd:complexType name="VersionedSettlementTransferType">
  <xsd:annotation>
    <xsd:documentation xml:lang="en">
      SettlementTransfer Type with version control elements.
    </xsd:documentation>
  </xsd:annotation>
  <xsd:sequence>
    <xsd:element name="type" type="SettlementTransferType"/>
    <xsd:group ref="VersionHistory.model"/>
  </xsd:sequence>
</xsd:complexType>

VersionedStreamId

Description:

StreamId with version control elements.

Figure:

Contents:

id (exactly one occurrence; of the type StreamId)

version (exactly one occurrence; of the type xsd:nonNegativeInteger)

effectiveDate (zero or one occurrence; of the type IdentifiedDate)

Used by:

Schema Fragment:

<xsd:complexType name="VersionedStreamId">
  <xsd:annotation>
    <xsd:documentation xml:lang="en">
      StreamId with version control elements.
    </xsd:documentation>
  </xsd:annotation>
  <xsd:sequence>
    <xsd:element name="id" type="StreamId"/>
    <xsd:group ref="VersionHistory.model"/>
  </xsd:sequence>
</xsd:complexType>

VersionedTransferId

Description:

Transfer Id with version control elements.

Figure:

Contents:

id (exactly one occurrence; of the type TransferId)

version (exactly one occurrence; of the type xsd:nonNegativeInteger)

effectiveDate (zero or one occurrence; of the type IdentifiedDate)

Used by:

Schema Fragment:

<xsd:complexType name="VersionedTransferId">
  <xsd:annotation>
    <xsd:documentation xml:lang="en">
      Transfer Id with version control elements.
    </xsd:documentation>
  </xsd:annotation>
  <xsd:sequence>
    <xsd:element name="id" type="TransferId"/>
    <xsd:group ref="VersionHistory.model"/>
  </xsd:sequence>
</xsd:complexType>

Global Elements

cashRepricing

Description:

Global element representing cash repricing.

Figure:

Contents:

Element cashRepricing is defined by the complex type CashRepricingEvent

Used by:

Schema Fragment:

<xsd:element name="cashRepricing" type="CashRepricingEvent" substitutionGroup="midLifeEvent">
  <xsd:annotation>
    <xsd:documentation xml:lang="en">
      Global element representing cash repricing.
    </xsd:documentation>
  </xsd:annotation>
</xsd:element>

collateralSubstitution

Description:

Global element representing a collateral substitution.

Figure:

Contents:

Element collateralSubstitution is defined by the complex type CollateralSubstitutionEvent

Used by:

Schema Fragment:

<xsd:element name="collateralSubstitution" type="CollateralSubstitutionEvent" substitutionGroup="midLifeEvent">
  <xsd:annotation>
    <xsd:documentation xml:lang="en">
      Global element representing a collateral substitution.
    </xsd:documentation>
  </xsd:annotation>
</xsd:element>

couponEvent

Description:

Global element representing a coupon event.

Figure:

Contents:

Element couponEvent is defined by the complex type CouponEvent

Used by:

Schema Fragment:

<xsd:element name="couponEvent" type="CouponEvent" substitutionGroup="midLifeEvent">
  <xsd:annotation>
    <xsd:documentation xml:lang="en">
      Global element representing a coupon event.
    </xsd:documentation>
  </xsd:annotation>
</xsd:element>

interestPayout

Description:

Global element representing an interest payout.

Figure:

Contents:

Element interestPayout is defined by the complex type InterestPayoutEvent

Used by:

Schema Fragment:

<xsd:element name="interestPayout" type="InterestPayoutEvent" substitutionGroup="midLifeEvent">
  <xsd:annotation>
    <xsd:documentation xml:lang="en">
      Global element representing an interest payout.
    </xsd:documentation>
  </xsd:annotation>
</xsd:element>

markToMarketEvent

Description:

Global element representing a nominal repricing.

Figure:

Contents:

Element markToMarketEvent is defined by the complex type MarkToMarketEvent

Used by:

Schema Fragment:

<xsd:element name="markToMarketEvent" type="MarkToMarketEvent" substitutionGroup="midLifeEvent">
  <xsd:annotation>
    <xsd:documentation xml:lang="en">
      Global element representing a nominal repricing.
    </xsd:documentation>
  </xsd:annotation>
</xsd:element>

midLifeEvent

Description:

Abstract placeholder for repo mid life events.

Figure:

Contents:

Element midLifeEvent is defined by the complex type MidLifeEvent

Used by:

Substituted by:

Schema Fragment:

<xsd:element name="midLifeEvent" type="MidLifeEvent" abstract="true">
  <xsd:annotation>
    <xsd:documentation xml:lang="en">
      Abstract placeholder for repo mid life events.
    </xsd:documentation>
  </xsd:annotation>
</xsd:element>

rateChange

Description:

Global element representing a rate change.

Figure:

Contents:

Element rateChange is defined by the complex type RateChangeEvent

Used by:

Schema Fragment:

<xsd:element name="rateChange" type="RateChangeEvent" substitutionGroup="midLifeEvent">
  <xsd:annotation>
    <xsd:documentation xml:lang="en">
      Global element representing a rate change.
    </xsd:documentation>
  </xsd:annotation>
</xsd:element>

rateObservation

Description:

Global element representing rate observation.

Figure:

Contents:

Element rateObservation is defined by the complex type RateObservationEvent

Used by:

Schema Fragment:

<xsd:element name="rateObservation" type="RateObservationEvent" substitutionGroup="midLifeEvent">
  <xsd:annotation>
    <xsd:documentation xml:lang="en">
      Global element representing rate observation.
    </xsd:documentation>
  </xsd:annotation>
</xsd:element>

repo

Description:

Figure:

Contents:

Element repo is defined by the complex type Repo

Used by:

Schema Fragment:

<xsd:element name="repo" type="Repo" substitutionGroup="product"/>

Groups

BondChoice.model

Description:

A model group which provides choices between all bond underlyers.

Figure:

Contents:


There can be one occurance of the following structure; Choice of either

Or


Used by:

Schema Fragment:

<xsd:group name="BondChoice.model">
  <xsd:annotation>
    <xsd:documentation xml:lang="en">
      A model group which provides choices between all bond underlyers.
    </xsd:documentation>
  </xsd:annotation>
  <xsd:choice>
    <xsd:element ref="bond">
      <xsd:annotation>
        <xsd:documentation xml:lang="en">
          A bond instrument referenced by a contract
        </xsd:documentation>
      </xsd:annotation>
    </xsd:element>
    <xsd:element ref="convertibleBond">
      <xsd:annotation>
        <xsd:documentation xml:lang="en">
          A convertible bond instrument referenced by a contract.
        </xsd:documentation>
      </xsd:annotation>
    </xsd:element>
  </xsd:choice>
</xsd:group>

BondCollateral.model

Description:

A group which has Collateral elements.

Figure:

Contents:

nominalAmount (exactly one occurrence; of the type Money)

cleanPrice (exactly one occurrence; of the type xsd:decimal)

accruals (zero or one occurrence; of the type xsd:decimal)

dirtyPrice (zero or one occurrence; of the type xsd:decimal)

relativePrice (zero or one occurrence; of the type RelativePrice)

yieldToMaturity (zero or one occurrence; of the type xsd:decimal)

inflationFactor (zero or one occurrence; of the type xsd:decimal)

interestStartDate (zero or one occurrence; of the type AdjustableOrRelativeDate)

pool (zero or one occurrence; of the type AssetPool)

Used by:

Schema Fragment:

<xsd:group name="BondCollateral.model">
  <xsd:annotation>
    <xsd:documentation xml:lang="en">
      A group which has Collateral elements.
    </xsd:documentation>
  </xsd:annotation>
  <xsd:sequence>
    <xsd:element name="nominalAmount" type="Money">
      <xsd:annotation>
        <xsd:documentation xml:lang="en">
          Collateral nominal amount.
        </xsd:documentation>
      </xsd:annotation>
    </xsd:element>
    <xsd:group ref="BondPriceAndYield.model" minOccurs="0">
      <xsd:annotation>
        <xsd:documentation xml:lang="en">
          Collateral price.
        </xsd:documentation>
      </xsd:annotation>
    </xsd:group>
  </xsd:sequence>
</xsd:group>

BondEquity.model

Description:

A model group that allows us to specify that a repo contract can reference bond or equity instruments.

Figure:

Contents:


There can be one occurance of the following structure; Choice of either

Used by:

Schema Fragment:

<xsd:group name="BondEquity.model">
  <xsd:annotation>
    <xsd:documentation xml:lang="en">
      A model group that allows us to specify that a repo contract can
      reference bond or equity instruments.
    </xsd:documentation>
  </xsd:annotation>
  <xsd:choice>
    <xsd:annotation>
      <xsd:documentation xml:lang="en">
        Most repos are done using Bonds and Bond subclasses as
        collateral; However it is technically possible to execute a
        repo on an equity, as long as the mark to market is correctly
        done during the lifetime of the repo.
      </xsd:documentation>
    </xsd:annotation>
    <xsd:group ref="BondChoice.model">
      <xsd:annotation>
        <xsd:documentation xml:lang="en">
          a bond, or bond subtype referenced by a repo contract.
        </xsd:documentation>
      </xsd:annotation>
    </xsd:group>
    <xsd:element ref="equity">
      <xsd:annotation>
        <xsd:documentation xml:lang="en">
          an equity referenced by a repo contract.
        </xsd:documentation>
      </xsd:annotation>
    </xsd:element>
  </xsd:choice>
</xsd:group>

BondPriceAndYield.model

Description:

A group which has either Bond Price or Yield elements.

Figure:

Contents:

cleanPrice (exactly one occurrence; of the type xsd:decimal)

accruals (zero or one occurrence; of the type xsd:decimal)

dirtyPrice (zero or one occurrence; of the type xsd:decimal)

relativePrice (zero or one occurrence; of the type RelativePrice)

yieldToMaturity (zero or one occurrence; of the type xsd:decimal)

inflationFactor (zero or one occurrence; of the type xsd:decimal)

interestStartDate (zero or one occurrence; of the type AdjustableOrRelativeDate)

pool (zero or one occurrence; of the type AssetPool)

Used by:

Schema Fragment:

<xsd:group name="BondPriceAndYield.model">
  <xsd:annotation>
    <xsd:documentation xml:lang="en">
      A group which has either Bond Price or Yield elements.
    </xsd:documentation>
  </xsd:annotation>
  <xsd:sequence>
    <xsd:element name="cleanPrice" type="xsd:decimal">
      <xsd:annotation>
        <xsd:documentation xml:lang="en">
          Bond clean price, expressed in percentage points, 100 is the
          initial value of the bond.
        </xsd:documentation>
      </xsd:annotation>
    </xsd:element>
    <xsd:element name="accruals" type="xsd:decimal" minOccurs="0">
      <xsd:annotation>
        <xsd:documentation xml:lang="en">
          Accruals, relationship is clean price and accruals equals
          dirty price, all prices are expressed in percentage points,
          100 is the initial value of the bond.
        </xsd:documentation>
      </xsd:annotation>
    </xsd:element>
    <xsd:element name="dirtyPrice" type="xsd:decimal" minOccurs="0">
      <xsd:annotation>
        <xsd:documentation xml:lang="en">
          Bond dirty price, expressed in percentage points, 100 is the
          initial value of the bond.
        </xsd:documentation>
      </xsd:annotation>
    </xsd:element>
    <xsd:element name="relativePrice" type="RelativePrice" minOccurs="0">
      <xsd:annotation>
        <xsd:documentation xml:lang="en">
          Bond price relative to a Benchmark.
        </xsd:documentation>
      </xsd:annotation>
    </xsd:element>
    <xsd:element name="yieldToMaturity" type="xsd:decimal" minOccurs="0">
      <xsd:annotation>
        <xsd:documentation xml:lang="en">
          Yield to Maturity.
        </xsd:documentation>
      </xsd:annotation>
    </xsd:element>
    <xsd:element name="inflationFactor" type="xsd:decimal" minOccurs="0">
      <xsd:annotation>
        <xsd:documentation xml:lang="en">
          The inflation factor is specified for inflation-linked
          products which require some additional elements to calculate
          prices correctly.
        </xsd:documentation>
      </xsd:annotation>
    </xsd:element>
    <xsd:element name="interestStartDate" type="AdjustableOrRelativeDate" minOccurs="0">
      <xsd:annotation>
        <xsd:documentation xml:lang="en">
          Start date for interest calculations.
        </xsd:documentation>
      </xsd:annotation>
    </xsd:element>
    <xsd:element name="pool" type="AssetPool" minOccurs="0">
      <xsd:annotation>
        <xsd:documentation xml:lang="en">
          Characterise an asset pool, such as the MBS pool on a
          collateralised repo.
        </xsd:documentation>
      </xsd:annotation>
    </xsd:element>
  </xsd:sequence>
</xsd:group>

Settlement.model

Description:

A group which has cash settlement elements.

Figure:

Contents:

settlementDate (exactly one occurrence; of the type AdjustableOrRelativeDate)


There can be one occurance of the following structure; Choice of either

Or


Used by:

Schema Fragment:

<xsd:group name="Settlement.model">
  <xsd:annotation>
    <xsd:documentation xml:lang="en">
      A group which has cash settlement elements.
    </xsd:documentation>
  </xsd:annotation>
  <xsd:sequence>
    <xsd:element name="settlementDate" type="AdjustableOrRelativeDate">
      <xsd:annotation>
        <xsd:documentation xml:lang="en">
          Settlement Date.
        </xsd:documentation>
      </xsd:annotation>
    </xsd:element>
    <xsd:group ref="SettlementAmountOrCurrency.model">
      <xsd:annotation>
        <xsd:documentation xml:lang="en">
          When the exact financial amount to trade is not known, this
          structure allows participants to state the currency of the
          transaction.
        </xsd:documentation>
      </xsd:annotation>
    </xsd:group>
  </xsd:sequence>
</xsd:group>

SettlementAmountOrCurrency.model

Description:

Figure:

Contents:


There can be one occurance of the following structure; Choice of either

Or


Used by:

Schema Fragment:

<xsd:group name="SettlementAmountOrCurrency.model">
  <xsd:choice>
    <xsd:element name="settlementAmount" type="Money">
      <xsd:annotation>
        <xsd:documentation xml:lang="en">
          Settlement Amount.
        </xsd:documentation>
      </xsd:annotation>
    </xsd:element>
    <xsd:element name="settlementCurrency" type="Currency">
      <xsd:annotation>
        <xsd:documentation xml:lang="en">
          Settlement Currency for use where the Settlement Amount
          cannot be known in advance.
        </xsd:documentation>
      </xsd:annotation>
    </xsd:element>
  </xsd:choice>
</xsd:group>

SettlementTransferIdentifier.model

Description:

Group which has settlement transfer identifier elements.

Figure:

Contents:


There can be one occurance of the following structure; Choice of either

Or



There can be zero or one occurance of the following structure; Choice of either

Or


Used by:

Schema Fragment:

<xsd:group name="SettlementTransferIdentifier.model">
  <xsd:annotation>
    <xsd:documentation xml:lang="en">
      Group which has settlement transfer identifier elements.
    </xsd:documentation>
  </xsd:annotation>
  <xsd:sequence>
    <xsd:choice>
      <xsd:element name="id" type="SettlementTransferId" maxOccurs="unbounded"/>
      <xsd:element name="versionedId" type="VersionedSettlementTransferId" maxOccurs="unbounded"/>
    </xsd:choice>
    <xsd:choice minOccurs="0">
      <xsd:element name="type" type="SettlementTransferType" maxOccurs="unbounded"/>
      <xsd:element name="versionedType" type="VersionedSettlementTransferType" maxOccurs="unbounded"/>
    </xsd:choice>
  </xsd:sequence>
</xsd:group>

TradeComponentOrIdentifierOrNet.model

Description:

Trade or Trade Identifier.

Figure:

Contents:


There can be one occurance of the following structure; Choice of either

Or

Or


Used by:

Schema Fragment:

<xsd:group name="TradeComponentOrIdentifierOrNet.model">
  <xsd:annotation>
    <xsd:documentation xml:lang="en">
      Trade or Trade Identifier.
    </xsd:documentation>
  </xsd:annotation>
  <xsd:choice>
    <xsd:element name="tradeComponentIdentifier" type="TradeComponentIdentifier">
      <xsd:annotation>
        <xsd:documentation xml:lang="en">
          Identify the trade component which has caused this transfer
          to occur within a Trade Settlement.
        </xsd:documentation>
      </xsd:annotation>
    </xsd:element>
    <xsd:element name="tradeAndComponentIdentifier" type="TradeAndComponentIdentifier" maxOccurs="unbounded">
      <xsd:annotation>
        <xsd:documentation xml:lang="en">
          Identify the trade and component which has caused this
          transfer to occur within a Settlement Message.
        </xsd:documentation>
      </xsd:annotation>
    </xsd:element>
    <xsd:element name="netTradeIdentifier" type="NetTradeIdentifier">
      <xsd:annotation>
        <xsd:documentation xml:lang="en">
          Identify the net trade and original trades which have caused
          this transfer to occur within a Trade or Settlement Message.
        </xsd:documentation>
      </xsd:annotation>
    </xsd:element>
  </xsd:choice>
</xsd:group>

UnitContract.model

Description:

A group which has unit based trade elements.

Figure:

Contents:

numberOfUnits (exactly one occurrence; of the type xsd:decimal)

unitPrice (exactly one occurrence; of the type Money)

Used by:

Schema Fragment:

<xsd:group name="UnitContract.model">
  <xsd:annotation>
    <xsd:documentation xml:lang="en">
      A group which has unit based trade elements.
    </xsd:documentation>
  </xsd:annotation>
  <xsd:sequence>
    <xsd:element name="numberOfUnits" type="xsd:decimal">
      <xsd:annotation>
        <xsd:documentation xml:lang="en">
          The number of units (index or securities).
        </xsd:documentation>
      </xsd:annotation>
    </xsd:element>
    <xsd:element name="unitPrice" type="Money">
      <xsd:annotation>
        <xsd:documentation xml:lang="en">
          The price of each unit.
        </xsd:documentation>
      </xsd:annotation>
    </xsd:element>
  </xsd:sequence>
</xsd:group>

Full XML Schema

<xsd:schema targetNamespace="http://www.fpml.org/2007/FpML-4-3" elementFormDefault="qualified" attributeFormDefault="unqualified" version="$Revision: 1133 $" ecore:nsPrefix="fpml" ecore:package="org.fpml" ecore:documentRoot="FpML">
  <xsd:include schemaLocation="fpml-shared.xsd"/>
  <xsd:include schemaLocation="fpml-asset.xsd"/>
  <xsd:include schemaLocation="fpml-doc.xsd"/>
  <xsd:simpleType name="DeliveryMethodEnum">
    <xsd:annotation>
      <xsd:documentation xml:lang="en">
        This enumeration defines the possible delivery methods for
        securities.
      </xsd:documentation>
    </xsd:annotation>
    <xsd:restriction base="xsd:token">
      <xsd:enumeration value="DeliveryVersusPayment">
        <xsd:annotation>
          <xsd:documentation xml:lang="en">
            Indicates that a securities delivery must be made against
            payment in a single transaction
          </xsd:documentation>
        </xsd:annotation>
      </xsd:enumeration>
      <xsd:enumeration value="FreeOfPayment">
        <xsd:annotation>
          <xsd:documentation xml:lang="en">
            Indicates that a securities delivery can be made without a
            simultaneous cash payment in exchange.
          </xsd:documentation>
        </xsd:annotation>
      </xsd:enumeration>
    </xsd:restriction>
  </xsd:simpleType>
  <xsd:simpleType name="MarginTypeEnum">
    <xsd:annotation>
      <xsd:documentation xml:lang="en">
        This indicator defines if a margin (also called haircut in repo
        and sec lending litterature) applies to cash or to the
        financial instrument being exchanged.
      </xsd:documentation>
    </xsd:annotation>
    <xsd:restriction base="xsd:token">
      <xsd:enumeration value="Cash">
        <xsd:annotation>
          <xsd:documentation xml:lang="en">
            When the margin type is Cash, the margin factor is applied
            to the cash value of the transaction.
          </xsd:documentation>
        </xsd:annotation>
      </xsd:enumeration>
      <xsd:enumeration value="Instrument">
        <xsd:annotation>
          <xsd:documentation xml:lang="en">
            When the margin type is Instrument, the margin factor is
            applied to the instrument value for the transaction.
          </xsd:documentation>
        </xsd:annotation>
      </xsd:enumeration>
    </xsd:restriction>
  </xsd:simpleType>
  <xsd:simpleType name="RepoDurationEnum">
    <xsd:annotation>
      <xsd:documentation xml:lang="en">
        A duration code for a Repo (or Securities Lending) transaction.
        There are many business and market rules that are derived from
        the duration of the transaction.
      </xsd:documentation>
    </xsd:annotation>
    <xsd:restriction base="xsd:token">
      <xsd:enumeration value="Overnight">
        <xsd:annotation>
          <xsd:documentation xml:lang="en">
            Indicates that a contract is classified as overnight,
            meaning that there is one business day difference between
            the start and end date of the contract. Business rule: When
            the repo is overnight, the number of business days between
            the spot and forward value dates must be one. Forward leg
            must be specified.
          </xsd:documentation>
        </xsd:annotation>
      </xsd:enumeration>
      <xsd:enumeration value="Term">
        <xsd:annotation>
          <xsd:documentation xml:lang="en">
            Indicates that a contract is a regular term contract, with
            a start date and an end date. Business rule: When the repo
            is 'Term', both spot and forward legs must be specified.
          </xsd:documentation>
        </xsd:annotation>
      </xsd:enumeration>
      <xsd:enumeration value="Open">
        <xsd:annotation>
          <xsd:documentation xml:lang="en">
            Indicates that a contract is open ended; this means that
            the end date is unspecified, and will be agreed by the two
            parties at a later date. Business rule: When the repo is
            Open, the forward transaction leg must not be present.
          </xsd:documentation>
        </xsd:annotation>
      </xsd:enumeration>
    </xsd:restriction>
  </xsd:simpleType>
  <xsd:complexType name="AdjustableOffset">
    <xsd:annotation>
      <xsd:documentation xml:lang="en">
        An adjustable offset can be used to specify a number of days,
        business or calendar, for example in a notice period.
      </xsd:documentation>
    </xsd:annotation>
    <xsd:complexContent>
      <xsd:extension base="Offset">
        <xsd:sequence>
          <xsd:group ref="BusinessCentersOrReference.model" minOccurs="0"/>
        </xsd:sequence>
      </xsd:extension>
    </xsd:complexContent>
  </xsd:complexType>
  <xsd:complexType name="AtomicSettlementTransfer" abstract="true">
    <xsd:annotation>
      <xsd:documentation xml:lang="en">
        Abstract base class for all transfer of cash or securities
      </xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="suppress" type="xsd:boolean" minOccurs="0">
        <xsd:annotation>
          <xsd:documentation xml:lang="en">
            Indicate if this transfer should be suppressed. Absence of
            this flag means that the transfer should not be suppressed.
          </xsd:documentation>
        </xsd:annotation>
      </xsd:element>
    </xsd:sequence>
    <xsd:attribute name="id" type="xsd:ID"/>
  </xsd:complexType>
  <xsd:complexType name="Attribution">
    <xsd:annotation>
      <xsd:documentation xml:lang="en">
        An attribution must specify its type, and an amount. Any of the
        three amount fields below can be used (and they can all be used
        at the same time), as long as they are used consistently. You
        can express an attribution in a maximum of three different
        currencies (settlement, base, underlying), which are usually
        the same as the settlement currency on the trade, the base
        currency used for accounting purposes, and the underlying
        currency which refers to the currency of an underlying
        instrument used in a transaction. Note however that these are
        just guidelines; you can actually specify attributions in any
        currency that you like, as long as you are consistent. Within
        an Attributions structure, all attribution/settlementAmounts
        are expressed in the same currency, defined by the
        settlementCurrency field (see enclosing Attributions
        structure). Same holds true for base and underlying amounts.
      </xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="type" type="AttributionType">
        <xsd:annotation>
          <xsd:documentation xml:lang="en">
            The attribution type. The cash settlement amount specified
            in the enclosing transfer will be broken down into several
            subcomponents (like a PandL explain), and the type of the
            breakdown is defined here. Typical values are in a scheme.
          </xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="settlementAmount" type="xsd:decimal" minOccurs="0">
        <xsd:annotation>
          <xsd:documentation xml:lang="en">
            An amount expressed in the settlement currency that was
            indicated in the enclosing Attributions structure. This is
            done to avoid repeating the currency for every amount when
            we know that attributions are expressed in a consistent
            way, with the same currencies.
          </xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="baseAmount" type="xsd:decimal" minOccurs="0">
        <xsd:annotation>
          <xsd:documentation xml:lang="en">
            An amount expressed in the base currency defined in the
            enclosing Attributions structure (see baseCurrency). If
            this optional field is present, baseCurrency must be
            defined in the enclosing structure.
          </xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="underlyingAmount" type="xsd:decimal" minOccurs="0">
        <xsd:annotation>
          <xsd:documentation xml:lang="en">
            An amount expressed in the currency of an underlyer ( see
            underlyingCurrency). If this field is present then the
            underlyingCurrency field in the enclosing structure must be
            defined.
          </xsd:documentation>
        </xsd:annotation>
      </xsd:element>
    </xsd:sequence>
  </xsd:complexType>
  <xsd:complexType name="Attributions">
    <xsd:annotation>
      <xsd:documentation xml:lang="en">
        A set of attributions, which are a way to break down a cash
        amount into several components, like the repo interest portion
        in the final cahflow of the repo, the clean price attribution,
        etc. An example could be, for a repo worth 1M on a security
        priced at 100 at maturity with a total interest of 10,000, 1M
        is attributed to the security 'dirty price', 95,400,000.00 is
        attributed to the security clean price, ( I am making it up
        here ); 10,000.00 is attributed to the repo interest, and 200
        is attributed to a stamp tax. All attributions are monetary
        amounts.
      </xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="settlementCurrency" type="Currency">
        <xsd:annotation>
          <xsd:documentation xml:lang="en">
            The currency that is used for all the attributions
            expressed with settlementAmount. The reason for this is to
            avoid repeating the currency (for example using FpML:Money)
            for every attribution amount in the structure. We therefore
            assume that attributions are expressed in a maximum of
            three currencies, which we specify here. The
            settlementCurrency is assumed to be the settlement currency
            of the trade in general cases.
          </xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="baseCurrency" type="Currency">
        <xsd:annotation>
          <xsd:documentation xml:lang="en">
            The currency that is used for all the attributions
            expressed with baseAmount. The baseCurrency is usually USD
            within the firm, but it is in fact driven by the accounting
            engine expectations.
          </xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="underlyingCurrency" type="Currency" minOccurs="0">
        <xsd:annotation>
          <xsd:documentation xml:lang="en">
            The currency that is used for all the attributions
            expressed with underlyingAmount. Underlying currency is the
            currency of issuance for the underlying instrument. So if
            you need to express attributions on a Repo settling in EUR
            but with GBP instruments, you would specify
            underlyingCurrency to be GBP.
          </xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="attribution" type="Attribution" maxOccurs="unbounded">
        <xsd:annotation>
          <xsd:documentation xml:lang="en">
            The attributions go here. There is no limit on the number
            of attributions.
          </xsd:documentation>
        </xsd:annotation>
      </xsd:element>
    </xsd:sequence>
  </xsd:complexType>
  <xsd:complexType name="AttributionType">
    <xsd:annotation>
      <xsd:documentation xml:lang="en">
        An attribution type. Values are defined in a coding scheme.
        Typical values are RepoInterest, StampTax, WithholdingTax.
      </xsd:documentation>
    </xsd:annotation>
    <xsd:simpleContent>
      <xsd:extension base="xsd:normalizedString">
        <xsd:attribute name="attributionTypeScheme" type="xsd:anyURI" default="http://www.fpml.org/coding-scheme/attribution-type-1-0"/>
      </xsd:extension>
    </xsd:simpleContent>
  </xsd:complexType>
  <xsd:complexType name="CashRepricingEvent">
    <xsd:annotation>
      <xsd:documentation xml:lang="en">
        A cash repricing event. This type of event is an adjustment of
        the price of the underlying collateral done to reflect current
        market conditions. The par amount is preserved constant, which
        means that the collateral quantity is unchanged. It is the
        settlement amount that changes after a cash repricing, so a
        cash repricing will trigger a cash movement.
      </xsd:documentation>
    </xsd:annotation>
    <xsd:complexContent>
      <xsd:extension base="MidLifeEvent">
        <xsd:sequence>
          <xsd:element name="collateral" type="CollateralValuation" minOccurs="0"/>
          <xsd:element name="combinedInterestPayout" type="xsd:boolean">
            <xsd:annotation>
              <xsd:documentation xml:lang="en">
                This value should be set to true if we need to pay the
                accrued interest at the same time. If false, there is
                no payment attributed to the repo accrued interest,
                only cash movement linked to collateral re-valuation.
              </xsd:documentation>
            </xsd:annotation>
          </xsd:element>
          <xsd:element name="transfer" type="Transfer" minOccurs="0"/>
        </xsd:sequence>
      </xsd:extension>
    </xsd:complexContent>
  </xsd:complexType>
  <xsd:complexType name="CashTransfer">
    <xsd:annotation>
      <xsd:documentation xml:lang="en">
        By definition, to specify a cash transfer, we need to say how
        much we want to transfer, who is the payer ( correspondent )
        and who is the receiver ( beneficiary ). Those terms are used
        in the settlement instruction and allow us to define the
        direction of the movement.
      </xsd:documentation>
    </xsd:annotation>
    <xsd:complexContent>
      <xsd:extension base="AtomicSettlementTransfer">
        <xsd:sequence>
          <xsd:element name="transferAmount" type="Money">
            <xsd:annotation>
              <xsd:documentation xml:lang="en">
                The money to transfer.
              </xsd:documentation>
            </xsd:annotation>
          </xsd:element>
          <xsd:group ref="PayerReceiver.model">
            <xsd:annotation>
              <xsd:documentation xml:lang="en">
                The parties paying and receiving the money
              </xsd:documentation>
            </xsd:annotation>
          </xsd:group>
          <xsd:element name="attributions" type="Attributions" minOccurs="0">
            <xsd:annotation>
              <xsd:documentation xml:lang="en">
                For accounting, reporting or regulatory reasons, the
                transfer may have to be explained in a series of
                individual amounts. It may be possible for example to
                break down a transfer amount into constituents (gross,
                tax, net) or into individual amounts (interest,
                penalty) that would be netted at the transfer level.
                The attributions structure allows participants to
                explain their transfer amounts for better traceability.
                This is strictly optional.
              </xsd:documentation>
            </xsd:annotation>
          </xsd:element>
        </xsd:sequence>
      </xsd:extension>
    </xsd:complexContent>
  </xsd:complexType>
  <xsd:complexType name="CollateralSubstitutionEvent">
    <xsd:annotation>
      <xsd:documentation xml:lang="en">
        A collateral substitution is an event where two parties, having
        previously entered into a repurchase agreement, or securities
        lending, agree that collateral used for the transaction be
        substituted with equivalent collateral. The new collateral must
        be deemed acceptable, in grade and quality and have an
        equivalent valuation compared substituted collateral at the
        time of the substitution.
      </xsd:documentation>
    </xsd:annotation>
    <xsd:complexContent>
      <xsd:extension base="MidLifeEvent">
        <xsd:sequence>
          <xsd:element name="previousCollateral" type="CollateralValuation">
            <xsd:annotation>
              <xsd:documentation xml:lang="en">
                The collateral previously pledged in the transaction,
                properly valued as of the date of substitution.
              </xsd:documentation>
            </xsd:annotation>
          </xsd:element>
          <xsd:element name="newCollateral" type="CollateralValuation">
            <xsd:annotation>
              <xsd:documentation xml:lang="en">
                The new collateral to use in the transaction, valued as
                of the date of substitution.
              </xsd:documentation>
            </xsd:annotation>
          </xsd:element>
          <xsd:element name="settlementTransfer" type="SettlementTransfer" minOccurs="0">
            <xsd:annotation>
              <xsd:documentation xml:lang="en">
                The settlement transfer structure may be used by
                participants that want to explicitly restate who will
                deliver what, when and how.
              </xsd:documentation>
            </xsd:annotation>
          </xsd:element>
        </xsd:sequence>
      </xsd:extension>
    </xsd:complexContent>
  </xsd:complexType>
  <xsd:complexType name="CollateralValuation">
    <xsd:annotation>
      <xsd:documentation xml:lang="en">
        This type is used in Repo trades, to specify the valuation of a
        specific piece of collateral in the transaction. Note that the
        structure must be used within a structure that has a date
        attached to it, because the valuations included (such as
        prices, accruals and inflation factors) are relative to a date.
        We do not want to add an href to a date because that would be
        too much complexity for nothing.
      </xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:choice>
        <xsd:group ref="BondCollateral.model">
          <xsd:annotation>
            <xsd:documentation xml:lang="en">
              When the instrument being used in a transaction is a
              bond, the group above should be used to properly value
              the instrument, in terms of price, accruals and notional.
            </xsd:documentation>
          </xsd:annotation>
        </xsd:group>
        <xsd:group ref="UnitContract.model">
          <xsd:annotation>
            <xsd:documentation xml:lang="en">
              When the instrument being used in a transaction is an
              equity, or any contract traded in units, this group
              should be used to define the quantity, price and
              valuation of the instrument.
            </xsd:documentation>
          </xsd:annotation>
        </xsd:group>
      </xsd:choice>
      <xsd:element name="assetReference" type="AssetReference">
        <xsd:annotation>
          <xsd:documentation xml:lang="en">
            A reference to explicitly identify which asset is being
            valued.
          </xsd:documentation>
        </xsd:annotation>
      </xsd:element>
    </xsd:sequence>
  </xsd:complexType>
  <xsd:complexType name="CouponEvent">
    <xsd:annotation>
      <xsd:documentation xml:lang="en">
        This structure is used for Buy-Sell Back trades to describe
        when a coupon is paid and what reinvestment rate will be
        applied. the amount is in the instrument currency. To be able
        to represent a buy/sell back with more than one collateral we
        use an href link to the underlying asset. This enables us to
        represent multiple coupons during the life of the trade, with
        different reinvestment rates, and possibly different
        instruments.
      </xsd:documentation>
    </xsd:annotation>
    <xsd:complexContent>
      <xsd:extension base="MidLifeEvent">
        <xsd:sequence>
          <xsd:element name="couponAmount" type="xsd:decimal">
            <xsd:annotation>
              <xsd:documentation xml:lang="en">
                The cash value of the coupon paid (not the coupon
                rate). It should be equal to the coupon rate divided by
                frequency (2 for semi annual) times the notional of the
                bond.
              </xsd:documentation>
            </xsd:annotation>
          </xsd:element>
          <xsd:element name="reinvestmentRate" type="xsd:decimal">
            <xsd:annotation>
              <xsd:documentation xml:lang="en">
                The reinvestment rate we will use on the coupon. Very
                often it is equal to the repo rate on the deal, but it
                does not have to. For very long term repos, the
                reinvestment rate will be derived from a curve.
              </xsd:documentation>
            </xsd:annotation>
          </xsd:element>
          <xsd:element name="assetReference" type="AssetReference"/>
          <xsd:element name="transfer" type="Transfer" minOccurs="0">
            <xsd:annotation>
              <xsd:documentation xml:lang="en">
                The transfer structure can be used to explicitly state
                who will pay the coupon. In buy-sell-back trades,
                whoever holds the bond will receive the coupon (from
                the bond issuer) and keep it. If the bond holder passes
                the coupon on to the counterparty we expect to see a
                transfer from bond holder to counterparty here.
              </xsd:documentation>
            </xsd:annotation>
          </xsd:element>
        </xsd:sequence>
      </xsd:extension>
    </xsd:complexContent>
  </xsd:complexType>
  <xsd:complexType name="EventReference">
    <xsd:annotation>
      <xsd:documentation xml:lang="en">
        Reference to a Trade Event.
      </xsd:documentation>
    </xsd:annotation>
    <xsd:complexContent>
      <xsd:extension base="Reference"/>
    </xsd:complexContent>
  </xsd:complexType>
  <xsd:complexType name="ForwardRepoTransactionLeg">
    <xsd:annotation>
      <xsd:documentation xml:lang="en">
        A transaction leg for a repo is equivalent to a single cash
        transaction. It is augmented here to carry some values that are
        of interest for the repo. Also note that the BuyerSeller model
        in this transaction must be the exact opposite of the one found
        in the spot leg.
      </xsd:documentation>
    </xsd:annotation>
    <xsd:complexContent>
      <xsd:extension base="RepoTransactionLeg">
        <xsd:sequence>
          <xsd:element name="repoInterest" type="xsd:decimal" minOccurs="0">
            <xsd:annotation>
              <xsd:documentation xml:lang="en">
                The repo interest is basically the difference between
                the settlement amounts at spot and forward date. It is
                a fully figured amount, but it does not have to be
                specified in the message. It is not a 'Money' amount as
                it is implicitly expressed in the settlement currency.
              </xsd:documentation>
            </xsd:annotation>
          </xsd:element>
        </xsd:sequence>
      </xsd:extension>
    </xsd:complexContent>
  </xsd:complexType>
  <xsd:complexType name="InterestPayoutEvent">
    <xsd:complexContent>
      <xsd:extension base="MidLifeEvent">
        <xsd:sequence>
          <xsd:element name="payment" type="Money">
            <xsd:annotation>
              <xsd:documentation xml:lang="en">
                The amount to be paid. Note that we do not specify who
                is paying the amount. Implicitly, the party that pays
                the repo Interest at maturity is the only party that
                can do an interest payout.
              </xsd:documentation>
            </xsd:annotation>
          </xsd:element>
          <xsd:element name="transfer" type="Transfer" minOccurs="0">
            <xsd:annotation>
              <xsd:documentation xml:lang="en">
                When necessary, it is possible to make the interest
                payout fully explicit, with parties and settlement
                instructions. Note that the transfer date *may* differ
                from the eventDate specified by the event; for example
                the date the payment is made can be 1 or 2 days after
                the interest has been calculated. Note that for an
                interest payout the transfer can only contain a
                cashTransfer as there are no security movements for an
                interest payout.
              </xsd:documentation>
            </xsd:annotation>
          </xsd:element>
        </xsd:sequence>
      </xsd:extension>
    </xsd:complexContent>
  </xsd:complexType>
  <xsd:complexType name="Margin">
    <xsd:annotation>
      <xsd:documentation xml:lang="en">
        Defines the margin, also called haircut in repo and securities
        lending terminology, that will be applied to a transaction. It
        is essentially a premium, expressed in percentage, to
        compensate collateral quality (or lack thereof) and liquidity.
      </xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="marginType" type="MarginTypeEnum">
        <xsd:annotation>
          <xsd:documentation xml:lang="en">
            The type of margin being specified to apply to the
            transaction.
          </xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="marginFactor" type="xsd:decimal">
        <xsd:annotation>
          <xsd:documentation xml:lang="en">
            The margin is expressed as a multiplication factor (default
            value is 1) to reflect the quality of the collateral. Also
            called margin ratio as per Section 2, paragraph (z) of the
            TBMA/ISMA Global Master Repurchase Agreement.
          </xsd:documentation>
        </xsd:annotation>
      </xsd:element>
    </xsd:sequence>
  </xsd:complexType>
  <xsd:complexType name="MidLifeEvent" abstract="true">
    <xsd:annotation>
      <xsd:documentation xml:lang="en">
        A mid life event in a repo or securities lending transaction.
        Such mid life events are bilateral agreements between
        contracting parties to alter the financial profile of the
        transaction. Such examples include interest payments,
        collateral substitutions, or mark-to-market activity (cash or
        nominal repricing) to re-balance the valuation of cash and
        collateral in the transaction.
      </xsd:documentation>
    </xsd:annotation>
    <xsd:complexContent>
      <xsd:extension base="Event">
        <xsd:sequence>
          <xsd:element name="eventDate" type="IdentifiedDate">
            <xsd:annotation>
              <xsd:documentation xml:lang="en">
                The date the event has been recorded.
              </xsd:documentation>
            </xsd:annotation>
          </xsd:element>
        </xsd:sequence>
      </xsd:extension>
    </xsd:complexContent>
  </xsd:complexType>
  <xsd:complexType name="NetTradeIdentifier">
    <xsd:annotation>
      <xsd:documentation xml:lang="en">
        Identification of a net trade and original trades.
      </xsd:documentation>
    </xsd:annotation>
    <xsd:complexContent>
      <xsd:extension base="PartyTradeIdentifier">
        <xsd:sequence>
          <xsd:element name="originalTradeIdentifier" type="TradeIdentifierList" minOccurs="2" maxOccurs="unbounded">
            <xsd:annotation>
              <xsd:documentation xml:lang="en">
                Identification of original trades.
              </xsd:documentation>
            </xsd:annotation>
          </xsd:element>
        </xsd:sequence>
      </xsd:extension>
    </xsd:complexContent>
  </xsd:complexType>
  <xsd:complexType name="MarkToMarketEvent">
    <xsd:annotation>
      <xsd:documentation xml:lang="en">
        A mark to market event. This type of event is an adjustment of
        the price of the underlying collateral done to reflect current
        market conditions. Depending on the direction of the collateral
        valuation, one of the contracting parties will either pledge
        more/less collateral in the contract, or add/substract cash
        from the contract value.
      </xsd:documentation>
    </xsd:annotation>
    <xsd:complexContent>
      <xsd:extension base="MidLifeEvent">
        <xsd:sequence>
          <xsd:element name="collateral" type="CollateralValuation">
            <xsd:annotation>
              <xsd:documentation xml:lang="en">
                The updated collateral valuation for the contract. The
                change compared to the previously agreed valuation
                determines what securities or cash movement will occur.
              </xsd:documentation>
            </xsd:annotation>
          </xsd:element>
          <xsd:element name="combinedInterestPayout" type="xsd:boolean">
            <xsd:annotation>
              <xsd:documentation xml:lang="en">
                Indicates that the parties agree to settle the accrued
                interest on the contract at the time of the repricing.
              </xsd:documentation>
            </xsd:annotation>
          </xsd:element>
          <xsd:element name="transfer" type="Transfer" minOccurs="0">
            <xsd:annotation>
              <xsd:documentation xml:lang="en">
                Participants may use this structure to explicitly
                restate who is receiving/delivering cash and
                securities.
              </xsd:documentation>
            </xsd:annotation>
          </xsd:element>
        </xsd:sequence>
      </xsd:extension>
    </xsd:complexContent>
  </xsd:complexType>
  <xsd:complexType name="PartySettlementTransferInformation">
    <xsd:annotation>
      <xsd:documentation xml:lang="en">
        Additional information about the settlement transfer. We will
        use this to carry information to drive internal processing.
      </xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="partyReference" type="PartyReference">
        <xsd:annotation>
          <xsd:documentation xml:lang="en">
            Information contained in this structure is relative to the
            party being referred to.
          </xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="processingInformation" type="SettlementTransferProcessingInformation">
        <xsd:annotation>
          <xsd:documentation xml:lang="en">
            Any party specific information that may be required to
            properly execute a transfer. This can be used as a type
            substitution point to insert party specific structures.
          </xsd:documentation>
        </xsd:annotation>
      </xsd:element>
    </xsd:sequence>
  </xsd:complexType>
  <xsd:complexType name="RateChangeEvent">
    <xsd:annotation>
      <xsd:documentation xml:lang="en">
        A rate change is a mid life event where on a given date, the
        repo rate to apply is changed as a result of a bilateral
        agreement between the two parties. There is no cash or security
        movement associated with a rate change. The repo structure
        allows you to specify repo rates as a schedule, so this type is
        not strictly required within the repo. We need it for
        consistency and to allow a discrete event message to declare a
        rate change on a trade.
      </xsd:documentation>
    </xsd:annotation>
    <xsd:complexContent>
      <xsd:extension base="MidLifeEvent">
        <xsd:sequence>
          <xsd:element name="rate" type="xsd:decimal">
            <xsd:annotation>
              <xsd:documentation xml:lang="en">
                The new repo rate, in decimal format that will be
                applicable at the specified event date.
              </xsd:documentation>
            </xsd:annotation>
          </xsd:element>
        </xsd:sequence>
      </xsd:extension>
    </xsd:complexContent>
  </xsd:complexType>
  <xsd:complexType name="RateObservationEvent">
    <xsd:annotation>
      <xsd:documentation xml:lang="en">
        A rate observation is used only when a Repo is done against an
        index (typically EONIA repos) and we want to record the
        observed rates during the lifetime of the trade. This is
        similar in structure to a rate change, but the application
        context is different. A rate observation has no cash or
        security movement attached, so there is no transfer structure
        here. Rate observations are required on floating rate repos to
        calculate the accrued repo interest.
      </xsd:documentation>
    </xsd:annotation>
    <xsd:complexContent>
      <xsd:extension base="MidLifeEvent">
        <xsd:sequence>
          <xsd:element name="rate" type="xsd:decimal">
            <xsd:annotation>
              <xsd:documentation xml:lang="en">
                The observed rate at the specified event date that will
                be used to calculate the accrued interest on an index
                repo contract.
              </xsd:documentation>
            </xsd:annotation>
          </xsd:element>
        </xsd:sequence>
      </xsd:extension>
    </xsd:complexContent>
  </xsd:complexType>
  <xsd:complexType name="RelativePrice">
    <xsd:annotation>
      <xsd:documentation xml:lang="en">
        A type which represents Pricing relative to a Benchmark.
      </xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="spread" type="xsd:decimal">
        <xsd:annotation>
          <xsd:documentation xml:lang="en">
            Basis Point spread over a Benchmark.
          </xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:group ref="BondEquity.model" maxOccurs="unbounded">
        <xsd:annotation>
          <xsd:documentation xml:lang="en">
            The benchmark being referred to; either a bond or equity
            product.
          </xsd:documentation>
        </xsd:annotation>
      </xsd:group>
    </xsd:sequence>
  </xsd:complexType>
  <xsd:complexType name="Repo">
    <xsd:annotation>
      <xsd:documentation xml:lang="en">
        A Repo, modeled as an FpML:Product.
      </xsd:documentation>
    </xsd:annotation>
    <xsd:complexContent>
      <xsd:extension base="Product">
        <xsd:sequence>
          <xsd:choice>
            <xsd:element name="fixedRateSchedule" type="Schedule">
              <xsd:annotation>
                <xsd:documentation xml:lang="en">
                  The fixed repo rate. It is usually fixed for the
                  duration of the agreement but can be changed with
                  mid-life events (rate changes) except for buy
                  SellBack trades.
                </xsd:documentation>
              </xsd:annotation>
            </xsd:element>
            <xsd:element name="floatingRateCalculation" type="FloatingRateCalculation">
              <xsd:annotation>
                <xsd:documentation xml:lang="en">
                  The float index and tenor, with a spread. Use for
                  floating rate repos. Most floatings in Europe are
                  against EONIA.
                </xsd:documentation>
              </xsd:annotation>
            </xsd:element>
          </xsd:choice>
          <xsd:element name="dayCountFraction" type="DayCountFraction">
            <xsd:annotation>
              <xsd:documentation xml:lang="en">
                The day count fraction.
              </xsd:documentation>
            </xsd:annotation>
          </xsd:element>
          <xsd:element name="noticePeriod" type="AdjustableOffset" minOccurs="0">
            <xsd:annotation>
              <xsd:documentation xml:lang="en">
                Notice period for open ended or long dated repos in
                number of days.
              </xsd:documentation>
            </xsd:annotation>
          </xsd:element>
          <xsd:element name="duration" type="RepoDurationEnum">
            <xsd:annotation>
              <xsd:documentation xml:lang="en">
                A duration code for the contract.
              </xsd:documentation>
            </xsd:annotation>
          </xsd:element>
          <xsd:element name="margin" type="Margin">
            <xsd:annotation>
              <xsd:documentation xml:lang="en">
                The margin, or haircut, that will be applied.
              </xsd:documentation>
            </xsd:annotation>
          </xsd:element>
          <xsd:element name="spotLeg" type="RepoTransactionLeg">
            <xsd:annotation>
              <xsd:documentation xml:lang="en">
                A repo contract is modelled as two purchase/repurchase
                transactions which are called legs. This is the spot
                leg, i.e. the transaction that will be executed on the
                settlement date of the contract.
              </xsd:documentation>
            </xsd:annotation>
          </xsd:element>
          <xsd:element name="forwardLeg" type="ForwardRepoTransactionLeg" minOccurs="0">
            <xsd:annotation>
              <xsd:documentation xml:lang="en">
                The forward leg of the repo contract, i.e. the
                repurchase transaction.
              </xsd:documentation>
            </xsd:annotation>
          </xsd:element>
          <xsd:element ref="midLifeEvent" minOccurs="0" maxOccurs="unbounded">
            <xsd:annotation>
              <xsd:documentation xml:lang="en">
                Mid life events that occur during the lifetime of the
                Repo go here.
              </xsd:documentation>
            </xsd:annotation>
          </xsd:element>
          <xsd:group ref="BondEquity.model" maxOccurs="unbounded">
            <xsd:annotation>
              <xsd:documentation xml:lang="en">
                A list of the financial instruments that the repo
                contract may reference.
              </xsd:documentation>
            </xsd:annotation>
          </xsd:group>
          <xsd:element name="settlementTransfer" type="SettlementTransfer" minOccurs="0">
            <xsd:annotation>
              <xsd:documentation xml:lang="en">
                Participants may choose to explicitly specify the
                different financial exchanges that the product
                represents. This is the equivalent of the
                cashflow-explicit representation of an interest rate
                swap. In this case it is possible to give a
                transfer-explicit representation of a repo contract for
                settlement purposes.
              </xsd:documentation>
            </xsd:annotation>
          </xsd:element>
        </xsd:sequence>
      </xsd:extension>
    </xsd:complexContent>
  </xsd:complexType>
  <xsd:complexType name="RepoLegId">
    <xsd:annotation>
      <xsd:documentation xml:lang="en">
        A Repo Leg Identification.
      </xsd:documentation>
    </xsd:annotation>
    <xsd:simpleContent>
      <xsd:extension base="xsd:normalizedString">
        <xsd:attribute name="repoLegIdScheme" type="xsd:anyURI" default="http://www.fpml.org/coding-scheme/repo-leg-id-1-0"/>
        <xsd:attribute name="id" type="xsd:ID"/>
      </xsd:extension>
    </xsd:simpleContent>
  </xsd:complexType>
  <xsd:complexType name="RepoTransactionLeg">
    <xsd:annotation>
      <xsd:documentation xml:lang="en">
        A transaction leg for a repo is equivalent to a single cash
        transaction.
      </xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:choice minOccurs="0">
        <xsd:element name="id" type="RepoLegId" maxOccurs="unbounded"/>
        <xsd:element name="versionedId" type="VersionedRepoLegId" maxOccurs="unbounded"/>
      </xsd:choice>
      <xsd:group ref="BuyerSeller.model">
        <xsd:annotation>
          <xsd:documentation xml:lang="en">
            References to the buyer and seller of the repo contract.
          </xsd:documentation>
        </xsd:annotation>
      </xsd:group>
      <xsd:group ref="Settlement.model">
        <xsd:annotation>
          <xsd:documentation xml:lang="en">
            The date and monetary amounts specified for the settlement
            of this transaction.
          </xsd:documentation>
        </xsd:annotation>
      </xsd:group>
      <xsd:element name="collateral" type="CollateralValuation" minOccurs="0" maxOccurs="unbounded">
        <xsd:annotation>
          <xsd:documentation xml:lang="en">
            Collateral valuation is used to carry the quantity and
            price details that are required to ensure that a repo
            contract is executed at fair value, with the value of the
            collateral matching the cash amount of the repo. Collateral
            is declared as optional here, with multiple cardinalities,
            since we can do a repo "Multi", with multiple instruments
            specified, or a "Cash Borrow/Loan" and “TriPartyRepo” with
            no collateral. In general cases, however it should be
            specified.
          </xsd:documentation>
        </xsd:annotation>
      </xsd:element>
    </xsd:sequence>
    <xsd:attribute name="id" type="xsd:ID" use="optional"/>
  </xsd:complexType>
  <xsd:complexType name="RepoTransactionLegReference">
    <xsd:annotation>
      <xsd:documentation xml:lang="en">
        Reference to an Transaction Leg.
      </xsd:documentation>
    </xsd:annotation>
    <xsd:complexContent>
      <xsd:extension base="Reference"/>
    </xsd:complexContent>
  </xsd:complexType>
  <xsd:complexType name="SecurityTransfer">
    <xsd:annotation>
      <xsd:documentation xml:lang="en">
        The transfer of a security requires an identifier for the
        security, and a quantity.
      </xsd:documentation>
    </xsd:annotation>
    <xsd:complexContent>
      <xsd:extension base="AtomicSettlementTransfer">
        <xsd:sequence>
          <xsd:element name="quantity" type="xsd:decimal">
            <xsd:annotation>
              <xsd:documentation xml:lang="en">
                The quantity of asset being transfered
              </xsd:documentation>
            </xsd:annotation>
          </xsd:element>
          <xsd:element name="assetReference" type="AssetReference">
            <xsd:annotation>
              <xsd:documentation xml:lang="en">
                The asset being transfered.
              </xsd:documentation>
            </xsd:annotation>
          </xsd:element>
          <xsd:element name="delivererPartyReference" type="PartyReference">
            <xsd:annotation>
              <xsd:documentation xml:lang="en">
                Reference to the party delivering the asset.
              </xsd:documentation>
            </xsd:annotation>
          </xsd:element>
          <xsd:element name="receiverPartyReference" type="PartyReference">
            <xsd:annotation>
              <xsd:documentation xml:lang="en">
                Reference to the party receiving the asset.
              </xsd:documentation>
            </xsd:annotation>
          </xsd:element>
          <xsd:element name="daylightIndicator" type="xsd:boolean" minOccurs="0">
            <xsd:annotation>
              <xsd:documentation xml:lang="en">
                Standard settlement in Euroclear takes place in a batch
                on "value date - 1" (at 4 pm), to allow trades which
                are not included in this batch to be settled on value
                date, the daylight indicator can be used. The MT 540
                instruction will contain an indicator which notifies
                Euroclear whether a transaction can be put forward for
                settlement intra-day. This is the "Daylight Indicator"
                and will be set on all transactions with Euroclear.
                However, to ensure they are included within intra-day
                settlement, the counterparty within Euroclear (ie,
                participant B) must also indicate intra-day settlement
                can take place.
              </xsd:documentation>
            </xsd:annotation>
          </xsd:element>
        </xsd:sequence>
      </xsd:extension>
    </xsd:complexContent>
  </xsd:complexType>
  <xsd:complexType name="SettlementInstructionReference">
    <xsd:annotation>
      <xsd:documentation xml:lang="en">
        Settlement Instruction Reference.
      </xsd:documentation>
    </xsd:annotation>
    <xsd:complexContent>
      <xsd:extension base="Reference"/>
    </xsd:complexContent>
  </xsd:complexType>
  <xsd:complexType name="SettlementTransfer">
    <xsd:annotation>
      <xsd:documentation xml:lang="en">
        This is a container to carry 'transfers', i.e. elementary
        transfers of cash or securities. Transfer instructions are
        coupled with settlement instructions that are referenced.
      </xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:group ref="SettlementTransferIdentifier.model" minOccurs="0">
        <xsd:annotation>
          <xsd:documentation xml:lang="en">
            Settlement Transfer Identifier which is optional in the
            context of a trade, but should always be used in a transfer
            message.
          </xsd:documentation>
        </xsd:annotation>
      </xsd:group>
      <xsd:element name="transferInformation" type="PartySettlementTransferInformation" minOccurs="0" maxOccurs="unbounded">
        <xsd:annotation>
          <xsd:documentation xml:lang="en">
            Transfer information which applies to all elementary
            transfers.
          </xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="transfer" type="Transfer" maxOccurs="unbounded">
        <xsd:annotation>
          <xsd:documentation xml:lang="en">
            An elementary transfer. There can be as many transfers
            specified in this structure as required.
          </xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="settlementInstruction" type="SettlementInstruction" minOccurs="0" maxOccurs="unbounded">
        <xsd:annotation>
          <xsd:documentation xml:lang="en">
            Settlement instruction.
          </xsd:documentation>
        </xsd:annotation>
      </xsd:element>
    </xsd:sequence>
  </xsd:complexType>
  <xsd:complexType name="SettlementTransferId">
    <xsd:annotation>
      <xsd:documentation xml:lang="en">
        Settlement Transfer identification.
      </xsd:documentation>
    </xsd:annotation>
    <xsd:simpleContent>
      <xsd:extension base="xsd:normalizedString">
        <xsd:attribute name="settlementTransferIdScheme" type="xsd:anyURI" default="http://www.fpml.org/coding-scheme/settlement-transfer-id-1-0"/>
        <xsd:attribute name="id" type="xsd:ID"/>
      </xsd:extension>
    </xsd:simpleContent>
  </xsd:complexType>
  <xsd:complexType name="SettlementTransferIdentifier">
    <xsd:annotation>
      <xsd:documentation xml:lang="en">
        Settlement Transfer identification and classification.
      </xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:group ref="SettlementTransferIdentifier.model">
        <xsd:annotation>
          <xsd:documentation xml:lang="en">
            An identifier for an individual settlement transfer. This
            usually maps to a SWIFT message reference.
          </xsd:documentation>
        </xsd:annotation>
      </xsd:group>
    </xsd:sequence>
    <xsd:attribute name="id" type="xsd:ID" use="optional"/>
  </xsd:complexType>
  <xsd:complexType name="SettlementTransferProcessingInformation">
    <xsd:annotation>
      <xsd:documentation xml:lang="en">
        Type representing settlement transfer processing information.
      </xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="owner" type="xsd:boolean" minOccurs="0">
        <xsd:annotation>
          <xsd:documentation xml:lang="en">
            If present and true the publisher considers this party to
            be the owner of the transfer.
          </xsd:documentation>
        </xsd:annotation>
      </xsd:element>
    </xsd:sequence>
  </xsd:complexType>
  <xsd:complexType name="SettlementTransferType">
    <xsd:annotation>
      <xsd:documentation xml:lang="en">
        A settlement transfer classification.
      </xsd:documentation>
    </xsd:annotation>
    <xsd:simpleContent>
      <xsd:extension base="xsd:normalizedString">
        <xsd:attribute name="settlementTransferTypeScheme" type="xsd:anyURI" default="http://www.fpml.org/coding-scheme/settlement-transfer-type-1-0"/>
      </xsd:extension>
    </xsd:simpleContent>
  </xsd:complexType>
  <xsd:complexType name="StreamId">
    <xsd:annotation>
      <xsd:documentation xml:lang="en">
        Stream identification.
      </xsd:documentation>
    </xsd:annotation>
    <xsd:simpleContent>
      <xsd:extension base="xsd:normalizedString">
        <xsd:attribute name="streamId" type="xsd:anyURI" default="http://www.fpml.org/coding-scheme/stream-id-1-0"/>
      </xsd:extension>
    </xsd:simpleContent>
  </xsd:complexType>
  <xsd:complexType name="StreamReference">
    <xsd:annotation>
      <xsd:documentation xml:lang="en">
        Reference to an Stream.
      </xsd:documentation>
    </xsd:annotation>
    <xsd:complexContent>
      <xsd:extension base="Reference"/>
    </xsd:complexContent>
  </xsd:complexType>
  <xsd:complexType name="TradeAndComponentIdentifier">
    <xsd:annotation>
      <xsd:documentation xml:lang="en">
        Contains identification of a trade, and references to a trade
        component or event.
      </xsd:documentation>
    </xsd:annotation>
    <xsd:complexContent>
      <xsd:extension base="TradeIdentifier">
        <xsd:sequence>
          <xsd:element name="tradeComponentIdentifier" type="TradeComponentIdentifier"/>
        </xsd:sequence>
      </xsd:extension>
    </xsd:complexContent>
  </xsd:complexType>
  <xsd:complexType name="TradeComponentIdentifier">
    <xsd:annotation>
      <xsd:documentation xml:lang="en">
        Trade Component or Event identification or references.
      </xsd:documentation>
    </xsd:annotation>
    <xsd:choice>
      <xsd:choice maxOccurs="unbounded">
        <xsd:element name="repoLegId" type="RepoLegId"/>
        <xsd:element name="versionedRepoLegId" type="VersionedRepoLegId"/>
      </xsd:choice>
      <xsd:element name="repoLegReference" type="RepoTransactionLegReference"/>
      <xsd:choice maxOccurs="unbounded">
        <xsd:element name="eventId" type="EventId"/>
        <xsd:element name="versionedEventId" type="VersionedEventId"/>
      </xsd:choice>
      <xsd:element name="eventReference" type="EventReference"/>
      <xsd:choice maxOccurs="unbounded">
        <xsd:element name="streamId" type="StreamId"/>
        <xsd:element name="versionedStreamId" type="VersionedStreamId"/>
      </xsd:choice>
      <xsd:element name="streamReference" type="StreamReference"/>
    </xsd:choice>
  </xsd:complexType>
  <xsd:complexType name="TradeIdentifierList">
    <xsd:annotation>
      <xsd:documentation xml:lang="en">
        A type containing multiple tradeIdentifier.
      </xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="tradeIdentifier" type="TradeIdentifier" maxOccurs="unbounded">
        <xsd:annotation>
          <xsd:documentation xml:lang="en">
            A trade identifier.
          </xsd:documentation>
        </xsd:annotation>
      </xsd:element>
    </xsd:sequence>
  </xsd:complexType>
  <xsd:complexType name="Transfer">
    <xsd:annotation>
      <xsd:documentation xml:lang="en">
        A type used to represent a transfer of cash, or securities, or
        a simultaneous exchange of securities vs cash.
      </xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:choice minOccurs="0">
        <xsd:element name="id" type="TransferId" maxOccurs="unbounded"/>
        <xsd:element name="versionedId" type="VersionedTransferId" maxOccurs="unbounded"/>
      </xsd:choice>
      <xsd:group ref="TradeComponentOrIdentifierOrNet.model" minOccurs="0"/>
      <xsd:element name="deliveryMethod" type="DeliveryMethodEnum">
        <xsd:annotation>
          <xsd:documentation xml:lang="en">
            Specify the delivery method. There is a business rule
            associated with this field: if deliveryMethod is DVP then
            you must specify a cashTransfer and a securityTransfer at
            the same time. It is incorrect to specify DVP and give only
            a cash transfer instruction.
          </xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="transferDate" type="IdentifiedDate">
        <xsd:annotation>
          <xsd:documentation xml:lang="en">
            The date at which the transfer should occur.
          </xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:choice>
        <xsd:annotation>
          <xsd:documentation xml:lang="en">
            You can specify either a cash transfer, or a security
            transfer, or both, but the structure below cannot be empty.
            Note the semantics of the structure: If we only have a cash
            transfer it is a pure cash transfer, mapping to a MT202 or
            MT210; if we have a security transfer only, it maps to a
            MT540 or 542 (deliver or receive free). If the structure
            has both cash and security specified it maps to MT541 or
            MT543 (deliver or receive against payment). The
            deliveryMethod tag allows us to validate that the transfer
            is structurally valid.
          </xsd:documentation>
        </xsd:annotation>
        <xsd:sequence>
          <xsd:element name="cashTransfer" type="CashTransfer">
            <xsd:annotation>
              <xsd:documentation xml:lang="en">
                A transfer of a cash amount between two parties.
              </xsd:documentation>
            </xsd:annotation>
          </xsd:element>
          <xsd:element name="securityTransfer" type="SecurityTransfer" minOccurs="0">
            <xsd:annotation>
              <xsd:documentation xml:lang="en">
                A transfer of securities between two parties.
              </xsd:documentation>
            </xsd:annotation>
          </xsd:element>
        </xsd:sequence>
        <xsd:element name="securityTransfer" type="SecurityTransfer">
          <xsd:annotation>
            <xsd:documentation xml:lang="en">
              A transfer of securities between two parties.
            </xsd:documentation>
          </xsd:annotation>
        </xsd:element>
      </xsd:choice>
      <xsd:element name="settlementInstructionReference" type="SettlementInstructionReference" minOccurs="0">
        <xsd:annotation>
          <xsd:documentation xml:lang="en">
            Settlement Instruction Reference.
          </xsd:documentation>
        </xsd:annotation>
      </xsd:element>
    </xsd:sequence>
    <xsd:attribute name="id" type="xsd:ID"/>
  </xsd:complexType>
  <xsd:complexType name="TransferId">
    <xsd:annotation>
      <xsd:documentation xml:lang="en">
        A Transfer Identification.
      </xsd:documentation>
    </xsd:annotation>
    <xsd:simpleContent>
      <xsd:extension base="xsd:normalizedString">
        <xsd:attribute name="transferIdScheme" type="xsd:anyURI" default="http://www.fpml.org/coding-scheme/transfer-id-1-0"/>
        <xsd:attribute name="id" type="xsd:ID"/>
      </xsd:extension>
    </xsd:simpleContent>
  </xsd:complexType>
  <xsd:complexType name="VersionedEventId">
    <xsd:annotation>
      <xsd:documentation xml:lang="en">
        EventId with version control elements.
      </xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="id" type="EventId"/>
      <xsd:group ref="VersionHistory.model"/>
    </xsd:sequence>
  </xsd:complexType>
  <xsd:complexType name="VersionedRepoLegId">
    <xsd:annotation>
      <xsd:documentation xml:lang="en">
        Repo Leg Id with version control elements.
      </xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="id" type="RepoLegId"/>
      <xsd:group ref="VersionHistory.model"/>
    </xsd:sequence>
  </xsd:complexType>
  <xsd:complexType name="VersionedSettlementTransferId">
    <xsd:annotation>
      <xsd:documentation xml:lang="en">
        Settlement Transfer Id with version control elements.
      </xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="id" type="SettlementTransferId"/>
      <xsd:group ref="VersionHistory.model"/>
    </xsd:sequence>
  </xsd:complexType>
  <xsd:complexType name="VersionedSettlementTransferType">
    <xsd:annotation>
      <xsd:documentation xml:lang="en">
        SettlementTransfer Type with version control elements.
      </xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="type" type="SettlementTransferType"/>
      <xsd:group ref="VersionHistory.model"/>
    </xsd:sequence>
  </xsd:complexType>
  <xsd:complexType name="VersionedStreamId">
    <xsd:annotation>
      <xsd:documentation xml:lang="en">
        StreamId with version control elements.
      </xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="id" type="StreamId"/>
      <xsd:group ref="VersionHistory.model"/>
    </xsd:sequence>
  </xsd:complexType>
  <xsd:complexType name="VersionedTransferId">
    <xsd:annotation>
      <xsd:documentation xml:lang="en">
        Transfer Id with version control elements.
      </xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="id" type="TransferId"/>
      <xsd:group ref="VersionHistory.model"/>
    </xsd:sequence>
  </xsd:complexType>
  <xsd:element name="cashRepricing" type="CashRepricingEvent" substitutionGroup="midLifeEvent">
    <xsd:annotation>
      <xsd:documentation xml:lang="en">
        Global element representing cash repricing.
      </xsd:documentation>
    </xsd:annotation>
  </xsd:element>
  <xsd:element name="couponEvent" type="CouponEvent" substitutionGroup="midLifeEvent">
    <xsd:annotation>
      <xsd:documentation xml:lang="en">
        Global element representing a coupon event.
      </xsd:documentation>
    </xsd:annotation>
  </xsd:element>
  <xsd:element name="collateralSubstitution" type="CollateralSubstitutionEvent" substitutionGroup="midLifeEvent">
    <xsd:annotation>
      <xsd:documentation xml:lang="en">
        Global element representing a collateral substitution.
      </xsd:documentation>
    </xsd:annotation>
  </xsd:element>
  <xsd:element name="interestPayout" type="InterestPayoutEvent" substitutionGroup="midLifeEvent">
    <xsd:annotation>
      <xsd:documentation xml:lang="en">
        Global element representing an interest payout.
      </xsd:documentation>
    </xsd:annotation>
  </xsd:element>
  <xsd:element name="midLifeEvent" type="MidLifeEvent" abstract="true">
    <xsd:annotation>
      <xsd:documentation xml:lang="en">
        Abstract placeholder for repo mid life events.
      </xsd:documentation>
    </xsd:annotation>
  </xsd:element>
  <xsd:element name="markToMarketEvent" type="MarkToMarketEvent" substitutionGroup="midLifeEvent">
    <xsd:annotation>
      <xsd:documentation xml:lang="en">
        Global element representing a nominal repricing.
      </xsd:documentation>
    </xsd:annotation>
  </xsd:element>
  <xsd:element name="rateChange" type="RateChangeEvent" substitutionGroup="midLifeEvent">
    <xsd:annotation>
      <xsd:documentation xml:lang="en">
        Global element representing a rate change.
      </xsd:documentation>
    </xsd:annotation>
  </xsd:element>
  <xsd:element name="rateObservation" type="RateObservationEvent" substitutionGroup="midLifeEvent">
    <xsd:annotation>
      <xsd:documentation xml:lang="en">
        Global element representing rate observation.
      </xsd:documentation>
    </xsd:annotation>
  </xsd:element>
  <xsd:element name="repo" type="Repo" substitutionGroup="product"/>
  <xsd:group name="BondChoice.model">
    <xsd:annotation>
      <xsd:documentation xml:lang="en">
        A model group which provides choices between all bond
        underlyers.
      </xsd:documentation>
    </xsd:annotation>
    <xsd:choice>
      <xsd:element ref="bond">
        <xsd:annotation>
          <xsd:documentation xml:lang="en">
            A bond instrument referenced by a contract
          </xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element ref="convertibleBond">
        <xsd:annotation>
          <xsd:documentation xml:lang="en">
            A convertible bond instrument referenced by a contract.
          </xsd:documentation>
        </xsd:annotation>
      </xsd:element>
    </xsd:choice>
  </xsd:group>
  <xsd:group name="BondCollateral.model">
    <xsd:annotation>
      <xsd:documentation xml:lang="en">
        A group which has Collateral elements.
      </xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="nominalAmount" type="Money">
        <xsd:annotation>
          <xsd:documentation xml:lang="en">
            Collateral nominal amount.
          </xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:group ref="BondPriceAndYield.model" minOccurs="0">
        <xsd:annotation>
          <xsd:documentation xml:lang="en">
            Collateral price.
          </xsd:documentation>
        </xsd:annotation>
      </xsd:group>
    </xsd:sequence>
  </xsd:group>
  <xsd:group name="BondEquity.model">
    <xsd:annotation>
      <xsd:documentation xml:lang="en">
        A model group that allows us to specify that a repo contract
        can reference bond or equity instruments.
      </xsd:documentation>
    </xsd:annotation>
    <xsd:choice>
      <xsd:annotation>
        <xsd:documentation xml:lang="en">
          Most repos are done using Bonds and Bond subclasses as
          collateral; However it is technically possible to execute a
          repo on an equity, as long as the mark to market is correctly
          done during the lifetime of the repo.
        </xsd:documentation>
      </xsd:annotation>
      <xsd:group ref="BondChoice.model">
        <xsd:annotation>
          <xsd:documentation xml:lang="en">
            a bond, or bond subtype referenced by a repo contract.
          </xsd:documentation>
        </xsd:annotation>
      </xsd:group>
      <xsd:element ref="equity">
        <xsd:annotation>
          <xsd:documentation xml:lang="en">
            an equity referenced by a repo contract.
          </xsd:documentation>
        </xsd:annotation>
      </xsd:element>
    </xsd:choice>
  </xsd:group>
  <xsd:group name="BondPriceAndYield.model">
    <xsd:annotation>
      <xsd:documentation xml:lang="en">
        A group which has either Bond Price or Yield elements.
      </xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="cleanPrice" type="xsd:decimal">
        <xsd:annotation>
          <xsd:documentation xml:lang="en">
            Bond clean price, expressed in percentage points, 100 is
            the initial value of the bond.
          </xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="accruals" type="xsd:decimal" minOccurs="0">
        <xsd:annotation>
          <xsd:documentation xml:lang="en">
            Accruals, relationship is clean price and accruals equals
            dirty price, all prices are expressed in percentage points,
            100 is the initial value of the bond.
          </xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="dirtyPrice" type="xsd:decimal" minOccurs="0">
        <xsd:annotation>
          <xsd:documentation xml:lang="en">
            Bond dirty price, expressed in percentage points, 100 is
            the initial value of the bond.
          </xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="relativePrice" type="RelativePrice" minOccurs="0">
        <xsd:annotation>
          <xsd:documentation xml:lang="en">
            Bond price relative to a Benchmark.
          </xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="yieldToMaturity" type="xsd:decimal" minOccurs="0">
        <xsd:annotation>
          <xsd:documentation xml:lang="en">
            Yield to Maturity.
          </xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="inflationFactor" type="xsd:decimal" minOccurs="0">
        <xsd:annotation>
          <xsd:documentation xml:lang="en">
            The inflation factor is specified for inflation-linked
            products which require some additional elements to
            calculate prices correctly.
          </xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="interestStartDate" type="AdjustableOrRelativeDate" minOccurs="0">
        <xsd:annotation>
          <xsd:documentation xml:lang="en">
            Start date for interest calculations.
          </xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="pool" type="AssetPool" minOccurs="0">
        <xsd:annotation>
          <xsd:documentation xml:lang="en">
            Characterise an asset pool, such as the MBS pool on a
            collateralised repo.
          </xsd:documentation>
        </xsd:annotation>
      </xsd:element>
    </xsd:sequence>
  </xsd:group>
  <xsd:group name="Settlement.model">
    <xsd:annotation>
      <xsd:documentation xml:lang="en">
        A group which has cash settlement elements.
      </xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="settlementDate" type="AdjustableOrRelativeDate">
        <xsd:annotation>
          <xsd:documentation xml:lang="en">
            Settlement Date.
          </xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:group ref="SettlementAmountOrCurrency.model">
        <xsd:annotation>
          <xsd:documentation xml:lang="en">
            When the exact financial amount to trade is not known, this
            structure allows participants to state the currency of the
            transaction.
          </xsd:documentation>
        </xsd:annotation>
      </xsd:group>
    </xsd:sequence>
  </xsd:group>
  <xsd:group name="SettlementAmountOrCurrency.model">
    <xsd:choice>
      <xsd:element name="settlementAmount" type="Money">
        <xsd:annotation>
          <xsd:documentation xml:lang="en">
            Settlement Amount.
          </xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="settlementCurrency" type="Currency">
        <xsd:annotation>
          <xsd:documentation xml:lang="en">
            Settlement Currency for use where the Settlement Amount
            cannot be known in advance.
          </xsd:documentation>
        </xsd:annotation>
      </xsd:element>
    </xsd:choice>
  </xsd:group>
  <xsd:group name="SettlementTransferIdentifier.model">
    <xsd:annotation>
      <xsd:documentation xml:lang="en">
        Group which has settlement transfer identifier elements.
      </xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:choice>
        <xsd:element name="id" type="SettlementTransferId" maxOccurs="unbounded"/>
        <xsd:element name="versionedId" type="VersionedSettlementTransferId" maxOccurs="unbounded"/>
      </xsd:choice>
      <xsd:choice minOccurs="0">
        <xsd:element name="type" type="SettlementTransferType" maxOccurs="unbounded"/>
        <xsd:element name="versionedType" type="VersionedSettlementTransferType" maxOccurs="unbounded"/>
      </xsd:choice>
    </xsd:sequence>
  </xsd:group>
  <xsd:group name="TradeComponentOrIdentifierOrNet.model">
    <xsd:annotation>
      <xsd:documentation xml:lang="en">
        Trade or Trade Identifier.
      </xsd:documentation>
    </xsd:annotation>
    <xsd:choice>
      <xsd:element name="tradeComponentIdentifier" type="TradeComponentIdentifier">
        <xsd:annotation>
          <xsd:documentation xml:lang="en">
            Identify the trade component which has caused this transfer
            to occur within a Trade Settlement.
          </xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="tradeAndComponentIdentifier" type="TradeAndComponentIdentifier" maxOccurs="unbounded">
        <xsd:annotation>
          <xsd:documentation xml:lang="en">
            Identify the trade and component which has caused this
            transfer to occur within a Settlement Message.
          </xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="netTradeIdentifier" type="NetTradeIdentifier">
        <xsd:annotation>
          <xsd:documentation xml:lang="en">
            Identify the net trade and original trades which have
            caused this transfer to occur within a Trade or Settlement
            Message.
          </xsd:documentation>
        </xsd:annotation>
      </xsd:element>
    </xsd:choice>
  </xsd:group>
  <xsd:group name="UnitContract.model">
    <xsd:annotation>
      <xsd:documentation xml:lang="en">
        A group which has unit based trade elements.
      </xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="numberOfUnits" type="xsd:decimal">
        <xsd:annotation>
          <xsd:documentation xml:lang="en">
            The number of units (index or securities).
          </xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="unitPrice" type="Money">
        <xsd:annotation>
          <xsd:documentation xml:lang="en">
            The price of each unit.
          </xsd:documentation>
        </xsd:annotation>
      </xsd:element>
    </xsd:sequence>
  </xsd:group>
</xsd:schema>