<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema">

  <xs:element type="sensitivityanalysis" name="SensitivityAnalysis"/>

  <xs:complexType name="sensitivityanalysis">
    <xs:all>
      <xs:element type="parExcludes" name="ParConversionExcludes" minOccurs="0"/>
      <xs:element type="xs:string" name="ParSensiRemoveFixing" minOccurs="0"/>
      <xs:element type="parConversionMatrixRegularisation" name="ParConversionMatrixRegularisation" minOccurs="0"/>
      <xs:element type="xs:boolean" name="ParConversion" minOccurs="0"/>
      <xs:element type="discountcurves" name="DiscountCurves"/>
      <xs:element type="indexcurves" name="IndexCurves" minOccurs="0"/>
      <xs:element type="yieldcurves" name="YieldCurves" minOccurs="0"/>
      <xs:element type="fxspots" name="FxSpots" minOccurs="0"/>
      <xs:element type="fxvolatilities" name="FxVolatilities" minOccurs="0"/>
      <xs:element type="swaptionvolatilities" name="SwaptionVolatilities" minOccurs="0"/>
      <xs:element type="yieldvolatilities" name="YieldVolatilities" minOccurs="0"/>
      <xs:element type="capfloorvolatilities" name="CapFloorVolatilities" minOccurs="0"/>
      <xs:element type="cdsvolatilities" name="CDSVolatilities" minOccurs="0"/>
      <xs:element type="creditcurves" name="CreditCurves" minOccurs="0"/>
      <xs:element type="equityspots" name="EquitySpots" minOccurs="0"/>
      <xs:element type="equityvolatilities" name="EquityVolatilities" minOccurs="0"/>
      <xs:element type="zeroinflationindexcurves" name="ZeroInflationIndexCurves" minOccurs="0"/>
      <xs:element type="yyinflationindexcurves" name="YYInflationIndexCurves" minOccurs="0"/>
      <xs:element type="cpicapfloorvolatilities" name="CPICapFloorVolatilities" minOccurs="0"/>
      <xs:element type="yycapfloorvolatilities" name="YYCapFloorVolatilities" minOccurs="0"/>
      <xs:element type="dividendyields" name="DividendYieldCurves" minOccurs="0"/>
      <xs:element type="basecorrelations" name="BaseCorrelations"  minOccurs="0"/>
      <xs:element type="securityspreads" name="SecuritySpreads"  minOccurs="0"/>
      <xs:element type="commodityCurves" name="CommodityCurves"  minOccurs="0"/>
      <xs:element type="commodityvolatilities" name="CommodityVolatilities" minOccurs="0"/>
      <xs:element type="correlationcurves" name="Correlations" minOccurs="0"/>
      <xs:element type="crossgammafilter" name="CrossGammaFilter" minOccurs="0"/>
      <xs:element type="bool" name="ComputeGamma" minOccurs="0"/>
      <xs:element type="bool" name="UseSpreadedTermStructures" minOccurs="0"/>
      <xs:element type="setRiskFactorKeyTypes" name="TwoSidedDeltaKeyTypes" minOccurs="0"/>
    </xs:all>
  </xs:complexType>

  <xs:complexType name="parconversion">
    <xs:sequence>
      <xs:element type="xs:string" name="Instruments" maxOccurs="unbounded" minOccurs="0"/>
      <xs:element type="xs:boolean" name="SingleCurve" maxOccurs="unbounded" minOccurs="0"/>
      <xs:element type="xs:string" name="DiscountCurve" maxOccurs="1" minOccurs="0"/>
      <xs:element type="currencyCode" name="OtherCurrency" maxOccurs="1" minOccurs="0"/>
      <xs:element type="xs:string" name="RateComputationPeriod" maxOccurs="1" minOccurs="0"/>
      <xs:element name="Conventions" maxOccurs="1" minOccurs="0">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="Convention" maxOccurs="unbounded" minOccurs="0">
              <xs:complexType>
                <xs:simpleContent>
                  <xs:extension base="xs:string">
                    <xs:attribute name="id" type="xs:string" />
                  </xs:extension>
                </xs:simpleContent>
              </xs:complexType>
            </xs:element>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="parExcludes">
    <xs:sequence>
      <xs:element name="Type" maxOccurs="unbounded" minOccurs="0">
      </xs:element>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="discountcurves">
    <xs:sequence>
      <xs:element type="discountcurve" name="DiscountCurve" maxOccurs="unbounded" minOccurs="0"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="survivalprobabilities">
    <xs:sequence>
      <xs:element type="survivalprobability" name="SurvivalProbability" maxOccurs="unbounded" minOccurs="0"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="indexcurves">
    <xs:sequence>
      <xs:element type="indexcurve" name="IndexCurve" maxOccurs="unbounded" minOccurs="0"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="yieldcurves">
    <xs:sequence>
      <xs:element type="yieldcurve" name="YieldCurve" maxOccurs="unbounded" minOccurs="0"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="fxspots">
    <xs:sequence>
      <xs:element type="fxspot" name="FxSpot" maxOccurs="unbounded" minOccurs="0"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="recoveryrates">
    <xs:sequence>
      <xs:element type="recoveryrate" name="RecoverRate" maxOccurs="unbounded" minOccurs="0"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="fxvolatilities">
    <xs:sequence>
      <xs:element type="fxvolatility" name="FxVolatility" maxOccurs="unbounded" minOccurs="0"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="swaptionvolatilities">
    <xs:sequence>
      <xs:element type="swaptionvolatility" name="SwaptionVolatility" maxOccurs="unbounded" minOccurs="0"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="yieldvolatilities">
    <xs:sequence>
      <xs:element type="yieldvolatility" name="YieldVolatility" maxOccurs="unbounded" minOccurs="0"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="capfloorvolatilities">
    <xs:sequence>
      <xs:element type="capfloorvolatility" name="CapFloorVolatility" maxOccurs="unbounded" minOccurs="0"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="cdsvolatilities">
    <xs:sequence>
      <xs:element type="cdsvolatility" name="CDSVolatility" maxOccurs="unbounded" minOccurs="0"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="creditcurves">
    <xs:sequence>
      <xs:element type="creditcurve" name="CreditCurve" maxOccurs="unbounded" minOccurs="0"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="equityspots">
    <xs:sequence>
      <xs:element type="equityspot" name="EquitySpot" maxOccurs="unbounded" minOccurs="0"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="equityvolatilities">
    <xs:sequence>
      <xs:element type="equityvolatility" name="EquityVolatility" maxOccurs="unbounded" minOccurs="0"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="zeroinflationindexcurves">
    <xs:sequence>
      <xs:element type="zeroinflationindexcurve" name="ZeroInflationIndexCurve" maxOccurs="unbounded" minOccurs="0"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="yyinflationindexcurves">
    <xs:sequence>
      <xs:element type="yyinflationindexcurve" name="YYInflationIndexCurve" maxOccurs="unbounded" minOccurs="0"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="yycapfloorvolatilities">
    <xs:sequence>
      <xs:element type="yycapfloorvolatility" name="YYCapFloorVolatility" maxOccurs="unbounded" minOccurs="0"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="cpicapfloorvolatilities">
    <xs:sequence>
      <xs:element type="cpicapfloorvolatility" name="CPICapFloorVolatility" maxOccurs="unbounded" minOccurs="0"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="basecorrelations">
    <xs:sequence>
      <xs:element type="basecorrelation" name="BaseCorrelation" maxOccurs="unbounded" minOccurs="0"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="securityspreads">
    <xs:sequence>
      <xs:element type="securityspread" name="SecuritySpread" maxOccurs="unbounded" minOccurs="0"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="dividendyields">
    <xs:sequence>
      <xs:element type="dividendyield" name="DividendYieldCurve" maxOccurs="unbounded" minOccurs="0"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="commodityCurves">
    <xs:sequence>
      <xs:element type="commodityCurve" name="CommodityCurve" maxOccurs="unbounded" minOccurs="0"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="commodityvolatilities">
    <xs:sequence>
      <xs:element type="commodityvolatility" name="CommodityVolatility" maxOccurs="unbounded" minOccurs="0"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="correlationcurves">
    <xs:sequence>
      <xs:element type="correlationcurve" name="Correlation" maxOccurs="unbounded" minOccurs="0"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="crossgammafilter">
    <xs:sequence>
      <xs:element type="xs:string" name="Pair" minOccurs="0" maxOccurs="unbounded"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="shiftTypeEntry">
    <xs:simpleContent>
      <xs:extension base="shiftType">
        <xs:attribute type="xs:string" name="key"/>
      </xs:extension>
    </xs:simpleContent>
  </xs:complexType>

  <xs:complexType name="shiftSizeEntry">
    <xs:simpleContent>
      <xs:extension base="xs:float">
        <xs:attribute type="xs:string" name="key"/>
      </xs:extension>
    </xs:simpleContent>
  </xs:complexType>

  <xs:complexType name="shiftSchemeEntry">
    <xs:simpleContent>
      <xs:extension base="shiftScheme">
        <xs:attribute type="xs:string" name="key"/>
      </xs:extension>
    </xs:simpleContent>
  </xs:complexType>

  <xs:complexType name="survivalprobability">
    <xs:sequence>
      <xs:element type="shiftTypeEntry" name="ShiftType" maxOccurs="unbounded"/>
      <xs:choice>
        <xs:element type="shiftSizeEntry" name="ShiftSize" maxOccurs="unbounded"/>
        <xs:element type="xs:string" name="Shifts"/>
      </xs:choice>
      <xs:element type="shiftSchemeEntry" name="ShiftScheme" minOccurs="0" maxOccurs="unbounded"/>
      <xs:element type="xs:string" name="ShiftTenors"/>
      <xs:element type="parconversion" name="ParConversion" minOccurs="0"/>
    </xs:sequence>
    <xs:attribute type="xs:string" name="name" use="required"/>
  </xs:complexType>

  <xs:complexType name="discountcurve">
    <xs:sequence>
      <xs:element type="shiftTypeEntry" name="ShiftType" maxOccurs="unbounded"/>
      <xs:choice>
        <xs:element type="shiftSizeEntry" name="ShiftSize" maxOccurs="unbounded"/>
        <xs:element type="xs:string" name="Shifts"/>
      </xs:choice>
      <xs:element type="shiftSchemeEntry" name="ShiftScheme" minOccurs="0" maxOccurs="unbounded"/>
      <xs:element type="xs:string" name="ShiftTenors"/>
      <xs:element type="parconversion" name="ParConversion" minOccurs="0"/>
    </xs:sequence>
    <xs:attribute type="currencyCode" name="ccy" use="required"/>
  </xs:complexType>

  <xs:complexType name="indexcurve">
    <xs:sequence>
      <xs:element type="shiftTypeEntry" name="ShiftType" maxOccurs="unbounded"/>
      <xs:choice>
        <xs:element type="shiftSizeEntry" name="ShiftSize" maxOccurs="unbounded"/>
        <xs:element type="xs:string" name="Shifts"/>
      </xs:choice>
      <xs:element type="shiftSchemeEntry" name="ShiftScheme" minOccurs="0" maxOccurs="unbounded"/>
      <xs:element type="xs:string" name="ShiftTenors"/>
      <xs:element type="parconversion" name="ParConversion" minOccurs="0"/>
    </xs:sequence>
    <xs:attribute type="indexNameType" name="index" use="required"/>
  </xs:complexType>

  <xs:complexType name="yieldcurve">
    <xs:sequence>
      <xs:element type="xs:string" name="CurveType" minOccurs="0"/>
      <xs:element type="shiftTypeEntry" name="ShiftType" maxOccurs="unbounded"/>
      <xs:choice>
        <xs:element type="shiftSizeEntry" name="ShiftSize" maxOccurs="unbounded"/>
        <xs:element type="xs:string" name="Shifts"/>
      </xs:choice>
      <xs:element type="shiftSchemeEntry" name="ShiftScheme" minOccurs="0" maxOccurs="unbounded"/>
      <xs:element type="xs:string" name="ShiftTenors"/>
      <xs:element type="parconversion" name="ParConversion" minOccurs="0"/>
    </xs:sequence>
    <xs:attribute type="xs:string" name="name" use="required"/>
  </xs:complexType>

  <xs:complexType name="fxspot">
    <xs:sequence>
      <xs:element type="shiftTypeEntry" name="ShiftType" maxOccurs="unbounded"/>
      <xs:choice>
        <xs:element type="shiftSizeEntry" name="ShiftSize" maxOccurs="unbounded"/>
        <xs:element type="xs:string" name="Shifts"/>
      </xs:choice>
      <xs:element type="shiftSchemeEntry" name="ShiftScheme" minOccurs="0" maxOccurs="unbounded"/>
    </xs:sequence>
    <xs:attribute type="currencyPair" name="ccypair" use="required"/>
  </xs:complexType>

  <xs:complexType name="recoveryrate">
    <xs:sequence>
      <xs:element type="shiftTypeEntry" name="ShiftType" maxOccurs="unbounded"/>
      <xs:choice>
        <xs:element type="shiftSizeEntry" name="ShiftSize" maxOccurs="unbounded"/>
        <xs:element type="xs:string" name="Shifts"/>
      </xs:choice>
      <xs:element type="shiftSchemeEntry" name="ShiftScheme" minOccurs="0" maxOccurs="unbounded"/>
    </xs:sequence>
    <xs:attribute type="xs:string" name="name" use="required"/>
  </xs:complexType>

  <xs:complexType name="fxvolatility">
    <xs:sequence>
      <xs:element type="shiftTypeEntry" name="ShiftType" maxOccurs="unbounded"/>
      <xs:choice>
        <xs:element type="shiftSizeEntry" name="ShiftSize" maxOccurs="unbounded"/>
        <xs:element type="xs:string" name="Shifts"/>
      </xs:choice>
      <xs:element type="shiftSchemeEntry" name="ShiftScheme" minOccurs="0" maxOccurs="unbounded"/>
      <xs:element type="xs:string" name="ShiftExpiries"/>
      <xs:element type="xs:string" name="ShiftStrikes" minOccurs="0"/>
    </xs:sequence>
    <xs:attribute type="currencyPair" name="ccypair" use="required"/>
  </xs:complexType>

  <xs:complexType name="swaptionvolatility">
    <xs:sequence>
      <xs:element type="shiftTypeEntry" name="ShiftType" maxOccurs="unbounded"/>
      <xs:choice>
        <xs:element type="shiftSizeEntry" name="ShiftSize" maxOccurs="unbounded"/>
        <xs:element name="Shifts">
          <xs:complexType>
            <xs:sequence>
              <xs:element name="Shift" maxOccurs="unbounded" minOccurs="0">
                <xs:complexType>
                  <xs:simpleContent>
                    <xs:extension base="xs:float">
                      <xs:attribute type="xs:string" name="expiry"/>
                      <xs:attribute type="xs:string" name="term"/>
                    </xs:extension>
                  </xs:simpleContent>
                </xs:complexType>
              </xs:element>
            </xs:sequence>
          </xs:complexType>
        </xs:element>
      </xs:choice>
      <xs:element type="shiftSchemeEntry" name="ShiftScheme" minOccurs="0" maxOccurs="unbounded"/>
      <xs:element type="xs:string" name="ShiftExpiries"/>
      <xs:element type="xs:string" name="ShiftStrikes" minOccurs="0"/>
      <xs:element type="xs:string" name="ShiftTerms"/>
    </xs:sequence>
    <xs:attribute type="xs:string" name="key"/>
    <xs:attribute type="currencyCode" name="ccy"/> <!-- deprecated -->
  </xs:complexType>

  <xs:complexType name="yieldvolatility">
    <xs:sequence>
      <xs:element type="shiftTypeEntry" name="ShiftType" maxOccurs="unbounded"/>
      <xs:choice>
        <xs:element type="shiftSizeEntry" name="ShiftSize" maxOccurs="unbounded"/>
        <xs:element name="Shifts">
          <xs:complexType>
            <xs:sequence>
              <xs:element name="Shift" maxOccurs="unbounded" minOccurs="0">
                <xs:complexType>
                  <xs:simpleContent>
                    <xs:extension base="xs:float">
                      <xs:attribute type="xs:string" name="expiry"/>
                      <xs:attribute type="xs:string" name="term"/>
                    </xs:extension>
                  </xs:simpleContent>
                </xs:complexType>
              </xs:element>
            </xs:sequence>
          </xs:complexType>
        </xs:element>
      </xs:choice>
      <xs:element type="shiftSchemeEntry" name="ShiftScheme" minOccurs="0" maxOccurs="unbounded"/>
      <xs:element type="xs:string" name="ShiftExpiries"/>
      <xs:element type="xs:string" name="ShiftTerms"/>
    </xs:sequence>
    <xs:attribute type="xs:string" name="name" use="required"/>
  </xs:complexType>

  <xs:complexType name="capfloorvolatility">
    <xs:sequence>
      <xs:element type="shiftTypeEntry" name="ShiftType" maxOccurs="unbounded"/>
      <xs:choice>
        <xs:element type="shiftSizeEntry" name="ShiftSize" maxOccurs="unbounded"/>
        <xs:element type="xs:string" name="Shifts"/>
      </xs:choice>
      <xs:element type="shiftSchemeEntry" name="ShiftScheme" minOccurs="0" maxOccurs="unbounded"/>
      <xs:element type="xs:string" name="ShiftExpiries"/>
      <xs:element type="xs:string" name="ShiftStrikes" minOccurs="0"/>
      <xs:element type="indexNameType" name="Index" minOccurs="0"/>
      <xs:element type="xs:boolean" name="IsRelative" minOccurs="0"/>
      <xs:element type="parconversion" name="ParConversion" minOccurs="0"/>
    </xs:sequence>
    <xs:attribute type="xs:string" name="key"/>
    <xs:attribute type="currencyCode" name="ccy"/> <!-- deprecated -->
  </xs:complexType>

  <xs:complexType name="cdsvolatility">
    <xs:sequence>
      <xs:element type="shiftTypeEntry" name="ShiftType" maxOccurs="unbounded"/>
      <xs:choice>
        <xs:element type="shiftSizeEntry" name="ShiftSize" maxOccurs="unbounded"/>
        <xs:element type="xs:string" name="Shifts"/>
      </xs:choice>
      <xs:element type="shiftSchemeEntry" name="ShiftScheme" minOccurs="0" maxOccurs="unbounded"/>
      <xs:element type="xs:string" name="ShiftExpiries"/>
    </xs:sequence>
    <xs:attribute type="xs:string" name="name" use="required"/>
  </xs:complexType>

  <xs:complexType name="creditcurve">
    <xs:sequence>
      <xs:element type="currencyCode" name="Currency"/>
      <xs:element type="shiftTypeEntry" name="ShiftType" maxOccurs="unbounded"/>
      <xs:choice>
        <xs:element type="shiftSizeEntry" name="ShiftSize" maxOccurs="unbounded"/>
        <xs:element type="xs:string" name="Shifts"/>
      </xs:choice>
      <xs:element type="shiftSchemeEntry" name="ShiftScheme" minOccurs="0" maxOccurs="unbounded"/>
      <xs:element type="xs:string" name="ShiftTenors"/>
      <xs:element type="parconversion" name="ParConversion" minOccurs="0"/>
    </xs:sequence>
    <xs:attribute type="xs:string" name="name" use="required"/>
  </xs:complexType>

  <xs:complexType name="equityspot">
    <xs:sequence>
      <xs:element type="shiftTypeEntry" name="ShiftType" maxOccurs="unbounded"/>
      <xs:choice>
        <xs:element type="shiftSizeEntry" name="ShiftSize" maxOccurs="unbounded"/>
        <xs:element type="xs:string" name="Shifts"/>
      </xs:choice>
      <xs:element type="shiftSchemeEntry" name="ShiftScheme" minOccurs="0" maxOccurs="unbounded"/>
    </xs:sequence>
    <xs:attribute type="xs:string" name="equity" use="required"/>
  </xs:complexType>

  <xs:complexType name="equityvolatility">
    <xs:sequence>
      <xs:element type="shiftTypeEntry" name="ShiftType" maxOccurs="unbounded"/>
      <xs:choice>
        <xs:element type="shiftSizeEntry" name="ShiftSize" maxOccurs="unbounded"/>
        <xs:element type="xs:string" name="Shifts"/>
      </xs:choice>
      <xs:element type="shiftSchemeEntry" name="ShiftScheme" minOccurs="0" maxOccurs="unbounded"/>
      <xs:element type="xs:string" name="ShiftExpiries"/>
      <xs:element type="xs:string" name="ShiftStrikes" minOccurs="0"/>
    </xs:sequence>
    <xs:attribute type="xs:string" name="equity" use="required"/>
  </xs:complexType>

  <xs:complexType name="zeroinflationindexcurve">
    <xs:sequence>
      <xs:element type="shiftTypeEntry" name="ShiftType" maxOccurs="unbounded"/>
      <xs:choice>
        <xs:element type="shiftSizeEntry" name="ShiftSize" maxOccurs="unbounded"/>
        <xs:element type="xs:string" name="Shifts"/>
      </xs:choice>
      <xs:element type="shiftSchemeEntry" name="ShiftScheme" minOccurs="0" maxOccurs="unbounded"/>
      <xs:element type="xs:string" name="ShiftTenors"/>
      <xs:element type="parconversion" name="ParConversion" minOccurs="0"/>
    </xs:sequence>
    <xs:attribute type="xs:string" name="index" use="required"/>
  </xs:complexType>

  <xs:complexType name="yyinflationindexcurve">
    <xs:sequence>
      <xs:element type="shiftTypeEntry" name="ShiftType" maxOccurs="unbounded"/>
      <xs:choice>
        <xs:element type="shiftSizeEntry" name="ShiftSize" maxOccurs="unbounded"/>
        <xs:element type="xs:string" name="Shifts"/>
      </xs:choice>
      <xs:element type="shiftSchemeEntry" name="ShiftScheme" minOccurs="0" maxOccurs="unbounded"/>
      <xs:element type="xs:string" name="ShiftTenors"/>
      <xs:element type="parconversion" name="ParConversion" minOccurs="0"/>
    </xs:sequence>
    <xs:attribute type="xs:string" name="index" use="required"/>
  </xs:complexType>

  <xs:complexType name="cpicapfloorvolatility">
    <xs:sequence>
      <xs:element type="shiftTypeEntry" name="ShiftType" maxOccurs="unbounded"/>
      <xs:choice>
        <xs:element type="shiftSizeEntry" name="ShiftSize" maxOccurs="unbounded"/>
        <xs:element type="xs:string" name="Shifts"/>
      </xs:choice>
      <xs:element type="shiftSchemeEntry" name="ShiftScheme" minOccurs="0" maxOccurs="unbounded"/>
      <xs:element type="xs:string" name="ShiftExpiries"/>
      <xs:element type="xs:string" name="ShiftStrikes" minOccurs="0"/>
    </xs:sequence>
    <xs:attribute type="xs:string" name="index" use="required"/>
  </xs:complexType>

  <xs:complexType name="yycapfloorvolatility">
    <xs:sequence>
      <xs:element type="shiftTypeEntry" name="ShiftType" maxOccurs="unbounded"/>
      <xs:choice>
        <xs:element type="shiftSizeEntry" name="ShiftSize" maxOccurs="unbounded"/>
        <xs:element type="xs:string" name="Shifts"/>
      </xs:choice>
      <xs:element type="shiftSchemeEntry" name="ShiftScheme" minOccurs="0" maxOccurs="unbounded"/>
      <xs:element type="xs:string" name="ShiftExpiries"/>
      <xs:element type="xs:string" name="ShiftStrikes" minOccurs="0"/>
    </xs:sequence>
    <xs:attribute type="xs:string" name="index" use="required"/>
  </xs:complexType>

  <xs:complexType name="basecorrelation">
    <xs:sequence>
      <xs:element type="shiftTypeEntry" name="ShiftType" maxOccurs="unbounded"/>
      <xs:choice>
        <xs:element type="shiftSizeEntry" name="ShiftSize" maxOccurs="unbounded"/>
        <xs:element type="xs:string" name="Shifts"/>
      </xs:choice>
      <xs:element type="shiftSchemeEntry" name="ShiftScheme" minOccurs="0" maxOccurs="unbounded"/>
      <xs:element type="xs:string" name="ShiftLossLevels"/>
      <xs:element type="xs:string" name="ShiftTerms"/>
    </xs:sequence>
    <xs:attribute type="xs:string" name="indexName" use="required"/>
  </xs:complexType>

  <xs:complexType name="securityspread">
    <xs:sequence>
      <xs:element type="shiftTypeEntry" name="ShiftType" maxOccurs="unbounded"/>
      <xs:choice>
        <xs:element type="shiftSizeEntry" name="ShiftSize" maxOccurs="unbounded"/>
        <xs:element type="xs:string" name="Shifts"/>
      </xs:choice>
      <xs:element type="shiftSchemeEntry" name="ShiftScheme" minOccurs="0" maxOccurs="unbounded"/>
    </xs:sequence>
    <xs:attribute type="xs:string" name="security" use="required"/>
  </xs:complexType>

  <xs:complexType name="dividendyield">
    <xs:sequence>
      <xs:element type="shiftTypeEntry" name="ShiftType" maxOccurs="unbounded"/>
      <xs:choice>
        <xs:element type="shiftSizeEntry" name="ShiftSize" maxOccurs="unbounded"/>
        <xs:element type="xs:string" name="Shifts"/>
      </xs:choice>
      <xs:element type="shiftSchemeEntry" name="ShiftScheme" minOccurs="0" maxOccurs="unbounded"/>
      <xs:element type="xs:string" name="ShiftTenors"/>
    </xs:sequence>
    <xs:attribute type="xs:string" name="equity" use="required"/>
  </xs:complexType>

  <xs:complexType name="commodityCurve">
    <xs:sequence>
      <xs:element type="currencyCode" name="Currency"/>
      <xs:element type="shiftTypeEntry" name="ShiftType" maxOccurs="unbounded"/>
      <xs:choice>
        <xs:element type="shiftSizeEntry" name="ShiftSize" maxOccurs="unbounded"/>
        <xs:element type="xs:string" name="Shifts"/>
      </xs:choice>
      <xs:element type="shiftSchemeEntry" name="ShiftScheme" minOccurs="0" maxOccurs="unbounded"/>
      <xs:element type="xs:string" name="ShiftTenors"/>
      <xs:element type="parconversion" name="ParConversion" minOccurs="0"/>
    </xs:sequence>
    <xs:attribute type="xs:string" name="name" use="required"/>
  </xs:complexType>

  <xs:complexType name="commodityvolatility">
    <xs:sequence>
      <xs:element type="shiftTypeEntry" name="ShiftType" maxOccurs="unbounded"/>
      <xs:choice>
        <xs:element type="shiftSizeEntry" name="ShiftSize" maxOccurs="unbounded"/>
        <xs:element type="xs:string" name="Shifts"/>
      </xs:choice>
      <xs:element type="shiftSchemeEntry" name="ShiftScheme" minOccurs="0" maxOccurs="unbounded"/>
      <xs:element type="xs:string" name="ShiftExpiries"/>
      <xs:element type="xs:string" name="ShiftStrikes" minOccurs="0"/>
    </xs:sequence>
    <xs:attribute type="xs:string" name="name" use="required"/>
  </xs:complexType>

  <xs:complexType name="correlationcurve">
    <xs:sequence>
      <xs:element type="shiftTypeEntry" name="ShiftType" maxOccurs="unbounded"/>
      <xs:choice>
        <xs:element type="shiftSizeEntry" name="ShiftSize" maxOccurs="unbounded"/>
        <xs:element type="xs:string" name="Shifts"/>
      </xs:choice>
      <xs:element type="shiftSchemeEntry" name="ShiftScheme" minOccurs="0" maxOccurs="unbounded"/>
      <xs:element type="xs:string" name="ShiftExpiries"/>
      <xs:element type="xs:string" name="ShiftStrikes" minOccurs="0"/>
    </xs:sequence>
    <xs:attribute type="xs:string" name="index1" use="required"/>
    <xs:attribute type="xs:string" name="index2" use="required"/>
  </xs:complexType>

  <xs:complexType name="setRiskFactorKeyTypes">
    <xs:sequence>
      <xs:element type="riskFactorKeyType" name="RiskFactorKeyType"/>
    </xs:sequence>
  </xs:complexType>

  <xs:simpleType name="parConversionMatrixRegularisation">
    <xs:restriction base="xs:string">
      <xs:enumeration value="Silent"/>
      <xs:enumeration value="Warning"/>
      <xs:enumeration value="Disable"/>
    </xs:restriction>
  </xs:simpleType>

</xs:schema>
