<?xml version="1.0" encoding="utf-8"?>
<!-- 
== Copyright (c) 2002-2010. All rights reserved. 
== Financial Products Markup Language is subject to the FpML public license. 
== A copy of this license is available at http://www.fpml.org/license/license.html
-->
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://www.fpml.org/2010/FpML-4-9" xmlns:fpml="http://www.fpml.org/2010/FpML-4-9" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" ecore:nsPrefix="fpml" ecore:package="org.fpml" ecore:documentRoot="FpML" targetNamespace="http://www.fpml.org/2010/FpML-4-9" version="$Revision: 7265 $" attributeFormDefault="unqualified" elementFormDefault="qualified">
  <xsd:include schemaLocation="fpml-doc-4-9.xsd" />
  <xsd:include schemaLocation="fpml-asset-4-9.xsd" />
  <xsd:complexType name="AssetOrTermPointOrPricingStructureReference">
    <xsd:annotation>
      <xsd:documentation xml:lang="en">Reference to an underlying asset, term point or pricing structure (yield curve).</xsd:documentation>
    </xsd:annotation>
    <xsd:complexContent>
      <xsd:extension base="Reference">
        <xsd:attribute name="href" type="xsd:IDREF" use="required" />
      </xsd:extension>
    </xsd:complexContent>
  </xsd:complexType>
  <xsd:complexType name="BasicAssetValuation">
    <xsd:annotation>
      <xsd:documentation xml:lang="en">A structure that holds a set of measures about an asset.</xsd:documentation>
    </xsd:annotation>
    <xsd:complexContent>
      <xsd:extension base="Valuation">
        <xsd:sequence>
          <xsd:element name="quote" type="BasicQuotation" maxOccurs="unbounded">
            <xsd:annotation>
              <xsd:documentation xml:lang="en">One or more numerical measures relating to the asset, possibly together with sensitivities of that measure to pricing inputs</xsd:documentation>
            </xsd:annotation>
          </xsd:element>
        </xsd:sequence>
      </xsd:extension>
    </xsd:complexContent>
  </xsd:complexType>
  <xsd:complexType name="DenominatorTerm">
    <xsd:annotation>
      <xsd:documentation xml:lang="en">The type defining a denominator term of the formula. Its value is (sum of weighted partials) ^ power.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="weightedPartial" type="WeightedPartialDerivative">
        <xsd:annotation>
          <xsd:documentation xml:lang="en">A partial derivative multiplied by a weighting factor.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="power" type="xsd:positiveInteger">
        <xsd:annotation>
          <xsd:documentation xml:lang="en">The power to which this term is raised.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
    </xsd:sequence>
  </xsd:complexType>
  <xsd:complexType name="DerivativeCalculationMethod">
    <xsd:annotation>
      <xsd:documentation source="http://www.FpML.org" xml:lang="en">The method by which a derivative is computed.</xsd:documentation>
    </xsd:annotation>
    <xsd:simpleContent>
      <xsd:extension base="Scheme">
        <xsd:attribute name="derivativeCalculationMethodScheme" type="xsd:anyURI" default="http://www.fpml.org/coding-scheme/derivative-calculation-method" />
      </xsd:extension>
    </xsd:simpleContent>
  </xsd:complexType>
  <xsd:complexType name="DerivativeCalculationProcedure">
    <xsd:annotation>
      <xsd:documentation xml:lang="en">A description of how a numerical derivative is computed.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="method" type="DerivativeCalculationMethod" minOccurs="0">
        <xsd:annotation>
          <xsd:documentation xml:lang="en">The method by which a derivative is computed, e.g. analytic, numerical model, perturbation, etc.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:group ref="DerivativeCalculationParameters.model" minOccurs="0" />
    </xsd:sequence>
  </xsd:complexType>
  <xsd:complexType name="DerivativeFormula">
    <xsd:annotation>
      <xsd:documentation xml:lang="en">A formula for computing a complex derivative from partial derivatives. Its value is the sum of the terms divided by the product of the denominator terms.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="term" type="FormulaTerm">
        <xsd:annotation>
          <xsd:documentation xml:lang="en">A term of the formula. Its value is the product of the its coefficient and the referenced partial derivatives.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="denominatorTerm" type="DenominatorTerm">
        <xsd:annotation>
          <xsd:documentation xml:lang="en">A denominator term of the formula. Its value is (sum of weighted partials) ^ power.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
    </xsd:sequence>
  </xsd:complexType>
  <xsd:complexType name="FormulaTerm">
    <xsd:annotation>
      <xsd:documentation xml:lang="en">A type defining a term of the formula. Its value is the product of the its coefficient and the referenced partial derivatives.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="coefficient" type="xsd:decimal">
        <xsd:annotation>
          <xsd:documentation xml:lang="en">The coefficient by which this term is multiplied, typically 1 or -1.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="partialDerivativeReference" type="PricingParameterDerivativeReference" maxOccurs="unbounded">
        <xsd:annotation>
          <xsd:documentation xml:lang="en">A reference to the partial derivative.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
    </xsd:sequence>
  </xsd:complexType>
  <xsd:complexType name="GenericDimension">
    <xsd:annotation>
      <xsd:documentation xml:lang="en">A generic (user defined) dimension, e.g. for use in a correlation surface. e.g. a currency, stock, etc. This would take values like USD, GBP, JPY, or IBM, MSFT, etc.</xsd:documentation>
    </xsd:annotation>
    <xsd:simpleContent>
      <xsd:extension base="xsd:string">
        <xsd:attribute name="name" type="xsd:normalizedString" use="required">
          <xsd:annotation>
            <xsd:documentation xml:lang="en">The name of the dimension. E.g.: "Currency", "Stock", "Issuer", etc.</xsd:documentation>
          </xsd:annotation>
        </xsd:attribute>
        <xsd:attribute name="href" type="xsd:IDREF" ecore:reference="Asset">
          <xsd:annotation>
            <xsd:documentation xml:lang="en">A reference to an instrument (e.g. currency) that this value represents.</xsd:documentation>
          </xsd:annotation>
        </xsd:attribute>
      </xsd:extension>
    </xsd:simpleContent>
  </xsd:complexType>
  <xsd:complexType name="InstrumentSet">
    <xsd:annotation>
      <xsd:documentation xml:lang="en">A collection of instruments usable for quotation purposes. In future releases, quotable derivative assets may be added after the underlying asset.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element ref="underlyingAsset" minOccurs="0" maxOccurs="unbounded">
        <xsd:annotation>
          <xsd:documentation xml:lang="en">A collection of underlying assets (bonds, discount instruments, futures, etc.) that can be used as a basis for benchmark quotes.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
    </xsd:sequence>
  </xsd:complexType>
  <xsd:complexType name="Market">
    <xsd:annotation>
      <xsd:documentation xml:lang="en">A collection of pricing inputs.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="name" type="xsd:string" minOccurs="0">
        <xsd:annotation>
          <xsd:documentation xml:lang="en">The name of the market, e.g. the USDLIBOR market. Used for description and understandability.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="benchmarkQuotes" type="QuotedAssetSet" minOccurs="0">
        <xsd:annotation>
          <xsd:documentation xml:lang="en">A collection of benchmark instruments and quotes used as inputs to the pricing models.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element ref="pricingStructure" minOccurs="0" maxOccurs="unbounded">
        <xsd:annotation>
          <xsd:documentation xml:lang="en">A collection of pricing inputs (curves, volatility matrices, etc.) used to represent the market.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element ref="pricingStructureValuation" minOccurs="0" maxOccurs="unbounded">
        <xsd:annotation>
          <xsd:documentation xml:lang="en">The values of the pricing structure used to represent the markets.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="benchmarkPricingMethod" type="PricingMethod" minOccurs="0" maxOccurs="unbounded">
        <xsd:annotation>
          <xsd:documentation xml:lang="en">The pricing structure used to quote a benchmark instrument.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
    </xsd:sequence>
    <xsd:attribute name="id" type="xsd:ID" />
  </xsd:complexType>
  <xsd:complexType name="MarketReference">
    <xsd:annotation>
      <xsd:documentation xml:lang="en">Reference to a market structure.</xsd:documentation>
    </xsd:annotation>
    <xsd:complexContent>
      <xsd:extension base="Reference">
        <xsd:attribute name="href" type="xsd:IDREF" use="required" ecore:reference="Market" />
      </xsd:extension>
    </xsd:complexContent>
  </xsd:complexType>
  <xsd:complexType name="PerturbationType">
    <xsd:annotation>
      <xsd:documentation source="http://www.FpML.org" xml:lang="en">The type of perturbation applied to compute a derivative perturbatively.</xsd:documentation>
    </xsd:annotation>
    <xsd:simpleContent>
      <xsd:extension base="Scheme">
        <xsd:attribute name="perturbationTypeScheme" type="xsd:anyURI" default="http://www.fpml.org/coding-scheme/perturbation-type" />
      </xsd:extension>
    </xsd:simpleContent>
  </xsd:complexType>
  <xsd:complexType name="PositionId">
    <xsd:annotation>
      <xsd:documentation xml:lang="en">A unique identifier for the position. The id attribute is defined for intradocument referencing.</xsd:documentation>
    </xsd:annotation>
    <xsd:simpleContent>
      <xsd:extension base="Scheme">
        <xsd:attribute name="positionIdScheme" type="xsd:anyURI" />
        <xsd:attribute name="id" type="xsd:ID" />
      </xsd:extension>
    </xsd:simpleContent>
  </xsd:complexType>
  <xsd:complexType name="PricingInputReplacement">
    <xsd:annotation>
      <xsd:documentation xml:lang="en">The substitution of a pricing input (e.g. curve) for another, used in generating prices and risks for valuation scenarios.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="originalInputReference" type="PricingStructureReference">
        <xsd:annotation>
          <xsd:documentation xml:lang="en">A reference to the original value of the pricing input.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="replacementInputReference" type="PricingStructureReference">
        <xsd:annotation>
          <xsd:documentation xml:lang="en">A reference to the substitution to do.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
    </xsd:sequence>
  </xsd:complexType>
  <xsd:complexType name="PricingInputType">
    <xsd:annotation>
      <xsd:documentation source="http://www.FpML.org" xml:lang="en">The type of pricing structure represented.</xsd:documentation>
    </xsd:annotation>
    <xsd:simpleContent>
      <xsd:extension base="Scheme">
        <xsd:attribute name="pricingInputTypeScheme" type="xsd:anyURI" default="http://www.fpml.org/coding-scheme/pricing-input-type" />
      </xsd:extension>
    </xsd:simpleContent>
  </xsd:complexType>
  <xsd:complexType name="PricingDataPointCoordinate">
    <xsd:annotation>
      <xsd:documentation xml:lang="en">A set of index values that identify a pricing data point. For example: (strike = 17%, expiration = 6M, term = 1Y.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:group ref="PricingStructureIndex.model" maxOccurs="unbounded" />
    </xsd:sequence>
    <xsd:attribute name="id" type="xsd:ID" />
  </xsd:complexType>
  <xsd:complexType name="PricingDataPointCoordinateReference">
    <xsd:annotation>
      <xsd:documentation xml:lang="en">Reference to a Pricing Data Point Coordinate.</xsd:documentation>
    </xsd:annotation>
    <xsd:complexContent>
      <xsd:extension base="Reference">
        <xsd:attribute name="href" type="xsd:IDREF" use="required" ecore:reference="PricingDataPointCoordinate" />
      </xsd:extension>
    </xsd:complexContent>
  </xsd:complexType>
  <xsd:complexType name="PricingMethod">
    <xsd:annotation>
      <xsd:documentation xml:lang="en">For an asset (e.g. a reference/benchmark asset), the pricing structure used to price it. Used, for example, to specify that the rateIndex "USD-LIBOR-Telerate" with term = 6M is priced using the "USD-LIBOR-Close" curve.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="assetReference" type="AnyAssetReference">
        <xsd:annotation>
          <xsd:documentation xml:lang="en">The asset whose price is required.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="pricingInputReference" type="PricingStructureReference">
        <xsd:annotation>
          <xsd:documentation xml:lang="en">A reference to the pricing input used to value the asset.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
    </xsd:sequence>
  </xsd:complexType>
  <xsd:complexType name="PricingParameterDerivative">
    <xsd:annotation>
      <xsd:documentation xml:lang="en">A definition of the mathematical derivative with respect to a specific pricing parameter.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="description" type="xsd:string" minOccurs="0">
        <xsd:annotation>
          <xsd:documentation xml:lang="en">A description, if needed, of how the derivative is computed.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:choice>
        <xsd:element name="parameterReference" type="AssetOrTermPointOrPricingStructureReference" minOccurs="0">
          <xsd:annotation>
            <xsd:documentation xml:lang="en">A reference to the pricing input parameter to which the sensitivity is computed. If it is omitted, the derivative definition is generic, and applies to any input point in the valuation set.</xsd:documentation>
          </xsd:annotation>
        </xsd:element>
        <xsd:element name="inputDateReference" type="ValuationReference" maxOccurs="unbounded">
          <xsd:annotation>
            <xsd:documentation xml:lang="en">Reference(s) to the pricing input dates that are shifted when the sensitivity is computed. Depending on the time advance method used, this list could vary. Used for describing time-advance derivatives (theta, carry, etc.)</xsd:documentation>
          </xsd:annotation>
        </xsd:element>
      </xsd:choice>
      <xsd:element name="calculationProcedure" type="DerivativeCalculationProcedure" minOccurs="0">
        <xsd:annotation>
          <xsd:documentation xml:lang="en">The method by which a derivative is computed, e.g. analytic, numerical model, perturbation, etc., and the corresponding parameters</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
    </xsd:sequence>
    <xsd:attribute name="id" type="xsd:ID" />
  </xsd:complexType>
  <xsd:complexType name="PricingParameterDerivativeReference">
    <xsd:annotation>
      <xsd:documentation xml:lang="en">Reference to a partial derivative.</xsd:documentation>
    </xsd:annotation>
    <xsd:complexContent>
      <xsd:extension base="Reference">
        <xsd:attribute name="href" type="xsd:IDREF" use="required" ecore:reference="PricingParameterDerivative" />
      </xsd:extension>
    </xsd:complexContent>
  </xsd:complexType>
  <xsd:complexType name="PricingParameterShift">
    <xsd:annotation>
      <xsd:documentation xml:lang="en">A definition of a shift with respect to a specific pricing parameter.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="parameterReference" type="AssetOrTermPointOrPricingStructureReference" />
      <xsd:element name="shift" type="xsd:decimal">
        <xsd:annotation>
          <xsd:documentation xml:lang="en">The size of the denominator, e.g. 0.0001 = 1 bp.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="shiftUnits" type="PriceQuoteUnits" minOccurs="0">
        <xsd:annotation>
          <xsd:documentation xml:lang="en">The units of the denominator, e.g. currency. If not present, use the units of the PricingInputReference.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
    </xsd:sequence>
    <xsd:attribute name="id" type="xsd:ID" />
  </xsd:complexType>
  <xsd:complexType name="PricingStructureValuation">
    <xsd:annotation>
      <xsd:documentation xml:lang="en">An abstract pricing structure valuation base type. Used as a base for values of pricing structures such as yield curves and volatility matrices. Derived from the "Valuation" type.</xsd:documentation>
    </xsd:annotation>
    <xsd:complexContent>
      <xsd:extension base="Valuation">
        <xsd:sequence>
          <xsd:group ref="PricingInputDates.model">
            <xsd:annotation>
              <xsd:documentation xml:lang="en">The relevant dates for a pricing structure - what is applies to, when it was built, etc.</xsd:documentation>
            </xsd:annotation>
          </xsd:group>
        </xsd:sequence>
      </xsd:extension>
    </xsd:complexContent>
  </xsd:complexType>
  <xsd:complexType name="QuotedAssetSet">
    <xsd:annotation>
      <xsd:documentation xml:lang="en">A collection of quoted assets.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="instrumentSet" type="InstrumentSet" minOccurs="0">
        <xsd:annotation>
          <xsd:documentation xml:lang="en">A collection of instruments used as a basis for quotation.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="assetQuote" type="BasicAssetValuation" minOccurs="0" maxOccurs="unbounded">
        <xsd:annotation>
          <xsd:documentation xml:lang="en">A collection of valuations (quotes) for the assets needed in the set. Normally these quotes will be for the underlying assets listed above, but they don't necesarily have to be.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
    </xsd:sequence>
  </xsd:complexType>
  <xsd:complexType name="SensitivityDefinition">
    <xsd:annotation>
      <xsd:documentation xml:lang="en">A set of characteristics describing a sensitivity.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="name" type="xsd:string" minOccurs="0">
        <xsd:annotation>
          <xsd:documentation xml:lang="en">The name of the derivative, e.g. first derivative, Hessian, etc. Typically not required, but may be used to explain more complex derivative calculations.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="valuationScenarioReference" type="ValuationScenarioReference" minOccurs="0">
        <xsd:annotation>
          <xsd:documentation xml:lang="en">Reference to the valuation scenario to which this sensitivity definition applies. If the SensitivityDefinition occurs within a SensitivitySetDefinition, this is not required and normally not used. In this case, if it is supplied it overrides the valuationScenarioReference in the SensitivitySetDefinition.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:choice>
        <xsd:group ref="ComputedDerivative.model" />
        <xsd:group ref="SensitivityDescription.model" />
      </xsd:choice>
    </xsd:sequence>
    <xsd:attribute name="id" type="xsd:ID" />
  </xsd:complexType>
  <xsd:complexType name="SensitivitySetDefinition">
    <xsd:annotation>
      <xsd:documentation xml:lang="en">A sensitivity report definition, consisting of a collection of sensitivity definitions.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="name" type="xsd:string" minOccurs="0">
        <xsd:annotation>
          <xsd:documentation xml:lang="en">The name of the sensitivity set definition, e.g. "USDLIBOR curve sensitivities".</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="sensitivityCharacteristics" type="QuotationCharacteristics" minOccurs="0">
        <xsd:annotation>
          <xsd:documentation xml:lang="en">The default characteristics of the quotation, e.g. type, units, etc.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="valuationScenarioReference" type="ValuationScenarioReference" minOccurs="0">
        <xsd:annotation>
          <xsd:documentation xml:lang="en">Reference to the valuation scenario to which this sensitivity definition applies, e.g. a reference to the EOD valuation scenario. If not supplied, this sensitivity set definition is generic to a variety of valuation scenarios.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="pricingInputType" type="PricingInputType" minOccurs="0">
        <xsd:annotation>
          <xsd:documentation xml:lang="en">The type of the pricing input to which the sensitivity is shown, e.g. a yield curve or volatility matrix.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="pricingInputReference" type="PricingStructureReference" minOccurs="0">
        <xsd:annotation>
          <xsd:documentation xml:lang="en">A reference to the pricing input to which the sensitivity is shown, e.g. a reference to a USDLIBOR yield curve.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="scale" type="xsd:decimal">
        <xsd:annotation>
          <xsd:documentation xml:lang="en">The size of the denominator, e.g. 0.0001 = 1 bp. For derivatives with respect to time, the default period is 1 day.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="sensitivityDefinition" type="SensitivityDefinition" minOccurs="0" maxOccurs="unbounded">
        <xsd:annotation>
          <xsd:documentation xml:lang="en">A set of sensitivity definitions. Either one per point reported, or one generic definition that applies to all points.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="calculationProcedure" type="DerivativeCalculationProcedure" minOccurs="0">
        <xsd:annotation>
          <xsd:documentation xml:lang="en">The method by which each derivative is computed, e.g. analytic, numerical model, perturbation, etc., and the corresponding parameters (eg. shift amounts).</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
    </xsd:sequence>
    <xsd:attribute name="id" type="xsd:ID" />
  </xsd:complexType>
  <xsd:complexType name="SensitivitySetDefinitionReference">
    <xsd:annotation>
      <xsd:documentation xml:lang="en">A reference to a sensitivity set definition.</xsd:documentation>
    </xsd:annotation>
    <xsd:complexContent>
      <xsd:extension base="Reference">
        <xsd:attribute name="href" type="xsd:IDREF" use="required" ecore:reference="SensitivitySetDefinition" />
      </xsd:extension>
    </xsd:complexContent>
  </xsd:complexType>
  <xsd:complexType name="TimeDimension">
    <xsd:annotation>
      <xsd:documentation xml:lang="en">The time dimensions of a term-structure. The user must supply either a tenor or a date or both.</xsd:documentation>
    </xsd:annotation>
    <xsd:choice>
      <xsd:element name="tenor" type="Period">
        <xsd:annotation>
          <xsd:documentation xml:lang="en">The amount of time from the base date of the pricing input to the specified term point, e.g. 6M or 5Y.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:sequence>
        <xsd:element name="date" type="xsd:date">
          <xsd:annotation>
            <xsd:documentation xml:lang="en">The absolute date corresponding to this term point, for example January 3, 2005.</xsd:documentation>
          </xsd:annotation>
        </xsd:element>
        <xsd:element name="tenor" type="Period" minOccurs="0">
          <xsd:annotation>
            <xsd:documentation xml:lang="en">The amount of time from the base date of the pricing input to the specified term point, e.g. 6M or 5Y.</xsd:documentation>
          </xsd:annotation>
        </xsd:element>
      </xsd:sequence>
    </xsd:choice>
  </xsd:complexType>
  <xsd:complexType name="Valuation">
    <xsd:annotation>
      <xsd:documentation xml:lang="en">A valuation of an valuable object - an asset or a pricing input. This is an abstract type, used as a base for values of pricing structures such as yield curves as well as asset values.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="objectReference" type="AnyAssetReference" minOccurs="0">
        <xsd:annotation>
          <xsd:documentation xml:lang="en">A reference to the asset or pricing structure that this values.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="valuationScenarioReference" type="ValuationScenarioReference" minOccurs="0">
        <xsd:annotation>
          <xsd:documentation xml:lang="en">A reference to the valuation scenario used to calculate this valuation. If the Valuation occurs within a ValuationSet, this value is optional and is defaulted from the ValuationSet. If this value occurs in both places, the lower level value (i.e. the one here) overrides that in the higher (i.e. ValuationSet).</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
    </xsd:sequence>
    <xsd:attribute name="id" type="xsd:ID" />
    <xsd:attribute name="definitionRef" type="xsd:IDREF" ecore:reference="ValuationScenario">
      <xsd:annotation>
        <xsd:documentation xml:lang="en">An optional reference to the scenario that this valuation applies to.</xsd:documentation>
      </xsd:annotation>
    </xsd:attribute>
  </xsd:complexType>
  <xsd:complexType name="ValuationReference">
    <xsd:annotation>
      <xsd:documentation xml:lang="en">Reference to a Valuation or any derived structure such as PricingStructureValuation.</xsd:documentation>
    </xsd:annotation>
    <xsd:complexContent>
      <xsd:extension base="Reference">
        <xsd:attribute name="href" type="xsd:IDREF" use="required" ecore:reference="Valuation" />
      </xsd:extension>
    </xsd:complexContent>
  </xsd:complexType>
  <xsd:complexType name="ValuationScenario">
    <xsd:annotation>
      <xsd:documentation xml:lang="en">A set of rules for generating a valuation.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="name" type="xsd:string" minOccurs="0">
        <xsd:annotation>
          <xsd:documentation xml:lang="en">The (optional) name for this valuation scenario, used for understandability. For example "EOD Valuations".</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="valuationDate" type="IdentifiedDate">
        <xsd:annotation>
          <xsd:documentation xml:lang="en">The date for which the assets are valued.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="marketReference" type="MarketReference" minOccurs="0">
        <xsd:annotation>
          <xsd:documentation xml:lang="en">A reference to the market environment used to price the asset.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="shift" type="PricingParameterShift" minOccurs="0" maxOccurs="unbounded">
        <xsd:annotation>
          <xsd:documentation xml:lang="en">A collection of shifts to be applied to market inputs prior to computation of the derivative.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="replacement" type="PricingInputReplacement" minOccurs="0" maxOccurs="unbounded">
        <xsd:annotation>
          <xsd:documentation xml:lang="en">A collection of shifts to be applied to market inputs prior to computation of the derivative.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
    </xsd:sequence>
    <xsd:attribute name="id" type="xsd:ID" />
  </xsd:complexType>
  <xsd:complexType name="ValuationScenarioReference">
    <xsd:annotation>
      <xsd:documentation xml:lang="en">Reference to a valuation scenario.</xsd:documentation>
    </xsd:annotation>
    <xsd:complexContent>
      <xsd:extension base="Reference">
        <xsd:attribute name="href" type="xsd:IDREF" use="required" ecore:reference="ValuationScenario" />
      </xsd:extension>
    </xsd:complexContent>
  </xsd:complexType>
  <xsd:complexType name="WeightedPartialDerivative">
    <xsd:annotation>
      <xsd:documentation xml:lang="en">A partial derivative multiplied by a weighting factor.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="partialDerivativeReference" type="PricingStructureReference">
        <xsd:annotation>
          <xsd:documentation xml:lang="en">A reference to a partial derivative defined in the ComputedDerivative.model, i.e. defined as part of this sensitivity definition.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="weight" type="xsd:decimal">
        <xsd:annotation>
          <xsd:documentation xml:lang="en">The weight factor to be applied to the partial derivative, e.g. 1 or -1, or some other scaling value.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
    </xsd:sequence>
  </xsd:complexType>
  <xsd:element name="market" type="Market">
    <xsd:annotation>
      <xsd:documentation xml:lang="en">This is a global element used for creating global types. It holds Market information, e.g. curves, surfaces, quotes, etc.</xsd:documentation>
    </xsd:annotation>
  </xsd:element>
  <xsd:element name="pricingStructure" type="PricingStructure" abstract="true" />
  <xsd:element name="pricingStructureValuation" type="PricingStructureValuation" abstract="true" />
  <xsd:group name="AnalyticDerivativeParameters.model">
    <xsd:annotation>
      <xsd:documentation xml:lang="en">Parameters used in the computation of a derivative using analytical (closed form formula) techiques.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="derivativeFormula" type="xsd:string" minOccurs="0">
        <xsd:annotation>
          <xsd:documentation xml:lang="en">The formula used to compute the derivative (perhaps could be updated to use the Formula type in EQS.).</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
    </xsd:sequence>
  </xsd:group>
  <xsd:group name="ComputedDerivative.model">
    <xsd:annotation>
      <xsd:documentation source="http://www.FpML.org" xml:lang="en">A group describing a derivative as combination of partial derivatives.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="partialDerivative" type="PricingParameterDerivative" maxOccurs="unbounded">
        <xsd:annotation>
          <xsd:documentation xml:lang="en">A partial derivative of the measure with respect to an input.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="formula" type="DerivativeFormula" minOccurs="0">
        <xsd:annotation>
          <xsd:documentation xml:lang="en">A formula defining how to compute the derivative from the partial derivatives. If absent, the derivative is just the product of the partial derivatives. Normally only required for more higher-order derivatives, e.g. Hessians.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
    </xsd:sequence>
  </xsd:group>
  <xsd:group name="DerivativeCalculationParameters.model">
    <xsd:annotation>
      <xsd:documentation xml:lang="en">Parameters used in the computation of a derivative.</xsd:documentation>
    </xsd:annotation>
    <xsd:choice>
      <xsd:group ref="FiniteDifferenceDerivativeParameters.model" />
      <xsd:group ref="AnalyticDerivativeParameters.model" />
      <xsd:group ref="SubstitutionDerivativeParameters.model" />
    </xsd:choice>
  </xsd:group>
  <xsd:group name="FiniteDifferenceDerivativeParameters.model">
    <xsd:annotation>
      <xsd:documentation xml:lang="en">Parameters used in the computation of a derivative using numerical (finite difference) techniques.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="perturbationAmount" type="xsd:decimal" minOccurs="0">
        <xsd:annotation>
          <xsd:documentation xml:lang="en">The size and direction of the perturbation used to compute the derivative, e.g. 0.0001 = 1 bp.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="averaged" type="xsd:boolean">
        <xsd:annotation>
          <xsd:documentation xml:lang="en">The value is calculated by perturbing by the perturbationAmount and then the negative of the perturbationAmount and then averaging the two values (i.e. the value is half of the difference between perturbing up and perturbing down).</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="perturbationType" type="PerturbationType" minOccurs="0">
        <xsd:annotation>
          <xsd:documentation xml:lang="en">The type of perturbation, if any, used to compute the derivative (Absolute vs Relative).</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
    </xsd:sequence>
  </xsd:group>
  <xsd:group name="PositionIdAndVersion.model">
    <xsd:annotation>
      <xsd:documentation xml:lang="en">A model group that includes a position ID and an optional version.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="positionId" type="PositionId">
        <xsd:annotation>
          <xsd:documentation xml:lang="en">A version-independent identifier for the position, possibly based on trade identifier.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="version" type="xsd:positiveInteger" minOccurs="0">
        <xsd:annotation>
          <xsd:documentation xml:lang="en">A version identifier. Version identifiers must be ascending, i.e. higher numbers imply newer versions. There is no requirement that version identifiers for a position be sequential or small, so for example timestamp-based version identifiers could be used.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
    </xsd:sequence>
  </xsd:group>
  <xsd:group name="PricingCoordinateOrReference.model">
    <xsd:annotation>
      <xsd:documentation xml:lang="en">A pricing structure coordinate, or a reference to one. This can be used to either directly define a coordinate or reference an existing coordinate.</xsd:documentation>
    </xsd:annotation>
    <xsd:choice>
      <xsd:element name="coordinate" type="PricingDataPointCoordinate">
        <xsd:annotation>
          <xsd:documentation xml:lang="en">An explicit, filled in data point coordinate. This might specify expiration, strike, etc.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="coordinateReference" type="PricingDataPointCoordinateReference">
        <xsd:annotation>
          <xsd:documentation xml:lang="en">A reference to a pricing data point coordinate within this document.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
    </xsd:choice>
  </xsd:group>
  <xsd:group name="PricingInputDates.model">
    <xsd:annotation>
      <xsd:documentation xml:lang="en">The dates that might be relevant for a pricing input, e.g. what valuation date it applies to, when it was built, when the data comes from, etc..</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="baseDate" type="IdentifiedDate">
        <xsd:annotation>
          <xsd:documentation xml:lang="en">The base date for which the structure applies, i.e. the curve date. Normally this will align with the valuation date.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="spotDate" type="IdentifiedDate" minOccurs="0">
        <xsd:annotation>
          <xsd:documentation xml:lang="en">The spot settlement date for which the structure applies, normally 0-2 days after the base date. The difference between the baseDate and the spotDate is termed the settlement lag, and is sometimes called "days to spot".</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="inputDataDate" type="IdentifiedDate" minOccurs="0">
        <xsd:annotation>
          <xsd:documentation xml:lang="en">The date from which the input data used to construct the pricing input was obtained. Often the same as the baseDate, but sometimes the pricing input may be "rolled forward", in which input data from one date is used to generate a curve for a later date.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="endDate" type="IdentifiedDate" minOccurs="0">
        <xsd:annotation>
          <xsd:documentation xml:lang="en">The last date for which data is supplied in this pricing input.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="buildDateTime" type="xsd:dateTime" minOccurs="0">
        <xsd:annotation>
          <xsd:documentation xml:lang="en">The date and time when the pricing input was generated.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
    </xsd:sequence>
  </xsd:group>
  <xsd:group name="PricingStructureIndex.model">
    <xsd:annotation>
      <xsd:documentation xml:lang="en">The index (an ordinate) of a pricing structure. The index expresses how far along a particular dimension (e.g. time, strike, etc.) a point is located.</xsd:documentation>
    </xsd:annotation>
    <xsd:choice>
      <xsd:element name="term" type="TimeDimension">
        <xsd:annotation>
          <xsd:documentation xml:lang="en">A time dimension that represents the term of a financial instrument, e.g. of a zero-coupon bond on a curve, or of an underlying caplet or swap for an option.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="expiration" type="TimeDimension">
        <xsd:annotation>
          <xsd:documentation xml:lang="en">A time dimension that represents the time to expiration of an option.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="strike" type="xsd:decimal">
        <xsd:annotation>
          <xsd:documentation xml:lang="en">A numerical dimension that represents the strike rate or price of an option.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="generic" type="GenericDimension" />
    </xsd:choice>
  </xsd:group>
  <xsd:group name="SensitivityDescription.model">
    <xsd:annotation>
      <xsd:documentation source="http://www.FpML.org" xml:lang="en">A group describing a specific sensitivity without an explicity reference to the market data input point.</xsd:documentation>
    </xsd:annotation>
    <xsd:choice>
      <xsd:element name="term" type="TimeDimension">
        <xsd:annotation>
          <xsd:documentation xml:lang="en">The time dimension of the sensitivity point (tenor and/or date).</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:group ref="PricingCoordinateOrReference.model" maxOccurs="unbounded">
        <xsd:annotation>
          <xsd:documentation xml:lang="en">The input coordinates, or references to them (e.g. expiration, strike, tenor).</xsd:documentation>
        </xsd:annotation>
      </xsd:group>
    </xsd:choice>
  </xsd:group>
  <xsd:group name="SubstitutionDerivativeParameters.model">
    <xsd:annotation>
      <xsd:documentation xml:lang="en">Parameters used in the computation of a derivative by substituting a supplied market environment.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="replacementMarketInput" type="PricingStructureReference">
        <xsd:annotation>
          <xsd:documentation xml:lang="en">A reference to the replacement version of the market input, e.g. a bumped yield curve.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
    </xsd:sequence>
  </xsd:group>
</xsd:schema>

