diff --git a/app/Main.hs b/app/Main.hs index 40877c9..ef5a41e 100644 --- a/app/Main.hs +++ b/app/Main.hs @@ -25,9 +25,9 @@ import Data.Tuple (fst, snd) import Data.Void import Utils.Utils import Data.Text (Text) - --- :l resources/Generated/testMultiple.hs --- :set args resources/Rosetta/test-multiple.rosetta +import Parser.Expression (expressionParser) +-- :l resources/Generated/ContractDSL.hs resources/Generated/Imports.hs +-- :set args resources/Rosetta/Contracts/contractDSL.rosetta -- :set args resources/Rosetta/test-all.rosetta -- :l resources/Generated/testAll.hs resources/Generated/testPeriod.hs @@ -117,7 +117,7 @@ addNewTypes defined (TypeObject o: os) = case addNewTypes defined os of Left errors -> Left errors Right types -> addDefinedTypes types [o] -addNewTypes defined (EnumObject (MakeEnum name _ _): os) = addNewTypes defined (TypeObject (MakeType name (BasicType "Object") Nothing [] []) : os) +addNewTypes defined (EnumObject e: os) = addNewTypes defined (TypeObject (convertEnumToType e) : os) addNewTypes defined (_ :os) = addNewTypes defined os -- |Parses any supported Rosetta types into a list of RosettaObject diff --git a/resources/Rosetta/Contracts/contractDSL.rosetta b/resources/Rosetta/Contracts/contractDSL.rosetta new file mode 100644 index 0000000..6b09c62 --- /dev/null +++ b/resources/Rosetta/Contracts/contractDSL.rosetta @@ -0,0 +1,420 @@ +namespace contractDSL : <"Generic product concepts: quantity, price, economic terms and payout, that are built using template features."> +version "${project.version}" + +import imports.* + + +type Obs: + constant number (0..1) + exchangeRate ExchangeRate (0..1) + condition: one-of + +type ExchangeRate: + from UnitType (1..1) + to UnitType(1..1) + +func Konst: + inputs: + constant number (1..1) + output: + observable Obs (1..1) + assign-output observable -> constant: + constant + +func ExchangeRateFunc: + inputs: + from UnitType (1..1) + to UnitType (1..1) + output: + observable Obs (1..1) + assign-output observable -> exchangeRate -> from: + from + assign-output observable -> exchangeRate -> to: + to + +type Contract: + zero Contract_Zero (0..1) + expired Contract_Expired (0..1) + one Contract_One (0..1) + orContract Contract_Or (0..1) + both Contract_Both (0..1) + give Contract_Give (0..1) + thereafter Contract_Thereafter (0..1) + truncate Contract_Truncate (0..1) + scale Contract_Scale (0..1) + get Contract_Get (0..1) + anytime Contract_Anytime (0..1) + condition: one-of + +type Contract_Zero: + unit int (1..1) +type Contract_Expired: + unit int (1..1) +type Contract_One: + currency UnitType (1..1) +type Contract_Or: + left Contract (1..1) + right Contract (1..1) +type Contract_Both: + left Contract (1..1) + right Contract (1..1) +type Contract_Thereafter: + earlier Contract (1..1) + later Contract (1..1) +type Contract_Give: + contract Contract (1..1) +type Contract_Truncate: + expiryDate string (1..1) + contract Contract (1..1) +type Contract_Scale: + observable Obs (1..1) + contract Contract (1..1) +type Contract_Get: + contract Contract (1..1) +type Contract_Anytime: + contract Contract (1..1) + +func MkZero: + output: + contract Contract (1..1) + assign-output contract -> zero -> unit: + 1 // create the zero contract dummy value + +func MkExpired: + output: + contract Contract (1..1) + assign-output contract -> expired -> unit: + 1 // create the expired contract dummy value + +func MkOne: + inputs: + currency UnitType (1..1) + output: + contract Contract (1..1) + assign-output contract -> one -> currency: + currency + +func MkOr: + inputs: + left Contract (1..1) + right Contract (1..1) + output: + contract Contract (1..1) + assign-output contract -> orContract -> left: + left + assign-output contract -> orContract -> right: + right + +func MkBoth: + inputs: + left Contract (1..1) + right Contract (1..1) + output: + contract Contract (1..1) + assign-output contract -> both -> left: + left + assign-output contract -> both -> right: + right + +func MkThereafter: + inputs: + earlier Contract (1..1) + later Contract (1..1) + output: + contract Contract (1..1) + assign-output contract -> thereafter -> earlier: + earlier + assign-output contract -> thereafter -> later: + later + +func MkGive: + inputs: + subContract Contract (1..1) + output: + contract Contract (1..1) + assign-output contract -> give -> contract: + subContract + +func MkTruncate: + inputs: + truncateTo string (1..1) + subContract Contract (1..1) + output: + contract Contract (1..1) + assign-output contract -> truncate -> contract: + subContract + assign-output contract -> truncate -> expiryDate: + truncateTo + +func MkScale: + inputs: + observable Obs (1..1) + subContract Contract (1..1) + output: + contract Contract (1..1) + assign-output contract -> scale -> contract: + subContract + assign-output contract -> scale -> observable: + observable + +func MkGet: + inputs: + subContract Contract (1..1) + output: + contract Contract (1..1) + assign-output contract -> get -> contract: + subContract + +func MkAnytime: + inputs: + subContract Contract (1..1) + output: + contract Contract (1..1) + assign-output contract -> anytime -> contract: + subContract + +func MkAnd: + inputs: + left Contract (1..1) + right Contract (1..1) + output: + contract Contract (1..1) + assign-output contract: + MkThereafter(MkBoth(left,right),MkOr(left,right)) + +func ZeroCouponBond: + inputs: + maturesOn string (1..1) <"Date the bond matures on"> + amount number (1..1) <"Amount of the bond is worth"> + currency UnitType (1..1) <"Unit the bond is denoted in"> + output: + contract Contract (1..1) + assign-output contract: + MkGet (MkTruncate(maturesOn, MkScale(Konst(amount),MkOne(currency)))) + +func Perhaps: + inputs: + endDate string (1..1) + contract Contract (1..1) + output: + perhaps Contract (1..1) + assign-output perhaps: + MkTruncate(endDate,MkOr(contract,MkZero())) + +func EuropeanOption: + inputs: + endDate string (1..1) + contract Contract (1..1) + output: + option Contract (1..1) + + assign-output option: + MkGet(Perhaps(endDate,contract)) + +func AmericanOption: + inputs: + startDate string (1..1) + endDate string (1..1) + contract Contract (1..1) + output: + option Contract (1..1) + alias opt: MkAnytime(Perhaps(endDate,contract)) + assign-output option: + MkThereafter(MkGet (MkTruncate(startDate,opt)),opt) + +/* Swap the parties of a contract based on the party of a payout. Assuming we are Party1 */ +func PayoutParty1: + inputs: + payout PayoutBase (1..1) + contract Contract (1..1) + output: + contractOut Contract (1..1) + assign-output contractOut: + if (payout -> payerReceiver -> payer = CounterpartyRoleEnum -> Party1) + or (payout -> payerReceiver -> receiver = CounterpartyRoleEnum -> Party2) then + MkGive(contract) + else + contract + +/* +func ResolveQuantity: + inputs: + address Address (1..1) + tradeLot TradeLot (1..*) + output: + quantity ResolvedQuantity (1..1) + + alias resolvedValue: + tradeLot + map [item -> priceQuantity] + flatten + map [item -> quantity] + flatten + filter [item -> meta -> location only-element = address] + only-element + -> value + + assign-output quantity -> multiplier: + resolvedValue -> amount + + assign-output quantity -> unitOfAmount: + resolvedValue -> unitOfAmount + +func CashflowPayoutToContract: + inputs: + cashflow Cashflow (1..1) + tradeLot TradeLot (1..*) + settlementTerms SettlementTerms (0..1) + output: + zcb Contract (1..1) + + alias quantity: + ResolveQuantity(cashflow -> payoutQuantity -> resolvedQuantity -> address, tradeLot) + + alias fixingDate: + if settlementTerms -> cashSettlementTerms exists then + settlementTerms + -> cashSettlementTerms + only-element + -> valuationDate + -> fxFixingDate + -> fxFixingDate + -> adjustableDate + -> unadjustedDate + else + empty + + assign-output zcb: + PayoutParty1 + ( cashflow + , MkScale + ( Konst (quantity -> multiplier) + , if fixingDate exists then + MkGet + ( MkTruncate + ( fixingDate + , MkScale + ( ExchangeRate(quantity -> unitOfAmount -> currency, settlementTerms -> settlementCurrency) + , MkGet + ( MkTruncate + ( settlementTerms -> settlementDate -> valueDate + , MkOne (settlementTerms -> settlementCurrency) + ) + ) + ) + ) + ) + else + MkOne(quantity -> unitOfAmount -> currency)) + ) + + +func ForeignExchangeToContract: + inputs: + foreignExchange ForeignExchange (1..1) + tradeLot TradeLot (0..*) + settlementTerms SettlementTerms (0..1) + output: + contract Contract (1..1) + + assign-output contract: + MkBoth + ( CashflowPayoutToContract(foreignExchange -> exchangedCurrency1, tradeLot, settlementTerms) + , CashflowPayoutToContract(foreignExchange -> exchangedCurrency2, tradeLot, settlementTerms) + ) + +func ForwardPayoutToContract: + inputs: + fx ForwardPayout (1..1) + tradeLot TradeLot (0..*) + output: + contract Contract (1..1) + assign-output contract: + MkGet + ( MkTruncate + ( fx -> settlementTerms -> settlementDate -> valueDate + , ForeignExchangeToContract + ( fx -> underlier -> foreignExchange + , tradeLot + , fx -> settlementTerms + ) + ) + ) + +func OptionPayoutToEuropean: + inputs: + optionPayout OptionPayout (1..1) + tradeLot TradeLot (0..*) + output: + contract Contract (1..1) + + alias europeanExerciseTerms: + optionPayout -> exerciseTerms -> optionStyle -> europeanExercise + alias adjustedExpirationDate: + europeanExerciseTerms -> expirationDate only-element -> adjustableDate -> adjustedDate -> value + + condition IsEuropean: + europeanExerciseTerms exists + condition HasAdjustedDate: + adjustedExpirationDate exists + assign-output contract: + EuropeanOption + ( adjustedExpirationDate only-element + // The cardinality on europeanExerciseTerms -> expirationDate is not (1..1)! + , ProductToContract(optionPayout -> underlier, tradeLot, optionPayout -> settlementTerms) + , optionPayout -> settlementTerms + ) + +func ContractualProductToContract: + inputs: + contractualProduct ContractualProduct (1..*) + tradeLot TradeLot (0..*) + settlementTerms SettlementTerms (0..*) + output: + contract Contract (1..1) + alias payout: contractualProduct -> economicTerms -> payout + assign-output contract: + if payout -> optionPayout exists then + payout + -> optionPayout + map [OptionPayoutToEuropean(item,tradeLot)] + reduce-left c1 c2 [MkBoth(c1,c2)] + + else if payout -> forwardPayout exists then + payout + -> forwardPayout + map [ForwardPayoutToContract(item,tradeLot)] + reduce-left c1 c2 [MkBoth(c1,c2)] + + else /* assume cashflow otherwise */ +/* payout + -> cashflow + map [CashflowPayoutToContract(item,tradeLot,settlementTerms)] + reduce-left c1 c2 [MkBoth(c1,c2)] + +func ProductToContract: + inputs: + product Product (1..*) + tradeLot TradeLot (0..*) + settlementTerms SettlementTerms (0..*) + output: + contract Contract (1..1) + + assign-output contract: + if product -> contractualProduct exists then + ContractualProductToContract(product -> contractualProduct, tradeLot, settlementTerms) + else if product -> foreignExchange exists then + ForeignExchangeToContract(product -> foreignExchange, tradeLot, settlementTerms) + else + MkZero() + +func Main: + inputs: + meta MetaData (1..1) + trade Trade (1..1) + output: + contract Contract (1..1) + + assign-output contract: + ProductToContract(trade -> tradableProduct -> product, trade -> tradableProduct -> tradeLot, empty) +*/ \ No newline at end of file diff --git a/resources/Rosetta/Contracts/imports backup.rosetta b/resources/Rosetta/Contracts/imports backup.rosetta new file mode 100644 index 0000000..d22ef4b --- /dev/null +++ b/resources/Rosetta/Contracts/imports backup.rosetta @@ -0,0 +1,875 @@ +namespace imports : <"Something"> +version "${version.ok}" + +enum CounterpartyRoleEnum: <"Defines the enumerated values to specify the two counterparties to the transaction."> + Party1 + Party2 + +enum CapacityUnitEnum: <"Provides enumerated values for capacity units, generally used in the context of defining quantities for commodities."> + ALW <"Denotes Allowances as standard unit."> + BBL <"Denotes a Barrel as a standard unit."> + BCF <"Denotes Billion Cubic Feet as a standard unit."> + BDFT <"Denotes Board Feet as a standard unit."> + BSH <"Denotes a Bushel as a standard unit of weight (48 lb or 21.7725 kg)."> + BTU <"Denotes British Thermal Units as a standard unit."> + CBM <"Denotes Cubic Meters as a standard unit."> + CER <"Denotes Certified Emissions Reduction as a standard unit."> + CRT <"Denotes Climate Reserve Tonnes as a standard unit."> + DAG <"Denotes 10 grams as a standard unit used in precious metals contracts (e.g MCX)."> + DAY <"Denotes a single day as a standard unit used in time charter trades."> + DMTU <"Denotes Dry Metric Ton (Tonne) Units - Consists of a metric ton of mass excluding moisture."> + DTH <"Denotes a Dekatherm as a standard unit."> + ENVCRD <"Denotes Environmental Credit as a standard unit."> + ENVOFST <"Denotes Environmental Offset as a standard unit."> + FEU <"Denotes a 40 ft. Equivalent Unit container as a standard unit."> + G <"Denotes a Gram as a standard unit."> + GBCWT <"Denotes a GB Hundredweight unit as standard unit."> + GBGAL <"Denotes a GB Gallon unit as standard unit."> + GBT <"Denotes a GB Ton as a standard unit."> + GJ <"Denotes a Gigajoule as a standard unit."> + GW <"Denotes a Gigawatt as a standard unit."> + GWH <"Denotes a Gigawatt-hour as a standard unit."> + HL <"Denotes a Hectolitre as a standard unit."> + INGOT <"Denotes an Ingot as a standard unit."> + KG <"Denotes a Kilogram as a standard unit."> + KL <"Denotes a Kilolitre as a standard unit."> + KW <"Denotes a Kilowatt as a standard unit."> + KWDC <"Denotes a Kilowatt Day Capacity as a standard unit."> + KWH <"Denotes a Kilowatt-hour as a standard unit."> + KWHC <"Denotes a Kilowatt Hours Capacity as a standard unit."> + KWMC <"Denotes a Kilowatt Month Capacity as a standard unit."> + KWMINC <"Denotes a Kilowatt Minute Capacity as a standard unit."> + KWYC <"Denotes a Kilowatt Year Capacity as a standard unit."> + L <"Denotes a Litre as a standard unit."> + LB <"Denotes a Pound as a standard unit."> + MB <"Denotes a Thousand Barrels as a standard unit."> + MBF <"Denotes a Thousand board feet, which are used in contracts on forestry underlyers as a standard unit."> + MJ <"Denotes a Megajoule as a standard unit."> + MMBF <"Denotes a Million board feet, which are used in contracts on forestry underlyers as a standard unit."> + MMBBL <"Denotes a Million Barrels as a standard unit."> + MMBTU <"Denotes a Million British Thermal Units as a standard unit."> + MSF <"Denotes a Thousand square feet as a standard unit."> + MT <"Denotes a Metric Ton as a standard unit."> + MW <"Denotes a Megawatt as a standard unit."> + MWDC <"Denotes a Megawatt Day Capacity as a standard unit."> + MWH <"Denotes a Megawatt-hour as a standard unit."> + MWHC <"Denotes a Megawatt Hours Capacity as a standard unit."> + MWMC <"Denotes a Megawatt Month Capacity as a standard unit."> + MWMINC <"Denotes a Megawatt Minute Capacity as a standard unit."> + MWYC <"Denotes a Megawatt Year Capacity as a standard unit."> + OZT <"Denotes a Troy Ounce as a standard unit."> + TEU <"Denotes a 20 ft. Equivalent Unit container as a standard unit."> + THERM <"Denotes a Thermal Unit as a standard unit."> + USCWT <"Denotes US Hundredweight unit as a standard unit."> + USGAL <"Denotes a US Gallon unit as a standard unit."> + UST <"Denotes a US Ton as a standard unit."> + +enum WeatherUnitEnum: <"Provides enumerated values for weather units, generally used in the context of defining quantities for commodities."> + CDD <"Denotes Cooling Degree Days as a standard unit."> + CPD <"Denotes Critical Precipitation Day as a standard unit."> + HDD <"Heating Degree Day as a standard unit."> + +enum FinancialUnitEnum: <"Provides enumerated values for financial units, generally used in the context of defining quantities for securities."> + Contract <"Denotes financial contracts, such as listed futures and options."> + ContractualProduct <"Denotes a Contractual Product as defined in the CDM. This unit type would be used when the price applies to the whole product, for example, in the case of a premium expressed as a cash amount."> + IndexUnit <"Denotes a price expressed in index points, e.g. for a stock index."> + LogNormalVolatility <"Denotes a log normal volatility, expressed in %/month, where the percentage is represented as a decimal. For example, 0.15 means a log-normal volatility of 15% per month."> + Share <"Denotes the number of units of financial stock shares."> + ValuePerDay <"Denotes a value (expressed in currency units) for a one day change in a valuation date, which is typically used for expressing sensitivity to the passage of time, also known as theta risk, or carry, or other names."> + ValuePerPercent <"Denotes a value (expressed in currency units) per percent change in the underlying rate which is typically used for expressing sensitivity to volatility changes, also known as vega risk."> + Weight <"Denotes a quantity (expressed as a decimal value) represented the weight of a component in a basket."> + +enum BusinessDayConventionEnum: <"The enumerated values to specify the convention for adjusting any relevant date if it would otherwise fall on a day that is not a valid business day."> + FOLLOWING <"The non-business date will be adjusted to the first following day that is a business day"> + FRN <"Per 2000 ISDA Definitions, Section 4.11. FRN Convention; Eurodollar Convention. FRN is included here as a type of business day convention although it does not strictly fall within ISDA's definition of a Business Day Convention and does not conform to the simple definition given above."> + MODFOLLOWING <"The non-business date will be adjusted to the first following day that is a business day unless that day falls in the next calendar month, in which case that date will be the first preceding day that is a business day."> + PRECEDING <"The non-business day will be adjusted to the first preceding day that is a business day."> + MODPRECEDING <"The non-business date will be adjusted to the first preceding day that is a business day unless that day falls in the previous calendar month, in which case that date will be the first following day that us a business day."> + NEAREST <"The non-business date will be adjusted to the nearest day that is a business day - i.e. if the non-business day falls on any day other than a Sunday or a Monday, it will be the first preceding day that is a business day, and will be the first following business day if it falls on a Sunday or a Monday."> + NONE <"The date will not be adjusted if it falls on a day that is not a business day."> + NotApplicable <"The date adjustments conventions are defined elsewhere, so it is not required to specify them here."> + +enum PeriodExtendedEnum /*extends PeriodEnum*/: <"The enumerated values to specify a time period containing the additional value of Term."> + D <"Day"> + W <"Week"> + M <"Month"> + Y <"Year"> + T <"Term. The period commencing on the effective date and ending on the termination date. The T period always appears in association with periodMultiplier = 1, and the notation is intended for use in contexts where the interval thus qualified (e.g. accrual period, payment period, reset period, ...) spans the entire term of the trade."> + C <"CalculationPeriod - the period corresponds to the calculation period For example, used in the Commodity Markets to indicate that a reference contract is the one that corresponds to the period of the calculation period."> + +enum PeriodEnum: <"The enumerated values to specify the period, e.g. day, week."> + D <"Day"> + W <"Week"> + M <"Month"> + Y <"Year"> + +enum InformationProviderEnum: <"The enumerated values to specify the list of information providers."> + AssocBanksSingapore <"The Association of Banks in Singapore."> + BankOfCanada <"The central bank of Canada."> + BankOfEngland <"The Bank Of England."> + BankOfJapan <"The central bank of Japan."> + Bloomberg <"Bloomberg LP."> + EuroCentralBank <"The European Central Bank."> + FederalReserve <"The Federal Reserve, the central bank of the United States."> + FHLBSF <"The Federal Home Loan Bank of San Francisco, or its successor."> + ICESWAP <"ICESWAP Rate Administrator which means ICE Benchmark Administration, or any successor thereto, as administrator of the ICE Swap Rate."> + ISDA <"International Swaps and Derivatives Association, Inc."> + Refinitiv <"Refinitiv, formerly Thomson Reuters Financial & Risk."> + ReserveBankAustralia <"The Reserve Bank of Australia."> + ReserveBankNewZealand <"The Reserve Bank of New Zealand."> + Reuters <"Reuters Group Plc."> + SAFEX <"South African Futures Exchange, or its successor."> + Telerate <"Telerate, Inc."> + TOKYOSWAP <"The Tokyo Swap Reference Rate (or TSR) Administrator, which means Refinitiv Asia Pacific Limited, or any successor thereto, as administrator of the TSR."> + +enum BusinessCenterEnum: <"The enumerated values to specify the business centers."> + AEAD <"Abu Dhabi, United Arab Emirates"> + AEDU <"Dubai, United Arab Emirates"> + AMYE <"Yerevan, Armenia"> + AOLU <"Luanda, Angola"> + ARBA <"Buenos Aires, Argentina"> + ATVI <"Vienna, Austria"> + AUAD <"Adelaide, Australia"> + AUBR <"Brisbane, Australia"> + AUCA <"Canberra, Australia"> + AUDA <"Darwin, Australia"> + AUME <"Melbourne, Australia"> + AUPE <"Perth, Australia"> + AUSY <"Sydney, Australia"> + BBBR <"Bridgetown, Barbados"> + BDDH <"Dhaka, Bangladesh"> + BEBR <"Brussels, Belgium"> + BGSO <"Sofia, Bulgaria"> + BHMA <"Manama, Bahrain"> + BMHA <"Hamilton, Bermuda"> + BNBS <"Bandar Seri Begawan, Brunei"> + BOLP <"La Paz, Bolivia"> + BRBD <"Brazil Business Day. This means a business day in any of Sao Paulo, Rio de Janeiro or Brasilia not otherwise declared as a financial market holiday by the Bolsa de Mercadorias & Futuros (BM&F)"> + BRBR <"Brasilia, Brazil"> + BRRJ <"Rio de Janeiro, Brazil"> + BRSP <"Sao Paulo, Brazil"> + BSNA <"Nassau, Bahamas"> + BWGA <"Gaborone, Botswana"> + BYMI <"Minsk, Belarus"> + CACL <"Calgary, Canada"> + CAMO <"Montreal, Canada"> + CAOT <"Ottawa, Canada"> + CATO <"Toronto, Canada"> + CAVA <"Vancouver, Canada"> + CAWI <"Winnipeg, Canada"> + CHBA <"Basel, Switzerland"> + CHGE <"Geneva, Switzerland"> + CHZU <"Zurich, Switzerland"> + CIAB <"Abidjan, Cote d\'Ivoire"> + CLSA <"Santiago, Chile"> + CNBE <"Beijing, China"> + CNSH <"Shanghai, China"> + COBO <"Bogota, Colombia"> + CRSJ <"San Jose, Costa Rica"> + CYNI <"Nicosia, Cyprus"> + CZPR <"Prague, Czech Republic"> + DECO <"Cologne, Germany"> + DEDU <"Dusseldorf, Germany"> + DEFR <"Frankfurt, Germany"> + DEHH <"Hamburg, Germany"> + DELE <"Leipzig, Germany"> + DEMA <"Mainz, Germany"> + DEMU <"Munich, Germany"> + DEST <"Stuttgart, Germany"> + DKCO <"Copenhagen, Denmark"> + DOSD <"Santo Domingo, Dominican Republic"> + DZAL <"Algiers, Algeria"> + EETA <"Tallinn, Estonia"> + EGCA <"Cairo, Egypt"> + ESAS <"ESAS Settlement Day (as defined in 2006 ISDA Definitions Section 7.1 and Supplement Number 15 to the 2000 ISDA Definitions)"> + ESBA <"Barcelona, Spain"> + ESMA <"Madrid, Spain"> + ETAA <"Addis Ababa, Ethiopia"> + EUTA <"TARGET (euro 'Business Center')"> + FIHE <"Helsinki, Finland"> + FRPA <"Paris, France"> + GBED <"Edinburgh, Scotland"> + GBLO <"London, United Kingdom"> + GETB <"Tbilisi, Georgia"> + GGSP <"Saint Peter Port, Guernsey"> + GHAC <"Accra, Ghana"> + GRAT <"Athens, Greece"> + HKHK <"Hong Kong, Hong Kong"> + HNTE <"Tegucigalpa, Honduras"> + HRZA <"Zagreb, Republic of Croatia"> + HUBU <"Budapest, Hungary"> + IDJA <"Jakarta, Indonesia"> + IEDU <"Dublin, Ireland"> + ILJE <"Jerusalem, Israel"> + ILTA <"Tel Aviv, Israel"> + INBA <"Bangalore, India"> + INCH <"Chennai, India"> + INHY <"Hyderabad, India"> + INKO <"Kolkata, India"> + INMU <"Mumbai, India"> + INND <"New Delhi, India"> + IRTE <"Tehran, Iran"> + ISRE <"Reykjavik, Iceland"> + ITMI <"Milan, Italy"> + ITRO <"Rome, Italy"> + ITTU <"Turin, Italy"> + JESH <"St. Helier, Channel Islands, Jersey"> + JMKI <"Kingston, Jamaica"> + JOAM <"Amman, Jordan"> + JPTO <"Tokyo, Japan"> + KENA <"Nairobi, Kenya"> + KRSE <"Seoul, Republic of Korea"> + KWKC <"Kuwait City, Kuwait"> + KYGE <"George Town, Cayman Islands"> + KZAL <"Almaty, Kazakhstan"> + LBBE <"Beirut, Lebanon"> + LKCO <"Colombo, Sri Lanka"> + LULU <"Luxembourg, Luxembourg"> + LVRI <"Riga, Latvia"> + MACA <"Casablanca, Morocco"> + MARA <"Rabat, Morocco"> + MCMO <"Monaco, Monaco"> + MOMA <"Macau, Macao"> + MTVA <"Valletta, Malta"> + MUPL <"Port Louis, Mauritius"> + MVMA <"Male, Maldives"> + MWLI <"Lilongwe, Malawi"> + MXMC <"Mexico City, Mexico"> + MYKL <"Kuala Lumpur, Malaysia"> + MYLA <"Labuan, Malaysia"> + NAWI <"Windhoek, Namibia"> + NGAB <"Abuja, Nigeria"> + NGLA <"Lagos, Nigeria"> + NLAM <"Amsterdam, Netherlands"> + NLRO <"Rotterdam, Netherlands"> + NOOS <"Oslo, Norway"> + NPKA <"Kathmandu, Nepal"> + NYFD <"New York Fed Business Day (as defined in 2006 ISDA Definitions Section 1.9 and 2000 ISDA Definitions Section 1.9)"> + NYSE <"New York Stock Exchange Business Day (as defined in 2006 ISDA Definitions Section 1.10 and 2000 ISDA Definitions Section 1.10)"> + NZAU <"Auckland, New Zealand"> + NZWE <"Wellington, New Zealand"> + OMMU <"Muscat, Oman"> + PAPC <"Panama City, Panama"> + PELI <"Lima, Peru"> + PHMA <"Manila, Philippines"> + PHMK <"Makati, Philippines"> + PKKA <"Karachi, Pakistan"> + PLWA <"Warsaw, Poland"> + PRSJ <"San Juan, Puerto Rico"> + PTLI <"Lisbon, Portugal"> + QADO <"Doha, Qatar"> + ROBU <"Bucarest, Romania"> + RSBE <"Belgrade, Serbia"> + RUMO <"Moscow, Russian Federation"> + SAAB <"Abha, Saudi Arabia"> + SAJE <"Jeddah, Saudi Arabia"> + SARI <"Riyadh, Saudi Arabia"> + SEST <"Stockholm, Sweden"> + SGSI <"Singapore, Singapore"> + SILJ <"Ljubljana, Slovenia"> + SKBR <"Bratislava, Slovakia"> + SNDA <"Dakar, Senegal"> + SVSS <"San Salvador, El Salvador"> + THBA <"Bangkok, Thailand"> + TNTU <"Tunis, Tunisia"> + TRAN <"Ankara, Turkey"> + TRIS <"Istanbul, Turkey"> + TTPS <"Port of Spain, Trinidad and Tobago"> + TWTA <"Taipei, Taiwan"> + TZDA <"Dar es Salaam, Tanzania"> + TZDO <"Dodoma, Tanzania"> + UAKI <"Kiev, Ukraine"> + UGKA <"Kampala, Uganda"> + USBO <"Boston, Massachusetts, United States"> + USCH <"Chicago, United States"> + USCR <"Charlotte, North Carolina, United States"> + USDC <"Washington, District of Columbia, United States"> + USDN <"Denver, United States"> + USDT <"Detroit, Michigan, United States"> + USGS <"U.S. Government Securities Business Day (as defined in 2006 ISDA Definitions Section 1.11 and 2000 ISDA Definitions Section 1.11)"> + USHL <"Honolulu, Hawaii, United States"> + USHO <"Houston, United States"> + USLA <"Los Angeles, United States"> + USMB <"Mobile, Alabama, United States"> + USMN <"Minneapolis, United States"> + USNY <"New York, United States"> + USPO <"Portland, Oregon, United States"> + USSA <"Sacramento, California, United States"> + USSE <"Seattle, United States"> + USWT <"Wichita, United States"> + UYMO <"Montevideo, Uruguay"> + VECA <"Caracas, Venezuela"> + VGRT <"Road Town, Virgin Islands (British)"> + VNHA <"Hanoi, Vietnam"> + VNHC <"Ho Chi Minh (formerly Saigon), Vietnam"> + YEAD <"Aden, Yemen"> + ZAJO <"Johannesburg, South Africa"> + ZMLU <"Lusaka, Zambia"> + ZWHA <"Harare, Zimbabwe"> + + // CommodityCenters + ADSM <"Abu Dhabi Securities Exchange https://www.adx.ae/"> + AGRUSFMB <"Argus Media Fertilizer Reports. http://www.argusmedia.com/Fertilizer"> + APPI <"Per 2005 ISDA Commodity Definitions, Section 7.2 Certain Definitions Relating To Commodity Reference Prices"> + ARGUSCRUDE <"Per 2005 ISDA Commodity Definitions, Section 7.2 Certain Definitions Relating To Commodity Reference Prices"> + ARGUSEUROPEANGAS <"Per 2005 ISDA Commodity Definitions, Section 7.2 Certain Definitions Relating To Commodity Reference Prices"> + ARGUSEUROPEANPRODUCTS <"Per 2005 ISDA Commodity Definitions, Section 7.2 Certain Definitions Relating To Commodity Reference Prices"> + ARGUSINTERNATIONALLPG <"Per 2005 ISDA Commodity Definitions, Section 7.2 Certain Definitions Relating To Commodity Reference Prices"> + ARGUSMCCLOSKEYSCOALREPORT <"Per 2005 ISDA Commodity Definitions, Section 7.2 Certain Definitions Relating To Commodity Reference Prices."> + ARGUSUSPRODUCTS <"The Argus US Products report. http://www.argusmedia.com/Petroleum/Petroleum-Products/Argus-US-Products"> + ASX <"Australian Securities Exchange http://www.asx.com.au/"> + AWB <"Australian Wheat Board. www.awb.com.au"> + AWEX <"Australian Wool Exchange. http://www.awex.com.au/home.html"> + BALTICEXCHANGE <"Per 2005 ISDA Commodity Definitions, Section 7.2 Certain Definitions Relating To Commodity Reference Prices."> + BANKNEGARAMALAYSIAPOLICYCOMMITTEE <"The business calendar of the Bank Negara Malaysia Policy Committee."> + BELPEX <"The business calendar for the Belpex power exchange (www.belpex.be)."> + BLUENEXT <"BlueNext Power Market."> + BMandF <"Per 2005 ISDA Commodity Definitions, Section 7.2 Certain Definitions Relating To Commodity Reference Prices."> + BURSAMALAYSIASETTLEMENT <"The settlement business calendar for Bursa Malaysia."> + BURSAMALAYSIATRADING <"The trading business calendar for Bursa Malaysia."> + CANADIANGASPRICEREPORTER <"Per 2005 ISDA Commodity Definitions, Section 7.2 Certain Definitions Relating To Commodity Reference Prices"> + CBOTSOFT <"Per 2005 ISDA Commodity Definitions, Section 7.2 Certain Definitions Relating To Commodity Reference Prices."> + CMAIAROMATICSMARKETREPORT <"Per 2005 ISDA Commodity Definitions, Section 7.2 Certain Definitions Relating To Commodity Reference Prices."> + CMAIGLOBALPLASTICSANDPOLYMERSMARKETREPORT <"CMAI Global Plastics and Polymers Market Report. http://www.ihs.com/products/chemical/index.aspx?pu=1&rd=cmai"> + CMAIMETHANOLMARKETREPORT <"Per 2005 ISDA Commodity Definitions, Section 7.2 Certain Definitions Relating To Commodity Reference Prices."> + CMAIMONOMERSMARKETREPORT <"CMAI Monomers Market Report. http://www.ihs.com/products/chemical/index.aspx?pu=1&rd=cmai"> + CMEDAIRY <"Per 2005 ISDA Commodity Definitions, Section 7.2 Certain Definitions Relating To Commodity Reference Prices."> + CMENONDAIRYSOFT <"Per 2005 ISDA Commodity Definitions, Section 7.2 Certain Definitions Relating To Commodity Reference Prices."> + COMEX <"Per 2005 ISDA Commodity Definitions, Section 7.2 Certain Definitions Relating To Commodity Reference Prices."> + CRU <"Per 2005 ISDA Commodity Definitions, Section 7.2 Certain Definitions Relating To Commodity Reference Prices."> + CRULONG <"Per 2005 ISDA Commodity Definitions, Section 7.2 Certain Definitions Relating To Commodity Reference Prices."> + DEPARTMENTOFENERGY <"The business calendar for statistical publications by the by the United States Department of Energy (DOE)."> + DEWITTBENZENEDERIVATIVES <"Per 2005 ISDA Commodity Definitions, Section 7.2 Certain Definitions Relating To Commodity Reference Prices."> + DME <" Dubai Mercantile Exchange. http://www.dubaimerc.com/"> + DOWJONES <"Dow Jones US Calendar. http://www.dowjones.com/"> + DOWJONESENERGYSERVICE <"Per 2005 ISDA Commodity Definitions, Section 7.2 Certain Definitions Relating To Commodity Reference Prices."> + DowJonesPower <"Per 2005 ISDA Commodity Definitions, Section 7.2 Certain Definitions Relating To Commodity Reference Prices."> + EEXCOAL <"European Energy Exchange-Coal"> + EEXEMISSIONS <"European Energy Exchange-Emissions Rights"> + EEXGAS <"European Energy Exchange-Gas"> + EEXPOWER <"European Energy Exchange-Power"> + EURONEXMATIF <"TBD."> + FERTECON <"FERTECON Limited Information Services. http://fertecon.com/current_information_services.asp"> + FERTILIZERWEEK <"Fertilizer Week. http://www.crugroup.com/market-analysis/products/fertilizerweek"> + GASDAILY <"Per 2005 ISDA Commodity Definitions, Section 7.2 Certain Definitions Relating To Commodity Reference Prices."> + GASDAILYPRICEGUIDE <"Per 2005 ISDA Commodity Definitions, Section 7.2 Certain Definitions Relating To Commodity Reference Prices."> + GLOBALCOAL <"Per 2005 ISDA Commodity Definitions, Section 7.2 Certain Definitions Relating To Commodity Reference Prices."> + HERENREPORT <"Per 2005 ISDA Commodity Definitions, Section 7.2 Certain Definitions Relating To Commodity Reference Prices."> + ICE10XDAILY <"Per 2005 ISDA Commodity Definitions, Section 7.2 Certain Definitions Relating To Commodity Reference Prices."> + ICE10XMONTHLY <"Per 2005 ISDA Commodity Definitions, Section 7.2 Certain Definitions Relating To Commodity Reference Prices."> + ICECANADA <"Per 2005 ISDA Commodity Definitions, Section 7.2 Certain Definitions Relating To Commodity Reference Prices."> + ICEECX <"European Climate Exchange."> + ICEGAS <"Per 2005 ISDA Commodity Definitions, Section 7.2 Certain Definitions Relating To Commodity Reference Prices."> + ICEOIL <"The business calendar oil and refined product contracts on ICE Futures Europe."> + ICEUSAGRICULTURAL <"Per 2005 ISDA Commodity Definitions, Section 7.2 Certain Definitions Relating To Commodity Reference Prices."> + ICISPRICINGBENZENEEUROPE <"The business calendar for publication of ICIS Benzene (Europe) data."> + ICISPRICINGETHYLENEEUROPE <"The business calendar for publication of ICIS Ethylene (Europe) data."> + ICISPRICINGPOLYPROPYLENEEUROPE <"The business calendar for publication of ICIS Polyproylene (Europe) data."> + INSIDEFERC <"Per 2005 ISDA Commodity Definitions, Section 7.2 Certain Definitions Relating To Commodity Reference Prices."> + JAPANMOFTSRR <"Per 2005 ISDA Commodity Definitions, Section 7.2 Certain Definitions Relating To Commodity Reference Prices."> + KCBOT <"Per 2005 ISDA Commodity Definitions, Section 7.2 Certain Definitions Relating To Commodity Reference Prices."> + KUALALUMPURBANK <"The banking business calendar in Kuala Lumpur."> + LABUANBANK <"The business calendar for the Labuan Bank (Malaysia)."> + LIFFELONDONSOFT <"Per 2005 ISDA Commodity Definitions, Section 7.2 Certain Definitions Relating To Commodity Reference Prices."> + LME <"Per 2005 ISDA Commodity Definitions, Section 7.2 Certain Definitions Relating To Commodity Reference Prices."> + LONDONBULLIONMARKET <"Per 2005 ISDA Commodity Definitions, Section 7.2 Certain Definitions Relating To Commodity Reference Prices."> + LONDONBULLIONMARKETGOLDAMONLY <"Per 2005 ISDA Commodity Definitions, Section 7.2 Certain Definitions Relating To Commodity Reference Prices."> + LONDONPLATINUMPALLADIUMMARKET <"The London Platinum and Palladium Market in London on which members quote prices for the buying and selling of Platinum and Palladium."> + MGEX <"Minneapolis Grain Exchange http://www.mgex.com/"> + N2EX <"The business calendar for the N2EX UK power exchange (https://www.n2ex.com/aboutn2ex)."> + NASDAQOMX <"NASDAQ-OMX (Formerly known as Nordpool). http://www.nasdaqomx.com/commodities"> + NATURALGASWEEK <"Per 2005 ISDA Commodity Definitions, Section 7.2 Certain Definitions Relating To Commodity Reference Prices."> + NERC <"Per 2005 ISDA Commodity Definitions, Article XIV."> + NGI <"Per 2005 ISDA Commodity Definitions, Section 7.2 Certain Definitions Relating To Commodity Reference Prices."> + NGX <"Per 2005 ISDA Commodity Definitions, Section 7.2 Certain Definitions Relating To Commodity Reference Prices."> + NUCLEARMARKETREVIEW <"The Nuclear Market Review report as published by Trade tech. http://www.uranium.info/nuclear_market_review.php"> + NYMEXELECTRICITY <"Per 2005 ISDA Commodity Definitions, Section 7.2 Certain Definitions Relating To Commodity Reference Prices."> + NYMEXGAS <"Per 2005 ISDA Commodity Definitions, Section 7.2 Certain Definitions Relating To Commodity Reference Prices."> + NYMEXNATURALGAS <"Per 2005 ISDA Commodity Definitions, Section 7.2 Certain Definitions Relating To Commodity Reference Prices."> + NYMEXOIL <"Per 2005 ISDA Commodity Definitions, Section 7.2 Certain Definitions Relating To Commodity Reference Prices."> + OFFICIALBOARDMARKETS <"Per 2005 ISDA Commodity Definitions, Section 7.2 Certain Definitions Relating To Commodity Reference Prices."> + OPISLPGAS <"Per 2005 ISDA Commodity Definitions, Section 7.2 Certain Definitions Relating To Commodity Reference Prices."> + OPISPROPANE <"Per 2005 ISDA Commodity Definitions, Section 7.2 Certain Definitions Relating To Commodity Reference Prices."> + PAPERPACKAGINGMONITOR <"Per 2005 ISDA Commodity Definitions, Section 7.2 Certain Definitions Relating To Commodity Reference Prices."> + PAPERTRADER <"Per 2005 ISDA Commodity Definitions, Section 7.2 Certain Definitions Relating To Commodity Reference Prices."> + PERTAMINA <"Pertamina-Indonesia. http://www.pertamina.com/"> + PETROCHEMWIRE <"PetroChemWire Publication Calendar. http://www.petrochemwire.com/"> + PIXPULPBENCHMARKINDICES <"Per 2005 ISDA Commodity Definitions, Section 7.2 Certain Definitions Relating To Commodity Reference Prices"> + PLATTSAPAGMARKETSCAN <"Per 2005 ISDA Commodity Definitions, Section 7.2 Certain Definitions Relating To Commodity Reference Prices"> + PLATTSBUNKERWIRE <"Per 2005 ISDA Commodity Definitions, Section 7.2 Certain Definitions Relating To Commodity Reference Prices"> + PLATTSCLEANTANKERWIRE <"Per 2005 ISDA Commodity Definitions, Section 7.2 Certain Definitions Relating To Commodity Reference Prices"> + PLATTSCRUDEOILMARKETWIRE <"Per 2005 ISDA Commodity Definitions, Section 7.2 Certain Definitions Relating To Commodity Reference Prices"> + PLATTSDIRTYTANKERWIRE <"Per 2005 ISDA Commodity Definitions, Section 7.2 Certain Definitions Relating To Commodity Reference Prices"> + PLATTSEUROPEANGAS <"Per 2005 ISDA Commodity Definitions, Section 7.2 Certain Definitions Relating To Commodity Reference Prices"> + PLATTSEUROPEANMARKETSCAN <"Per 2005 ISDA Commodity Definitions, Section 7.2 Certain Definitions Relating To Commodity Reference Prices"> + PLATTSMETALSALERT <"Per 2005 ISDA Commodity Definitions, Section 7.2 Certain Definitions Relating To Commodity Reference Prices"> + PLATTSOILGRAM <"Per 2005 ISDA Commodity Definitions, Section 7.2 Certain Definitions Relating To Commodity Reference Prices"> + PLATTSTSIIRONORE <"The Steel Index Iron Ore Service. http://www.thesteelindex.com/en/iron-ore"> + PLATTSTSISCRAP <"The Steel Index Scrap Reference Prices. http://www.thesteelindex.com/en/scrapprices"> + PLATTSTSISTEEL <"The Steel Index. http://www.thesteelindex.com/en/price-specifications"> + PLATTSUSMARKETSCAN <"Per 2005 ISDA Commodity Definitions, Section 7.2 Certain Definitions Relating To Commodity Reference Prices."> + PULPANDPAPERINTERNATIONAL <"Per 2005 ISDA Commodity Definitions, Section 7.2 Certain Definitions Relating To Commodity Reference Prices."> + PULPANDPAPERWEEK <"Per 2005 ISDA Commodity Definitions, Section 7.2 Certain Definitions Relating To Commodity Reference Prices."> + RIMPRODUCTSINTELLIGENCEDAILY <"Per 2005 ISDA Commodity Definitions, Section 7.2 Certain Definitions Relating To Commodity Reference Prices."> + SAFEXSOFT <"Per 2005 ISDA Commodity Definitions, Section 7.2 Certain Definitions Relating To Commodity Reference Prices."> + SFESOFT <"Per 2005 ISDA Commodity Definitions, Section 7.2 Certain Definitions Relating To Commodity Reference Prices."> + SGX <"Singapore Exchange. www.sgx.com"> + SICOM <"Per 2005 ISDA Commodity Definitions, Section 7.2 Certain Definitions Relating To Commodity Reference Prices."> + SPGSCI <"Standard and Poor's GSCI. http://us.spindices.com/index-family/commodities/sp-gsci"> + STATISTICHESBUNDESAMT <"Per 2005 ISDA Commodity Definitions, Section 7.2 Certain Definitions Relating To Commodity Reference Prices."> + TGE <"Tokyo Grain Exchange. www.tge.or.jp"> + TOCOMOIL <"Per 2005 ISDA Commodity Definitions, Section 7.2 Certain Definitions Relating To Commodity Reference Prices."> + TOCOMPRECIOUS <"Per 2005 ISDA Commodity Definitions, Section 7.2 Certain Definitions Relating To Commodity Reference Prices."> + TOCOMSOFT <"Per 2005 ISDA Commodity Definitions, Section 7.2 Certain Definitions Relating To Commodity Reference Prices."> + UXWEEKLY <"The Ux Consulting Company. http://www.uxc.com/products/uxw_overview.aspx"> + WORLDPULPMONTHLY <"Per 2005 ISDA Commodity Definitions, Section 7.2 Certain Definitions Relating To Commodity Reference Prices."> + +enum DayTypeEnum: <"Lists the enumerated values to specify the day type classification used in counting the number of days between two dates."> + Business <"Applies when calculating the number of days between two dates the count includes only business days."> + Calendar <"Applies when calculating the number of days between two dates the count includes all calendar days."> + CurrencyBusiness <"Applies when calculating the number of days between two dates the count includes only currency business days."> + ExchangeBusiness <"Applies when calculating the number of days between two dates the count includes only stock exchange business days."> + ScheduledTradingDay <"Applies when calculating the number of days between two dates the count includes only scheduled trading days."> + +enum SettlementTypeEnum: <"The enumeration values to specify how the option is to be settled when exercised."> + Cash <"The intrinsic value of the option will be delivered by way of a cash settlement amount determined, (i) by reference to the differential between the strike price and the settlement price; or (ii) in accordance with a bilateral agreement between the parties."> + Physical <"The securities underlying the transaction will be delivered by (i) in the case of a call, the seller to the buyer, or (ii) in the case of a put, the buyer to the seller versus a settlement amount equivalent to the strike price per share."> + Election <"Allow Election of either Cash or Physical settlement."> + CashOrPhysical <"Allow use of either Cash or Physical settlement without prior Election."> + +enum TransferSettlementEnum: <"The enumeration values to specify how the transfer will settle, e.g. DvP."> + DeliveryVersusDelivery <"Simultaneous transfer of two assets, typically securities, as a way to avoid settlement risk."> + DeliveryVersusPayment <"Settlement in which the transfer of the asset and the cash settlement are simultaneous."> + PaymentVersusPayment <"Simultaneous transfer of cashflows."> + NotCentralSettlement <"No central settlement."> + +enum CashSettlementMethodEnum: <"Defines the different cash settlement methods for a product where cash settlement is applicable."> + CashPriceMethod <"An ISDA defined cash settlement method used for the determination of the applicable cash settlement amount. The method is defined in the 2006 ISDA Definitions, Section 18.3. Cash Settlement Methods, paragraph (a)."> + CashPriceAlternateMethod <"An ISDA defined cash settlement method used for the determination of the applicable cash settlement amount. The method is defined in the 2006 ISDA Definitions, Section 18.3. Cash Settlement Methods, paragraph (b)."> + ParYieldCurveAdjustedMethod <"An ISDA defined cash settlement method used for the determination of the applicable cash settlement amount. The method is defined in the 2006 ISDA Definitions, Section 18.3. Cash Settlement Methods, paragraph (c)."> + ZeroCouponYieldAdjustedMethod <"An ISDA defined cash settlement method used for the determination of the applicable cash settlement amount. The method is defined in the 2006 ISDA Definitions, Section 18.3. Cash Settlement Methods, paragraph (d)."> + ParYieldCurveUnadjustedMethod <"An ISDA defined cash settlement method used for the determination of the applicable cash settlement amount. The method is defined in the 2006 ISDA Definitions, Section 18.3. Cash Settlement Methods, paragraph (e)."> + CrossCurrencyMethod <"An ISDA defined cash settlement method used for the determination of the applicable cash settlement amount. The method is defined in the 2006 ISDA Definitions, Section 18.3. Cash Settlement Methods, paragraph (f) (published in Supplement number 23)."> + CollateralizedCashPriceMethod <"An ISDA defined cash settlement method (yield curve) used for the determination of the applicable cash settlement amount. The method is defined in the 2006 ISDA Definitions, Section 18.3. Cash Settlement Methods, paragraph (g) (published in Supplement number 28). The method is defined in the 2021 ISDA Definitions, section 18.2.6."> + MidMarketIndicativeQuotations <"An ISDA defined cash settlement method used for the determination of the applicable cash settlement amount. The method is defined in the 2021 ISDA Definitions, Section 18.2.1."> + MidMarketIndicativeQuotationsAlternate <"An ISDA defined cash settlement method used for the determination of the applicable cash settlement amount. The method is defined in the 2021 ISDA Definitions, Section 18.2.2."> + MidMarketCalculationAgentDetermination <"An ISDA defined cash settlement method used for the determination of the applicable cash settlement amount. The method is defined in the 2021 ISDA Definitions, Section 18.2.3."> + ReplacementValueFirmQuotations <"An ISDA defined cash settlement method used for the determination of the applicable cash settlement amount. The method is defined in the 2021 ISDA Definitions, Section 18.2.4."> + ReplacementValueCalculationAgentDetermination <"An ISDA defined cash settlement method used for the determination of the applicable cash settlement amount. The method is defined in the 2021 ISDA Definitions, Section 18.2.5"> + +enum ValuationMethodEnum: <"The enumerated values to specify the ISDA defined methodology for determining the final price of the reference obligation for purposes of cash settlement."> + Market + Highest + AverageMarket + AverageHighest + BlendedMarket + BlendedHighest + AverageBlendedMarket + AverageBlendedHighest + +enum RollConventionEnum: <"The enumerated values to specify the period term as part of a periodic schedule, i.e. the calculation period end date within the regular part of the calculation period. The value could be a rule, e.g. IMM Settlement Dates, which is the 3rd Wednesday of the month, or it could be a specific day of the month, such as the first day of the applicable month."> + EOM <"Rolls on month end dates irrespective of the length of the month and the previous roll day."> + FRN <"Roll days are determined according to the FRN Convention or Euro-dollar Convention as described in ISDA 2000 definitions."> + IMM <"IMM Settlement Dates. The third Wednesday of the (delivery) month."> + IMMCAD <"The last trading day/expiration day of the Canadian Derivatives Exchange (Bourse de Montreal Inc) Three-month Canadian Bankers' Acceptance Futures (Ticker Symbol BAX). The second London banking day prior to the third Wednesday of the contract month. If the determined day is a Bourse or bank holiday in Montreal or Toronto, the last trading day shall be the previous bank business day. Per Canadian Derivatives Exchange BAX contract specification."> + IMMAUD <"The last trading day of the Sydney Futures Exchange 90 Day Bank Accepted Bills Futures contract (see http://www.sfe.com.au/content/sfe/trading/con_specs.pdf). One Sydney business day preceding the second Friday of the relevant settlement."> + IMMNZD <"The last trading day of the Sydney Futures Exchange NZ 90 Day Bank Bill Futures contract (see http://www.sfe.com.au/content/sfe/trading/con_specs.pdf). The first Wednesday after the ninth day of the relevant settlement month."> + SFE <"Sydney Futures Exchange 90-Day Bank Accepted Bill Futures Settlement Dates. The second Friday of the (delivery) month"> + NONE <"The roll convention is not required. For example, in the case of a daily calculation frequency."> + TBILL <"13-week and 26-week U.S. Treasury Bill Auction Dates. Each Monday except for U.S. (New York) holidays when it will occur on a Tuesday."> + _1 displayName "1" <"Rolls on the 1st day of the month."> + _2 displayName "2" <"Rolls on the 2nd day of the month."> + _3 displayName "3" <"Rolls on the 3rd day of the month."> + _4 displayName "4" <"Rolls on the 4th day of the month."> + _5 displayName "5" <"Rolls on the 5th day of the month."> + _6 displayName "6" <"Rolls on the 6th day of the month."> + _7 displayName "7" <"Rolls on the 7th day of the month."> + _8 displayName "8" <"Rolls on the 8th day of the month."> + _9 displayName "9" <"Rolls on the 9th day of the month."> + _10 displayName "10" <"Rolls on the 10th day of the month."> + _11 displayName "11" <"Rolls on the 11th day of the month."> + _12 displayName "12" <"Rolls on the 12th day of the month."> + _13 displayName "13" <"Rolls on the 13th day of the month."> + _14 displayName "14" <"Rolls on the 14th day of the month."> + _15 displayName "15" <"Rolls on the 15th day of the month."> + _16 displayName "16" <"Rolls on the 16th day of the month."> + _17 displayName "17" <"Rolls on the 17th day of the month."> + _18 displayName "18" <"Rolls on the 18th day of the month."> + _19 displayName "19" <"Rolls on the 19th day of the month."> + _20 displayName "20" <"Rolls on the 20th day of the month."> + _21 displayName "21" <"Rolls on the 21st day of the month."> + _22 displayName "22" <"Rolls on the 22nd day of the month."> + _23 displayName "23" <"Rolls on the 23rd day of the month."> + _24 displayName "24" <"Rolls on the 24th day of the month."> + _25 displayName "25" <"Rolls on the 25th day of the month."> + _26 displayName "26" <"Rolls on the 26th day of the month."> + _27 displayName "27" <"Rolls on the 27th day of the month."> + _28 displayName "28" <"Rolls on the 28th day of the month."> + _29 displayName "29" <"Rolls on the 29th day of the month."> + _30 displayName "30" <"Rolls on the 30th day of the month."> + MON <"Rolling weekly on a Monday."> + TUE <"Rolling weekly on a Tuesday"> + WED <"Rolling weekly on a Wednesday"> + THU <"Rolling weekly on a Thursday"> + FRI <"Rolling weekly on a Friday"> + SAT <"Rolling weekly on a Saturday"> + SUN <"Rolling weekly on a Sunday"> + +enum PayRelativeToEnum: <"The enumerated values to specify whether payments occur relative to the calculation period start date or end date, each reset date, valuation date or the last pricing date."> + CalculationPeriodStartDate <"Payments will occur relative to the first day of each calculation period."> + CalculationPeriodEndDate <"Payments will occur relative to the last day of each calculation period."> + LastPricingDate <"Payments will occur relative to the last Pricing Date of each Calculation Period."> + ResetDate <"Payments will occur relative to the reset date."> + ValuationDate <"Payments will occur relative to the valuation date."> + +enum StubPeriodTypeEnum: <"The enumerated values to specify how to deal with a non standard calculation period within a swap stream."> + ShortInitial <"If there is a non regular period remaining it is left shorter than the streams calculation period frequency and placed at the start of the stream."> + ShortFinal <"If there is a non regular period remaining it is left shorter than the streams calculation period frequency and placed at the end of the stream."> + LongInitial <"If there is a non regular period remaining it is placed at the start of the stream and combined with the adjacent calculation period to give a long first calculation period."> + LongFinal <"If there is a non regular period remaining it is placed at the end of the stream and combined with the adjacent calculation period to give a long last calculation period."> + +enum TimeTypeEnum: <"The enumerated values to specify points in the day when option exercise and valuation can occur."> + Close <"The official closing time of the exchange on the valuation date."> + Open <"The official opening time of the exchange on the valuation date."> + OSP <"The time at which the official settlement price is determined."> + SpecificTime <"The time specified in the element equityExpirationTime or valuationTime (as appropriate)."> + XETRA <"The time at which the official settlement price (following the auction by the exchange) is determined by the exchange."> + DerivativesClose <"The official closing time of the derivatives exchange on which a derivative contract is listed on that security underlier."> + AsSpecifiedInMasterConfirmation <"The time is determined as provided in the relevant Master Confirmation."> + +enum DeterminationMethodEnum: <"The enumerated values to specify the method according to which an amount or a date is determined."> + AgreedInitialPrice <"Agreed separately between the parties."> + AsSpecifiedInMasterConfirmation <"As specified in Master Confirmation."> + CalculationAgent <"Determined by the Calculation Agent."> + ClosingPrice <"Official Closing Price."> + DividendCurrency <"Determined by the Currency of Equity Dividends."> + ExpiringContractLevel <"The initial Index Level is the level of the Expiring Contract as provided in the Master Confirmation."> + HedgeExecution <"Determined by the Hedging Party."> + IssuerPaymentCurrency <"Issuer Payment Currency."> + NAV <"Net Asset Value."> + OpenPrice <"Opening Price of the Market."> + OSPPrice <"OSP Price."> + SettlementCurrency <"Settlement Currency."> + StrikeDateDetermination <"Date on which the strike is determined in respect of a forward starting swap."> + TWAPPrice <"Official TWAP Price."> + ValuationTime <"Price determined at valuation time."> + VWAPPrice <"Official VWAP Price."> + +enum AncillaryRoleEnum: <"Defines the enumerated values to specify the ancillary roles to the transaction. The product is agnostic to the actual parties involved in the transaction, with the party references abstracted away from the product definition and replaced by the AncillaryRoleEnum. The AncillaryRoleEnum can then be positioned in the product and the AncillaryParty type, which is positioned outside of the product definition, allows the AncillaryRoleEnum to be associated with an actual party reference."> + DisruptionEventsDeterminingParty <"Specifies the party which determines additional disruption events."> + ExtraordinaryDividendsParty <"Specifies the party which determines if dividends are extraordinary in relation to normal levels."> + PredeterminedClearingOrganizationParty <"Specifies the clearing organization (CCP, DCO) which the trade should be cleared."> + ExerciseNoticeReceiverPartyManual <"Specifies the party to which notice of a manual exercise should be given."> + ExerciseNoticeReceiverPartyOptionalEarlyTermination <"Specifies the party to which notice of a optional early termination exercise should be given."> + ExerciseNoticeReceiverPartyCancelableProvision <"Specifies the party to which notice of a cancelable provision exercise should be given."> + ExerciseNoticeReceiverPartyExtendibleProvision <"Specifies the party to which notice of a extendible provision exercise should be given."> + CalculationAgentIndependent <"Specifies the party responsible for performing calculation agent duties as defined in the applicable product definition."> + CalculationAgentOptionalEarlyTermination <"Specifies the party responsible for performing calculation agent duties associated with an optional early termination."> + CalculationAgentMandatoryEarlyTermination <"Specifies the party responsible for performing calculation agent duties associated with an mandatory early termination."> + CalculationAgentFallback <"Specifies the party responsible for deciding the fallback rate."> + +enum ObligationCategoryEnum: <"The enumerated values used in both the obligations and deliverable obligations of the credit default swap to represent a class or type of securities which apply."> + Payment <"ISDA term 'Payment'."> + BorrowedMoney <"ISDA term 'Borrowed Money'."> + ReferenceObligationsOnly <"ISDA term 'Reference Obligations Only'."> + Bond <"ISDA term 'Bond'."> + Loan <"ISDA term 'Loan'."> + BondOrLoan <"ISDA term 'Bond or Loan'."> + +type PayoutBase: <" Base class that all payout types should extend. Use case is that some validation rules may need to apply across all payout types, for which the data rule can be written at the base class level"> + payerReceiver PayerReceiver (1..1) <"Canonical representation of the payer and receiver parties applicable to each payout leg."> + payoutQuantity ResolvablePayoutQuantity (1..1) <"Each payout leg must implement the quantity concept as a 'resolvable' type, which allows for different payout legs to be linked to each other (e.g. in the case of cross-curreny products)."> + settlementTerms SettlementTerms (0..1) <"Each payout leg must specifies its settlement terms, including the delivery type (i.e. cash vs physical, and their respective terms), the transfer type (DvP etc.) and settlement date, if any."> + +type PayerReceiver: <"Specifies the parties responsible for making and receiving payments defined by this structure."> + payer CounterpartyRoleEnum (1..1) <"Specifies the counterparty responsible for making the payments defined by this structure. The party is one of the two principal parties to the transaction."> + receiver CounterpartyRoleEnum (1..1) <"Specifies the party that receives the payments corresponding to this structure. The party is one of the two counterparties to the transaction."> + + +type ResolvablePayoutQuantity: <"Generic class to specify the quantity for different payout legs in a contractual product, when that quantity can vary across payout legs or across time. A resolvable quantity can always be resolved into a single quantity from the quantity notation which has a corresponding asset identifier. In addition to the base case, where quantity is directly specified as a number as part of the quantity notation, the other use cases are: (i) quantity based on some pre-defined schedule (eg amortising notional), (ii) quantity based on some pre-defined events (eg resetting cross-currency notional), or quantity set as reference to another quantity (eg equity notional as no. securities x price)."> + resolvedQuantity Quantity (0..1) <"A product's quantity as a single, non-negative amount. When specified as part of a product definition, this quantity attribute would not be set. Instead it is specified on the quantity notation along with an asset identifier matching this payout's asset identifier. This allows the quantity to be resolved for a payout leg, which can then be specified here for convenience during data processing. There needs to be at least one resolvable quantity across payout legs of a product to define an anchor that other payout quantities can refer to. This attribute is ignored when mapping existing FpML messages."> + quantitySchedule NonNegativeQuantitySchedule (0..1) <"Quantity step schedule, including an initial quantity specified as an absolute number."> + quantityReference ResolvablePayoutQuantity (0..1) <"Reference quantity when resolvable quantity is defined as relative to another (resolvable) quantity. A resolvable quantity needs to contain either an absolute quantity or a reference to another (resolvable) quantity. This requirement is captured by a choice rule on the class."> + quantityMultiplier QuantityMultiplier (0..1) <"Quantity multiplier is specified on top of a reference quantity and is used as a multiplying factor when resolving the quantity. A quantity multiplier can only exist when the resolvable quantity specifies a reference quantity."> + reset boolean (0..1) <"Whether the quantity is resettable"> + futureValueNotional FutureValueAmount (0..1) <"The future value notional is specific to BRL CDI swaps, and is specified alongside the notional amount. The value is calculated as follows: Future Value Notional = Notional Amount * (1 + Fixed Rate) ^ (Fixed Rate Day Count Fraction). The currency should always match that expressed in the notional schedule. The value date should match the adjusted termination date."> + +type Quantity extends MeasureBase: <"Specifies a quantity to be associated to a financial product, for example a trade amount or a cashflow amount resulting from a trade."> + multiplier number (0..1) <"Defines the number to be multiplied by the amount to derive a total quantity."> + multiplierUnit UnitType (0..1) <"Qualifies the multiplier with the applicable unit. For example in the case of the Coal (API2) CIF ARA (ARGUS-McCloskey) Futures Contract on the CME, where the unitOfAmount would be contracts, the multiplier would 1,000 and the mulitiplier Unit would be 1,000 MT (Metric Tons)."> + frequency Frequency (0..1) <"Defines the frequency to be used when defining a quantity."> + +type Frequency: <"A class for defining a date frequency, e.g. one day, three months, through the combination of an integer value and a standardized period value that is specified as part of an enumeration."> + periodMultiplier int (1..1) <"A time period multiplier, e.g. 1, 2, or 3. If the period value is T (Term) then period multiplier must contain the value 1."> + period PeriodExtendedEnum (1..1) <"A time period, e.g. a day, week, month, year or term of the stream."> + +type MeasureBase: + amount number (1..1) + unitOfAmount UnitType (0..1) + +type UnitType: <"Defines the unit to be used for price, quantity, or other purposes"> + capacityUnit CapacityUnitEnum (0..1) <"Provides an enumerated value for a capacity unit, generally used in the context of defining quantities for commodities."> + weatherUnit WeatherUnitEnum (0..1) <"Provides an enumerated values for a weather unit, generally used in the context of defining quantities for commodities."> + financialUnit FinancialUnitEnum (0..1) <"Provides an enumerated value for financial units, generally used in the context of defining quantities for securities."> + currency string (0..1) <"Defines the currency to be used as a unit for a price, quantity, or other purpose."> + condition: one-of + +type NonNegativeQuantitySchedule: <"Class to specify a non-negative quantity schedule, which is used to define the quantity of a payout leg. This quantity cannot be negative, while direction is specified through a BuyerSeller or PayerReceiver attribute. The only available schedule implementation is a step schedule, specified as a set of date-value pairs. The non-negativity is enforced by using the non-negative quantity and step schedule classes."> + initialQuantity Quantity (1..1) <"The initial quantity of a schedule represented as a single, non-negative number. In the case where no schedule is specified, the constant quantity is specified at a higher level. Can be referenced from TradableProduct"> + step NonNegativeStep (0..*) <"The schedule specified as a set of date-value pairs. Attribute is optional, to represent the case where no schedule is specified so quantity is just constant over time."> + +type NonNegativeStep: <"A class defining a step date and non-negative step value pair. This step definitions are used to define varying rate or amount schedules, e.g. a notional amortisation or a step-up coupon schedule."> + stepDate date (1..1) <"The date on which the associated stepValue becomes effective. This day may be subject to adjustment in accordance with a business day convention."> + stepValue number (1..1) <"The non-negative rate or amount which becomes effective on the associated stepDate. A rate of 5% would be represented as 0.05."> + +type QuantityMultiplier: <" Class to specify a mechanism for a quantity to be set as a multiplier to another (reference) quantity, based on a price observation. At the moment this class only supports FX or Equity-linked notional and re-uses existing building blocks for those 2 cases, until such time when component can be made more generic. This captures the case of resetting cross-currency swaps and resetting equity swaps."> + fxLinkedNotionalSchedule FxLinkedNotionalSchedule (0..1) <"Multiplier specified as an FX-linked schedule, e.g. for a resetting cross-currency swap.."> + multiplierValue number (0..1) + condition: one-of + +type FxLinkedNotionalSchedule: <"A data to: describe a notional schedule where each notional that applies to a calculation period is calculated with reference to a notional amount or notional amount schedule in a different currency by means of a spot currency exchange rate which is normally observed at the beginning of each period."> + varyingNotionalCurrency string (1..1) <"The currency of the varying notional amount, i.e. the notional amount being determined periodically based on observation of a spot currency exchange rate. The list of valid currencies is not presently positioned as an enumeration as part of the CDM because that scope is limited to the values specified by ISDA and FpML. As a result, implementers have to make reference to the relevant standard, such as the ISO 4217 standard for currency codes."> + varyingNotionalFixingDates RelativeDateOffset (1..1) <"The dates on which spot currency exchange rates are observed for purposes of determining the varying notional currency amount that will apply to a calculation period."> + fxSpotRateSource FxSpotRateSource (1..1) <"The information source and time at which the spot currency exchange rate will be observed."> + fixingTime BusinessCenterTime (0..1) <"The time at which the spot currency exchange rate will be observed. It is specified as a time in a business day calendar location, e.g. 11:00am London time."> + varyingNotionalInterimExchangePaymentDates RelativeDateOffset (1..1) <"The dates on which interim exchanges of notional are paid. Interim exchanges will arise as a result of changes in the spot currency exchange amount or changes in the constant notional schedule (e.g. amortisation)."> + +type BusinessCenters: <"A class for specifying the business day calendar location used in determining whether a day is a business day or not, either by specifying this business center by reference to an enumerated list that is maintained by the FpML standard, or by reference to such specification when it exists elsewhere as part of the instance document. This class corresponds to the FpML BusinessCentersOrReference.model."> + businessCenter BusinessCenterEnum (0..*) <"A code identifying one or several business day calendar location(s). The set of business day calendar locations are specified by the business day calendar location enumeration which is maintained by the FpML standard."> + businessCentersReference BusinessCenters (0..1) <"A reference to a financial business center location specified elsewhere in the instance document."> + +type Offset extends Period: <"A class defining an offset used in calculating a new date relative to a reference date, e.g. calendar days, business days, commodity Business days, etc."> + dayType DayTypeEnum (0..1) <"In the case of an offset specified as a number of days, this element defines whether consideration is given as to whether a day is a good business day or not. If a day type of business days is specified then non-business days are ignored when calculating the offset. The financial business centers to use for determination of business days are implied by the context in which this element is used. This element must only be included when the offset is specified as a number of days. If the offset is zero days then the dayType element should not be included."> + +type Period: <"A class to define recurring periods or time offsets."> + periodMultiplier int (1..1) <"A time period multiplier, e.g. 1, 2 or 3 etc. A negative value can be used when specifying an offset relative to another date, e.g. -2 days."> + period PeriodEnum (1..1) <"A time period, e.g. a day, week, month or year of the stream. If the periodMultiplier value is 0 (zero) then period must contain the value D (day)."> + +type FxSpotRateSource: <"A class defining the rate source and fixing time for an FX rate."> + primaryRateSource InformationSource (1..1) <"The primary source for where the rate observation will occur. Will typically be either a page or a reference bank published rate."> + secondaryRateSource InformationSource (0..1) <"An alternative, or secondary, source for where the rate observation will occur. Will typically be either a page or a reference bank published rate."> + +type InformationSource: <"A class defining the source for a piece of information (e.g. a rate fix or an FX fixing). The attribute names have been adjusted from FpML to address the fact that the information is not limited to rates."> + sourceProvider InformationProviderEnum (1..1) <"An information source for obtaining a market data point. For example Bloomberg, Reuters, Telerate, etc."> + sourcePage string (0..1) <"A specific page for the source for obtaining a market data point. In FpML, this is specified as a scheme, rateSourcePageScheme, for which no coding Scheme or URI is specified."> + sourcePageHeading string (0..1) <"The heading for the source on a given source page."> + +type BusinessCenterTime: <"A class for defining a time with respect to a business day calendar location. For example, 11:00:00 GBLO."> + hourMinuteTime time (1..1) <"A time specified in hh:mm:ss format where the second component must be '00', e.g. 11am would be represented as 11:00:00."> + businessCenter BusinessCenterEnum (1..1) <"A code identifying a business day calendar location. A business day calendar location is drawn from the list identified by the business day calendar location enumeration."> + +type FutureValueAmount: <"A class defining a currency and a future value date."> + quantity Quantity (0..1) + currency string (1..1) <"The currency in which the an amount is denominated. The list of valid currencies is not presently positioned as an enumeration as part of the CDM because that scope is limited to the values specified by ISDA and FpML. As a result, implementers have to make reference to the relevant standard, such as the ISO 4217 standard for currency codes."> + calculationPeriodNumberOfDays int (1..1) <"The number of days from the adjusted calculation period start date to the adjusted value date, calculated in accordance with the applicable day count fraction."> + valueDate date (1..1) <"Adjusted value date of the future value amount."> + +type SettlementTerms extends SettlementBase: <"Specifies the settlement terms, which can either be cash, physical, or fx-based cash-settlement. This class can be used for the settlement of options and forwards, cash transactions (e.g. securities or foreign exchange), or in case of credit event."> + cashSettlementTerms CashSettlementTerms (0..*) <"Specifies the parameters associated with the cash settlement procedure."> + physicalSettlementTerms PhysicalSettlementTerms (0..1) <"Specifies the physical settlement terms which apply to the transaction."> + +type SettlementBase: <"A base class to be extended by the SettlementTerms class."> + settlementType SettlementTypeEnum (1..1) <"Whether the settlement will be cash, physical, by election, ..."> + transferSettlementType TransferSettlementEnum (0..1) <"The qualification as to how the transfer will settle, e.g. a DvP settlement."> + settlementCurrency string (0..1) <"The settlement currency is to be specified when the Settlement Amount cannot be known in advance. The list of valid currencies is not presently positioned as an enumeration as part of the CDM because that scope is limited to the values specified by ISDA and FpML. As a result, implementers have to make reference to the relevant standard, such as the ISO 4217 standard for currency codes."> + settlementDate SettlementDate (0..1) <"The date on which the settlement amount will be paid, subject to adjustment in accordance with any applicable business day convention. This component would not be present for a mandatory early termination provision where the cash settlement payment date is the mandatory early termination date."> + +type SettlementDate: <"A data defining the settlement date(s) for cash or physical settlement as either a set of explicit dates, together with applicable adjustments, or as a date relative to some other (anchor) date, or as any date in a range of contiguous business days. This data type provides a level of abstraction on top of the different legacy methods used to specify a settlement / payment date, which vary across product types, asset classes and delivery types."> + adjustedDate AdjustableOrAdjustedOrRelativeDate (0..1) <"A single settlement date subject to adjustment or specified as relative to another date (e.g. the trade date). This attribute was formerly part of 'SettlementTerms', which is now being harmonised to include a common 'SettlementDate', as inherited from 'SettlementBase'."> + valueDate date (0..1) <"The settlement date for a forward settling product. For Foreign Exchange contracts, this represents a common settlement date between both currency legs. To specify different settlement dates for each currency leg, see the ForeignExchange class. This attribute was formerly part of 'SettlementTerms', which is now being harmonised to include a common 'SettlementDate', as inherited from 'SettlementBase'."> + adjustableDates AdjustableDates (0..1) <"A series of dates that shall be subject to adjustment if they would otherwise fall on a day that is not a business day in the specified business centers, together with the convention for adjusting the date. This attributes was formerly part of 'CashSettlementPaymentDate' as included into 'OptionCashSettlement' (which is now merged into a unique 'CashSettlementTerms' data type."> + businessDateRange BusinessDateRange (0..1) <"A range of contiguous business days. This attribute is meant to be merged with the 'settlementDate' at some future point once we refactor 'Date' to use a single complex type across the model. This attributes was formerly part of 'CashSettlementPaymentDate', as included into 'OptionCashSettlement' (which is now merged into a unique 'CashSettlementTerms' data type."> + cashSettlementBusinessDays int (0..1) <"The number of business days used in the determination of the cash settlement payment date. If a cash settlement amount is specified, the cash settlement payment date will be this number of business days following the calculation of the final price. If a cash settlement amount is not specified, the cash settlement payment date will be this number of business days after all conditions to settlement are satisfied. ISDA 2003 Term: Cash Settlement Date. This attribute was formerly part of 'CashSettlementTerms' as used for credit event settlement, which now includes a common 'SettlementDate' attribute."> + paymentDelay boolean (0..1) <"Applicable to CDS on MBS to specify whether payment delays are applicable to the fixed Amount. RMBS typically have a payment delay of 5 days between the coupon date of the reference obligation and the payment date of the synthetic swap. CMBS do not, on the other hand, with both payment dates being on the 25th of each month."> + +type AdjustableOrAdjustedOrRelativeDate: <"This Rosetta class specifies the date as either an unadjusted, adjusted or relative date. It supplements the features of the AdjustableOrAdjustedDate to support the credit default swap option premium, which uses the relative date construct."> + unadjustedDate date (0..1 ) <"A date subject to adjustment."> + dateAdjustments BusinessDayAdjustments (0..1) <"The business day convention and financial business centers used for adjusting the date if it would otherwise fall on a day that is not a business date in the specified business centers."> + adjustedDate date (0..1) <"The date once the adjustment has been performed. (Note that this date may change if the business center holidays change)."> + relativeDate RelativeDateOffset (0..1) <"A date specified as some offset to another date (the anchor date)."> + +type BusinessDayAdjustments: <"A class defining the business day convention and financial business centers used for adjusting any relevant date if it would otherwise fall on a day that is not a business day in the specified business center."> + businessDayConvention BusinessDayConventionEnum (1..1) <"The convention for adjusting a date if it would otherwise fall on a day that is not a business day."> + businessCenters BusinessCenters (0..1) <"The business center(s), specified either explicitly or by reference to those specified somewhere else in the instance document."> + +type AdjustableDates: <"A class for defining a series of dates that shall be subject to adjustment if they would otherwise fall on a day that is not a business day in the specified business centers, together with the convention for adjusting the dates."> + unadjustedDate date (1..*) <"A date subject to adjustment."> + dateAdjustments BusinessDayAdjustments (1..1) <"The business day convention and financial business centers used for adjusting the date if it would otherwise fall on a day that is not a business date in the specified business centers."> + adjustedDate date (0..*) <"The date(s) once the adjustment has been performed. (Note that this date may change if the business center holidays change)."> + +type BusinessDateRange extends DateRange: <"A class defining a range of contiguous business days by defining an unadjusted first date, an unadjusted last date and a business day convention and business centers for adjusting the first and last dates if they would otherwise fall on a non business day in the specified business centers. The days between the first and last date must also be good business days in the specified centers to be counted in the range."> + businessDayConvention BusinessDayConventionEnum (1..1) <"The convention for adjusting a date if it would otherwise fall on a day that is not a business day, as specified by an ISDA convention (e.g. Following, Precedent)."> + businessCenters BusinessCenters (0..1) <"The business center(s), specified either explicitly or by reference to those specified somewhere else in the instance document."> + +type DateRange: <"A class defining a contiguous series of calendar dates. The date range is defined as all the dates between and including the first and the last date. The first date must fall before the last date."> + unadjustedFirstDate date (1..1) <"The first date of a date range."> + unadjustedLastDate date (1..1) <"The last date of a date range."> + +type CashSettlementTerms: <"Defines the terms required to compute and settle a cash settlement amount according to a fixing value, including the fixing source, fixing method and fixing date. In FpML, PhysicalSettlementTerms and CashSettlementTerms extend SettlementTerms. In the CDM, this extension paradigm has not been used because SettlementTerms class has been used for purposes related to securities transactions, while it is not used as such in the FpML standard (i.e. only as an abstract construct."> + cashSettlementMethod CashSettlementMethodEnum (0..1) <"Specifies the type of cash settlement method: cash price, yield curve etc."> + valuationMethod ValuationMethod (0..1) <"Specifies the parameters required to obtain a valuation, including the source, quotation method (bid, mid etc.) and any applicable quotation amount."> + valuationDate ValuationDate (0..1) <"Defines the different methods to specify a valuation date, as used for cash settlement. The Single / Multiple ValuationDate is used for the determination of recovery in a credit event, the RelativeDateOffset is used for cash-settled option, and FxFixingDate is used for cross-currency settlement."> + valuationTime BusinessCenterTime (0..1) <"The time of the cash settlement valuation date when the cash settlement amount will be determined according to the cash settlement method, if the parties have not otherwise been able to agree the cash settlement amount. When using quations, this is the time of day in the specified business center when the calculation agent seeks quotations for an amount of the reference obligation for purposes of cash settlement. ISDA 2003 Term: Valuation Time."> + cashSettlementAmount Money (0..1) <"The amount paid by the seller to the buyer for cash settlement on the cash settlement date. If not otherwise specified, would typically be calculated as 100 (or the Reference Price) minus the price of the Reference Obligation (all expressed as a percentage) times Floating Rate Payer Calculation Amount. ISDA 2003 Term: Cash Settlement Amount."> + recoveryFactor number (0..1) <"Used for fixed recovery, specifies the recovery level, determined at contract formation, to be applied on a default. Used to calculate the amount paid by the seller to the buyer for cash settlement on the cash settlement date. Amount calculation is (1 minus the Recovery Factor) multiplied by the Floating Rate Payer Calculation Amount. The currency will be derived from the Floating Rate Payer Calculation Amount."> + fixedSettlement boolean (0..1) <"Used for Recovery Lock, to indicate whether fixed Settlement is Applicable or Not Applicable. If Buyer fails to deliver an effective Notice of Physical Settlement on or before the Buyer NOPS Cut-off Date, and if Seller fails to deliver an effective Seller NOPS on or before the Seller NOPS Cut-off Date, then either: (a) if Fixed Settlement is specified in the related Confirmation as not applicable, then the Seller NOPS Cut-off Date shall be the Termination Date; or (b) if Fixed Settlement is specified in the related Confirmation as applicable, then: (i) if the Fixed Settlement Amount is a positive number, Seller shall, subject to Section 3.1 (except for the requirement of satisfaction of the Notice of Physical Settlement Condition to Settlement), pay the Fixed Settlement Amount to Buyer on the Fixed Settlement Payment Date; and (ii) if the Fixed Settlement Amount is a negative number, Buyer shall, subject to Section 3.1 (except for the requirement of satisfaction of the Notice of Physical Settlement Condition to Settlement), pay the absolute value of the Fixed Settlement Amount to Seller on the Fixed Settlement Payment Date."> + accruedInterest boolean (0..1) <"Indicates whether accrued interest is included (true) or not (false). For cash settlement this specifies whether quotations should be obtained inclusive or not of accrued interest. For physical settlement this specifies whether the buyer should deliver the obligation with an outstanding principal balance that includes or excludes accrued interest. ISDA 2003 Term: Include/Exclude Accrued Interest."> + +type Money extends Quantity: <"Defines a monetary amount in a specified currency."> + +type ValuationDate: <"A single object that represents the different methods to specify a valuation date, as used for cash settlement. The Single / Multiple ValuationDate is used for the determination of recovery in a credit event, the RelativeDateOffset is used for cash-settled option, and FxFixingDate is used for cross-currency settlement."> + singleValuationDate SingleValuationDate (0..1) <"Where single valuation date is specified as being applicable for cash settlement, this element specifies the number of business days after satisfaction of all conditions to settlement when such valuation date occurs. ISDA 2003 Term: Single Valuation Date."> + multipleValuationDates MultipleValuationDates (0..1) <"Where multiple valuation dates are specified as being applicable for cash settlement, this element specifies (a) the number of applicable valuation dates, and (b) the number of business days after satisfaction of all conditions to settlement when the first such valuation date occurs, and (c) the number of business days thereafter of each successive valuation date. ISDA 2003 Term: Multiple Valuation Dates."> + valuationDate RelativeDateOffset (0..1) <"The date on which the cash settlement amount will be determined according to the cash settlement method if the parties have not otherwise been able to agree the cash settlement amount. This attribute was formerly part of 'OptionCashSettlement', which is now being harmonised into a common 'CashSettlementTerms' that includes a 'ValuationDate'."> + fxFixingDate FxFixingDate (0..1) <"The date on which the currency rate will be determined for the purpose of specifying the amount in deliverable currency. This attribute was formerly part of 'NonDeliverableSettlement', which is now being harmonised into a common 'CashSettlementTerms' that includes a 'ValuationDate'."> + fxFixingSchedule AdjustableDates (0..1) <"The date, when expressed as a schedule of date(s), on which the currency rate will be determined for the purpose of specifying the amount in deliverable currency. This attribute was formerly part of 'NonDeliverableSettlement', which is now being harmonised into a common 'CashSettlementTerms' that includes a 'ValuationDate'."> + condition: one-of + +type SingleValuationDate: <"A class to specify the number of business days after satisfaction of all conditions to settlement."> + businessDays int (0..1) <"A number of business days. Its precise meaning is dependant on the context in which this element is used. ISDA 2003 Term: Business Day."> + +type MultipleValuationDates extends SingleValuationDate: + businessDaysThereafter int (0..1) <"The number of business days between successive valuation dates when multiple valuation dates are applicable for cash settlement. ISDA 2003 Term: Business Days thereafter."> + numberValuationDates int (0..1) <"Where multiple valuation dates are specified as being applicable for cash settlement, this element specifies (a) the number of applicable valuation dates, and (b) the number of business days after satisfaction of all conditions to settlement when the first such valuation date occurs, and (c) the number of business days thereafter of each successive valuation date. ISDA 2003 Term: Multiple Valuation Dates."> + +type FxFixingDate extends Offset: <"Extends the Offset structure to specify an FX fixing date as an offset to dates specified somewhere else in the document."> + businessDayConvention BusinessDayConventionEnum (0..1) <"The convention for adjusting a date if it would otherwise fall on a day that is not a business day, as specified by an ISDA convention (e.g. Following, Precedent)."> + businessCenters BusinessCenters (0..1) + businessCentersReference BusinessCenters (0..1) <"A reference to a set of financial business centers defined elsewhere in the document. This set of business centers is used to determine whether a particular day is a business day or not."> + dateRelativeToPaymentDates DateRelativeToPaymentDates (0..1) <"The payment date references on which settlements in non-deliverable currency are due and will then have to be converted according to the terms specified through the other parts of the nonDeliverableSettlement structure."> + dateRelativeToCalculationPeriodDates DateRelativeToCalculationPeriodDates (0..1) <"The calculation period references on which settlements in non-deliverable currency are due and will then have to be converted according to the terms specified through the other parts of the nonDeliverableSettlement structure. Implemented for Brazilian-CDI swaps where it will refer to the termination date of the appropriate leg."> + dateRelativeToValuationDates DateRelativeToValuationDates (0..1) <"The calculation period references on which settlements in non-deliverable currency are due and will then have to be converted according to the terms specified through the other parts of the nonDeliverableSettlement structure. Implemented for Brazilian-CDI swaps where it will refer to the termination date of the appropriate leg."> + fxFixingDate AdjustableOrRelativeDate (0..1) <"Describes the specific date when a non-deliverable forward or cash-settled option will 'fix' against a particular rate, which will be used to compute the ultimate cash settlement. This element should be omitted where a single, discrete fixing date cannot be identified e.g. on an american option, where fixing may occur at any date on a continuous range. This attribute was formerly part of 'fxSettlementTerms', which is now being harmonised into a common 'CashSettlementTerms' that includes a 'ValuationDate'."> + +type DateRelativeToPaymentDates: <"A data to: provide the ability to point to multiple payment nodes in the document through the unbounded paymentDatesReference."> + paymentDatesReference PaymentDates (1..*) <"A set of href pointers to payment dates defined somewhere else in the document."> + +type PaymentDates: <"Specifies the parameters to generate the payment date schedule, either through a parametric representation or by reference to specified dates."> + paymentFrequency Frequency (0..1) <"The frequency at which regular payment dates occur. If the payment frequency is equal to the frequency defined in the calculation period dates component then one calculation period contributes to each payment amount. If the payment frequency is less frequent than the frequency defined in the calculation period dates component then more than one calculation period will contribute to the payment amount. A payment frequency more frequent than the calculation period frequency or one that is not a multiple of the calculation period frequency is invalid. If the payment frequency is of value T (term), the period is defined by the effectiveDate and the terminationDate."> + firstPaymentDate date (0..1) <"The first unadjusted payment date. This day may be subject to adjustment in accordance with any business day convention specified in paymentDatesAdjustments. This element must only be included if there is an initial stub. This date will normally correspond to an unadjusted calculation period start or end date. This is true even if early or delayed payment is specified to be applicable since the actual first payment date will be the specified number of days before or after the applicable adjusted calculation period start or end date with the resulting payment date then being adjusted in accordance with any business day convention specified in paymentDatesAdjustments."> + lastRegularPaymentDate date (0..1) <"The last regular payment date when specified as a date, as in the FpML interest rate construct. FpML specifies that this date may be subject to adjustment in accordance with any business day convention specified in the paymentDatesAdjustments attribute."> + paymentDateSchedule PaymentDateSchedule (0..1) <"The payment dates when specified as relative to a set of dates specified somewhere else in the instance document/transaction, e.g. the valuation dates as typically the case for equity swaps, or when specified as a calculation period schedule."> + payRelativeTo PayRelativeToEnum (0..1) <"Specifies whether the payments occur relative to each adjusted calculation period start date or end date, each reset date, valuation date or the last pricing date. Calculation period start date means relative to the start of the first calculation period contributing to a given payment. Similarly, calculation period end date means the end of the last calculation period contributing to a given payment. The valuation date is applicable for Brazilian-CDI and equity swaps."> + paymentDaysOffset Offset (0..1) <"If early payment or delayed payment is required, specifies the number of days offset that the payment occurs relative to what would otherwise be the unadjusted payment date. The offset can be specified in terms of either calendar or business days. Even in the case of a calendar days offset, the resulting payment date, adjusted for the specified calendar days offset, will still be adjusted in accordance with the specified payment dates adjustments. This element should only be included if early or delayed payment is applicable, i.e. if the periodMultiplier element value is not equal to zero. An early payment would be indicated by a negative periodMultiplier element value and a delayed payment (or payment lag) would be indicated by a positive periodMultiplier element value."> + paymentDatesAdjustments BusinessDayAdjustments (0..1) <"The definition of the business day convention and financial business centers used for adjusting the payment date if it would otherwise fall on a day that is not a business day in the specified business center."> + +type PaymentDateSchedule: <"The payment dates when specified as relative to a set of dates specified somewhere else in the instance document/transaction, e.g. the valuation dates as typically the case for equity swaps, or when specified as a calculation period schedule."> + interimPaymentDates AdjustableRelativeOrPeriodicDates (0..*) + finalPaymentDate AdjustableOrRelativeDate (0..1) <"The last payment when specified as an adjustable or relative date, as in the FpML total return construct."> + +type AdjustableRelativeOrPeriodicDates: <"A class giving the choice between defining a series of dates as an explicit list of dates together with applicable adjustments or as relative to some other series of (anchor) dates, or as a calculation period schedule."> + adjustableDates AdjustableDates (0..1) <"A series of dates that shall be subject to adjustment if they would otherwise fall on a day that is not a business day in the specified business centers, together with the convention for adjusting the date."> + relativeDates RelativeDates (0..1) <"A series of dates specified as some offset to another series of dates (the anchor dates)."> + periodicDates PeriodicDates (0..1) <"A calculation period schedule."> + +type RelativeDates extends RelativeDateOffset: <"A class describing a set of dates defined as relative to another set of dates."> + periodSkip int (0..1) <"The number of periods in the referenced date schedule that are between each date in the relative date schedule. Thus a skip of 2 would mean that dates are relative to every second date in the referenced schedule. If present this should have a value greater than 1."> + scheduleBounds DateRange (0..1) <"The first and last dates of a schedule. This can be used to restrict the range of values in a reference series of dates."> + +type RelativeDateOffset extends Offset: <"A class defining a date (referred to as the derived date) as a relative offset from another date (referred to as the anchor date). If the anchor date is itself an adjustable date then the offset is assumed to be calculated from the adjusted anchor date. A number of different scenarios can be supported, namely; 1) the derived date may simply be a number of calendar periods (days, weeks, months or years) preceding or following the anchor date; 2) the unadjusted derived date may be a number of calendar periods (days, weeks, months or years) preceding or following the anchor date with the resulting unadjusted derived date subject to adjustment in accordance with a specified business day convention, i.e. the derived date must fall on a good business day; 3) the derived date may be a number of business days preceding or following the anchor date. Note that the businessDayConvention specifies any required adjustment to the unadjusted derived date. A negative or positive value in the periodMultiplier indicates whether the unadjusted derived precedes or follows the anchor date. The businessDayConvention should contain a value NONE if the day type element contains a value of Business (since specifying a negative or positive business days offset would already guarantee that the derived date would fall on a good business day in the specified business centers)."> + businessDayConvention BusinessDayConventionEnum (1..1) <"The convention for adjusting a date if it would otherwise fall on a day that is not a business day, as specified by an ISDA convention (e.g. Following, Precedent)."> + businessCenters BusinessCenters (0..1) + businessCentersReference BusinessCenters (0..1) <"A pointer style reference to a set of financial business centers defined elsewhere in the document. This set of business centers is used to determine whether a particular day is a business day or not."> + dateRelativeTo date (0..1) <"Specifies the anchor as an href attribute. The href attribute value is a pointer style reference to the element or component elsewhere in the document where the anchor date is defined."> + adjustedDate date (0..1) <"The date once the adjustment has been performed. (Note that this date may change if the business center holidays change)."> + +type PeriodicDates: <"A class for specifying a calculation period schedule."> + startDate AdjustableOrRelativeDate (0..1) <"The start date of the calculation period. FpML specifies that for interest rate swaps this date must only be specified if it is not equal to the effective date. It is always specified in the case of equity swaps and credit default swaps with periodic payments. This date may be subject to adjustment in accordance with a business day convention."> + endDate AdjustableOrRelativeDate (0..1) <"The end date of the calculation period. FpML specifies that for interest rate swaps this date must only be specified if it is not equal to the termination date. It is always specified in the case of equity swaps with periodic payments. This date may be subject to adjustment in accordance with a business day convention."> + periodFrequency CalculationPeriodFrequency (0..1) <"The frequency at which calculation period end dates occur with the regular part of the calculation period schedule and their roll date convention."> + periodDatesAdjustments BusinessDayAdjustments (0..1) <"The specification of the business day convention and financial business centers used for adjusting any calculation period date if it would otherwise fall on a day that is not a business day in the specified business center."> + +type AdjustableOrRelativeDate: <"A class giving the choice between defining a date as an explicit date together with applicable adjustments or as relative to some other (anchor) date."> + adjustableDate AdjustableDate (0..1) <"A date that shall be subject to adjustment if it would otherwise fall on a day that is not a business day in the specified business centers, together with the convention for adjusting the date."> + relativeDate AdjustedRelativeDateOffset (0..1) <"A date specified as some offset to another date (the anchor date)."> + +type AdjustableDate: <"A class for defining a date that shall be subject to adjustment if it would otherwise fall on a day that is not a business day in the specified business centers, together with the convention for adjusting the date."> + unadjustedDate date (0..1 ) <"A date subject to adjustment. While in FpML this date is required, this cardinality constraint has been relaxed as part of the CDM in order to support the FRA representation, which effective and termination dates are specified in FpML as adjusted dates."> + dateAdjustments BusinessDayAdjustments (0..1) <"The business day convention and financial business centers used for adjusting the date if it would otherwise fall on a day that is not a business date in the specified business centers."> + dateAdjustmentsReference BusinessDayAdjustments (0..1) <"A pointer style reference to date adjustments defined elsewhere in the document."> + adjustedDate date (0..1) <"The date once the adjustment has been performed. (Note that this date may change if the business center holidays change)."> + +type AdjustedRelativeDateOffset extends RelativeDateOffset: <"A type defining a date (referred to as the derived date) as a relative offset from another date (referred to as the anchor date) plus optional date adjustments."> + relativeDateAdjustments BusinessDayAdjustments (0..1) <"The business day convention and financial business centers used for adjusting the relative date if it would otherwise fall on a day that is not a business date in the specified business centers."> + +type CalculationPeriodFrequency extends Frequency: <"A class to specify the frequency at which calculation period end dates occur within the regular part of the calculation period schedule and their roll date convention."> + rollConvention RollConventionEnum (1..1) <"The roll convention specifies the period term as part of a periodic schedule, i.e. the calculation period end date within the regular part of the calculation period. The value could be a rule, e.g. IMM Settlement Dates, which is the 3rd Wednesday of the month, or it could be a specific day of the month, such as the first day of the applicable month. It is used in conjunction with a frequency and the regular period start date of a calculation period."> + balanceOfFirstPeriod boolean (0..1) <"Indicates, when true, that that the first Calculation Period should run from the Effective Date to the end of the calendar period in which the Effective Date falls, e.g. Jan 15 - Jan 31 if the calculation periods are one month long and Effective Date is Jan 15. If false, the first Calculation Period should run from the Effective Date for one whole period, e.g. Jan 15 to Feb 14 if the calculation periods are one month long and Effective Date is Jan 15. Mostly used in Commmodity Swaps."> + +type DateRelativeToCalculationPeriodDates: <"A data to: provide the ability to point to multiple payment nodes in the document through the unbounded paymentDatesReference."> + calculationPeriodDatesReference CalculationPeriodDates (1..*) <"A set of href pointers to calculation period dates defined somewhere else in the document."> + +type CalculationPeriodDates: <"A data for: defining the parameters used to generate the calculation period dates schedule, including the specification of any initial or final stub calculation periods. A calculation period schedule consists of an optional initial stub calculation period, one or more regular calculation periods and an optional final stub calculation period. In the absence of any initial or final stub calculation periods, the regular part of the calculation period schedule is assumed to be between the effective date and the termination date. No implicit stubs are allowed, i.e. stubs must be explicitly specified using an appropriate combination of firstPeriodStartDate, firstRegularPeriodStartDate and lastRegularPeriodEndDate."> + effectiveDate AdjustableOrRelativeDate (0..1) <"The first day of the terms of the trade. This day may be subject to adjustment in accordance with a business day convention."> + terminationDate AdjustableOrRelativeDate (0..1) <"The last day of the terms of the trade. This date may be subject to adjustments in accordance with the business day convention. It can also be specified in relation to another scheduled date (e.g. the last payment date)."> + calculationPeriodDatesAdjustments BusinessDayAdjustments (0..1) <"The specification of the business day convention and financial business centers used for adjusting any calculation period date if it would otherwise fall on a day that is not a business day in the specified business center."> + firstPeriodStartDate AdjustableOrRelativeDate (0..1) <"The start date of the calculation period. FpML specifies that for interest rate swaps this date must only be specified if it is not equal to the effective date. It is always specified in the case of equity swaps and credit default swaps with periodic payments. This date may be subject to adjustment in accordance with a business day convention."> + firstRegularPeriodStartDate date (0..1) <"The start date of the regular part of the calculation period schedule. It must only be specified if there is an initial stub calculation period. This day may be subject to adjustment in accordance with any adjustments specified in calculationPeriodDatesAdjustments."> + firstCompoundingPeriodEndDate date (0..1) <"The end date of the initial compounding period when compounding is applicable. It must only be specified when the compoundingMethod element is present and not equal to a value of None. This date may be subject to adjustment in accordance with any adjustments specified in calculationPeriodDatesAdjustments."> + lastRegularPeriodEndDate date (0..1) <"The end date of the regular part of the calculation period schedule. It must only be specified if there is a final stub calculation period. This day may be subject to adjustment in accordance with any adjustments specified in calculationPeriodDatesAdjustments."> + stubPeriodType StubPeriodTypeEnum (0..1) <"Method to allocate any irregular period remaining after regular periods have been allocated between the effective and termination date."> + calculationPeriodFrequency CalculationPeriodFrequency (0..1) <"The frequency at which calculation period end dates occur with the regular part of the calculation period schedule and their roll date convention."> + +type DateRelativeToValuationDates: <"A data to: provide the ability to point to multiple payment nodes in the document through the unbounded paymentDatesReference."> + valuationDatesReference EquityValuationDates (1..*) <"A set of href pointers to valuation period dates defined somewhere else in the document."> + +type EquityValuationDates : <"Defines how and when a performance type option or performance type swap is to be valued."> + determinationMethod DeterminationMethodEnum (1..1) <"Specifies the method according to which an amount or a date is determined."> + valuationDates AdjustableRelativeOrPeriodicDates (0..1) <"2018 ISDA CDM Equity Confirmation for Security Equity Swap: Pricing Date"> + valuationDate AdjustableOrRelativeDate (0..1) <"2018 ISDA CDM Equity Confirmation for Security Equity Swap: Pricing Date"> + valuationTime BusinessCenterTime (0..1) <"The specific time of day at which the calculation agent values the underlying. The SpecificTime is the only case when the valuationTime (time + business center location e.g. 10:00:00 USNY) should be provided. You should be able to provide just the valuationTime without valuationTimeType, which infer that this is a specific time."> + valuationTimeType TimeTypeEnum (0..1) <"The time of day at which the calculation agent values the underlying, for example the official closing time of the exchange."> + +type PhysicalSettlementTerms: <"Specifies Physical Settlement Terms characteristics for the settlement of a Credit Default Swap or Option."> + clearedPhysicalSettlement boolean (0..1) <"Specifies whether the swap resulting from physical settlement of the swaption transaction will clear through a clearing house. The meaning of Cleared Physical Settlement is defined in the 2006 ISDA Definitions, Section 15.2 (published in Supplement number 28)."> + predeterminedClearingOrganizationParty AncillaryRoleEnum (0..1) <"Specifies the clearing organization (CCP, DCO) to which the trade should be cleared."> + physicalSettlementPeriod PhysicalSettlementPeriod (0..1) <"The number of business days used in the determination of the physical settlement date. The physical settlement date is this number of business days after all applicable conditions to settlement are satisfied. If a number of business days is not specified fallback provisions apply for determining the number of business days. If Section 8.5/8.6 of the 1999/2003 ISDA Definitions are to apply the businessDaysNotSpecified element should be included. If a specified number of business days are to apply these should be specified in the businessDays element. If Section 8.5/8.6 of the 1999/2003 ISDA Definitions are to apply but capped at a maximum number of business days then the maximum number should be specified in the maximumBusinessDays element. ISDA 2003 Term: Physical Settlement Period."> + deliverableObligations DeliverableObligations (0..1) <"This element contains all the ISDA terms relevant to defining the deliverable obligations."> + escrow boolean (0..1) <"If this element is specified and set to 'true', indicates that physical settlement must take place through the use of an escrow agent. (For Canadian counterparties this is always 'Not Applicable'. ISDA 2003 Term: Escrow."> + sixtyBusinessDaySettlementCap boolean (0..1) <"If this element is specified and set to 'true', for a transaction documented under the 2003 ISDA Credit Derivatives Definitions, has the effect of incorporating the language set forth below into the confirmation. The section references are to the 2003 ISDA Credit Derivatives Definitions. Notwithstanding Section 1.7 or any provisions of Sections 9.9 or 9.10 to the contrary, but without prejudice to Section 9.3 and (where applicable) Sections 9.4, 9.5 and 9.6, if the Termination Date has not occurred on or prior to the date that is 60 Business Days following the Physical Settlement Date, such 60th Business Day shall be deemed to be the Termination Date with respect to this Transaction except in relation to any portion of the Transaction (an 'Affected Portion') in respect of which: (1) a valid notice of Buy-in Price has been delivered that is effective fewer than three Business Days prior to such 60th Business Day, in which case the Termination Date for that Affected Portion shall be the third Business Day following the date on which such notice is effective; or (2) Buyer has purchased but not Delivered Deliverable Obligations validly specified by Seller pursuant to Section 9.10(b), in which case the Termination Date for that Affected Portion shall be the tenth Business Day following the date on which Seller validly specified such Deliverable Obligations to Buyer."> + +type PhysicalSettlementPeriod: + businessDaysNotSpecified boolean (0..1) <"An explicit indication that a number of business days are not specified and therefore ISDA fallback provisions should apply."> + businessDays int (0..1) <"A number of business days. Its precise meaning is dependant on the context in which this element is used. ISDA 2003 Term: Business Day."> + maximumBusinessDays int (0..1) <"A maximum number of business days. Its precise meaning is dependant on the context in which this element is used. Intended to be used to limit a particular ISDA fallback provision."> + condition: one-of + +type DeliverableObligations: <"A class to specify all the ISDA terms relevant to defining the deliverable obligations."> + accruedInterest boolean (0..1) <"Indicates whether accrued interest is included (true) or not (false). For cash settlement this specifies whether quotations should be obtained inclusive or not of accrued interest. For physical settlement this specifies whether the buyer should deliver the obligation with an outstanding principal balance that includes or excludes accrued interest. ISDA 2003 Term: Include/Exclude Accrued Interest."> + category ObligationCategoryEnum (0..1) <"Used in both obligations and deliverable obligations to represent a class or type of securities which apply. ISDA 2003 Term: Obligation Category/Deliverable Obligation Category."> + notSubordinated boolean (0..1) <"An obligation and deliverable obligation characteristic. An obligation that ranks at least equal with the most senior Reference Obligation in priority of payment or, if no Reference Obligation is specified in the related Confirmation, the obligations of the Reference Entity that are senior. ISDA 2003 Term: Not Subordinated."> + specifiedCurrency SpecifiedCurrency (0..1) <"An obligation and deliverable obligation characteristic. The currency or currencies in which an obligation or deliverable obligation must be payable. ISDA 2003 Term: Specified Currency."> + notSovereignLender boolean (0..1) <"An obligation and deliverable obligation characteristic. Any obligation that is not primarily (majority) owed to a Sovereign or Supranational Organisation. ISDA 2003 Term: Not Sovereign Lender."> + notDomesticCurrency NotDomesticCurrency (0..1) <"An obligation and deliverable obligation characteristic. Any obligation that is payable in any currency other than the domestic currency. Domestic currency is either the currency so specified or, if no currency is specified, the currency of (a) the reference entity, if the reference entity is a sovereign, or (b) the jurisdiction in which the relevant reference entity is organised, if the reference entity is not a sovereign. ISDA 2003 Term: Not Domestic Currency."> + notDomesticLaw boolean (0..1) <"An obligation and deliverable obligation characteristic. If the reference entity is a Sovereign, this means any obligation that is not subject to the laws of the reference entity. If the reference entity is not a sovereign, this means any obligation that is not subject to the laws of the jurisdiction of the reference entity. ISDA 2003 Term: Not Domestic Law."> + listed boolean (0..1) <"An obligation and deliverable obligation characteristic. Indicates whether or not the obligation is quoted, listed or ordinarily purchased and sold on an exchange. ISDA 2003 Term: Listed."> + notContingent boolean (0..1) <"A deliverable obligation characteristic. In essence Not Contingent means the repayment of principal cannot be dependant on a formula/index, i.e. to prevent the risk of being delivered an instrument that may never pay any element of principal, and to ensure that the obligation is interest bearing (on a regular schedule). ISDA 2003 Term: Not Contingent."> + notDomesticIssuance boolean (0..1) <"An obligation and deliverable obligation characteristic. Any obligation other than an obligation that was intended to be offered for sale primarily in the domestic market of the relevant Reference Entity. This specifies that the obligation must be an internationally recognised bond. ISDA 2003 Term: Not Domestic Issuance."> + assignableLoan PCDeliverableObligationCharac (0..1) <"A deliverable obligation characteristic. A loan that is freely assignable to a bank or financial institution without the consent of the Reference Entity or the guarantor, if any, of the loan (or the consent of the applicable borrower if a Reference Entity is guaranteeing the loan) or any agent. ISDA 2003 Term: Assignable Loan."> + consentRequiredLoan PCDeliverableObligationCharac (0..1) <"A deliverable obligation characteristic. A loan that is capable of being assigned with the consent of the Reference Entity or the guarantor, if any, of the loan or any agent. ISDA 2003 Term: Consent Required Loan."> + directLoanParticipation LoanParticipation (0..1) <"A deliverable obligation characteristic. A loan with a participation agreement whereby the buyer is capable of creating, or procuring the creation of, a contractual right in favour of the seller that provides the seller with recourse to the participation seller for a specified share in any payments due under the relevant loan which are received by the participation seller. ISDA 2003 Term: Direct Loan Participation."> + transferable boolean (0..1) <"A deliverable obligation characteristic. An obligation that is transferable to institutional investors without any contractual, statutory or regulatory restrictions. ISDA 2003 Term: Transferable."> + maximumMaturity Period (0..1) <"A deliverable obligation characteristic. An obligation that has a remaining maturity from the Physical Settlement Date of not greater than the period specified. ISDA 2003 Term: Maximum Maturity."> + acceleratedOrMatured boolean (0..1) <"A deliverable obligation characteristic. An obligation at time of default is due to mature and due to be repaid, or as a result of downgrade/bankruptcy is due to be repaid as a result of an acceleration clause. ISDA 2003 Term: Accelerated or Matured."> + notBearer boolean (0..1) <"A deliverable obligation characteristic. Any obligation that is not a bearer instrument. This applies to Bonds only and is meant to avoid tax, fraud and security/delivery provisions that can potentially be associated with Bearer Bonds. ISDA 2003 Term: Not Bearer."> + fullFaithAndCreditObLiability boolean (0..1) <"An obligation and deliverable obligation characteristic. Defined in the ISDA published additional provisions for U.S. Municipal as Reference Entity. ISDA 2003 Term: Full Faith and Credit Obligation Liability."> + generalFundObligationLiability boolean (0..1) <"An obligation and deliverable obligation characteristic. Defined in the ISDA published additional provisions for U.S. Municipal as Reference Entity. ISDA 2003 Term: General Fund Obligation Liability."> + revenueObligationLiability boolean (0..1) <"An obligation and deliverable obligation characteristic. Defined in the ISDA published additional provisions for U.S. Municipal as Reference Entity. ISDA 2003 Term: Revenue Obligation Liability."> + indirectLoanParticipation LoanParticipation (0..1) <"ISDA 1999 Term: Indirect Loan Participation. NOTE: Only applicable as a deliverable obligation under ISDA Credit 1999."> + excluded string (0..1) <"A free format string to specify any excluded obligations or deliverable obligations, as the case may be, of the reference entity or excluded types of obligations or deliverable obligations. ISDA 2003 Term: Excluded Obligations/Excluded Deliverable Obligations."> + othReferenceEntityObligations string (0..1) <"This element is used to specify any other obligations of a reference entity in both obligations and deliverable obligations. The obligations can be specified free-form. ISDA 2003 Term: Other Obligations of a Reference Entity."> + +type SpecifiedCurrency: + applicable boolean (1..1) <"Indicates whether the specified currency provision is applicable."> + currency string (0..1) <"The currency in which the specified currency is denominated. The list of valid currencies is not presently positioned as an enumeration as part of the CDM because that scope is limited to the values specified by ISDA and FpML. As a result, implementers have to make reference to the relevant standard, such as the ISO 4217 standard for currency codes."> + +type NotDomesticCurrency: <"A class to specify the ISDA 2003 Term: Not Domestic Currency."> + applicable boolean (1..1) <"Indicates whether the Not Domestic Currency provision is applicable."> + currency string (0..1) <"An explicit specification of the domestic currency. The list of valid currencies is not presently positioned as an enumeration as part of the CDM because that scope is limited to the values specified by ISDA and FpML. As a result, implementers have to make reference to the relevant standard, such as the ISO 4217 standard for currency codes."> + +type PCDeliverableObligationCharac: <"A class to specify the Partial Cash Deliverable Obligation Characteristic."> + applicable boolean (1..1) <"Indicates whether the provision is applicable."> + partialCashSettlement boolean (0..1) <"Specifies whether either 'Partial Cash Settlement of Assignable Loans', 'Partial Cash Settlement of Consent Required Loans' or 'Partial Cash Settlement of Participations' is applicable. If this element is specified and Assignable Loan is a Deliverable Obligation Characteristic, any Assignable Loan that is deliverable, but where a non-receipt of Consent by the Physical Settlement Date has occurred, the Loan can be cash settled rather than physically delivered. If this element is specified and Consent Required Loan is a Deliverable Obligation Characteristic, any Consent Required Loan that is deliverable, but where a non-receipt of Consent by the Physical Settlement Date has occurred, the Loan can be cash settled rather than physically delivered. If this element is specified and Direct Loan Participation is a Deliverable Obligation Characteristic, any Participation that is deliverable, but where this participation has not been effected (has not come into effect) by the Physical Settlement Date, the participation can be cash settled rather than physically delivered."> + +type LoanParticipation extends PCDeliverableObligationCharac: <"A class to specify loan with a participation agreement whereby the buyer is capable of creating, or procuring the creation of, a contractual right in favour of the seller that provides the seller with recourse to the participation seller for a specified share in any payments due under the relevant loan which are received by the participation seller. ISDA 2003 Term: Direct Loan Participation."> + qualifyingParticipationSeller string (0..1) <"If Direct Loan Participation is specified as a deliverable obligation characteristic, this specifies any requirements for the Qualifying Participation Seller. The requirements may be listed free-form. ISDA 2003 Term: Qualifying Participation Seller."> \ No newline at end of file diff --git a/resources/Rosetta/Contracts/imports.rosetta b/resources/Rosetta/Contracts/imports.rosetta new file mode 100644 index 0000000..1e579e1 --- /dev/null +++ b/resources/Rosetta/Contracts/imports.rosetta @@ -0,0 +1,1069 @@ +namespace imports : <"Something"> +version "${version.ok}" + +enum CounterpartyRoleEnum: <"Defines the enumerated values to specify the two counterparties to the transaction."> + Party1 + Party2 + +enum CapacityUnitEnum: <"Provides enumerated values for capacity units, generally used in the context of defining quantities for commodities."> + ALW <"Denotes Allowances as standard unit."> + BBL <"Denotes a Barrel as a standard unit."> + BCF <"Denotes Billion Cubic Feet as a standard unit."> + BDFT <"Denotes Board Feet as a standard unit."> + BSH <"Denotes a Bushel as a standard unit of weight (48 lb or 21.7725 kg)."> + BTU <"Denotes British Thermal Units as a standard unit."> + CBM <"Denotes Cubic Meters as a standard unit."> + CER <"Denotes Certified Emissions Reduction as a standard unit."> + CRT <"Denotes Climate Reserve Tonnes as a standard unit."> + DAG <"Denotes 10 grams as a standard unit used in precious metals contracts (e.g MCX)."> + DAY <"Denotes a single day as a standard unit used in time charter trades."> + DMTU <"Denotes Dry Metric Ton (Tonne) Units - Consists of a metric ton of mass excluding moisture."> + DTH <"Denotes a Dekatherm as a standard unit."> + ENVCRD <"Denotes Environmental Credit as a standard unit."> + ENVOFST <"Denotes Environmental Offset as a standard unit."> + FEU <"Denotes a 40 ft. Equivalent Unit container as a standard unit."> + G <"Denotes a Gram as a standard unit."> + GBCWT <"Denotes a GB Hundredweight unit as standard unit."> + GBGAL <"Denotes a GB Gallon unit as standard unit."> + GBT <"Denotes a GB Ton as a standard unit."> + GJ <"Denotes a Gigajoule as a standard unit."> + GW <"Denotes a Gigawatt as a standard unit."> + GWH <"Denotes a Gigawatt-hour as a standard unit."> + HL <"Denotes a Hectolitre as a standard unit."> + INGOT <"Denotes an Ingot as a standard unit."> + KG <"Denotes a Kilogram as a standard unit."> + KL <"Denotes a Kilolitre as a standard unit."> + KW <"Denotes a Kilowatt as a standard unit."> + KWDC <"Denotes a Kilowatt Day Capacity as a standard unit."> + KWH <"Denotes a Kilowatt-hour as a standard unit."> + KWHC <"Denotes a Kilowatt Hours Capacity as a standard unit."> + KWMC <"Denotes a Kilowatt Month Capacity as a standard unit."> + KWMINC <"Denotes a Kilowatt Minute Capacity as a standard unit."> + KWYC <"Denotes a Kilowatt Year Capacity as a standard unit."> + L <"Denotes a Litre as a standard unit."> + LB <"Denotes a Pound as a standard unit."> + MB <"Denotes a Thousand Barrels as a standard unit."> + MBF <"Denotes a Thousand board feet, which are used in contracts on forestry underlyers as a standard unit."> + MJ <"Denotes a Megajoule as a standard unit."> + MMBF <"Denotes a Million board feet, which are used in contracts on forestry underlyers as a standard unit."> + MMBBL <"Denotes a Million Barrels as a standard unit."> + MMBTU <"Denotes a Million British Thermal Units as a standard unit."> + MSF <"Denotes a Thousand square feet as a standard unit."> + MT <"Denotes a Metric Ton as a standard unit."> + MW <"Denotes a Megawatt as a standard unit."> + MWDC <"Denotes a Megawatt Day Capacity as a standard unit."> + MWH <"Denotes a Megawatt-hour as a standard unit."> + MWHC <"Denotes a Megawatt Hours Capacity as a standard unit."> + MWMC <"Denotes a Megawatt Month Capacity as a standard unit."> + MWMINC <"Denotes a Megawatt Minute Capacity as a standard unit."> + MWYC <"Denotes a Megawatt Year Capacity as a standard unit."> + OZT <"Denotes a Troy Ounce as a standard unit."> + TEU <"Denotes a 20 ft. Equivalent Unit container as a standard unit."> + THERM <"Denotes a Thermal Unit as a standard unit."> + USCWT <"Denotes US Hundredweight unit as a standard unit."> + USGAL <"Denotes a US Gallon unit as a standard unit."> + UST <"Denotes a US Ton as a standard unit."> + +enum WeatherUnitEnum: <"Provides enumerated values for weather units, generally used in the context of defining quantities for commodities."> + CDD <"Denotes Cooling Degree Days as a standard unit."> + CPD <"Denotes Critical Precipitation Day as a standard unit."> + HDD <"Heating Degree Day as a standard unit."> + +enum FinancialUnitEnum: <"Provides enumerated values for financial units, generally used in the context of defining quantities for securities."> + Contract <"Denotes financial contracts, such as listed futures and options."> + ContractualProduct <"Denotes a Contractual Product as defined in the CDM. This unit type would be used when the price applies to the whole product, for example, in the case of a premium expressed as a cash amount."> + IndexUnit <"Denotes a price expressed in index points, e.g. for a stock index."> + LogNormalVolatility <"Denotes a log normal volatility, expressed in %/month, where the percentage is represented as a decimal. For example, 0.15 means a log-normal volatility of 15% per month."> + Share <"Denotes the number of units of financial stock shares."> + ValuePerDay <"Denotes a value (expressed in currency units) for a one day change in a valuation date, which is typically used for expressing sensitivity to the passage of time, also known as theta risk, or carry, or other names."> + ValuePerPercent <"Denotes a value (expressed in currency units) per percent change in the underlying rate which is typically used for expressing sensitivity to volatility changes, also known as vega risk."> + Weight <"Denotes a quantity (expressed as a decimal value) represented the weight of a component in a basket."> + +enum BusinessDayConventionEnum: <"The enumerated values to specify the convention for adjusting any relevant date if it would otherwise fall on a day that is not a valid business day."> + FOLLOWING <"The non-business date will be adjusted to the first following day that is a business day"> + FRN <"Per 2000 ISDA Definitions, Section 4.11. FRN Convention; Eurodollar Convention. FRN is included here as a type of business day convention although it does not strictly fall within ISDA's definition of a Business Day Convention and does not conform to the simple definition given above."> + MODFOLLOWING <"The non-business date will be adjusted to the first following day that is a business day unless that day falls in the next calendar month, in which case that date will be the first preceding day that is a business day."> + PRECEDING <"The non-business day will be adjusted to the first preceding day that is a business day."> + MODPRECEDING <"The non-business date will be adjusted to the first preceding day that is a business day unless that day falls in the previous calendar month, in which case that date will be the first following day that us a business day."> + NEAREST <"The non-business date will be adjusted to the nearest day that is a business day - i.e. if the non-business day falls on any day other than a Sunday or a Monday, it will be the first preceding day that is a business day, and will be the first following business day if it falls on a Sunday or a Monday."> + NONE <"The date will not be adjusted if it falls on a day that is not a business day."> + NotApplicable <"The date adjustments conventions are defined elsewhere, so it is not required to specify them here."> + +enum PeriodExtendedEnum /*extends PeriodEnum*/: <"The enumerated values to specify a time period containing the additional value of Term."> + D <"Day"> + W <"Week"> + M <"Month"> + Y <"Year"> + T <"Term. The period commencing on the effective date and ending on the termination date. The T period always appears in association with periodMultiplier = 1, and the notation is intended for use in contexts where the interval thus qualified (e.g. accrual period, payment period, reset period, ...) spans the entire term of the trade."> + C <"CalculationPeriod - the period corresponds to the calculation period For example, used in the Commodity Markets to indicate that a reference contract is the one that corresponds to the period of the calculation period."> + +enum PeriodEnum: <"The enumerated values to specify the period, e.g. day, week."> + D <"Day"> + W <"Week"> + M <"Month"> + Y <"Year"> + +enum InformationProviderEnum: <"The enumerated values to specify the list of information providers."> + AssocBanksSingapore <"The Association of Banks in Singapore."> + BankOfCanada <"The central bank of Canada."> + BankOfEngland <"The Bank Of England."> + BankOfJapan <"The central bank of Japan."> + Bloomberg <"Bloomberg LP."> + EuroCentralBank <"The European Central Bank."> + FederalReserve <"The Federal Reserve, the central bank of the United States."> + FHLBSF <"The Federal Home Loan Bank of San Francisco, or its successor."> + ICESWAP <"ICESWAP Rate Administrator which means ICE Benchmark Administration, or any successor thereto, as administrator of the ICE Swap Rate."> + ISDA <"International Swaps and Derivatives Association, Inc."> + Refinitiv <"Refinitiv, formerly Thomson Reuters Financial & Risk."> + ReserveBankAustralia <"The Reserve Bank of Australia."> + ReserveBankNewZealand <"The Reserve Bank of New Zealand."> + Reuters <"Reuters Group Plc."> + SAFEX <"South African Futures Exchange, or its successor."> + Telerate <"Telerate, Inc."> + TOKYOSWAP <"The Tokyo Swap Reference Rate (or TSR) Administrator, which means Refinitiv Asia Pacific Limited, or any successor thereto, as administrator of the TSR."> + +enum CsaTypeEnum: <"How is the Creadit Support Annex defined for this transaction as defined in the 2021 ISDA Definitions, section 18.2.1 "> + NoCSA displayName "NoCSA" <"There is no CSA applicable"> + ExistingCSA displayName "ExistingCSA" <"Thre is an existing Credit Support Annex"> + ReferenceVMCSA displayName "ReferenceVMCSA" <"There is a bilateral Credit Support Annex specific to the transaction"> + +enum BusinessCenterEnum: <"The enumerated values to specify the business centers."> + AEAD <"Abu Dhabi, United Arab Emirates"> + AEDU <"Dubai, United Arab Emirates"> + AMYE <"Yerevan, Armenia"> + AOLU <"Luanda, Angola"> + ARBA <"Buenos Aires, Argentina"> + ATVI <"Vienna, Austria"> + AUAD <"Adelaide, Australia"> + AUBR <"Brisbane, Australia"> + AUCA <"Canberra, Australia"> + AUDA <"Darwin, Australia"> + AUME <"Melbourne, Australia"> + AUPE <"Perth, Australia"> + AUSY <"Sydney, Australia"> + BBBR <"Bridgetown, Barbados"> + BDDH <"Dhaka, Bangladesh"> + BEBR <"Brussels, Belgium"> + BGSO <"Sofia, Bulgaria"> + BHMA <"Manama, Bahrain"> + BMHA <"Hamilton, Bermuda"> + BNBS <"Bandar Seri Begawan, Brunei"> + BOLP <"La Paz, Bolivia"> + BRBD <"Brazil Business Day. This means a business day in any of Sao Paulo, Rio de Janeiro or Brasilia not otherwise declared as a financial market holiday by the Bolsa de Mercadorias & Futuros (BM&F)"> + BRBR <"Brasilia, Brazil"> + BRRJ <"Rio de Janeiro, Brazil"> + BRSP <"Sao Paulo, Brazil"> + BSNA <"Nassau, Bahamas"> + BWGA <"Gaborone, Botswana"> + BYMI <"Minsk, Belarus"> + CACL <"Calgary, Canada"> + CAMO <"Montreal, Canada"> + CAOT <"Ottawa, Canada"> + CATO <"Toronto, Canada"> + CAVA <"Vancouver, Canada"> + CAWI <"Winnipeg, Canada"> + CHBA <"Basel, Switzerland"> + CHGE <"Geneva, Switzerland"> + CHZU <"Zurich, Switzerland"> + CIAB <"Abidjan, Cote d\'Ivoire"> + CLSA <"Santiago, Chile"> + CNBE <"Beijing, China"> + CNSH <"Shanghai, China"> + COBO <"Bogota, Colombia"> + CRSJ <"San Jose, Costa Rica"> + CYNI <"Nicosia, Cyprus"> + CZPR <"Prague, Czech Republic"> + DECO <"Cologne, Germany"> + DEDU <"Dusseldorf, Germany"> + DEFR <"Frankfurt, Germany"> + DEHH <"Hamburg, Germany"> + DELE <"Leipzig, Germany"> + DEMA <"Mainz, Germany"> + DEMU <"Munich, Germany"> + DEST <"Stuttgart, Germany"> + DKCO <"Copenhagen, Denmark"> + DOSD <"Santo Domingo, Dominican Republic"> + DZAL <"Algiers, Algeria"> + EETA <"Tallinn, Estonia"> + EGCA <"Cairo, Egypt"> + ESAS <"ESAS Settlement Day (as defined in 2006 ISDA Definitions Section 7.1 and Supplement Number 15 to the 2000 ISDA Definitions)"> + ESBA <"Barcelona, Spain"> + ESMA <"Madrid, Spain"> + ETAA <"Addis Ababa, Ethiopia"> + EUTA <"TARGET (euro 'Business Center')"> + FIHE <"Helsinki, Finland"> + FRPA <"Paris, France"> + GBED <"Edinburgh, Scotland"> + GBLO <"London, United Kingdom"> + GETB <"Tbilisi, Georgia"> + GGSP <"Saint Peter Port, Guernsey"> + GHAC <"Accra, Ghana"> + GRAT <"Athens, Greece"> + HKHK <"Hong Kong, Hong Kong"> + HNTE <"Tegucigalpa, Honduras"> + HRZA <"Zagreb, Republic of Croatia"> + HUBU <"Budapest, Hungary"> + IDJA <"Jakarta, Indonesia"> + IEDU <"Dublin, Ireland"> + ILJE <"Jerusalem, Israel"> + ILTA <"Tel Aviv, Israel"> + INBA <"Bangalore, India"> + INCH <"Chennai, India"> + INHY <"Hyderabad, India"> + INKO <"Kolkata, India"> + INMU <"Mumbai, India"> + INND <"New Delhi, India"> + IRTE <"Tehran, Iran"> + ISRE <"Reykjavik, Iceland"> + ITMI <"Milan, Italy"> + ITRO <"Rome, Italy"> + ITTU <"Turin, Italy"> + JESH <"St. Helier, Channel Islands, Jersey"> + JMKI <"Kingston, Jamaica"> + JOAM <"Amman, Jordan"> + JPTO <"Tokyo, Japan"> + KENA <"Nairobi, Kenya"> + KRSE <"Seoul, Republic of Korea"> + KWKC <"Kuwait City, Kuwait"> + KYGE <"George Town, Cayman Islands"> + KZAL <"Almaty, Kazakhstan"> + LBBE <"Beirut, Lebanon"> + LKCO <"Colombo, Sri Lanka"> + LULU <"Luxembourg, Luxembourg"> + LVRI <"Riga, Latvia"> + MACA <"Casablanca, Morocco"> + MARA <"Rabat, Morocco"> + MCMO <"Monaco, Monaco"> + MOMA <"Macau, Macao"> + MTVA <"Valletta, Malta"> + MUPL <"Port Louis, Mauritius"> + MVMA <"Male, Maldives"> + MWLI <"Lilongwe, Malawi"> + MXMC <"Mexico City, Mexico"> + MYKL <"Kuala Lumpur, Malaysia"> + MYLA <"Labuan, Malaysia"> + NAWI <"Windhoek, Namibia"> + NGAB <"Abuja, Nigeria"> + NGLA <"Lagos, Nigeria"> + NLAM <"Amsterdam, Netherlands"> + NLRO <"Rotterdam, Netherlands"> + NOOS <"Oslo, Norway"> + NPKA <"Kathmandu, Nepal"> + NYFD <"New York Fed Business Day (as defined in 2006 ISDA Definitions Section 1.9 and 2000 ISDA Definitions Section 1.9)"> + NYSE <"New York Stock Exchange Business Day (as defined in 2006 ISDA Definitions Section 1.10 and 2000 ISDA Definitions Section 1.10)"> + NZAU <"Auckland, New Zealand"> + NZWE <"Wellington, New Zealand"> + OMMU <"Muscat, Oman"> + PAPC <"Panama City, Panama"> + PELI <"Lima, Peru"> + PHMA <"Manila, Philippines"> + PHMK <"Makati, Philippines"> + PKKA <"Karachi, Pakistan"> + PLWA <"Warsaw, Poland"> + PRSJ <"San Juan, Puerto Rico"> + PTLI <"Lisbon, Portugal"> + QADO <"Doha, Qatar"> + ROBU <"Bucarest, Romania"> + RSBE <"Belgrade, Serbia"> + RUMO <"Moscow, Russian Federation"> + SAAB <"Abha, Saudi Arabia"> + SAJE <"Jeddah, Saudi Arabia"> + SARI <"Riyadh, Saudi Arabia"> + SEST <"Stockholm, Sweden"> + SGSI <"Singapore, Singapore"> + SILJ <"Ljubljana, Slovenia"> + SKBR <"Bratislava, Slovakia"> + SNDA <"Dakar, Senegal"> + SVSS <"San Salvador, El Salvador"> + THBA <"Bangkok, Thailand"> + TNTU <"Tunis, Tunisia"> + TRAN <"Ankara, Turkey"> + TRIS <"Istanbul, Turkey"> + TTPS <"Port of Spain, Trinidad and Tobago"> + TWTA <"Taipei, Taiwan"> + TZDA <"Dar es Salaam, Tanzania"> + TZDO <"Dodoma, Tanzania"> + UAKI <"Kiev, Ukraine"> + UGKA <"Kampala, Uganda"> + USBO <"Boston, Massachusetts, United States"> + USCH <"Chicago, United States"> + USCR <"Charlotte, North Carolina, United States"> + USDC <"Washington, District of Columbia, United States"> + USDN <"Denver, United States"> + USDT <"Detroit, Michigan, United States"> + USGS <"U.S. Government Securities Business Day (as defined in 2006 ISDA Definitions Section 1.11 and 2000 ISDA Definitions Section 1.11)"> + USHL <"Honolulu, Hawaii, United States"> + USHO <"Houston, United States"> + USLA <"Los Angeles, United States"> + USMB <"Mobile, Alabama, United States"> + USMN <"Minneapolis, United States"> + USNY <"New York, United States"> + USPO <"Portland, Oregon, United States"> + USSA <"Sacramento, California, United States"> + USSE <"Seattle, United States"> + USWT <"Wichita, United States"> + UYMO <"Montevideo, Uruguay"> + VECA <"Caracas, Venezuela"> + VGRT <"Road Town, Virgin Islands (British)"> + VNHA <"Hanoi, Vietnam"> + VNHC <"Ho Chi Minh (formerly Saigon), Vietnam"> + YEAD <"Aden, Yemen"> + ZAJO <"Johannesburg, South Africa"> + ZMLU <"Lusaka, Zambia"> + ZWHA <"Harare, Zimbabwe"> + + // CommodityCenters + ADSM <"Abu Dhabi Securities Exchange https://www.adx.ae/"> + AGRUSFMB <"Argus Media Fertilizer Reports. http://www.argusmedia.com/Fertilizer"> + APPI <"Per 2005 ISDA Commodity Definitions, Section 7.2 Certain Definitions Relating To Commodity Reference Prices"> + ARGUSCRUDE <"Per 2005 ISDA Commodity Definitions, Section 7.2 Certain Definitions Relating To Commodity Reference Prices"> + ARGUSEUROPEANGAS <"Per 2005 ISDA Commodity Definitions, Section 7.2 Certain Definitions Relating To Commodity Reference Prices"> + ARGUSEUROPEANPRODUCTS <"Per 2005 ISDA Commodity Definitions, Section 7.2 Certain Definitions Relating To Commodity Reference Prices"> + ARGUSINTERNATIONALLPG <"Per 2005 ISDA Commodity Definitions, Section 7.2 Certain Definitions Relating To Commodity Reference Prices"> + ARGUSMCCLOSKEYSCOALREPORT <"Per 2005 ISDA Commodity Definitions, Section 7.2 Certain Definitions Relating To Commodity Reference Prices."> + ARGUSUSPRODUCTS <"The Argus US Products report. http://www.argusmedia.com/Petroleum/Petroleum-Products/Argus-US-Products"> + ASX <"Australian Securities Exchange http://www.asx.com.au/"> + AWB <"Australian Wheat Board. www.awb.com.au"> + AWEX <"Australian Wool Exchange. http://www.awex.com.au/home.html"> + BALTICEXCHANGE <"Per 2005 ISDA Commodity Definitions, Section 7.2 Certain Definitions Relating To Commodity Reference Prices."> + BANKNEGARAMALAYSIAPOLICYCOMMITTEE <"The business calendar of the Bank Negara Malaysia Policy Committee."> + BELPEX <"The business calendar for the Belpex power exchange (www.belpex.be)."> + BLUENEXT <"BlueNext Power Market."> + BMandF <"Per 2005 ISDA Commodity Definitions, Section 7.2 Certain Definitions Relating To Commodity Reference Prices."> + BURSAMALAYSIASETTLEMENT <"The settlement business calendar for Bursa Malaysia."> + BURSAMALAYSIATRADING <"The trading business calendar for Bursa Malaysia."> + CANADIANGASPRICEREPORTER <"Per 2005 ISDA Commodity Definitions, Section 7.2 Certain Definitions Relating To Commodity Reference Prices"> + CBOTSOFT <"Per 2005 ISDA Commodity Definitions, Section 7.2 Certain Definitions Relating To Commodity Reference Prices."> + CMAIAROMATICSMARKETREPORT <"Per 2005 ISDA Commodity Definitions, Section 7.2 Certain Definitions Relating To Commodity Reference Prices."> + CMAIGLOBALPLASTICSANDPOLYMERSMARKETREPORT <"CMAI Global Plastics and Polymers Market Report. http://www.ihs.com/products/chemical/index.aspx?pu=1&rd=cmai"> + CMAIMETHANOLMARKETREPORT <"Per 2005 ISDA Commodity Definitions, Section 7.2 Certain Definitions Relating To Commodity Reference Prices."> + CMAIMONOMERSMARKETREPORT <"CMAI Monomers Market Report. http://www.ihs.com/products/chemical/index.aspx?pu=1&rd=cmai"> + CMEDAIRY <"Per 2005 ISDA Commodity Definitions, Section 7.2 Certain Definitions Relating To Commodity Reference Prices."> + CMENONDAIRYSOFT <"Per 2005 ISDA Commodity Definitions, Section 7.2 Certain Definitions Relating To Commodity Reference Prices."> + COMEX <"Per 2005 ISDA Commodity Definitions, Section 7.2 Certain Definitions Relating To Commodity Reference Prices."> + CRU <"Per 2005 ISDA Commodity Definitions, Section 7.2 Certain Definitions Relating To Commodity Reference Prices."> + CRULONG <"Per 2005 ISDA Commodity Definitions, Section 7.2 Certain Definitions Relating To Commodity Reference Prices."> + DEPARTMENTOFENERGY <"The business calendar for statistical publications by the by the United States Department of Energy (DOE)."> + DEWITTBENZENEDERIVATIVES <"Per 2005 ISDA Commodity Definitions, Section 7.2 Certain Definitions Relating To Commodity Reference Prices."> + DME <" Dubai Mercantile Exchange. http://www.dubaimerc.com/"> + DOWJONES <"Dow Jones US Calendar. http://www.dowjones.com/"> + DOWJONESENERGYSERVICE <"Per 2005 ISDA Commodity Definitions, Section 7.2 Certain Definitions Relating To Commodity Reference Prices."> + DowJonesPower <"Per 2005 ISDA Commodity Definitions, Section 7.2 Certain Definitions Relating To Commodity Reference Prices."> + EEXCOAL <"European Energy Exchange-Coal"> + EEXEMISSIONS <"European Energy Exchange-Emissions Rights"> + EEXGAS <"European Energy Exchange-Gas"> + EEXPOWER <"European Energy Exchange-Power"> + EURONEXMATIF <"TBD."> + FERTECON <"FERTECON Limited Information Services. http://fertecon.com/current_information_services.asp"> + FERTILIZERWEEK <"Fertilizer Week. http://www.crugroup.com/market-analysis/products/fertilizerweek"> + GASDAILY <"Per 2005 ISDA Commodity Definitions, Section 7.2 Certain Definitions Relating To Commodity Reference Prices."> + GASDAILYPRICEGUIDE <"Per 2005 ISDA Commodity Definitions, Section 7.2 Certain Definitions Relating To Commodity Reference Prices."> + GLOBALCOAL <"Per 2005 ISDA Commodity Definitions, Section 7.2 Certain Definitions Relating To Commodity Reference Prices."> + HERENREPORT <"Per 2005 ISDA Commodity Definitions, Section 7.2 Certain Definitions Relating To Commodity Reference Prices."> + ICE10XDAILY <"Per 2005 ISDA Commodity Definitions, Section 7.2 Certain Definitions Relating To Commodity Reference Prices."> + ICE10XMONTHLY <"Per 2005 ISDA Commodity Definitions, Section 7.2 Certain Definitions Relating To Commodity Reference Prices."> + ICECANADA <"Per 2005 ISDA Commodity Definitions, Section 7.2 Certain Definitions Relating To Commodity Reference Prices."> + ICEECX <"European Climate Exchange."> + ICEGAS <"Per 2005 ISDA Commodity Definitions, Section 7.2 Certain Definitions Relating To Commodity Reference Prices."> + ICEOIL <"The business calendar oil and refined product contracts on ICE Futures Europe."> + ICEUSAGRICULTURAL <"Per 2005 ISDA Commodity Definitions, Section 7.2 Certain Definitions Relating To Commodity Reference Prices."> + ICISPRICINGBENZENEEUROPE <"The business calendar for publication of ICIS Benzene (Europe) data."> + ICISPRICINGETHYLENEEUROPE <"The business calendar for publication of ICIS Ethylene (Europe) data."> + ICISPRICINGPOLYPROPYLENEEUROPE <"The business calendar for publication of ICIS Polyproylene (Europe) data."> + INSIDEFERC <"Per 2005 ISDA Commodity Definitions, Section 7.2 Certain Definitions Relating To Commodity Reference Prices."> + JAPANMOFTSRR <"Per 2005 ISDA Commodity Definitions, Section 7.2 Certain Definitions Relating To Commodity Reference Prices."> + KCBOT <"Per 2005 ISDA Commodity Definitions, Section 7.2 Certain Definitions Relating To Commodity Reference Prices."> + KUALALUMPURBANK <"The banking business calendar in Kuala Lumpur."> + LABUANBANK <"The business calendar for the Labuan Bank (Malaysia)."> + LIFFELONDONSOFT <"Per 2005 ISDA Commodity Definitions, Section 7.2 Certain Definitions Relating To Commodity Reference Prices."> + LME <"Per 2005 ISDA Commodity Definitions, Section 7.2 Certain Definitions Relating To Commodity Reference Prices."> + LONDONBULLIONMARKET <"Per 2005 ISDA Commodity Definitions, Section 7.2 Certain Definitions Relating To Commodity Reference Prices."> + LONDONBULLIONMARKETGOLDAMONLY <"Per 2005 ISDA Commodity Definitions, Section 7.2 Certain Definitions Relating To Commodity Reference Prices."> + LONDONPLATINUMPALLADIUMMARKET <"The London Platinum and Palladium Market in London on which members quote prices for the buying and selling of Platinum and Palladium."> + MGEX <"Minneapolis Grain Exchange http://www.mgex.com/"> + N2EX <"The business calendar for the N2EX UK power exchange (https://www.n2ex.com/aboutn2ex)."> + NASDAQOMX <"NASDAQ-OMX (Formerly known as Nordpool). http://www.nasdaqomx.com/commodities"> + NATURALGASWEEK <"Per 2005 ISDA Commodity Definitions, Section 7.2 Certain Definitions Relating To Commodity Reference Prices."> + NERC <"Per 2005 ISDA Commodity Definitions, Article XIV."> + NGI <"Per 2005 ISDA Commodity Definitions, Section 7.2 Certain Definitions Relating To Commodity Reference Prices."> + NGX <"Per 2005 ISDA Commodity Definitions, Section 7.2 Certain Definitions Relating To Commodity Reference Prices."> + NUCLEARMARKETREVIEW <"The Nuclear Market Review report as published by Trade tech. http://www.uranium.info/nuclear_market_review.php"> + NYMEXELECTRICITY <"Per 2005 ISDA Commodity Definitions, Section 7.2 Certain Definitions Relating To Commodity Reference Prices."> + NYMEXGAS <"Per 2005 ISDA Commodity Definitions, Section 7.2 Certain Definitions Relating To Commodity Reference Prices."> + NYMEXNATURALGAS <"Per 2005 ISDA Commodity Definitions, Section 7.2 Certain Definitions Relating To Commodity Reference Prices."> + NYMEXOIL <"Per 2005 ISDA Commodity Definitions, Section 7.2 Certain Definitions Relating To Commodity Reference Prices."> + OFFICIALBOARDMARKETS <"Per 2005 ISDA Commodity Definitions, Section 7.2 Certain Definitions Relating To Commodity Reference Prices."> + OPISLPGAS <"Per 2005 ISDA Commodity Definitions, Section 7.2 Certain Definitions Relating To Commodity Reference Prices."> + OPISPROPANE <"Per 2005 ISDA Commodity Definitions, Section 7.2 Certain Definitions Relating To Commodity Reference Prices."> + PAPERPACKAGINGMONITOR <"Per 2005 ISDA Commodity Definitions, Section 7.2 Certain Definitions Relating To Commodity Reference Prices."> + PAPERTRADER <"Per 2005 ISDA Commodity Definitions, Section 7.2 Certain Definitions Relating To Commodity Reference Prices."> + PERTAMINA <"Pertamina-Indonesia. http://www.pertamina.com/"> + PETROCHEMWIRE <"PetroChemWire Publication Calendar. http://www.petrochemwire.com/"> + PIXPULPBENCHMARKINDICES <"Per 2005 ISDA Commodity Definitions, Section 7.2 Certain Definitions Relating To Commodity Reference Prices"> + PLATTSAPAGMARKETSCAN <"Per 2005 ISDA Commodity Definitions, Section 7.2 Certain Definitions Relating To Commodity Reference Prices"> + PLATTSBUNKERWIRE <"Per 2005 ISDA Commodity Definitions, Section 7.2 Certain Definitions Relating To Commodity Reference Prices"> + PLATTSCLEANTANKERWIRE <"Per 2005 ISDA Commodity Definitions, Section 7.2 Certain Definitions Relating To Commodity Reference Prices"> + PLATTSCRUDEOILMARKETWIRE <"Per 2005 ISDA Commodity Definitions, Section 7.2 Certain Definitions Relating To Commodity Reference Prices"> + PLATTSDIRTYTANKERWIRE <"Per 2005 ISDA Commodity Definitions, Section 7.2 Certain Definitions Relating To Commodity Reference Prices"> + PLATTSEUROPEANGAS <"Per 2005 ISDA Commodity Definitions, Section 7.2 Certain Definitions Relating To Commodity Reference Prices"> + PLATTSEUROPEANMARKETSCAN <"Per 2005 ISDA Commodity Definitions, Section 7.2 Certain Definitions Relating To Commodity Reference Prices"> + PLATTSMETALSALERT <"Per 2005 ISDA Commodity Definitions, Section 7.2 Certain Definitions Relating To Commodity Reference Prices"> + PLATTSOILGRAM <"Per 2005 ISDA Commodity Definitions, Section 7.2 Certain Definitions Relating To Commodity Reference Prices"> + PLATTSTSIIRONORE <"The Steel Index Iron Ore Service. http://www.thesteelindex.com/en/iron-ore"> + PLATTSTSISCRAP <"The Steel Index Scrap Reference Prices. http://www.thesteelindex.com/en/scrapprices"> + PLATTSTSISTEEL <"The Steel Index. http://www.thesteelindex.com/en/price-specifications"> + PLATTSUSMARKETSCAN <"Per 2005 ISDA Commodity Definitions, Section 7.2 Certain Definitions Relating To Commodity Reference Prices."> + PULPANDPAPERINTERNATIONAL <"Per 2005 ISDA Commodity Definitions, Section 7.2 Certain Definitions Relating To Commodity Reference Prices."> + PULPANDPAPERWEEK <"Per 2005 ISDA Commodity Definitions, Section 7.2 Certain Definitions Relating To Commodity Reference Prices."> + RIMPRODUCTSINTELLIGENCEDAILY <"Per 2005 ISDA Commodity Definitions, Section 7.2 Certain Definitions Relating To Commodity Reference Prices."> + SAFEXSOFT <"Per 2005 ISDA Commodity Definitions, Section 7.2 Certain Definitions Relating To Commodity Reference Prices."> + SFESOFT <"Per 2005 ISDA Commodity Definitions, Section 7.2 Certain Definitions Relating To Commodity Reference Prices."> + SGX <"Singapore Exchange. www.sgx.com"> + SICOM <"Per 2005 ISDA Commodity Definitions, Section 7.2 Certain Definitions Relating To Commodity Reference Prices."> + SPGSCI <"Standard and Poor's GSCI. http://us.spindices.com/index-family/commodities/sp-gsci"> + STATISTICHESBUNDESAMT <"Per 2005 ISDA Commodity Definitions, Section 7.2 Certain Definitions Relating To Commodity Reference Prices."> + TGE <"Tokyo Grain Exchange. www.tge.or.jp"> + TOCOMOIL <"Per 2005 ISDA Commodity Definitions, Section 7.2 Certain Definitions Relating To Commodity Reference Prices."> + TOCOMPRECIOUS <"Per 2005 ISDA Commodity Definitions, Section 7.2 Certain Definitions Relating To Commodity Reference Prices."> + TOCOMSOFT <"Per 2005 ISDA Commodity Definitions, Section 7.2 Certain Definitions Relating To Commodity Reference Prices."> + UXWEEKLY <"The Ux Consulting Company. http://www.uxc.com/products/uxw_overview.aspx"> + WORLDPULPMONTHLY <"Per 2005 ISDA Commodity Definitions, Section 7.2 Certain Definitions Relating To Commodity Reference Prices."> + +enum QuotationRateTypeEnum: <"The enumerated values to specify the type of quotation rate to be obtained from each cash settlement reference bank."> + Bid <"A bid rate."> + Ask <"An ask rate."> + Mid <"A mid-market rate."> + ExercisingPartyPays <"If optional early termination is applicable to a swap transaction, the rate, which may be a bid or ask rate, which would result, if seller is in-the-money, in the higher absolute value of the cash settlement amount, or, is seller is out-of-the-money, in the lower absolute value of the cash settlement amount."> + +enum PartyDeterminationEnum: <"The enumerated values to specify how a calculation agent will be determined."> + ExercisingParty <"The party that gives notice of exercise. Per 2000 ISDA Definitions, Section 11.1. Parties, paragraph (d)."> + NonExercisingParty <"The party that is given notice of exercise. Per 2000 ISDA Definitions, Section 11.1. Parties, paragraph (e)."> + AsSpecifiedInMasterAgreement <"The Calculation Agent is determined by reference to the relevant master agreement."> + AsSpecifiedInStandardTermsSupplement <"The Calculation Agent is determined by reference to the relevant standard terms supplement."> + Both <"Both parties with joined rights to be a calculation agent."> + +enum SettlementRateOptionEnum: <"The enumerated values to specify the settlement rate options as specified in the Annex A to the 1998 FX and Currency Options Definitions."> + ARS_BNAR_ARS01 displayName "ARS.BNAR/ARS01" <"The Spot Rate for a Rate Calculation Date will be the Argentine Peso/U.S. Dollar Specified Rate, expressed as the amount of Argentine Pesos per one U.S. Dollar, for settlement on the same day (or, if such day is not a Business Day in New York, for settlement on the first succeeding day that is a Business Day in both Buenos Aires and New York) which appears on the Reuters Screen BNAR Page at the close of business in Buenos Aires on that Rate Calculation Date."> + ARS_EMTA_INDICATIVE_SURVEY_RATE_ARS04 displayName "ARS.EMTA.INDICATIVE.SURVEY.RATE/ARS04" <"The Spot Rate for a Rate Calculation Date will be the Argentine Peso/U.S. Dollar Specified Rate for U.S. Dollars, expressed as the amount of Argentine Pesos per one U.S. Dollar, for settlement on the same day, as published on EMTA's web site (www.emta.org) at approximately 1:00 p.m. (Buenos Aires time), or as soon thereafter as practicable, on such Rate Calculation Date. The Spot Rate shall be calculated by EMTA (or a service provider EMTA may select in its sole discretion) pursuant to the EMTA ARS Indicative Survey Methodology (which means a methodology, dated as of January 2, 2003, as amended from time to time, for a centralized industry-wide survey of financial institutions that are active participants in the Argentine Peso/U.S. Dollar markets for the purpose of determining the EMTA ARS Indicative Survey Rate)."> + ARS_EMTA_INDUSTRY_SURVEY_RATE_ARS03 displayName "ARS.EMTA.INDUSTRY.SURVEY.RATE/ARS03" <"The Spot Rate for a Rate Calculation Date will be the Argentine Peso/U.S. Dollar Specified Rate for U.S. Dollars, expressed as the amount of Argentine Pesos per one U.S. Dollar, for settlement on the same day, as published on EMTA's web site (www.emta.org) at approximately 1:00 p.m. (Buenos Aires time), or as soon thereafter as practicable, on such Rate Calculation Date. The Spot Rate shall be calculated by EMTA (or a service provider EMTA may select in its sole discretion) pursuant to the EMTA ARS Industry Survey Methodology (which means a methodology, dated as of January 2, 2003, as amended from time to time, for a centralized industry-wide survey of financial institutions in Buenos Aires that are active participants in the Argentine Peso/U.S. Dollar spot markets for the purpose of determining the EMTA ARS Industry Survey Rate)."> + ARS_MAE_ARS05 displayName "ARS.MAE/ARS05" <"The Spot Rate for a Rate Calculation Date will be the volume weighted average Argentine Peso/U.S. Dollar Rate of all trades executed in the electronic market for a Rate Calculation Day expressed as the amount of Argentine Pesos per one U.S. Dollar, for settlement on the same day, reported by the Mercado Abierto Electronico (the 'MAE') at approximately 3:00 pm, Buenos Aires time, and published on the FOREX-MAE Page as the 'PPN' rate ('Promedio Ponderado Noticiado') on www.mae.com.ar on that Rate Calculation Date."> + ARS_OFFICIAL_RATE_ARS02 displayName "ARS.OFFICIAL.RATE/ARS02" <"The Spot Rate for a Rate Calculation Date will be the Argentine Peso/U.S. Dollar offered rate for U.S. Dollars, expressed as the amount of Argentine Pesos per one U.S. Dollar, for settlement on the same day quoted by Banco de la Nacion (in accordance with the Convertibility Law of March 27, 1991 and Regulatory Decree No. 529/91 of April 1, 1991, as may be amended from time to time) for that Rate Calculation Date."> + BRL_BRBY_BRL01 displayName "BRL.BRBY/BRL01" <"The Spot Rate for a Rate Calculation Date will be the Brazilian Real/U.S. Dollar Specified Rate, expressed as the amount of Brazilian Reais per one U.S. Dollar, for settlement in two Business Days (where such days are Business Days in both Sao Paulo and New York) which appears on the Reuters Screen BRBY Page under the caption 'INTBK FLTING (LAST)' at approximately 11:00 a.m., Sao Paulo time, on that Rate Calculation Date."> + BRL_EMTA_INDICATIVE_SURVEY_RATE_BRL13 displayName "BRL.EMTA.INDICATIVE.SURVEY.RATE/BRL13" <"The Spot Rate for a Rate Calculation Date will be the Brazilian Real/U.S. Dollar Specified Rate for U.S. Dollars, expressed as the amount of Brazilian Reais per one U.S. Dollar, for settlement in two Business Days, as published on EMTA's web site (www.emta.org) at approximately 12:00 p.m. (Sao Paulo time), or as soon thereafter as practicable, on such Rate Calculation Date. The Spot Rate shall be calculated by EMTA (or a service provider EMTA may select in its sole discretion) pursuant to the EMTA BRL Indicative Survey Methodology (which means a methodology, dated as of March 1, 2004, as amended from time to time, for a centralized industry-wide survey of financial institutions that are active participants in the Brazilian Real/U.S. Dollar markets for the purpose of determining the EMTA BRL Indicative Survey Rate)."> + BRL_EMTA_INDUSTRY_SURVEY_RATE_BRL12 displayName "BRL.EMTA.INDUSTRY.SURVEY.RATE/BRL12" <"The Spot Rate for a Rate Calculation Date will be the Brazilian Real/U.S. Dollar Specified Rate for U.S. Dollars, expressed as the amount of Brazilian Reais per one U.S. Dollar, for settlement in two Business Days, as published on EMTA's web site (www.emta.org) at approximately 3:45 p.m. (Sao Paulo time), or as soon thereafter as practicable, on such Rate Calculation Date. The Spot Rate shall be calculated by EMTA (or a service provider EMTA may select in its sole discretion) pursuant to the EMTA BRL Industry Survey Methodology (which means a methodology, dated as of March 1, 2004, as amended from time to time, for a centralized industry-wide survey of financial institutions in Brazil that are active participants in the Brazilian Real/U.S. Dollar spot markets for the purpose of determining the EMTA BRL Industry Survey Rate)."> + BRL_OFFICIAL_RATE_BRL02 displayName "BRL.OFFICIAL.RATE/BRL02" <"The Spot Rate for a Rate Calculation Date will be the Brazilian Real/U.S. Dollar Specified Rate, expressed as the amount of Brazilian Reais per one U.S. Dollar, for settlement in two Business Days (where such days are Business Days in both Sao Paulo and New York) reported by the Banco Central do Brasil in the 'Diario Oficial da Uniao' on the first Business Day following that Rate Calculation Date."> + BRL_PCOT_COMMERCIAL_BRL03 displayName "BRL.PCOT-COMMERCIAL/BRL03" <"The Spot Rate for a Rate Calculation Date will be the Brazilian Real/U.S. Dollar commercial rate, expressed as the amount of Brazilian Reais per one U.S. Dollar, for settlement in two Business Days (where such days are Business Days in both Sao Paulo and New York) reported by the Banco Central do Brasil on SISBACEN Data System under transaction code PCOT- 390, Option 3, at the Specified Time, if any, on that Rate Calculation Date."> + BRL_PCOT_FLOATING_BRL04 displayName "BRL.PCOT-FLOATING/BRL04" <"The Spot Rate for a Rate Calculation Date will be the Brazilian Real/U.S. Dollar floating rate, expressed as the amount of Brazilian Reais per one U.S. Dollar, for settlement in two Business Days (where such days are Business Days in both Sao Paulo and New York) reported by the Banco Central do Brasil on SISBACEN Data System under transaction code PCOT- 390, Option 3, at the Specified Time, if any, on that Rate Calculation Date."> + BRL_PTAX_BRL09 displayName "BRL.PTAX/BRL09" <"The Spot Rate for a Rate Calculation Date will be the Brazilian Real/U.S. Dollar offered rate for U.S. Dollars, expressed as the amount of Brazilian Reais per one U.S. Dollar, for settlement in two Business Days reported by the Banco Central do Brasil on SISBACEN Data System under transaction code PTAX-800 ('Consulta de Cambio' or Exchange Rate Inquiry), Option 5 ('Cotacoes para Contabilidade' or 'Rates for Accounting Purposes') by approximately 6:00 p.m., Sao Paulo time, on that Rate Calculation Date."> + BRL_PTAX_COMMERCIAL_BRL05 displayName "BRL.PTAX-COMMERCIAL/BRL05" <"The Spot Rate for a Rate Calculation Date will be the Brazilian Real/U.S. Dollar commercial rate, expressed as the amount of Brazilian Reais per one U.S. Dollar, for settlement in two Business Days (where such days are Business Days in both Sao Paulo and New York) reported by the Banco Central do Brasil on SISBACEN Data System under transaction code PTAX- 800 ('Consultas de Cambio' or Exchange Rate Inquiry), Option 5 ('Cotacoes para Contabilidad' or Rates for Accounting Purposes) market type 'L' (corresponding to U.S. Dollars traded in the foreign exchange market segment officially denominated 'Livre' and commonly known as 'Comercial') as of 7:30 p.m., Sao Paulo time, on that Rate Calculation Date."> + BRL_PTAX_COMMERCIAL_BRFR_BRL06 displayName "BRL.PTAX-COMMERCIAL.BRFR/BRL06" <"The Spot Rate for a Rate Calculation Date will be the Brazilian Real/U.S. Dollar commercial rate, expressed as the amount of Brazilian Reais per one U.S. Dollar, for settlement in two Business Days (where such days are Business Days in both Sao Paulo and New York) reported by the Banco Central do Brasil which appears on the Reuters Screen BRFR Page at PTAX-800 as of 11:00 a.m., Sao Paulo time, on the first Business Day following that Rate Calculation Date. 23"> + BRL_PTAX_FLOATING_BRL07 displayName "BRL.PTAX-FLOATING/BRL07" <"The Spot Rate for a Rate Calculation Date will be the Brazilian Real/U.S. Dollar floating rate, expressed as the amount of Brazilian Reais per one U.S. Dollar, for settlement in two Business Days (where such days are Business Days in both Sao Paulo and New York) reported by the Banco Central do Brasil on SISBACEN Data System under transaction code PTAX- 800 ('Consultas de Cambio' or Exchange Rate Inquiry), Option 5 ('Cotacoes para Contabilidad' or Rates for Accounting Purposes) market type 'F' (corresponding to U.S. Dollars traded in the foreign exchange market segment officially denominated 'Flutuante') as of 7:30 p.m., Sao Paulo time, on that Rate Calculation Date."> + BRL_PTAX_FLOATING_BRFR_BRL08 displayName "BRL.PTAX-FLOATING.BRFR/BRL08" <"The Spot Rate for a Rate Calculation Date will be the Brazilian Real/U.S. Dollar floating rate, expressed as the amount of Brazilian Reais per one U.S. Dollar, for settlement in two Business Days (where such days are Business Days in both Sao Paulo and New York) reported by the Banco Central do Brasil on the SISBACEN Data System which appears on the Reuters Screen BRFR Page at PTAX-800 as of 11:00 a.m., Sao Paulo time, on the first Business Day following that Rate Calculation Date."> + CLP_BCCH_CLP01 displayName "CLP.BCCH/CLP01" <"The Spot Rate for a Rate Calculation Date will be the Chilean Peso/U.S. Dollar observado rate, expressed as the amount of Chilean Pesos per one U.S. Dollar, for settlement on the same day (or, if such day is not a Business Day in New York, for settlement on the first succeeding day that is a Business Day in both Santiago and New York) reported by the Banco Central de Chile which appears on the Reuters Screen BCCH Page under the caption 'OBSERVADO' at 10:00 a.m., Santiago time, on the first Business Day following that Rate Calculation Date."> + CLP_CHILD_INFORMAL_CLP02 displayName "CLP.CHILD-INFORMAL/CLP02" <"The Spot Rate for a Rate Calculation Date will be the Chilean Peso/U.S. Dollar informal rate, expressed as the amount of Chilean Pesos per one U.S. Dollar, for settlement on the same day (or, if such day is not a Business Day in New York, for settlement on the first succeeding day that is a Business Day in both Santiago and New York) of the informal exchange market which appears on the Reuters Screen CHILD Page at the Specified Time, if any, on that Rate Calculation Date."> + CLP_CHILD_INTERBANK_CLP03 displayName "CLP.CHILD-INTERBANK/CLP03" <"The Spot Rate for a Rate Calculation Date will be the Chilean Peso/U.S. Dollar interbank rate, expressed as the amount of Chilean Pesos per one U.S. Dollar, for settlement on the same day (or, if such day is not a Business Day in New York, for settlement on the first succeeding day that is a Business Day in both Santiago and New York) reported by the Banco Central de Chile for the formal exchange market which appears on the Reuters Screen CHILD Page at the Specified Time, if any, on that Rate Calculation Date."> + CLP_CHILD_OBSERVADO_CLP04 displayName "CLP.CHILD-OBSERVADO/CLP04" <"The Spot Rate for a Rate Calculation Date will be the Chilean Peso/U.S. Dollar observado rate, expressed as the amount of Chilean Pesos per one U.S. Dollar, for settlement on the same day (or, if such day is not a Business Day in New York, for settlement on the first succeeding day that is a Business Day in both Santiago and New York) reported by the Banco Central de Chile which appears on the Reuters Screen CHILD Page on the first Business Day following that Rate Calculation Date."> + CLP_CHILG_INFORMAL_CLP05 displayName "CLP.CHILG-INFORMAL/CLP05" <"The Spot Rate for a Rate Calculation Date will be the Chilean Peso/U.S. Dollar informal rate, expressed as the amount of Chilean Pesos per one U.S. Dollar, for settlement on the same day (or, if such day is not a Business Day in New York, for settlement on the first succeeding day that is a Business Day in both Santiago and New York) of the informal exchange market which appears on the Reuters Screen CHILG Page at the Specified Time, if any, on that Rate Calculation Date."> + CLP_CHILG_INTERBANK_CLP06 displayName "CLP.CHILG-INTERBANK/CLP06" <"The Spot Rate for a Rate Calculation Date will be the Chilean Peso/U.S. Dollar interbank rate, expressed as the amount of Chilean Pesos per one U.S. Dollar, for settlement on the same day (or, if such day is not a Business Day in New York, for settlement on the first succeeding day that is a Business Day in both Santiago and New York) reported by the Banco Central de Chile for the formal exchange market which appears on the Reuters Screen CHILG Page at the Specified Time, if any, on that Rate Calculation Date."> + CLP_CHILG_OBSERVADO_CLP07 displayName "CLP.CHILG-OBSERVADO/CLP07" <"The Spot Rate for a Rate Calculation Date will be the Chilean Peso/U.S. Dollar observado rate, expressed as the amount of Chilean Pesos per one U.S. Dollar, for settlement on the same day (or, if such day is not a Business Day in New York, for settlement on the first succeeding day that is a Business Day in both Santiago and New York) reported by the Banco Central de Chile which appears on the Reuters Screen CHILG Page under 'OBSERVADO' at the Specified Time, if any, on the first Business Day following that Rate Calculation Date."> + CLP_DOLAR_OBS_CLP10 displayName "CLP.DOLAR.OBS/CLP10" <"The Spot Rate for a Rate Calculation Date will be the Chilean Peso/U.S. Dollar 'observado' rate, expressed as the amount of Chilean Pesos per one U.S. Dollar, for settlement in one Business Day reported by the Banco Central de Chile (www.bcentral.cl) as the 'Dolar Observado' (Dollar Observado) rate by not later than 10:30 a.m., Santiago time, on the first Business Day following that Rate Calculation Date."> + CLP_EMTA_INDICATIVE_SURVEY_RATE_CLP11 displayName "CLP.EMTA.INDICATIVE.SURVEY.RATE/CLP11" <"The Spot Rate for a Rate Calculation Date will be the Chilean Peso/U.S. Dollar Specified Rate for U.S. Dollars, expressed as the amount of Chilean Pesos per one U.S. Dollar, for settlement on the same day, as published on EMTA's web site (www.emta.org) at approximately 11:00 a.m., Santiago time, or as soon thereafter as practicable, on such Rate Calculation Date. The Spot Rate shall be calculated by EMTA (or a service provider EMTA may select in its sole discretion) pursuant to the EMTA CLP Indicative Survey Methodology (which means a methodology, dated as of August 1, 2006, as amended from time to time, for a centralized industry-wide survey of financial institutions that are active participants in the Chilean Peso/U.S. Dollar markets for the purpose of determining the EMTA CLP Indicative Survey Rate)."> + CLP_OFFICIAL_RATE_CLP08 displayName "CLP.OFFICIAL.RATE/CLP08" <"The Spot Rate for a Rate Calculation Date will be the Chilean Peso/U.S. Dollar Specified Rate, expressed as the amount of Chilean Pesos per one U.S. Dollar (or, if such day is not a Business Day in New York, for settlement on the first succeeding day that is a Business Day in both Santiago and New York), calculated in accordance with Title I, Chapter 1 Number 6 of the Compendium of International Exchange Norms of the Banco Central de Chile and published by the Banco Central de Chile at the Specified Time, if any, on the first Business Day following that Rate Calculation Date."> + CLP_TELERATE_38942_CLP09 displayName "CLP.TELERATE.38942/CLP09" <"The Spot Rate for a Rate Calculation Date will be the Chilean Peso/U.S. Dollar observado rate, expressed as the amount of Chilean Pesos per one U.S. Dollar, for settlement on the same day (or, if such day is not a Business Day in New York, for settlement on the first succeeding day that is a Business Day in both Santiago and New York) reported by the Banco Central de Chile which appears on the Telerate Page 38942 opposite the caption 'Observado' at the Specified Time, if any, on the first Business Day following the Rate Calculation Date."> + CNY_SAEC_CNY01 displayName "CNY.SAEC/CNY01" <"The Spot Rate for a Rate Calculation Date will be the Chinese Renminbi/U.S. Dollar official fixing rate, expressed as the amount of Chinese Renminbi per one U.S. Dollar, for settlement in two Business Days reported by the People's Bank of China, Beijing, People's Republic of China, which appears on the Reuters Screen 'SAEC' Page opposite the symbol 'USDCNY=' at approximately 9:15 a.m., Beijing time, on that Rate Calculation Date."> + CNY_SFEMC_INDICATIVE_SURVEY_RATE_CNY02 displayName "CNY.SFEMC.INDICATIVE.SURVEY.RATE/CNY02" <"The Spot Rate for a Rate Calculation Date will be the Chinese Renminbi/U.S. Dollar Specified Rate for U.S. Dollars, expressed as the amount of Chinese Renminbi per one U.S. Dollar, for settlement in two Business Days, as published on SFEMC's website (www.sfemc.org) at approximately 3:30 p.m. (Singapore time), or as soon thereafter as practicable, on such Rate Calculation Date. The Spot Rate will be calculated by SFEMC (or a service provider SFEMC may select in its sole discretion) pursuant to the SFEMC CNY Indicative Survey Methodology (which means a methodology, dated as of December 1, 2004, as amended from time to time, for a centralized industry-wide survey of financial institutions that are active participants in the Chinese Renminbi/U.S. Dollar markets for the purpose of determining the SFEMC CNY Indicative Survey Rate)."> + COP_CO_COL03_COP01 displayName "COP.CO/COL03/COP01" <"The Spot Rate for a Rate Calculation Date will be the Colombian Peso/U.S. Dollar fixing rate, expressed as the amount of Colombian Pesos per one U.S. Dollar, for settlement on the same day (unless such day is not a Business Day in New York, then for settlement on the first succeeding day that is a Business Day in Bogota and New York) reported by the Colombian Banking Superintendency which appears on the Reuters Screen CO/COL03 Page opposite the caption 'TRCM' ('Tasa de Cierre Representative del Mercado' or closing market price) at 12:00 noon, Bogota time, on the first Business Day following that Rate Calculation Date."> + COP_EMTA_INDICATIVE_SURVEY_RATE_COP03 displayName "COP.EMTA.INDICATIVE.SURVEY.RATE/COP03" <"The Spot Rate for a Rate Calculation Date will be the Colombian Peso/U.S. Dollar Specified Rate for U.S. Dollars, expressed as the amount of Colombian Pesos per one U.S. Dollar, for settlement on the same day, as published on EMTA's web site (www.emta.org) at approximately 11:30 a.m., Bogota time, or as soon thereafter as practicable, on such Rate Calculation Date. The Spot Rate shall be calculated by EMTA (or a service provider EMTA may select in its sole discretion) pursuant to the EMTA COP Indicative Survey Methodology (which means a methodology, dated as of August 1, 2006, as amended from time to time, for a centralized industry-wide survey of financial institutions that are active participants in the Colombian Peso/U.S. Dollar markets for the purpose of determining the EMTA COP Indicative Survey Rate)."> + COP_TRM_COP02 displayName "COP.TRM/COP02" <"The Spot Rate for a Rate Calculation Date will be the Colombian Peso/U.S. Dollar fixing rate, expressed as the amount of Colombian Pesos per one U.S. Dollar, for settlement on the same day reported by the Colombian Financial Superintendency (www.banrep.gov.co) as the 'Tasa Representativa del Mercado (TRM)' (also referred to as the 'Tasa de Cambio Representativa del Mercado' (TCRM)) by not later than 10:30 a.m., Bogota time, on the first Business Day following that Rate Calculation Date."> + CURRENCY_IMPLIED_RATE__ADR__CURA1 displayName "CURRENCY-IMPLIED.RATE.(ADR)/CURA1" <"the Spot Rate for a Rate Calculation Date will be the Reference Currency/U.S. Dollar exchange rate, expressed as the amount of Reference Currency per one U.S. Dollar, determined on the basis of quotations provided by Reference Dealers on that Rate Calculation Date of that day's price of a Specified Company's American Depositary Receipt or American Depositary Receipts (the 'ADR' or 'ADRs', as appropriate) and the price of the local share or shares of such Specified Company of the same type and in the same quantity represented by such ADR or ADRs, as the case may be (the 'Share' or 'Shares', as appropriate). The Calculation Agent will request each of the Reference Dealers to provide a firm quotation of (A) in the case where one ADR represents less than one Share, its bid and offer price (in the Reference Currency) for one Share and its bid and offer price (in U.S. Dollars) for the number of ADRs which represent such Share and (B) in all other cases, its bid and\n\t\t\t\t\toffer price (in the Reference Currency) for the Share or Shares, as the case may be, and its bid and offer price (in U.S. Dollars) for one ADR. If one or more quotations are provided, the rate for a Rate Calculation Date will equal the ratio of (1) the arithmetic mean of the midpoint of the bid and offer prices quoted in the Reference Currency by each Reference Dealer for such Share or Shares, as the case may be, and (2) the arithmetic mean of the midpoint of the bid and offer prices quoted in U.S. Dollars by each Reference Dealer for such ADR or ADRs, as the case may be, subject to an adjustment, if any, by the Calculation Agent to reduce the effect of momentary disparities in the prices of the Share or Shares and the ADR or ADRs, as appropriate. The quotations used to determine the Spot Rate for a Rate Calculation Date will be determined in each case at the Specified Time on the Rate Calculation Date or, if no such time is specified, the time chosen by the\n\t\t\t\t\tCalculation Agent."> + CURRENCY_IMPLIED_RATE__LOCAL_ASSET__CURA2 displayName "CURRENCY-IMPLIED.RATE.(LOCAL.ASSET)/CURA2" <"The Spot Rate for a Rate Calculation Date will be the Reference Currency/Settlement Currency exchange rate, expressed as the amount of Reference Currency per one unit of Settlement Currency, determined on the basis of quotations provided by Reference Dealers on that Rate Calculation Date for that day's price of Local Assets. The Calculation Agent will request each of the Reference Dealers to provide a firm quotation of its bid and offer price (in both the Reference Currency and the Settlement Currency) for an amount of Local Assets whose face value equals the Specified Amount. If one or more quotations are provided, the rate for a Rate Calculation Date will equal the ratio of (A) the arithmetic mean of the midpoint of the bid and offer prices quoted in the Reference Currency by each Reference Dealer for such Local Assets and (B) the arithmetic mean of the midpoint of the bid and offer prices quoted in the Settlement Currency by each Reference Dealer for such\n\t\t\t\t\tLocal Assets. The quotations used to determine the Spot Rate for a Rate Calculation Date will be determined in each case at the Specified Time on the Rate Calculation Date or, if no such time is specified, the time chosen by the Calculation Agent."> + CURRENCY_MUTUAL_AGREEMENT_CURA3 displayName "CURRENCY-MUTUAL.AGREEMENT/CURA3" <"The Spot Rate for a Rate Calculation Date will be the Reference Currency/Settlement Currency Specified Rate, expressed as the amount of the Reference Currency per one unit of Settlement Currency, for settlement on the Settlement Date agreed upon by the parties on or prior to that Rate Calculation Date (or, if different, the day on which rates for that date would, in the ordinary course, be published or announced)."> + CURRENCY_REFERENCE_DEALERS_CURA4 displayName "CURRENCY-REFERENCE.DEALERS/CURA4" <"The Spot Rate for a Rate Calculation Date will be determined on the basis of quotations provided by Reference Dealers on that Rate Calculation Date of that day's Specified Rate, expressed as the amount of Reference Currency per one unit of Settlement Currency, for settlement on the Settlement Date. The Calculation Agent will request the Specified Office of each of the Reference Dealers to provide a firm quotation of its Specified Rate for a transaction where the amount of Reference Currency equals the Specified Amount. If four quotations are provided, the rate for a Rate Calculation Date will be the arithmetic mean of the Specified Rates, without regard to the Specified Rates having the highest and lowest value. If exactly three quotations are provided, the rate for a Rate Calculation Date will be the Specified Rate provided by the Reference Dealer that remains after disregarding the Specified Rates having the highest and lowest values. For this purpose, if\n\t\t\t\t\tmore than one quotation has the same highest value or lowest value, then the Specified Rate of one of such quotations shall be disregarded. If exactly two quotations are provided, the rate for a Rate Calculation Date will be the arithmetic mean of the Specified Rates. If only one quotation is provided, the rate for a Rate Calculation Date will be the Specified Rate quoted by that Reference Dealer. The quotations used to determine the Spot Rate for a Rate Calculation Date will be determined in each case at the Specified Time on that Rate Calculation Date or, if no such time is specified, the time chosen by the Calculation Agent."> + CURRENCY_WHOLESALE_MARKET_CURA5 displayName "CURRENCY-WHOLESALE.MARKET/CURA5" <"The Spot Rate for a Rate Calculation Date will be determined by the Calculation Agent on the basis of that day's Specified Rate, expressed as the amount of Reference Currency per one unit of Settlement Currency, in a legal and customary wholesale market in which there is no, or minimal, Governmental Authority controls or interference, except as a participant in such market."> + ECS_DNRP_ECS01 displayName "ECS.DNRP/ECS01" <"The Spot Rate for a Rate Calculation Date will be the Ecuadorian Sucre/U.S. Dollar Specified Rate, expressed as the amount of Ecuadorian Sucres per one U.S. Dollar, for settlement in one Business Day (where such day is a Business Day in Guayaquil and New York) which appears on Reuters Screen DNRP Page at 12:00 noon, Guayaquil time, on that Rate Calculation Date."> + IDR_ABS_IDR01 displayName "IDR.ABS/IDR01" <"The Spot Rate for a Rate Calculation Date will be the Indonesian Rupiah/U.S. Dollar spot rate at 11:00 a.m., Singapore time, expressed as the amount of Indonesian Rupiah per one U.S. Dollar, for settlement in two Business Days, reported by the Association of Banks in Singapore which appears on the Telerate Page 50157 to the right of the caption 'Spot' under the column 'IDR' at approximately 11:30 a.m., Singapore time, on that Rate Calculation Date."> + IDR_JISDOR_IDR04 displayName "IDR.JISDOR/IDR04" <"The Spot Rate for a Rate Calculation Date will be the Indonesian Rupiah/U.S. Dollar weighted average spot rate in the interbank market based on traded IDR/USD spot foreign exchange transactions during a specified time period which are captured on a real time basis, expressed as the amount of Indonesian Rupiah per one U.S. Dollar, for settlement in two Business Days, published by Bank Indonesia at approximately 10:00 a.m., Jakarta time, on that Rate Calculation Date as the Jakarta Interbank Spot Dollar Rate USD - IDR on Bank Indonesia's website or otherwise made available by Bank Indonesia (or its successor as administrator)."> + IDR_SFEMC_INDICATIVE_SURVEY_RATE_IDR02 displayName "IDR.SFEMC.INDICATIVE.SURVEY.RATE/IDR02" <"The Spot Rate for a Rate Calculation Date will be the Indonesian Rupiah/U.S. Dollar Specified Rate for U.S. Dollars, expressed as the amount of Indonesian Rupiah per one U.S. Dollar, for settlement in two Business Days, as published on SFEMC's website (www.sfemc.org) at approximately 3:30 p.m., Singapore time, or as soon thereafter as practicable, on such Rate Calculation Date. The Spot Rate will be calculated by SFEMC (or a service provider SFEMC may select in its sole discretion) pursuant to the SFEMC IDR Indicative Survey Methodology (which means a methodology, dated as of December 1, 2004, as amended from time to time, for a centralized industry-wide survey of financial institutions that are active participants in the Indonesian Rupiah/U.S. Dollar markets for the purpose of determining the SFEMC IDR Indicative Survey Rate)."> + IDR_VWAP_IDR03 displayName "IDR.VWAP/IDR03" <"The Spot Rate for a Rate Calculation Date will be the Indonesian Rupiah/U.S. Dollar implied spot rate expressed as the amount of Indonesian Rupiah per one U.S. Dollar, for settlement in two Business Days, reported by ABS Benchmarks Administration Co Pte. Ltd. (or its successor as administrator or sponsor of that rate), which appears on Thomson Reuters Screen ABSFIX01 Page at approximately 11:30 a.m., Singapore time, on that Rate Calculation Date."> + ILS_BOIJ_ILS01 displayName "ILS.BOIJ/ILS01" <"The Spot Rate for a Rate Calculation Date will be the Israeli Shekel/U.S. Dollar Specified Rate, expressed as the amount of Israeli Shekels per one U.S. Dollar, for settlement in two Business Days which appears on the Reuters Screen BOIJ Page as of 1:00 p.m., Tel Aviv time, on that Rate Calculation Date."> + ILS_FXIL_ILS02 displayName "ILS.FXIL/ILS02" <"The Spot Rate for a Rate Calculation Date will be the Israeli Shekel/U.S. Dollar Specified Rate, expressed as the amount of Israeli Shekels per one U.S. Dollar, for settlement in two Business Days which appears on the Reuters Screen FXIL Page as of 1:00 p.m., Tel Aviv time, on that Rate Calculation Date."> + INR_FBIL_INR01 displayName "INR.FBIL/INR01" <"The Spot Rate for a Rate Calculation Date will be the Indian Rupee/U.S. Dollar reference rate, expressed as the amount of Indian Rupee per one U.S. Dollar, for settlement in two Business Days, reported by Financial Benchmarks India Pvt. Ltd. (www.fbil.org.in) at approximately 1:30 p.m., Mumbai time, or as soon thereafter as practicable, on that Rate Calculation Date."> + INR_RBIB_INR01 displayName "INR.RBIB/INR01" <"The Spot Rate for a Rate Calculation Date will be the Indian Rupee/U.S. Dollar reference rate, expressed as the amount of Indian Rupee per one U.S. Dollar, for settlement in two Business Days reported by the Reserve Bank of India which appears on the Reuters Screen RBIB Page at approximately 12:30 p.m., Mumbai time, or as soon thereafter as practicable, on that Rate Calculation Date."> + INR_SFEMC_INDICATIVE_SURVEY_RATE_INR02 displayName "INR.SFEMC.INDICATIVE.SURVEY.RATE/INR02" <"The Spot Rate for a Rate Calculation Date will be the Indian Rupee/U.S. Dollar Specified Rate for U.S. Dollars, expressed as the amount of Indian Rupee per one U.S. Dollar, for settlement in two Business Days, as published on SFEMC's website (www.sfemc.org) at approximately 3:30 p.m. (Singapore time), or as soon thereafter as practicable, on such Rate Calculation Date. The Spot Rate will be calculated by SFEMC (or a service provider SFEMC may select in its sole discretion) pursuant to the SFEMC INR Indicative Survey Methodology (which means a methodology, dated as of December 1, 2004, as amended from time to time, for a centralized industry-wide survey of financial institutions that are active participants in the Indian Rupee/U.S. Dollar markets for the purpose of determining the SFEMC INR Indicative Survey Rate)."> + KRW_KEBEY_KRW01 displayName "KRW.KEBEY/KRW01" <"The Spot Rate for a Rate Calculation Date will be the Korean Won/U.S. Dollar Specified Rate, expressed as the amount of Korean Won per one U.S. Dollar, for settlement in two Business Days which appears on the Reuters Screen KEBEY Page at the Specified Time, if any, on that Rate Calculation Date."> + KRW_KFTC18_KRW02 displayName "KRW.KFTC18/KRW02" <"The Spot Rate for a Rate Calculation Date will be the Korean Won/U.S. Dollar market average rate, expressed as the amount of Korean Won per one U.S. Dollar, for settlement in two Business Days reported by the Korea Financial Telecommunications and Clearing Corporation which appears on the Reuters Screen KFTC18 Page to the right of the caption 'USD Today' that is available at approximately 3:30 p.m., Seoul time, on the Rate Calculation Date or as soon thereafter as practicable."> + KRW_SFEMC_INDICATIVE_SURVEY_RATE_KRW04 displayName "KRW.SFEMC.INDICATIVE.SURVEY.RATE/KRW04" <"The Spot Rate for a Rate Calculation Date will be the Korean Won/U.S. Dollar Specified Rate for U.S. Dollars, expressed as the amount of Korean Won per one U.S. Dollar, for settlement in two Business Days, as published on SFEMC's website (www.sfemc.org) at approximately 3:30 p.m., Singapore time, or as soon thereafter as practicable, on such Rate Calculation Date. The Spot Rate will be calculated by SFEMC (or a service provider SFEMC may select in its sole discretion) pursuant to the SFEMC KRW Indicative Survey Methodology (which means a methodology, dated as of December 1, 2004, as amended from time to time, for a centralized industry-wide survey of financial institutions that are active participants in the Korean Won/U.S. Dollar markets for the purpose of determining the SFEMC KRW Indicative Survey Rate)."> + KRW_TELERATE_45644_KRW03 displayName "KRW.TELERATE.45644/KRW03" <"The Spot Rate for a Rate Calculation Date will be the Korean Won/U.S. Dollar market average rate, expressed as the amount of Korean Won per one U.S. Dollar, for settlement in two Business Days reported by the Korea Financial Telecommunications and Clearing Corporation which appears on Telerate Page 45644 to the right of the caption 'USD Today' that is available at approximately 3:30 p.m., Seoul time, on the Rate Calculation Date or as soon thereafter as practicable."> + KZT_EMTA_INDICATIVE_SURVEY_RATE_KZT02 displayName "KZT.EMTA.INDICATIVE.SURVEY.RATE/KZT02" <"The Spot Rate for a Rate Calculation Date will be the Kazakhstan Tenge / U.S. Dollar Specified Rate for U.S. Dollars, expressed as the amount of Kazakhstan Tenge per one U.S. Dollar, for settlement on the same Business Day, as published on EMTA's website (www.emta.org) at approximately 1:00 p.m., Almaty time, or as soon thereafter as practicable, on that Rate Calculation Date. The Spot Rate shall be calculated by EMTA (or a service provider EMTA may select in its sole discretion) pursuant to the EMTA KZT Indicative Survey Methodology (which means a methodology, dated as of March 16, 2009, as amended from time to time, for a centralized industry-wide survey of financial institutions that are active participants in the Kazakhstan Tenge/U.S. Dollar markets for the purpose of determining the EMTA KZT Indicative Survey Rate)."> + KZT_KASE_KZT01 displayName "KZT.KASE/KZT01" <"The Spot Rate for a Rate Calculation Date will be the Kazakhstan Tenge / U.S. Dollar weighted average rate, expressed as the amount of Kazakhstan Tenge per one U.S. Dollar, for settlement on the same Business Day reported by the Kazakhstan Stock Exchange (www.kase.kz) at approximately 11:00 am, Almaty time, on that Rate Calculation Date."> + LBP_BDLX_LBP01 displayName "LBP.BDLX/LBP01" <"The Spot Rate for a Rate Calculation Date will be the Lebanese Pound/U.S. Dollar Specified Rate, expressed as the amount of Lebanese Pounds per one U.S. Dollar, for settlement in two Business Days which appears on the Reuters Screen BDLX Page as of 12:00 noon, Beirut time, on that Rate Calculation Date."> + MAD_OFFICIAL_RATE_MAD01 displayName "MAD.OFFICIAL.RATE/MAD01" <"The Spot Rate for a Rate Calculation Date will be the Moroccan Dirham/U.S. Dollar Specified Rate, expressed as the amount of Moroccan Dirham per one U.S. Dollar, for settlement in two Business Days reported by the Central Bank of Morocco as of 1:00 p.m., Rabat time, on that Rate Calculation Date."> + MXP_BNMX_MXP01 displayName "MXP.BNMX/MXP01" <"The Spot Rate for a Rate Calculation Date will be the Mexican Pesos/U.S. Dollar Specified rate, expressed as the amount of Mexican Pesos per one U.S. Dollar, for settlement in two Business Days reported by Banco de Mexico which appears on the Reuters Screen BNMX Page opposite the caption 'Fix' at the close of business in Mexico City on that Rate Calculation Date."> + MXP_FIXING_RATE_MXP02 displayName "MXP.FIXING.RATE/MXP02" <"The Spot Rate for a Rate Calculation Date will be the Mexican Peso/U.S. Dollar fixing rate, expressed as the amount of Mexican Pesos per one U.S. Dollar, for settlement in two Business Days which is published by Banco de Mexico in the Official Gazette of the Federation pursuant to the 'Disposiciones aplicables a la determinacion del tipo de Cambio para solventar obligaciones denominadas en moneda extranjera pagaderas en la Republica Mexicana' (Rules applicable to determine the exchange rate to pay obligations denominated in foreign currency payable in Mexico) on the first Business Day following that Rate Calculation Date."> + MXP_MEX01_MXP03 displayName "MXP.MEX01/MXP03" <"The Spot Rate for a Rate Calculation Date will be the Mexican Peso/U.S. Dollar fixing rate, expressed as the amount of Mexican Pesos per one U.S. Dollar, for settlement in two Business Days reported by Banco de Mexico which appears on Reuters Screen MEX01 Page under the heading 'MXNFIX=RR', at the close of business in Mexico City on that Rate Calculation Date."> + MXP_PUBLISHED_MXP04 displayName "MXP.PUBLISHED/MXP04" <"The Spot Rate for a Rate Calculation Date will be the Mexican Peso/U.S. Dollar fixing rate, expressed as the amount of Mexican Pesos per one U.S. Dollar, for settlement in two Business Days which is published by the Bolsa Mexicana de Valores, S.A. de C.V. (as established in Section 2 of the 'Resolution concerning the exchange rate applicable for calculating the Mexican Peso equivalent of principal and interest of Mexican Treasury Notes denominated in foreign currency and payable in Mexican Pesos' published in the Diario Oficial de la Federacion on November 11, 1991) in the Movimiento Diario del Mercado de Valores de la Bolsa Mexicana de Valores, S.A. de C.V. under the heading 'Movimiento Diario del Mercado de Valores' on that Rate Calculation Date."> + MYR_ABS_MYR01 displayName "MYR.ABS/MYR01" <"The Spot Rate for a Rate Calculation Date will be the Malaysian Ringgit/U.S. Dollar spot rate at 11:00 a.m., Singapore time, expressed as the amount of Malaysian Ringgit per one U.S. Dollar, for settlement in two Business Days, reported by the Association of Banks in Singapore, which appears on the Telerate Page 50157 to the right of the caption 'Spot' under the column 'MYR' at approximately 11:30 a.m., Singapore time, on that Rate Calculation Date."> + MYR_KL_REF_MYR04 displayName "MYR.KL.REF/MYR04" <"The Spot Rate for a Rate Calculation Date will be the Malaysian Ringgit/U.S. Dollar reference rate, expressed as the amount of Malaysian Ringgit per one U.S. Dollar, for settlement in two Business Days, calculated and reported by Bank Negara Malaysia as its Kuala Lumpur USD/MYR Reference Rate, which appears on Thomson Reuters Screen MYRFIX2 Page at approximately 3:30 p.m., Kuala Lumpur time, on that Rate Calculation Date."> + MYR_PPKM_MYR03 displayName "MYR.PPKM/MYR03" <"The Spot Rate for a Rate Calculation Date will be the Malaysian Ringgit/U.S. Dollar spot rate expressed as the amount of Malaysian Ringgit per one U.S. Dollar, for settlement in two Business Days, reported by Persatuan Pasaran Kewangan Malaysia (ACI - Malaysia), which appears on Thomson Reuters Screen MYRFIX2 Page at approximately 11:10 a.m., Kuala Lumpur time, on that Rate Calculation Date."> + MYR_SFEMC_INDICATIVE_SURVEY_RATE_MYR02 displayName "MYR.SFEMC.INDICATIVE.SURVEY.RATE/MYR02" <"The Spot Rate for a Rate Calculation Date will be the Malaysian Ringgit/U.S. Dollar Specified Rate for U.S. Dollars, expressed as the amount of Malaysian Ringgit per one U.S. Dollar, for settlement in two Business Days, as published on SFEMC's website (www.sfemc.org) at approximately 3:30 p.m., Singapore time, or as soon thereafter as practicable, on such Rate Calculation Date. The Spot Rate will be calculated by SFEMC (or a service provider SFEMC may select in its sole discretion) pursuant to the SFEMC MYR Indicative Survey Methodology (which means a methodology, dated as of July 15, 2005, as amended from time to time, for a centralized industry-wide survey of financial institutions that are active participants in the Malaysian Ringgit/U.S. Dollar markets for the purpose of determining the SFEMC MYR Indicative Survey Rate)."> + PEN_EMTA_INDICATIVE_SURVEY_RATE_PEN04 displayName "PEN.EMTA.INDICATIVE.SURVEY.RATE/PEN04" <"The Spot Rate for a Rate Calculation Date will be the Peruvian Sol/U.S. Dollar Specified Rate for U.S. Dollars, expressed as the amount of Peruvian Soles per one U.S. Dollar, for settlement on the same day, as published on EMTA's web site (www.emta.org) at approximately 11:00 a.m., Lima time, or as soon thereafter as practicable, on such Rate Calculation Date. The Spot Rate shall be calculated by EMTA (or a service provider EMTA may select in its sole discretion) pursuant to the EMTA PEN Indicative Survey Methodology (which means a methodology, dated as of August 1, 2006, as amended from time to time, for a centralized industry-wide survey of financial institutions that are active participants in the Peruvian Sol/U.S. Dollar markets for the purpose of determining the EMTA PEN Indicative Survey Rate)."> + PEN_INTERBANK_AVE_PEN05 displayName "PEN.INTERBANK.AVE/PEN05" <"The Spot Rate for a Rate Calculation Date will be the Peruvian Sol/U.S. Dollar average exchange rate in the interbank market expressed as the amount of Peruvian New Soles per one U.S. Dollar for settlement on the same day reported by the Banco Central de Reserva del Peru (www.bcrp.gob.pe) as the 'Tipo de Cambio Interbancario Promedio' at approximately 2:00 p.m., Lima time, on that Rate Calculation Date."> + PEN_PDSB_PEN01 displayName "PEN.PDSB/PEN01" <"The Spot Rate for a Rate Calculation Date will be the Peruvian Sol/U.S. Dollar fixing rate (mid market last), expressed as the amount of Peruvian Sols per one U.S. Dollar, for settlement on that same day which appears on the Reuters Screen PDSB Page opposite the caption 'PEN=' as of 12:00 noon, Lima time, on that Rate Calculation Date."> + PEN_WT_AVE_PEN03 displayName "PEN.WT.AVE/PEN03" <"The Spot Rate for a Rate Calculation Date will be the midpoint of the Peruvian Sol/U.S. Dollar closing weighted average bid and offer ('compra y venta') exchange rates expressed as the amount of Peruvian New Soles per one U.S. Dollar for settlement on the same day, reported by the Superintendencia de Banca, Seguros y AFP (www.sbs.gob.pe) of the Republic of Peru at approximately 5:00 p.m., Lima time, on that Rate Calculation Date."> + PHP_BAPPESO_PHP06 displayName "PHP.BAPPESO/PHP06" <"The Spot Rate for a Rate Calculation Date will be the Philippine Peso/U.S. Dollar morning weighted average rate for that Rate Calculation Date, expressed as the amount of Philippine Pesos per one U.S. Dollar, for settlement in one Business Day, sponsored by Bankers Association of the Philippines (www.bap.org.ph) as its 'BAP AM Weighted Average Rate' at approximately 11:30 a.m., Manila time, or as soon thereafter as practicable, on that Rate Calculation Date. "> + PHP_PDSPESO_PHP06 displayName "PHP.PDSPESO/PHP06" <"The Spot Rate for a Rate Calculation Date will be the Philippine Peso/U.S. Dollar morning weighted average rate for that Rate Calculation Date, expressed as the amount of Philippine Pesos per one U.S. Dollar, for settlement in one Business Day reported by the Philippine Dealing System PDEX which appears on the Reuters Screen PDSPESO Page to the right of the caption 'AM WT AVE' at approximately 11:30 a.m., Manila time, or as soon thereafter as practicable, on that Rate Calculation Date."> + PHP_PHPESO_PHP01 displayName "PHP.PHPESO/PHP01" <"The Spot Rate for a Rate Calculation Date will be the Philippine Peso/U.S. Dollar tom rate (mid market), expressed as the amount of Philippine Pesos per one U.S. Dollar, for settlement in one Business Day which appears on the Reuters Screen PHPESO Page at approximately 11:00 a.m., Manila time, on that Rate Calculation Date."> + PHP_SFEMC_INDICATIVE_SURVEY_RATE_PHP05 displayName "PHP.SFEMC.INDICATIVE.SURVEY.RATE/PHP05" <"The Spot Rate for a Rate Calculation Date will be the Philippine Peso/U.S. Dollar Specified Rate for U.S. Dollars, expressed as the amount of Philippine Pesos per one U.S. Dollar, for settlement in one Business Day, as published on SFEMC's website (www.sfemc.org) at approximately 3:30 p.m., Singapore time, or as soon thereafter as practicable, on such Rate Calculation Date. The Spot Rate will be calculated by SFEMC (or a service provider SFEMC may select in its sole discretion) pursuant to the SFEMC PHP Indicative Survey Methodology (which means a methodology, dated as of December 1, 2004, as amended from time to time, for a centralized industry-wide survey of financial institutions that are active participants in the Philippine Peso/U.S. Dollar markets for the purpose of determining the SFEMC PHP Indicative Survey Rate)."> + PHP_TELERATE_15439_PHP03 displayName "PHP.TELERATE.15439/PHP03" <"The Spot Rate for a Rate Calculation Date will be the Philippine Peso/U.S. Dollar tom rate (mid market), expressed as the amount of Philippine Pesos per one U.S. Dollar, for settlement in one Business Day which appears on the Telerate Page 15439 at approximately 11:00 a.m., Manila time, on that Rate Calculation Date."> + PHP_TELERATE_2920_PHP02 displayName "PHP.TELERATE.2920/PHP02" <"The Spot Rate for a Rate Calculation Date will be the Philippine Peso/U.S. Dollar Specified Rate, expressed as the amount of Philippine Pesos per one U.S. Dollar, for settlement in one Business Day which appears on the Telerate Page 2920 at the Specified Time, if any, on that Rate Calculation Date."> + PKR_SBPK_PKR01 displayName "PKR.SBPK/PKR01" <"The Spot Rate for a Rate Calculation Date will be the Pakistani Rupee/U.S. Dollar reference rate expressed as the amount of Pakistani Rupees per one U.S. Dollar, for settlement in two Business Days reported by the State Bank of Pakistan (www.sbp.org.pk) at approximately 2:30 pm, Karachi time, on that Rate Calculation Date."> + PKR_SFEMC_INDICATIVE_SURVEY_RATE_PKR02 displayName "PKR.SFEMC.INDICATIVE.SURVEY.RATE/PKR02" <"The Spot Rate for a Rate Calculation Date will be the Pakistani Rupee/U.S. Dollar Specified Rate for U.S. Dollars, expressed as the amount of Pakistani Rupees per one U.S. Dollar, for settlement in two Business Days, as published on SFEMC's website (www.sfemc.org) at approximately 3:30 p.m. Singapore time, or as soon thereafter as practicable, on that Rate Calculation Date. The Spot Rate shall be calculated by SFEMC (or a service provider SFEMC may select in its sole discretion) pursuant to the SFEMC PKR Indicative Survey Methodology (which means a methodology, dated as of July 14, 2008, as amended from time to time, for a centralized industry-wide survey of financial institutions that are active participants in the Pakistani Rupee/U.S. Dollar markets for the purpose of determining the SFEMC PKR Indicative Survey Rate)."> + PLZ_NBPQ_PLZ01 displayName "PLZ.NBPQ/PLZ01" <"The Spot Rate for a Rate Calculation Date will be the Polish Zloty/U.S. Dollar Specified Rate, expressed as the amount of Polish Zloty per one U.S. Dollar, for settlement in two Business Days reported by the National Bank of Poland which appears on the Reuters Screen NBPQ Page at the Specified Time, if any, on that Rate Calculation Date."> + PLZ_NBPR_PLZ02 displayName "PLZ.NBPR/PLZ02" <"The Spot Rate for a Rate Calculation Date will be the Polish Zloty/U.S. Dollar fixing rate, expressed as the amount of Polish Zloty per one U.S. Dollar, for settlement in two Business Days reported by the National Bank of Poland which appears on the Reuters Screen NBPR Page at the Specified Time, if any, on that Rate Calculation Date."> + RUB_CME_EMTA_RUB03 displayName "RUB.CME-EMTA/RUB03" <"The Spot Rate for a Rate Calculation Date will be the Russian Ruble/U.S. Dollar Specified Rate, expressed as the amount of Russian Rubles per one U.S. Dollar, for settlement in one Business Day, calculated by the Chicago Mercantile Exchange ('CME') and as published on CME's website, which appears on the Reuters Screen EMTA Page, at approximately 1:30 p.m., Moscow time, on that Rate Calculation Date. The Spot Rate shall be calculated by the CME pursuant to the Chicago Mercantile Exchange / EMTA, Inc. Daily Russian Ruble Per U.S. Dollar Reference Rate Methodology (which means a methodology, effective as of June 16, 2005, as amended from time to time, for a centralized industry-wide survey of financial institutions in Russia that are active participants in the Russian Ruble/U.S. Dollar spot market for the purpose of determining the RUB CME-EMTA Rate)."> + RUB_EMTA_INDICATIVE_SURVEY_RATE_RUB04 displayName "RUB.EMTA.INDICATIVE.SURVEY.RATE/RUB04" <"The Spot Rate for a Rate Calculation Date will be the Russian Ruble/U.S. Dollar Specified Rate for U.S. Dollars, expressed as the amount of Russian Rubles per one U.S. Dollar, for settlement in one Business Day, as published on EMTA's web site (www.emta.org) at approximately 2:45 p.m., Moscow time, or as soon thereafter as practicable, on such Rate Calculation Date. The Spot Rate shall be calculated by EMTA (or a service provider EMTA may select in its sole discretion) pursuant to the EMTA RUB Indicative Survey Methodology (which means a methodology dated as of June 16, 2005, as amended from time to time, for a centralized industry-wide survey of financial institutions that are active participants in the Russian Ruble/U.S. Dollar spot market for the purpose of determining the EMTA RUB Indicative Survey Rate)."> + RUB_MICEXFRX_RUB01 displayName "RUB.MICEXFRX/RUB01" <"The Spot Rate for a Rate Calculation Date will be the Russian Ruble/U.S. Dollar Specified Rate, expressed as the amount of Russian Rubies per one U.S. Dollar, for settlement on the same day reported by the Moscow Interbank Currency Exchange which appears on the Reuters Screen MICEXFRX Page as of 10:30 a.m., Moscow time, on that Rate Calculation Date."> + RUB_MMVB_RUB02 displayName "RUB.MMVB/RUB02" <"The Spot Rate for a Rate Calculation Date will be the Russian Ruble/U.S. Dollar Specified Rate, expressed as the amount of Russian Rubies per one U.S. Dollar, for settlement on the same day reported by the Moscow Interbank Currency Exchange which appears on the Reuters Screen MMVB Page as of 10:30 a.m., Moscow time, on that Rate Calculation Date."> + SGD_VWAP_SGD3 displayName "SGD.VWAP/SGD3" <"The Spot Rate for a Rate Calculation Date will be the Singapore Dollar/U.S. Dollar spot rate expressed as the amount of Singapore Dollar per one U.S. Dollar for settlement in two Business Days, reported by ABS Benchmarks Administration Co Pte. Ltd. (or its successor as administrator or sponsor of the rate), which appears on Thomson Reuters Screen ABSFIX01 Page at approximately 11:30 a.m., Singapore time, on that Rate Calculation Date."> + SKK_NBSB_SKK01 displayName "SKK.NBSB/SKK01" <"The Spot Rate for a Rate Calculation Date will be the Slovak Koruna/U.S. Dollar Specified Rate, expressed as the amount of Slovak Koruna per one U.S. Dollar, for settlement in two Business Days reported by the National Bank of Slovakia which appears on the Reuters Screen NBSB Page as of 11:40 a.m., Bratislava time, on that Rate Calculation Date."> + THB_ABS_THB01 displayName "THB.ABS/THB01" <"The Spot Rate for a Rate Calculation Date will be the Thai Baht/U.S. Dollar spot rate at 11:00 a.m., Singapore time, expressed as the amount of Thai Bhaht per one U.S. Dollar, for settlement in two Business Days, reported by the Association of Banks in Singapore which appears on the Reuters Screen ABSIRFIX01 Page to the right of the caption 'Spot' under the column 'THB' at approximately 11:30 a.m., Singapore time, on that Rate Calculation Date."> + THB_VWAP_THB01 displayName "THB.VWAP/THB01" <"The Spot Rate for a Rate Calculation Date will be the Thai Baht / U.S. Dollar spot rate expressed as the amount of Thai Baht per one U.S. Dollar for settlement in two Business Days, reported by ABS Benchmarks Administration Co Pte. Ltd. (or its successor as administrator or sponsor of the rate), which appears on Thomson Reuters Screen ABSFIX01 Page at approximately 11:30 a.m., Singapore time, on that Rate Calculation Date."> + TWD_SFEMC_INDICATIVE_SURVEY_RATE_TWD04 displayName "TWD.SFEMC.INDICATIVE.SURVEY.RATE/TWD04" <"The Spot Rate for a Rate Calculation Date will be the Taiwanese Dollar/U.S. Dollar Specified Rate for U.S. Dollars, expressed as the amount of Taiwanese Dollars per one U.S. Dollar, for settlement in two Business Days, as published on SFEMC's website (www.sfemc.org) at approximately 3:30 p.m., Singapore time, or as soon thereafter as practicable, on such Rate Calculation Date. The Spot Rate will be calculated by SFEMC (or a service provider SFEMC may select in its sole discretion) pursuant to the SFEMC TWD Indicative Survey Methodology (which means a methodology, dated as of December 1, 2004, as amended from time to time, for a centralized industry-wide survey of financial institutions that are active participants in the Taiwanese Dollar/U.S. Dollar markets for the purpose of determining the SFEMC TWD Indicative Survey Rate)."> + TWD_TAIFX1_TWD03 displayName "TWD.TAIFX1/TWD03" <"The Spot Rate for a Rate Calculation Date will be the Taiwanese Dollar/U.S. Dollar spot rate, expressed as the amount of Taiwanese Dollars per one U.S. Dollar, for settlement in two Business Days, reported by the Taipei Forex Inc. which appears on the Reuters Screen TAIFX1 Page under the heading 'Spot' as of 11:00 a.m. Taipei time, on that Rate Calculation Date, or if no rate appears as of 11:00 a.m., Taipei time, the rate that first appears in any of the next succeeding 15 minute intervals after such time, up to and including 12:00 noon, Taipei time on that Rate Calculation Date."> + TWD_TELERATE_6161_TWD01 displayName "TWD.TELERATE.6161/TWD01" <"The Spot Rate for a Rate Calculation Date will be the Taiwanese Dollar/U.S. Dollar spot rate, expressed as the amount of Taiwanese Dollars per one U.S. Dollar, for settlement in two Business Days, reported by the Taipei Forex Inc. which appears on the Telerate Page 6161 under the heading 'Spot' as of 11:00 a.m., Taipei time, on that Rate Calculation Date, or if no rate appears as of 11:00 a.m., Taipei time, the rate that first appears in any of the next succeeding 15 minute intervals after such time, up to and including 12:00 noon, Taipei time, on that Rate Calculation Date."> + TWD_TFEMA_TWD02 displayName "TWD.TFEMA/TWD02" <"The Spot Rate for a Rate Calculation Date will be the Taiwanese Dollar/U.S. Dollar Specified Rate, expressed as the amount of Taiwanese Dollars per one U.S. Dollar, for settlement in two Business Days which appears on the Reuters Screen TFEMA Page as of 11:00 a.m., Taipei time, on that Rate Calculation Date."> + UAH_EMTA_INDICATIVE_SURVEY_RATE_UAH03 displayName "UAH.EMTA.INDICATIVE.SURVEY.RATE/UAH03" <"The Spot Rate for a Rate Calculation Date will be the Ukrainian Hryvnia/U.S. Dollar Specified Rate for U.S. Dollars, expressed as the amount of Ukrainian Hryvnia per one U.S. Dollar, for settlement on the same Business Day, as published on EMTA's website (www.emta.org) at approximately 2:00 p.m., Kiev time, or as soon thereafter as practicable, on that Rate Calculation Date. The Spot Rate shall be calculated by EMTA (or a service provider EMTA may select in its sole discretion) pursuant to the EMTA UAH Indicative Survey Methodology (which means a methodology, dated as of March 16, 2009, as amended from time to time, for a centralized industry-wide survey of financial institutions that are active participants in the Ukrainian Hryvnia / U.S. Dollar markets for the purpose of determining the EMTA UAH Indicative Survey Rate)."> + UAH_EMTA_INDUSTRY_SURVEY_RATE_UAH02 displayName "UAH.EMTA.INDUSTRY.SURVEY.RATE/UAH02" <"The Spot Rate for a Rate Calculation Date will be the Ukrainian Hryvnia/U.S. Dollar Specified Rate for U.S. Dollars expressed as the amount of Ukrainian Hryvnia per one U.S. Dollar, for settlement on the same Business Day calculated by Thomson Reuters pursuant to the EMTA UAH Industry Survey Methodology, which rate appears on EMTA's website (www.emta.org) and on Thomson Reuters Page EMTAUAHFIX at approximately 11:30 am, Kiev time, on that Rate Calculation Date. The 'EMTA UAH Industry Survey Methodology' as used herein means the methodology dated as of March 16, 2009, for a centralized industry wide survey of financial institutions in the Ukrainian Hryvnia/U.S. Dollar spot market for the purposes of determining the EMTA UAH Industry Survey Rate."> + UAH_GFI_UAH01 displayName "UAH.GFI/UAH01" <"The Spot Rate for a Rate Calculation Date will be the Ukrainian Hryvnia/U.S. Dollar spot rate, expressed as the amount of Ukrainian Hryvnia per one U.S. Dollar, for settlement on the same Business Day reported by GFI Brokers on Thomson Reuters Page GFIU by 9:30 am, London time, on that Rate Calculation Date."> + VEF_FIX_VEF01 displayName "VEF.FIX/VEF01" <"The Spot Rate for a Rate Calculation Date will be the midpoint of the Venezuelan Bolivar /U.S. Dollar Tipo de Cambio De Referencia buying and selling rates, expressed as the amount of Venezuelan Bolivar per one U.S. Dollar, for settlement in two Business Days reported by the Banco Central de Venezuela (www.bcv.org.ve) at approximately 5:00 p.m., Caracas time, on that Rate Calculation Date."> + VND_ABS_VND01 displayName "VND.ABS/VND01" <"The Spot Rate for a Rate Calculation Date will be the Vietnamese Dong/U.S. Dollar spot rate at 11:00 a.m., Singapore time, expressed as the amount of Vietnamese Dong per one U.S. Dollar, for settlement in two Business Days reported by the Association of Banks in Singapore, which appears on the Reuters Screen ABSIRFIX01 Page to the right of the caption 'Spot' under the column 'VND' at approximately 11:30 a.m., Singapore time, on that Rate Calculation Date."> + VND_FX_VND02 displayName "VND.FX/VND02" <"The Spot Rate for a Rate Calculation Date will be the Vietnamese Dong/U.S. Dollar spot rate expressed as the amount of Vietnamese Dong per one U.S. Dollar, for settlement in two Business Days which appears on Reuters Screen VNDFIX=VN Page under the caption 'Spot' and to the right of the caption 'Average' at approximately 11:00 am, Hanoi time, on that Rate Calculation Date."> + VND_SFEMC_INDICATIVE_SURVEY_RATE_VND03 displayName "VND.SFEMC.INDICATIVE.SURVEY.RATE/VND03" <"The Spot Rate for a Rate Calculation Date will be the Vietnamese Dong/U.S. Dollar Specified Rate for U.S. Dollars, expressed as the amount of Vietnamese Dong per one U.S. Dollar, for settlement in two Business Days, as published on SFEMC's website (www.sfemc.org) at approximately 3:30 p.m., Singapore time, or as soon as thereafter as practicable, on that Rate Calculation Date. The Spot Rate shall be calculated by SFEMC (or a service provider SFEMC may select in its sole discretion) pursuant to the SFEMC VND Indicative Survey Methodology (which means a methodology, dated as of July 14, 2008, as amended from time to time, for a centralized industry-wide survey of financial institutions that are active participants in the Vietnamese Dong/U.S. Dollar markets for the purpose of determining the SFEMC VND Indicative Survey Rate)."> + +enum DayTypeEnum: <"Lists the enumerated values to specify the day type classification used in counting the number of days between two dates."> + Business <"Applies when calculating the number of days between two dates the count includes only business days."> + Calendar <"Applies when calculating the number of days between two dates the count includes all calendar days."> + CurrencyBusiness <"Applies when calculating the number of days between two dates the count includes only currency business days."> + ExchangeBusiness <"Applies when calculating the number of days between two dates the count includes only stock exchange business days."> + ScheduledTradingDay <"Applies when calculating the number of days between two dates the count includes only scheduled trading days."> + +enum SettlementTypeEnum: <"The enumeration values to specify how the option is to be settled when exercised."> + Cash <"The intrinsic value of the option will be delivered by way of a cash settlement amount determined, (i) by reference to the differential between the strike price and the settlement price; or (ii) in accordance with a bilateral agreement between the parties."> + Physical <"The securities underlying the transaction will be delivered by (i) in the case of a call, the seller to the buyer, or (ii) in the case of a put, the buyer to the seller versus a settlement amount equivalent to the strike price per share."> + Election <"Allow Election of either Cash or Physical settlement."> + CashOrPhysical <"Allow use of either Cash or Physical settlement without prior Election."> + +enum TransferSettlementEnum: <"The enumeration values to specify how the transfer will settle, e.g. DvP."> + DeliveryVersusDelivery <"Simultaneous transfer of two assets, typically securities, as a way to avoid settlement risk."> + DeliveryVersusPayment <"Settlement in which the transfer of the asset and the cash settlement are simultaneous."> + PaymentVersusPayment <"Simultaneous transfer of cashflows."> + NotCentralSettlement <"No central settlement."> + +enum QuoteBasisEnum: <"The enumerated values to specify how an exchange rate is quoted."> + Currency1PerCurrency2 <"The amount of currency1 for one unit of currency2"> + Currency2PerCurrency1 <"The amount of currency2 for one unit of currency1"> + +enum CashSettlementMethodEnum: <"Defines the different cash settlement methods for a product where cash settlement is applicable."> + CashPriceMethod <"An ISDA defined cash settlement method used for the determination of the applicable cash settlement amount. The method is defined in the 2006 ISDA Definitions, Section 18.3. Cash Settlement Methods, paragraph (a)."> + CashPriceAlternateMethod <"An ISDA defined cash settlement method used for the determination of the applicable cash settlement amount. The method is defined in the 2006 ISDA Definitions, Section 18.3. Cash Settlement Methods, paragraph (b)."> + ParYieldCurveAdjustedMethod <"An ISDA defined cash settlement method used for the determination of the applicable cash settlement amount. The method is defined in the 2006 ISDA Definitions, Section 18.3. Cash Settlement Methods, paragraph (c)."> + ZeroCouponYieldAdjustedMethod <"An ISDA defined cash settlement method used for the determination of the applicable cash settlement amount. The method is defined in the 2006 ISDA Definitions, Section 18.3. Cash Settlement Methods, paragraph (d)."> + ParYieldCurveUnadjustedMethod <"An ISDA defined cash settlement method used for the determination of the applicable cash settlement amount. The method is defined in the 2006 ISDA Definitions, Section 18.3. Cash Settlement Methods, paragraph (e)."> + CrossCurrencyMethod <"An ISDA defined cash settlement method used for the determination of the applicable cash settlement amount. The method is defined in the 2006 ISDA Definitions, Section 18.3. Cash Settlement Methods, paragraph (f) (published in Supplement number 23)."> + CollateralizedCashPriceMethod <"An ISDA defined cash settlement method (yield curve) used for the determination of the applicable cash settlement amount. The method is defined in the 2006 ISDA Definitions, Section 18.3. Cash Settlement Methods, paragraph (g) (published in Supplement number 28). The method is defined in the 2021 ISDA Definitions, section 18.2.6."> + MidMarketIndicativeQuotations <"An ISDA defined cash settlement method used for the determination of the applicable cash settlement amount. The method is defined in the 2021 ISDA Definitions, Section 18.2.1."> + MidMarketIndicativeQuotationsAlternate <"An ISDA defined cash settlement method used for the determination of the applicable cash settlement amount. The method is defined in the 2021 ISDA Definitions, Section 18.2.2."> + MidMarketCalculationAgentDetermination <"An ISDA defined cash settlement method used for the determination of the applicable cash settlement amount. The method is defined in the 2021 ISDA Definitions, Section 18.2.3."> + ReplacementValueFirmQuotations <"An ISDA defined cash settlement method used for the determination of the applicable cash settlement amount. The method is defined in the 2021 ISDA Definitions, Section 18.2.4."> + ReplacementValueCalculationAgentDetermination <"An ISDA defined cash settlement method used for the determination of the applicable cash settlement amount. The method is defined in the 2021 ISDA Definitions, Section 18.2.5"> + +enum ValuationMethodEnum: <"The enumerated values to specify the ISDA defined methodology for determining the final price of the reference obligation for purposes of cash settlement."> + Market + Highest + AverageMarket + AverageHighest + BlendedMarket + BlendedHighest + AverageBlendedMarket + AverageBlendedHighest + +enum RollConventionEnum: <"The enumerated values to specify the period term as part of a periodic schedule, i.e. the calculation period end date within the regular part of the calculation period. The value could be a rule, e.g. IMM Settlement Dates, which is the 3rd Wednesday of the month, or it could be a specific day of the month, such as the first day of the applicable month."> + EOM <"Rolls on month end dates irrespective of the length of the month and the previous roll day."> + FRN <"Roll days are determined according to the FRN Convention or Euro-dollar Convention as described in ISDA 2000 definitions."> + IMM <"IMM Settlement Dates. The third Wednesday of the (delivery) month."> + IMMCAD <"The last trading day/expiration day of the Canadian Derivatives Exchange (Bourse de Montreal Inc) Three-month Canadian Bankers' Acceptance Futures (Ticker Symbol BAX). The second London banking day prior to the third Wednesday of the contract month. If the determined day is a Bourse or bank holiday in Montreal or Toronto, the last trading day shall be the previous bank business day. Per Canadian Derivatives Exchange BAX contract specification."> + IMMAUD <"The last trading day of the Sydney Futures Exchange 90 Day Bank Accepted Bills Futures contract (see http://www.sfe.com.au/content/sfe/trading/con_specs.pdf). One Sydney business day preceding the second Friday of the relevant settlement."> + IMMNZD <"The last trading day of the Sydney Futures Exchange NZ 90 Day Bank Bill Futures contract (see http://www.sfe.com.au/content/sfe/trading/con_specs.pdf). The first Wednesday after the ninth day of the relevant settlement month."> + SFE <"Sydney Futures Exchange 90-Day Bank Accepted Bill Futures Settlement Dates. The second Friday of the (delivery) month"> + NONE <"The roll convention is not required. For example, in the case of a daily calculation frequency."> + TBILL <"13-week and 26-week U.S. Treasury Bill Auction Dates. Each Monday except for U.S. (New York) holidays when it will occur on a Tuesday."> + _1 displayName "1" <"Rolls on the 1st day of the month."> + _2 displayName "2" <"Rolls on the 2nd day of the month."> + _3 displayName "3" <"Rolls on the 3rd day of the month."> + _4 displayName "4" <"Rolls on the 4th day of the month."> + _5 displayName "5" <"Rolls on the 5th day of the month."> + _6 displayName "6" <"Rolls on the 6th day of the month."> + _7 displayName "7" <"Rolls on the 7th day of the month."> + _8 displayName "8" <"Rolls on the 8th day of the month."> + _9 displayName "9" <"Rolls on the 9th day of the month."> + _10 displayName "10" <"Rolls on the 10th day of the month."> + _11 displayName "11" <"Rolls on the 11th day of the month."> + _12 displayName "12" <"Rolls on the 12th day of the month."> + _13 displayName "13" <"Rolls on the 13th day of the month."> + _14 displayName "14" <"Rolls on the 14th day of the month."> + _15 displayName "15" <"Rolls on the 15th day of the month."> + _16 displayName "16" <"Rolls on the 16th day of the month."> + _17 displayName "17" <"Rolls on the 17th day of the month."> + _18 displayName "18" <"Rolls on the 18th day of the month."> + _19 displayName "19" <"Rolls on the 19th day of the month."> + _20 displayName "20" <"Rolls on the 20th day of the month."> + _21 displayName "21" <"Rolls on the 21st day of the month."> + _22 displayName "22" <"Rolls on the 22nd day of the month."> + _23 displayName "23" <"Rolls on the 23rd day of the month."> + _24 displayName "24" <"Rolls on the 24th day of the month."> + _25 displayName "25" <"Rolls on the 25th day of the month."> + _26 displayName "26" <"Rolls on the 26th day of the month."> + _27 displayName "27" <"Rolls on the 27th day of the month."> + _28 displayName "28" <"Rolls on the 28th day of the month."> + _29 displayName "29" <"Rolls on the 29th day of the month."> + _30 displayName "30" <"Rolls on the 30th day of the month."> + MON <"Rolling weekly on a Monday."> + TUE <"Rolling weekly on a Tuesday"> + WED <"Rolling weekly on a Wednesday"> + THU <"Rolling weekly on a Thursday"> + FRI <"Rolling weekly on a Friday"> + SAT <"Rolling weekly on a Saturday"> + SUN <"Rolling weekly on a Sunday"> + +enum PayRelativeToEnum: <"The enumerated values to specify whether payments occur relative to the calculation period start date or end date, each reset date, valuation date or the last pricing date."> + CalculationPeriodStartDate <"Payments will occur relative to the first day of each calculation period."> + CalculationPeriodEndDate <"Payments will occur relative to the last day of each calculation period."> + LastPricingDate <"Payments will occur relative to the last Pricing Date of each Calculation Period."> + ResetDate <"Payments will occur relative to the reset date."> + ValuationDate <"Payments will occur relative to the valuation date."> + +enum StubPeriodTypeEnum: <"The enumerated values to specify how to deal with a non standard calculation period within a swap stream."> + ShortInitial <"If there is a non regular period remaining it is left shorter than the streams calculation period frequency and placed at the start of the stream."> + ShortFinal <"If there is a non regular period remaining it is left shorter than the streams calculation period frequency and placed at the end of the stream."> + LongInitial <"If there is a non regular period remaining it is placed at the start of the stream and combined with the adjacent calculation period to give a long first calculation period."> + LongFinal <"If there is a non regular period remaining it is placed at the end of the stream and combined with the adjacent calculation period to give a long last calculation period."> + +enum TimeTypeEnum: <"The enumerated values to specify points in the day when option exercise and valuation can occur."> + Close <"The official closing time of the exchange on the valuation date."> + Open <"The official opening time of the exchange on the valuation date."> + OSP <"The time at which the official settlement price is determined."> + SpecificTime <"The time specified in the element equityExpirationTime or valuationTime (as appropriate)."> + XETRA <"The time at which the official settlement price (following the auction by the exchange) is determined by the exchange."> + DerivativesClose <"The official closing time of the derivatives exchange on which a derivative contract is listed on that security underlier."> + AsSpecifiedInMasterConfirmation <"The time is determined as provided in the relevant Master Confirmation."> + +enum DeterminationMethodEnum: <"The enumerated values to specify the method according to which an amount or a date is determined."> + AgreedInitialPrice <"Agreed separately between the parties."> + AsSpecifiedInMasterConfirmation <"As specified in Master Confirmation."> + CalculationAgent <"Determined by the Calculation Agent."> + ClosingPrice <"Official Closing Price."> + DividendCurrency <"Determined by the Currency of Equity Dividends."> + ExpiringContractLevel <"The initial Index Level is the level of the Expiring Contract as provided in the Master Confirmation."> + HedgeExecution <"Determined by the Hedging Party."> + IssuerPaymentCurrency <"Issuer Payment Currency."> + NAV <"Net Asset Value."> + OpenPrice <"Opening Price of the Market."> + OSPPrice <"OSP Price."> + SettlementCurrency <"Settlement Currency."> + StrikeDateDetermination <"Date on which the strike is determined in respect of a forward starting swap."> + TWAPPrice <"Official TWAP Price."> + ValuationTime <"Price determined at valuation time."> + VWAPPrice <"Official VWAP Price."> + +enum AncillaryRoleEnum: <"Defines the enumerated values to specify the ancillary roles to the transaction. The product is agnostic to the actual parties involved in the transaction, with the party references abstracted away from the product definition and replaced by the AncillaryRoleEnum. The AncillaryRoleEnum can then be positioned in the product and the AncillaryParty type, which is positioned outside of the product definition, allows the AncillaryRoleEnum to be associated with an actual party reference."> + DisruptionEventsDeterminingParty <"Specifies the party which determines additional disruption events."> + ExtraordinaryDividendsParty <"Specifies the party which determines if dividends are extraordinary in relation to normal levels."> + PredeterminedClearingOrganizationParty <"Specifies the clearing organization (CCP, DCO) which the trade should be cleared."> + ExerciseNoticeReceiverPartyManual <"Specifies the party to which notice of a manual exercise should be given."> + ExerciseNoticeReceiverPartyOptionalEarlyTermination <"Specifies the party to which notice of a optional early termination exercise should be given."> + ExerciseNoticeReceiverPartyCancelableProvision <"Specifies the party to which notice of a cancelable provision exercise should be given."> + ExerciseNoticeReceiverPartyExtendibleProvision <"Specifies the party to which notice of a extendible provision exercise should be given."> + CalculationAgentIndependent <"Specifies the party responsible for performing calculation agent duties as defined in the applicable product definition."> + CalculationAgentOptionalEarlyTermination <"Specifies the party responsible for performing calculation agent duties associated with an optional early termination."> + CalculationAgentMandatoryEarlyTermination <"Specifies the party responsible for performing calculation agent duties associated with an mandatory early termination."> + CalculationAgentFallback <"Specifies the party responsible for deciding the fallback rate."> + +enum ObligationCategoryEnum: <"The enumerated values used in both the obligations and deliverable obligations of the credit default swap to represent a class or type of securities which apply."> + Payment <"ISDA term 'Payment'."> + BorrowedMoney <"ISDA term 'Borrowed Money'."> + ReferenceObligationsOnly <"ISDA term 'Reference Obligations Only'."> + Bond <"ISDA term 'Bond'."> + Loan <"ISDA term 'Loan'."> + BondOrLoan <"ISDA term 'Bond or Loan'."> + +type PayoutBase: <" Base class that all payout types should extend. Use case is that some validation rules may need to apply across all payout types, for which the data rule can be written at the base class level"> + payerReceiver PayerReceiver (1..1) <"Canonical representation of the payer and receiver parties applicable to each payout leg."> + payoutQuantity ResolvablePayoutQuantity (1..1) <"Each payout leg must implement the quantity concept as a 'resolvable' type, which allows for different payout legs to be linked to each other (e.g. in the case of cross-curreny products)."> + settlementTerms SettlementTerms (0..1) <"Each payout leg must specifies its settlement terms, including the delivery type (i.e. cash vs physical, and their respective terms), the transfer type (DvP etc.) and settlement date, if any."> + +type PayerReceiver: <"Specifies the parties responsible for making and receiving payments defined by this structure."> + payer CounterpartyRoleEnum (1..1) <"Specifies the counterparty responsible for making the payments defined by this structure. The party is one of the two principal parties to the transaction."> + receiver CounterpartyRoleEnum (1..1) <"Specifies the party that receives the payments corresponding to this structure. The party is one of the two counterparties to the transaction."> + + +type ResolvablePayoutQuantity: <"Generic class to specify the quantity for different payout legs in a contractual product, when that quantity can vary across payout legs or across time. A resolvable quantity can always be resolved into a single quantity from the quantity notation which has a corresponding asset identifier. In addition to the base case, where quantity is directly specified as a number as part of the quantity notation, the other use cases are: (i) quantity based on some pre-defined schedule (eg amortising notional), (ii) quantity based on some pre-defined events (eg resetting cross-currency notional), or quantity set as reference to another quantity (eg equity notional as no. securities x price)."> + resolvedQuantity Quantity (0..1) <"A product's quantity as a single, non-negative amount. When specified as part of a product definition, this quantity attribute would not be set. Instead it is specified on the quantity notation along with an asset identifier matching this payout's asset identifier. This allows the quantity to be resolved for a payout leg, which can then be specified here for convenience during data processing. There needs to be at least one resolvable quantity across payout legs of a product to define an anchor that other payout quantities can refer to. This attribute is ignored when mapping existing FpML messages."> + quantitySchedule NonNegativeQuantitySchedule (0..1) <"Quantity step schedule, including an initial quantity specified as an absolute number."> + quantityReference ResolvablePayoutQuantity (0..1) <"Reference quantity when resolvable quantity is defined as relative to another (resolvable) quantity. A resolvable quantity needs to contain either an absolute quantity or a reference to another (resolvable) quantity. This requirement is captured by a choice rule on the class."> + quantityMultiplier QuantityMultiplier (0..1) <"Quantity multiplier is specified on top of a reference quantity and is used as a multiplying factor when resolving the quantity. A quantity multiplier can only exist when the resolvable quantity specifies a reference quantity."> + reset boolean (0..1) <"Whether the quantity is resettable"> + futureValueNotional FutureValueAmount (0..1) <"The future value notional is specific to BRL CDI swaps, and is specified alongside the notional amount. The value is calculated as follows: Future Value Notional = Notional Amount * (1 + Fixed Rate) ^ (Fixed Rate Day Count Fraction). The currency should always match that expressed in the notional schedule. The value date should match the adjusted termination date."> + +type Quantity extends MeasureBase: <"Specifies a quantity to be associated to a financial product, for example a trade amount or a cashflow amount resulting from a trade."> + multiplier number (0..1) <"Defines the number to be multiplied by the amount to derive a total quantity."> + multiplierUnit UnitType (0..1) <"Qualifies the multiplier with the applicable unit. For example in the case of the Coal (API2) CIF ARA (ARGUS-McCloskey) Futures Contract on the CME, where the unitOfAmount would be contracts, the multiplier would 1,000 and the mulitiplier Unit would be 1,000 MT (Metric Tons)."> + frequency Frequency (0..1) <"Defines the frequency to be used when defining a quantity."> + +type Frequency: <"A class for defining a date frequency, e.g. one day, three months, through the combination of an integer value and a standardized period value that is specified as part of an enumeration."> + periodMultiplier int (1..1) <"A time period multiplier, e.g. 1, 2, or 3. If the period value is T (Term) then period multiplier must contain the value 1."> + period PeriodExtendedEnum (1..1) <"A time period, e.g. a day, week, month, year or term of the stream."> + +type MeasureBase: + amount number (1..1) + unitOfAmount UnitType (0..1) + +type UnitType: <"Defines the unit to be used for price, quantity, or other purposes"> + capacityUnit CapacityUnitEnum (0..1) <"Provides an enumerated value for a capacity unit, generally used in the context of defining quantities for commodities."> + weatherUnit WeatherUnitEnum (0..1) <"Provides an enumerated values for a weather unit, generally used in the context of defining quantities for commodities."> + financialUnit FinancialUnitEnum (0..1) <"Provides an enumerated value for financial units, generally used in the context of defining quantities for securities."> + currency string (0..1) <"Defines the currency to be used as a unit for a price, quantity, or other purpose."> + condition: one-of + +type NonNegativeQuantitySchedule: <"Class to specify a non-negative quantity schedule, which is used to define the quantity of a payout leg. This quantity cannot be negative, while direction is specified through a BuyerSeller or PayerReceiver attribute. The only available schedule implementation is a step schedule, specified as a set of date-value pairs. The non-negativity is enforced by using the non-negative quantity and step schedule classes."> + initialQuantity Quantity (1..1) <"The initial quantity of a schedule represented as a single, non-negative number. In the case where no schedule is specified, the constant quantity is specified at a higher level. Can be referenced from TradableProduct"> + step NonNegativeStep (0..*) <"The schedule specified as a set of date-value pairs. Attribute is optional, to represent the case where no schedule is specified so quantity is just constant over time."> + +type NonNegativeStep: <"A class defining a step date and non-negative step value pair. This step definitions are used to define varying rate or amount schedules, e.g. a notional amortisation or a step-up coupon schedule."> + stepDate string (1..1) <"The date on which the associated stepValue becomes effective. This day may be subject to adjustment in accordance with a business day convention."> + stepValue number (1..1) <"The non-negative rate or amount which becomes effective on the associated stepDate. A rate of 5% would be represented as 0.05."> + +type QuantityMultiplier: <" Class to specify a mechanism for a quantity to be set as a multiplier to another (reference) quantity, based on a price observation. At the moment this class only supports FX or Equity-linked notional and re-uses existing building blocks for those 2 cases, until such time when component can be made more generic. This captures the case of resetting cross-currency swaps and resetting equity swaps."> + fxLinkedNotionalSchedule FxLinkedNotionalSchedule (0..1) <"Multiplier specified as an FX-linked schedule, e.g. for a resetting cross-currency swap.."> + multiplierValue number (0..1) + condition: one-of + +type FxLinkedNotionalSchedule: <"A data to: describe a notional schedule where each notional that applies to a calculation period is calculated with reference to a notional amount or notional amount schedule in a different currency by means of a spot currency exchange rate which is normally observed at the beginning of each period."> + varyingNotionalCurrency string (1..1) <"The currency of the varying notional amount, i.e. the notional amount being determined periodically based on observation of a spot currency exchange rate. The list of valid currencies is not presently positioned as an enumeration as part of the CDM because that scope is limited to the values specified by ISDA and FpML. As a result, implementers have to make reference to the relevant standard, such as the ISO 4217 standard for currency codes."> + varyingNotionalFixingDates RelativeDateOffset (1..1) <"The dates on which spot currency exchange rates are observed for purposes of determining the varying notional currency amount that will apply to a calculation period."> + fxSpotRateSource FxSpotRateSource (1..1) <"The information source and time at which the spot currency exchange rate will be observed."> + fixingTime BusinessCenterTime (0..1) <"The time at which the spot currency exchange rate will be observed. It is specified as a time in a business day calendar location, e.g. 11:00am London time."> + varyingNotionalInterimExchangePaymentDates RelativeDateOffset (1..1) <"The dates on which interim exchanges of notional are paid. Interim exchanges will arise as a result of changes in the spot currency exchange amount or changes in the constant notional schedule (e.g. amortisation)."> + +type BusinessCenters: <"A class for specifying the business day calendar location used in determining whether a day is a business day or not, either by specifying this business center by reference to an enumerated list that is maintained by the FpML standard, or by reference to such specification when it exists elsewhere as part of the instance document. This class corresponds to the FpML BusinessCentersOrReference.model."> + businessCenter BusinessCenterEnum (0..*) <"A code identifying one or several business day calendar location(s). The set of business day calendar locations are specified by the business day calendar location enumeration which is maintained by the FpML standard."> + businessCentersReference BusinessCenters (0..1) <"A reference to a financial business center location specified elsewhere in the instance document."> + +type Offset extends Period: <"A class defining an offset used in calculating a new date relative to a reference date, e.g. calendar days, business days, commodity Business days, etc."> + dayType DayTypeEnum (0..1) <"In the case of an offset specified as a number of days, this element defines whether consideration is given as to whether a day is a good business day or not. If a day type of business days is specified then non-business days are ignored when calculating the offset. The financial business centers to use for determination of business days are implied by the context in which this element is used. This element must only be included when the offset is specified as a number of days. If the offset is zero days then the dayType element should not be included."> + +type Period: <"A class to define recurring periods or time offsets."> + periodMultiplier int (1..1) <"A time period multiplier, e.g. 1, 2 or 3 etc. A negative value can be used when specifying an offset relative to another date, e.g. -2 days."> + period PeriodEnum (1..1) <"A time period, e.g. a day, week, month or year of the stream. If the periodMultiplier value is 0 (zero) then period must contain the value D (day)."> + +type FxSpotRateSource: <"A class defining the rate source and fixing time for an FX rate."> + primaryRateSource InformationSource (1..1) <"The primary source for where the rate observation will occur. Will typically be either a page or a reference bank published rate."> + secondaryRateSource InformationSource (0..1) <"An alternative, or secondary, source for where the rate observation will occur. Will typically be either a page or a reference bank published rate."> + +type InformationSource: <"A class defining the source for a piece of information (e.g. a rate fix or an FX fixing). The attribute names have been adjusted from FpML to address the fact that the information is not limited to rates."> + sourceProvider InformationProviderEnum (1..1) <"An information source for obtaining a market data point. For example Bloomberg, Reuters, Telerate, etc."> + sourcePage string (0..1) <"A specific page for the source for obtaining a market data point. In FpML, this is specified as a scheme, rateSourcePageScheme, for which no coding Scheme or URI is specified."> + sourcePageHeading string (0..1) <"The heading for the source on a given source page."> + +type BusinessCenterTime: <"A class for defining a time with respect to a business day calendar location. For example, 11:00:00 GBLO."> + hourMinuteTime string (1..1) <"A time specified in hh:mm:ss format where the second component must be '00', e.g. 11am would be represented as 11:00:00."> + businessCenter BusinessCenterEnum (1..1) <"A code identifying a business day calendar location. A business day calendar location is drawn from the list identified by the business day calendar location enumeration."> + +type FutureValueAmount: <"A class defining a currency and a future value date."> + quantity Quantity (0..1) + currency string (1..1) <"The currency in which the an amount is denominated. The list of valid currencies is not presently positioned as an enumeration as part of the CDM because that scope is limited to the values specified by ISDA and FpML. As a result, implementers have to make reference to the relevant standard, such as the ISO 4217 standard for currency codes."> + calculationPeriodNumberOfDays int (1..1) <"The number of days from the adjusted calculation period start date to the adjusted value date, calculated in accordance with the applicable day count fraction."> + valueDate string (1..1) <"Adjusted value date of the future value amount."> + +type SettlementTerms extends SettlementBase: <"Specifies the settlement terms, which can either be cash, physical, or fx-based cash-settlement. This class can be used for the settlement of options and forwards, cash transactions (e.g. securities or foreign exchange), or in case of credit event."> + cashSettlementTerms CashSettlementTerms (0..*) <"Specifies the parameters associated with the cash settlement procedure."> + physicalSettlementTerms PhysicalSettlementTerms (0..1) <"Specifies the physical settlement terms which apply to the transaction."> + +type SettlementBase: <"A base class to be extended by the SettlementTerms class."> + settlementType SettlementTypeEnum (1..1) <"Whether the settlement will be cash, physical, by election, ..."> + transferSettlementType TransferSettlementEnum (0..1) <"The qualification as to how the transfer will settle, e.g. a DvP settlement."> + settlementCurrency string (0..1) <"The settlement currency is to be specified when the Settlement Amount cannot be known in advance. The list of valid currencies is not presently positioned as an enumeration as part of the CDM because that scope is limited to the values specified by ISDA and FpML. As a result, implementers have to make reference to the relevant standard, such as the ISO 4217 standard for currency codes."> + settlementDate SettlementDate (0..1) <"The date on which the settlement amount will be paid, subject to adjustment in accordance with any applicable business day convention. This component would not be present for a mandatory early termination provision where the cash settlement payment date is the mandatory early termination date."> + +type SettlementDate: <"A data defining the settlement date(s) for cash or physical settlement as either a set of explicit dates, together with applicable adjustments, or as a date relative to some other (anchor) date, or as any date in a range of contiguous business days. This data type provides a level of abstraction on top of the different legacy methods used to specify a settlement / payment date, which vary across product types, asset classes and delivery types."> + adjustedDate AdjustableOrAdjustedOrRelativeDate (0..1) <"A single settlement date subject to adjustment or specified as relative to another date (e.g. the trade date). This attribute was formerly part of 'SettlementTerms', which is now being harmonised to include a common 'SettlementDate', as inherited from 'SettlementBase'."> + valueDate string (0..1) <"The settlement date for a forward settling product. For Foreign Exchange contracts, this represents a common settlement date between both currency legs. To specify different settlement dates for each currency leg, see the ForeignExchange class. This attribute was formerly part of 'SettlementTerms', which is now being harmonised to include a common 'SettlementDate', as inherited from 'SettlementBase'."> + adjustableDates AdjustableDates (0..1) <"A series of dates that shall be subject to adjustment if they would otherwise fall on a day that is not a business day in the specified business centers, together with the convention for adjusting the date. This attributes was formerly part of 'CashSettlementPaymentDate' as included into 'OptionCashSettlement' (which is now merged into a unique 'CashSettlementTerms' data type."> + businessDateRange BusinessDateRange (0..1) <"A range of contiguous business days. This attribute is meant to be merged with the 'settlementDate' at some future point once we refactor 'Date' to use a single complex type across the model. This attributes was formerly part of 'CashSettlementPaymentDate', as included into 'OptionCashSettlement' (which is now merged into a unique 'CashSettlementTerms' data type."> + cashSettlementBusinessDays int (0..1) <"The number of business days used in the determination of the cash settlement payment date. If a cash settlement amount is specified, the cash settlement payment date will be this number of business days following the calculation of the final price. If a cash settlement amount is not specified, the cash settlement payment date will be this number of business days after all conditions to settlement are satisfied. ISDA 2003 Term: Cash Settlement Date. This attribute was formerly part of 'CashSettlementTerms' as used for credit event settlement, which now includes a common 'SettlementDate' attribute."> + paymentDelay boolean (0..1) <"Applicable to CDS on MBS to specify whether payment delays are applicable to the fixed Amount. RMBS typically have a payment delay of 5 days between the coupon date of the reference obligation and the payment date of the synthetic swap. CMBS do not, on the other hand, with both payment dates being on the 25th of each month."> + +type AdjustableOrAdjustedOrRelativeDate: <"This Rosetta class specifies the date as either an unadjusted, adjusted or relative date. It supplements the features of the AdjustableOrAdjustedDate to support the credit default swap option premium, which uses the relative date construct."> + unadjustedDate string (0..1 ) <"A date subject to adjustment."> + dateAdjustments BusinessDayAdjustments (0..1) <"The business day convention and financial business centers used for adjusting the date if it would otherwise fall on a day that is not a business date in the specified business centers."> + adjustedDate string (0..1) <"The date once the adjustment has been performed. (Note that this date may change if the business center holidays change)."> + relativeDate RelativeDateOffset (0..1) <"A date specified as some offset to another date (the anchor date)."> + +type BusinessDayAdjustments: <"A class defining the business day convention and financial business centers used for adjusting any relevant date if it would otherwise fall on a day that is not a business day in the specified business center."> + businessDayConvention BusinessDayConventionEnum (1..1) <"The convention for adjusting a date if it would otherwise fall on a day that is not a business day."> + businessCenters BusinessCenters (0..1) <"The business center(s), specified either explicitly or by reference to those specified somewhere else in the instance document."> + +type AdjustableDates: <"A class for defining a series of dates that shall be subject to adjustment if they would otherwise fall on a day that is not a business day in the specified business centers, together with the convention for adjusting the dates."> + unadjustedDate string (1..*) <"A date subject to adjustment."> + dateAdjustments BusinessDayAdjustments (1..1) <"The business day convention and financial business centers used for adjusting the date if it would otherwise fall on a day that is not a business date in the specified business centers."> + adjustedDate string (0..*) <"The date(s) once the adjustment has been performed. (Note that this date may change if the business center holidays change)."> + +type BusinessDateRange extends DateRange: <"A class defining a range of contiguous business days by defining an unadjusted first date, an unadjusted last date and a business day convention and business centers for adjusting the first and last dates if they would otherwise fall on a non business day in the specified business centers. The days between the first and last date must also be good business days in the specified centers to be counted in the range."> + businessDayConvention BusinessDayConventionEnum (1..1) <"The convention for adjusting a date if it would otherwise fall on a day that is not a business day, as specified by an ISDA convention (e.g. Following, Precedent)."> + businessCenters BusinessCenters (0..1) <"The business center(s), specified either explicitly or by reference to those specified somewhere else in the instance document."> + +type DateRange: <"A class defining a contiguous series of calendar dates. The date range is defined as all the dates between and including the first and the last date. The first date must fall before the last date."> + unadjustedFirstDate string (1..1) <"The first date of a date range."> + unadjustedLastDate string (1..1) <"The last date of a date range."> + +type CashSettlementTerms: <"Defines the terms required to compute and settle a cash settlement amount according to a fixing value, including the fixing source, fixing method and fixing date. In FpML, PhysicalSettlementTerms and CashSettlementTerms extend SettlementTerms. In the CDM, this extension paradigm has not been used because SettlementTerms class has been used for purposes related to securities transactions, while it is not used as such in the FpML standard (i.e. only as an abstract construct."> + cashSettlementMethod CashSettlementMethodEnum (0..1) <"Specifies the type of cash settlement method: cash price, yield curve etc."> + valuationMethod ValuationMethod (0..1) <"Specifies the parameters required to obtain a valuation, including the source, quotation method (bid, mid etc.) and any applicable quotation amount."> + valuationDate ValuationDate (0..1) <"Defines the different methods to specify a valuation date, as used for cash settlement. The Single / Multiple ValuationDate is used for the determination of recovery in a credit event, the RelativeDateOffset is used for cash-settled option, and FxFixingDate is used for cross-currency settlement."> + valuationTime BusinessCenterTime (0..1) <"The time of the cash settlement valuation date when the cash settlement amount will be determined according to the cash settlement method, if the parties have not otherwise been able to agree the cash settlement amount. When using quations, this is the time of day in the specified business center when the calculation agent seeks quotations for an amount of the reference obligation for purposes of cash settlement. ISDA 2003 Term: Valuation Time."> + cashSettlementAmount Money (0..1) <"The amount paid by the seller to the buyer for cash settlement on the cash settlement date. If not otherwise specified, would typically be calculated as 100 (or the Reference Price) minus the price of the Reference Obligation (all expressed as a percentage) times Floating Rate Payer Calculation Amount. ISDA 2003 Term: Cash Settlement Amount."> + recoveryFactor number (0..1) <"Used for fixed recovery, specifies the recovery level, determined at contract formation, to be applied on a default. Used to calculate the amount paid by the seller to the buyer for cash settlement on the cash settlement date. Amount calculation is (1 minus the Recovery Factor) multiplied by the Floating Rate Payer Calculation Amount. The currency will be derived from the Floating Rate Payer Calculation Amount."> + fixedSettlement boolean (0..1) <"Used for Recovery Lock, to indicate whether fixed Settlement is Applicable or Not Applicable. If Buyer fails to deliver an effective Notice of Physical Settlement on or before the Buyer NOPS Cut-off Date, and if Seller fails to deliver an effective Seller NOPS on or before the Seller NOPS Cut-off Date, then either: (a) if Fixed Settlement is specified in the related Confirmation as not applicable, then the Seller NOPS Cut-off Date shall be the Termination Date; or (b) if Fixed Settlement is specified in the related Confirmation as applicable, then: (i) if the Fixed Settlement Amount is a positive number, Seller shall, subject to Section 3.1 (except for the requirement of satisfaction of the Notice of Physical Settlement Condition to Settlement), pay the Fixed Settlement Amount to Buyer on the Fixed Settlement Payment Date; and (ii) if the Fixed Settlement Amount is a negative number, Buyer shall, subject to Section 3.1 (except for the requirement of satisfaction of the Notice of Physical Settlement Condition to Settlement), pay the absolute value of the Fixed Settlement Amount to Seller on the Fixed Settlement Payment Date."> + accruedInterest boolean (0..1) <"Indicates whether accrued interest is included (true) or not (false). For cash settlement this specifies whether quotations should be obtained inclusive or not of accrued interest. For physical settlement this specifies whether the buyer should deliver the obligation with an outstanding principal balance that includes or excludes accrued interest. ISDA 2003 Term: Include/Exclude Accrued Interest."> + +type Money extends Quantity: <"Defines a monetary amount in a specified currency."> + +type ValuationDate: <"A single object that represents the different methods to specify a valuation date, as used for cash settlement. The Single / Multiple ValuationDate is used for the determination of recovery in a credit event, the RelativeDateOffset is used for cash-settled option, and FxFixingDate is used for cross-currency settlement."> + singleValuationDate SingleValuationDate (0..1) <"Where single valuation date is specified as being applicable for cash settlement, this element specifies the number of business days after satisfaction of all conditions to settlement when such valuation date occurs. ISDA 2003 Term: Single Valuation Date."> + multipleValuationDates MultipleValuationDates (0..1) <"Where multiple valuation dates are specified as being applicable for cash settlement, this element specifies (a) the number of applicable valuation dates, and (b) the number of business days after satisfaction of all conditions to settlement when the first such valuation date occurs, and (c) the number of business days thereafter of each successive valuation date. ISDA 2003 Term: Multiple Valuation Dates."> + valuationDate RelativeDateOffset (0..1) <"The date on which the cash settlement amount will be determined according to the cash settlement method if the parties have not otherwise been able to agree the cash settlement amount. This attribute was formerly part of 'OptionCashSettlement', which is now being harmonised into a common 'CashSettlementTerms' that includes a 'ValuationDate'."> + fxFixingDate FxFixingDate (0..1) <"The date on which the currency rate will be determined for the purpose of specifying the amount in deliverable currency. This attribute was formerly part of 'NonDeliverableSettlement', which is now being harmonised into a common 'CashSettlementTerms' that includes a 'ValuationDate'."> + fxFixingSchedule AdjustableDates (0..1) <"The date, when expressed as a schedule of date(s), on which the currency rate will be determined for the purpose of specifying the amount in deliverable currency. This attribute was formerly part of 'NonDeliverableSettlement', which is now being harmonised into a common 'CashSettlementTerms' that includes a 'ValuationDate'."> + condition: one-of + +type SingleValuationDate: <"A class to specify the number of business days after satisfaction of all conditions to settlement."> + businessDays int (0..1) <"A number of business days. Its precise meaning is dependant on the context in which this element is used. ISDA 2003 Term: Business Day."> + +type MultipleValuationDates extends SingleValuationDate: + businessDaysThereafter int (0..1) <"The number of business days between successive valuation dates when multiple valuation dates are applicable for cash settlement. ISDA 2003 Term: Business Days thereafter."> + numberValuationDates int (0..1) <"Where multiple valuation dates are specified as being applicable for cash settlement, this element specifies (a) the number of applicable valuation dates, and (b) the number of business days after satisfaction of all conditions to settlement when the first such valuation date occurs, and (c) the number of business days thereafter of each successive valuation date. ISDA 2003 Term: Multiple Valuation Dates."> + +type FxFixingDate extends Offset: <"Extends the Offset structure to specify an FX fixing date as an offset to dates specified somewhere else in the document."> + businessDayConvention BusinessDayConventionEnum (0..1) <"The convention for adjusting a date if it would otherwise fall on a day that is not a business day, as specified by an ISDA convention (e.g. Following, Precedent)."> + businessCenters BusinessCenters (0..1) + businessCentersReference BusinessCenters (0..1) <"A reference to a set of financial business centers defined elsewhere in the document. This set of business centers is used to determine whether a particular day is a business day or not."> + dateRelativeToPaymentDates DateRelativeToPaymentDates (0..1) <"The payment date references on which settlements in non-deliverable currency are due and will then have to be converted according to the terms specified through the other parts of the nonDeliverableSettlement structure."> + dateRelativeToCalculationPeriodDates DateRelativeToCalculationPeriodDates (0..1) <"The calculation period references on which settlements in non-deliverable currency are due and will then have to be converted according to the terms specified through the other parts of the nonDeliverableSettlement structure. Implemented for Brazilian-CDI swaps where it will refer to the termination date of the appropriate leg."> + dateRelativeToValuationDates DateRelativeToValuationDates (0..1) <"The calculation period references on which settlements in non-deliverable currency are due and will then have to be converted according to the terms specified through the other parts of the nonDeliverableSettlement structure. Implemented for Brazilian-CDI swaps where it will refer to the termination date of the appropriate leg."> + fxFixingDate AdjustableOrRelativeDate (0..1) <"Describes the specific date when a non-deliverable forward or cash-settled option will 'fix' against a particular rate, which will be used to compute the ultimate cash settlement. This element should be omitted where a single, discrete fixing date cannot be identified e.g. on an american option, where fixing may occur at any date on a continuous range. This attribute was formerly part of 'fxSettlementTerms', which is now being harmonised into a common 'CashSettlementTerms' that includes a 'ValuationDate'."> + +type DateRelativeToPaymentDates: <"A data to: provide the ability to point to multiple payment nodes in the document through the unbounded paymentDatesReference."> + paymentDatesReference PaymentDates (1..*) <"A set of href pointers to payment dates defined somewhere else in the document."> + +type PaymentDates: <"Specifies the parameters to generate the payment date schedule, either through a parametric representation or by reference to specified dates."> + paymentFrequency Frequency (0..1) <"The frequency at which regular payment dates occur. If the payment frequency is equal to the frequency defined in the calculation period dates component then one calculation period contributes to each payment amount. If the payment frequency is less frequent than the frequency defined in the calculation period dates component then more than one calculation period will contribute to the payment amount. A payment frequency more frequent than the calculation period frequency or one that is not a multiple of the calculation period frequency is invalid. If the payment frequency is of value T (term), the period is defined by the effectiveDate and the terminationDate."> + firstPaymentDate string (0..1) <"The first unadjusted payment date. This day may be subject to adjustment in accordance with any business day convention specified in paymentDatesAdjustments. This element must only be included if there is an initial stub. This date will normally correspond to an unadjusted calculation period start or end date. This is true even if early or delayed payment is specified to be applicable since the actual first payment date will be the specified number of days before or after the applicable adjusted calculation period start or end date with the resulting payment date then being adjusted in accordance with any business day convention specified in paymentDatesAdjustments."> + lastRegularPaymentDate string (0..1) <"The last regular payment date when specified as a date, as in the FpML interest rate construct. FpML specifies that this date may be subject to adjustment in accordance with any business day convention specified in the paymentDatesAdjustments attribute."> + paymentDateSchedule PaymentDateSchedule (0..1) <"The payment dates when specified as relative to a set of dates specified somewhere else in the instance document/transaction, e.g. the valuation dates as typically the case for equity swaps, or when specified as a calculation period schedule."> + payRelativeTo PayRelativeToEnum (0..1) <"Specifies whether the payments occur relative to each adjusted calculation period start date or end date, each reset date, valuation date or the last pricing date. Calculation period start date means relative to the start of the first calculation period contributing to a given payment. Similarly, calculation period end date means the end of the last calculation period contributing to a given payment. The valuation date is applicable for Brazilian-CDI and equity swaps."> + paymentDaysOffset Offset (0..1) <"If early payment or delayed payment is required, specifies the number of days offset that the payment occurs relative to what would otherwise be the unadjusted payment date. The offset can be specified in terms of either calendar or business days. Even in the case of a calendar days offset, the resulting payment date, adjusted for the specified calendar days offset, will still be adjusted in accordance with the specified payment dates adjustments. This element should only be included if early or delayed payment is applicable, i.e. if the periodMultiplier element value is not equal to zero. An early payment would be indicated by a negative periodMultiplier element value and a delayed payment (or payment lag) would be indicated by a positive periodMultiplier element value."> + paymentDatesAdjustments BusinessDayAdjustments (0..1) <"The definition of the business day convention and financial business centers used for adjusting the payment date if it would otherwise fall on a day that is not a business day in the specified business center."> + +type PaymentDateSchedule: <"The payment dates when specified as relative to a set of dates specified somewhere else in the instance document/transaction, e.g. the valuation dates as typically the case for equity swaps, or when specified as a calculation period schedule."> + interimPaymentDates AdjustableRelativeOrPeriodicDates (0..*) + finalPaymentDate AdjustableOrRelativeDate (0..1) <"The last payment when specified as an adjustable or relative date, as in the FpML total return construct."> + +type AdjustableRelativeOrPeriodicDates: <"A class giving the choice between defining a series of dates as an explicit list of dates together with applicable adjustments or as relative to some other series of (anchor) dates, or as a calculation period schedule."> + adjustableDates AdjustableDates (0..1) <"A series of dates that shall be subject to adjustment if they would otherwise fall on a day that is not a business day in the specified business centers, together with the convention for adjusting the date."> + relativeDates RelativeDates (0..1) <"A series of dates specified as some offset to another series of dates (the anchor dates)."> + periodicDates PeriodicDates (0..1) <"A calculation period schedule."> + +type RelativeDates extends RelativeDateOffset: <"A class describing a set of dates defined as relative to another set of dates."> + periodSkip int (0..1) <"The number of periods in the referenced date schedule that are between each date in the relative date schedule. Thus a skip of 2 would mean that dates are relative to every second date in the referenced schedule. If present this should have a value greater than 1."> + scheduleBounds DateRange (0..1) <"The first and last dates of a schedule. This can be used to restrict the range of values in a reference series of dates."> + +type RelativeDateOffset extends Offset: <"A class defining a date (referred to as the derived date) as a relative offset from another date (referred to as the anchor date). If the anchor date is itself an adjustable date then the offset is assumed to be calculated from the adjusted anchor date. A number of different scenarios can be supported, namely; 1) the derived date may simply be a number of calendar periods (days, weeks, months or years) preceding or following the anchor date; 2) the unadjusted derived date may be a number of calendar periods (days, weeks, months or years) preceding or following the anchor date with the resulting unadjusted derived date subject to adjustment in accordance with a specified business day convention, i.e. the derived date must fall on a good business day; 3) the derived date may be a number of business days preceding or following the anchor date. Note that the businessDayConvention specifies any required adjustment to the unadjusted derived date. A negative or positive value in the periodMultiplier indicates whether the unadjusted derived precedes or follows the anchor date. The businessDayConvention should contain a value NONE if the day type element contains a value of Business (since specifying a negative or positive business days offset would already guarantee that the derived date would fall on a good business day in the specified business centers)."> + businessDayConvention BusinessDayConventionEnum (1..1) <"The convention for adjusting a date if it would otherwise fall on a day that is not a business day, as specified by an ISDA convention (e.g. Following, Precedent)."> + businessCenters BusinessCenters (0..1) + businessCentersReference BusinessCenters (0..1) <"A pointer style reference to a set of financial business centers defined elsewhere in the document. This set of business centers is used to determine whether a particular day is a business day or not."> + dateRelativeTo string (0..1) <"Specifies the anchor as an href attribute. The href attribute value is a pointer style reference to the element or component elsewhere in the document where the anchor date is defined."> + adjustedDate string (0..1) <"The date once the adjustment has been performed. (Note that this date may change if the business center holidays change)."> + +type PeriodicDates: <"A class for specifying a calculation period schedule."> + startDate AdjustableOrRelativeDate (0..1) <"The start date of the calculation period. FpML specifies that for interest rate swaps this date must only be specified if it is not equal to the effective date. It is always specified in the case of equity swaps and credit default swaps with periodic payments. This date may be subject to adjustment in accordance with a business day convention."> + endDate AdjustableOrRelativeDate (0..1) <"The end date of the calculation period. FpML specifies that for interest rate swaps this date must only be specified if it is not equal to the termination date. It is always specified in the case of equity swaps with periodic payments. This date may be subject to adjustment in accordance with a business day convention."> + periodFrequency CalculationPeriodFrequency (0..1) <"The frequency at which calculation period end dates occur with the regular part of the calculation period schedule and their roll date convention."> + periodDatesAdjustments BusinessDayAdjustments (0..1) <"The specification of the business day convention and financial business centers used for adjusting any calculation period date if it would otherwise fall on a day that is not a business day in the specified business center."> + +type AdjustableOrRelativeDate: <"A class giving the choice between defining a date as an explicit date together with applicable adjustments or as relative to some other (anchor) date."> + adjustableDate AdjustableDate (0..1) <"A date that shall be subject to adjustment if it would otherwise fall on a day that is not a business day in the specified business centers, together with the convention for adjusting the date."> + relativeDate AdjustedRelativeDateOffset (0..1) <"A date specified as some offset to another date (the anchor date)."> + +type AdjustableDate: <"A class for defining a date that shall be subject to adjustment if it would otherwise fall on a day that is not a business day in the specified business centers, together with the convention for adjusting the date."> + unadjustedDate string (0..1 ) <"A date subject to adjustment. While in FpML this date is required, this cardinality constraint has been relaxed as part of the CDM in order to support the FRA representation, which effective and termination dates are specified in FpML as adjusted dates."> + dateAdjustments BusinessDayAdjustments (0..1) <"The business day convention and financial business centers used for adjusting the date if it would otherwise fall on a day that is not a business date in the specified business centers."> + dateAdjustmentsReference BusinessDayAdjustments (0..1) <"A pointer style reference to date adjustments defined elsewhere in the document."> + adjustedDate string (0..1) <"The date once the adjustment has been performed. (Note that this date may change if the business center holidays change)."> + +type AdjustedRelativeDateOffset extends RelativeDateOffset: <"A type defining a date (referred to as the derived date) as a relative offset from another date (referred to as the anchor date) plus optional date adjustments."> + relativeDateAdjustments BusinessDayAdjustments (0..1) <"The business day convention and financial business centers used for adjusting the relative date if it would otherwise fall on a day that is not a business date in the specified business centers."> + +type CalculationPeriodFrequency extends Frequency: <"A class to specify the frequency at which calculation period end dates occur within the regular part of the calculation period schedule and their roll date convention."> + rollConvention RollConventionEnum (1..1) <"The roll convention specifies the period term as part of a periodic schedule, i.e. the calculation period end date within the regular part of the calculation period. The value could be a rule, e.g. IMM Settlement Dates, which is the 3rd Wednesday of the month, or it could be a specific day of the month, such as the first day of the applicable month. It is used in conjunction with a frequency and the regular period start date of a calculation period."> + balanceOfFirstPeriod boolean (0..1) <"Indicates, when true, that that the first Calculation Period should run from the Effective Date to the end of the calendar period in which the Effective Date falls, e.g. Jan 15 - Jan 31 if the calculation periods are one month long and Effective Date is Jan 15. If false, the first Calculation Period should run from the Effective Date for one whole period, e.g. Jan 15 to Feb 14 if the calculation periods are one month long and Effective Date is Jan 15. Mostly used in Commmodity Swaps."> + +type DateRelativeToCalculationPeriodDates: <"A data to: provide the ability to point to multiple payment nodes in the document through the unbounded paymentDatesReference."> + calculationPeriodDatesReference CalculationPeriodDates (1..*) <"A set of href pointers to calculation period dates defined somewhere else in the document."> + +type CalculationPeriodDates: <"A data for: defining the parameters used to generate the calculation period dates schedule, including the specification of any initial or final stub calculation periods. A calculation period schedule consists of an optional initial stub calculation period, one or more regular calculation periods and an optional final stub calculation period. In the absence of any initial or final stub calculation periods, the regular part of the calculation period schedule is assumed to be between the effective date and the termination date. No implicit stubs are allowed, i.e. stubs must be explicitly specified using an appropriate combination of firstPeriodStartDate, firstRegularPeriodStartDate and lastRegularPeriodEndDate."> + effectiveDate AdjustableOrRelativeDate (0..1) <"The first day of the terms of the trade. This day may be subject to adjustment in accordance with a business day convention."> + terminationDate AdjustableOrRelativeDate (0..1) <"The last day of the terms of the trade. This date may be subject to adjustments in accordance with the business day convention. It can also be specified in relation to another scheduled date (e.g. the last payment date)."> + calculationPeriodDatesAdjustments BusinessDayAdjustments (0..1) <"The specification of the business day convention and financial business centers used for adjusting any calculation period date if it would otherwise fall on a day that is not a business day in the specified business center."> + firstPeriodStartDate AdjustableOrRelativeDate (0..1) <"The start date of the calculation period. FpML specifies that for interest rate swaps this date must only be specified if it is not equal to the effective date. It is always specified in the case of equity swaps and credit default swaps with periodic payments. This date may be subject to adjustment in accordance with a business day convention."> + firstRegularPeriodStartDate string (0..1) <"The start date of the regular part of the calculation period schedule. It must only be specified if there is an initial stub calculation period. This day may be subject to adjustment in accordance with any adjustments specified in calculationPeriodDatesAdjustments."> + firstCompoundingPeriodEndDate string (0..1) <"The end date of the initial compounding period when compounding is applicable. It must only be specified when the compoundingMethod element is present and not equal to a value of None. This date may be subject to adjustment in accordance with any adjustments specified in calculationPeriodDatesAdjustments."> + lastRegularPeriodEndDate string (0..1) <"The end date of the regular part of the calculation period schedule. It must only be specified if there is a final stub calculation period. This day may be subject to adjustment in accordance with any adjustments specified in calculationPeriodDatesAdjustments."> + stubPeriodType StubPeriodTypeEnum (0..1) <"Method to allocate any irregular period remaining after regular periods have been allocated between the effective and termination date."> + calculationPeriodFrequency CalculationPeriodFrequency (0..1) <"The frequency at which calculation period end dates occur with the regular part of the calculation period schedule and their roll date convention."> + +type DateRelativeToValuationDates: <"A data to: provide the ability to point to multiple payment nodes in the document through the unbounded paymentDatesReference."> + valuationDatesReference EquityValuationDates (1..*) <"A set of href pointers to valuation period dates defined somewhere else in the document."> + +type EquityValuationDates : <"Defines how and when a performance type option or performance type swap is to be valued."> + determinationMethod DeterminationMethodEnum (1..1) <"Specifies the method according to which an amount or a date is determined."> + valuationDates AdjustableRelativeOrPeriodicDates (0..1) <"2018 ISDA CDM Equity Confirmation for Security Equity Swap: Pricing Date"> + valuationDate AdjustableOrRelativeDate (0..1) <"2018 ISDA CDM Equity Confirmation for Security Equity Swap: Pricing Date"> + valuationTime BusinessCenterTime (0..1) <"The specific time of day at which the calculation agent values the underlying. The SpecificTime is the only case when the valuationTime (time + business center location e.g. 10:00:00 USNY) should be provided. You should be able to provide just the valuationTime without valuationTimeType, which infer that this is a specific time."> + valuationTimeType TimeTypeEnum (0..1) <"The time of day at which the calculation agent values the underlying, for example the official closing time of the exchange."> + +type PhysicalSettlementTerms: <"Specifies Physical Settlement Terms characteristics for the settlement of a Credit Default Swap or Option."> + clearedPhysicalSettlement boolean (0..1) <"Specifies whether the swap resulting from physical settlement of the swaption transaction will clear through a clearing house. The meaning of Cleared Physical Settlement is defined in the 2006 ISDA Definitions, Section 15.2 (published in Supplement number 28)."> + predeterminedClearingOrganizationParty AncillaryRoleEnum (0..1) <"Specifies the clearing organization (CCP, DCO) to which the trade should be cleared."> + physicalSettlementPeriod PhysicalSettlementPeriod (0..1) <"The number of business days used in the determination of the physical settlement date. The physical settlement date is this number of business days after all applicable conditions to settlement are satisfied. If a number of business days is not specified fallback provisions apply for determining the number of business days. If Section 8.5/8.6 of the 1999/2003 ISDA Definitions are to apply the businessDaysNotSpecified element should be included. If a specified number of business days are to apply these should be specified in the businessDays element. If Section 8.5/8.6 of the 1999/2003 ISDA Definitions are to apply but capped at a maximum number of business days then the maximum number should be specified in the maximumBusinessDays element. ISDA 2003 Term: Physical Settlement Period."> + deliverableObligations DeliverableObligations (0..1) <"This element contains all the ISDA terms relevant to defining the deliverable obligations."> + escrow boolean (0..1) <"If this element is specified and set to 'true', indicates that physical settlement must take place through the use of an escrow agent. (For Canadian counterparties this is always 'Not Applicable'. ISDA 2003 Term: Escrow."> + sixtyBusinessDaySettlementCap boolean (0..1) <"If this element is specified and set to 'true', for a transaction documented under the 2003 ISDA Credit Derivatives Definitions, has the effect of incorporating the language set forth below into the confirmation. The section references are to the 2003 ISDA Credit Derivatives Definitions. Notwithstanding Section 1.7 or any provisions of Sections 9.9 or 9.10 to the contrary, but without prejudice to Section 9.3 and (where applicable) Sections 9.4, 9.5 and 9.6, if the Termination Date has not occurred on or prior to the date that is 60 Business Days following the Physical Settlement Date, such 60th Business Day shall be deemed to be the Termination Date with respect to this Transaction except in relation to any portion of the Transaction (an 'Affected Portion') in respect of which: (1) a valid notice of Buy-in Price has been delivered that is effective fewer than three Business Days prior to such 60th Business Day, in which case the Termination Date for that Affected Portion shall be the third Business Day following the date on which such notice is effective; or (2) Buyer has purchased but not Delivered Deliverable Obligations validly specified by Seller pursuant to Section 9.10(b), in which case the Termination Date for that Affected Portion shall be the tenth Business Day following the date on which Seller validly specified such Deliverable Obligations to Buyer."> + +type PhysicalSettlementPeriod: + businessDaysNotSpecified boolean (0..1) <"An explicit indication that a number of business days are not specified and therefore ISDA fallback provisions should apply."> + businessDays int (0..1) <"A number of business days. Its precise meaning is dependant on the context in which this element is used. ISDA 2003 Term: Business Day."> + maximumBusinessDays int (0..1) <"A maximum number of business days. Its precise meaning is dependant on the context in which this element is used. Intended to be used to limit a particular ISDA fallback provision."> + condition: one-of + +type DeliverableObligations: <"A class to specify all the ISDA terms relevant to defining the deliverable obligations."> + accruedInterest boolean (0..1) <"Indicates whether accrued interest is included (true) or not (false). For cash settlement this specifies whether quotations should be obtained inclusive or not of accrued interest. For physical settlement this specifies whether the buyer should deliver the obligation with an outstanding principal balance that includes or excludes accrued interest. ISDA 2003 Term: Include/Exclude Accrued Interest."> + category ObligationCategoryEnum (0..1) <"Used in both obligations and deliverable obligations to represent a class or type of securities which apply. ISDA 2003 Term: Obligation Category/Deliverable Obligation Category."> + notSubordinated boolean (0..1) <"An obligation and deliverable obligation characteristic. An obligation that ranks at least equal with the most senior Reference Obligation in priority of payment or, if no Reference Obligation is specified in the related Confirmation, the obligations of the Reference Entity that are senior. ISDA 2003 Term: Not Subordinated."> + specifiedCurrency SpecifiedCurrency (0..1) <"An obligation and deliverable obligation characteristic. The currency or currencies in which an obligation or deliverable obligation must be payable. ISDA 2003 Term: Specified Currency."> + notSovereignLender boolean (0..1) <"An obligation and deliverable obligation characteristic. Any obligation that is not primarily (majority) owed to a Sovereign or Supranational Organisation. ISDA 2003 Term: Not Sovereign Lender."> + notDomesticCurrency NotDomesticCurrency (0..1) <"An obligation and deliverable obligation characteristic. Any obligation that is payable in any currency other than the domestic currency. Domestic currency is either the currency so specified or, if no currency is specified, the currency of (a) the reference entity, if the reference entity is a sovereign, or (b) the jurisdiction in which the relevant reference entity is organised, if the reference entity is not a sovereign. ISDA 2003 Term: Not Domestic Currency."> + notDomesticLaw boolean (0..1) <"An obligation and deliverable obligation characteristic. If the reference entity is a Sovereign, this means any obligation that is not subject to the laws of the reference entity. If the reference entity is not a sovereign, this means any obligation that is not subject to the laws of the jurisdiction of the reference entity. ISDA 2003 Term: Not Domestic Law."> + listed boolean (0..1) <"An obligation and deliverable obligation characteristic. Indicates whether or not the obligation is quoted, listed or ordinarily purchased and sold on an exchange. ISDA 2003 Term: Listed."> + notContingent boolean (0..1) <"A deliverable obligation characteristic. In essence Not Contingent means the repayment of principal cannot be dependant on a formula/index, i.e. to prevent the risk of being delivered an instrument that may never pay any element of principal, and to ensure that the obligation is interest bearing (on a regular schedule). ISDA 2003 Term: Not Contingent."> + notDomesticIssuance boolean (0..1) <"An obligation and deliverable obligation characteristic. Any obligation other than an obligation that was intended to be offered for sale primarily in the domestic market of the relevant Reference Entity. This specifies that the obligation must be an internationally recognised bond. ISDA 2003 Term: Not Domestic Issuance."> + assignableLoan PCDeliverableObligationCharac (0..1) <"A deliverable obligation characteristic. A loan that is freely assignable to a bank or financial institution without the consent of the Reference Entity or the guarantor, if any, of the loan (or the consent of the applicable borrower if a Reference Entity is guaranteeing the loan) or any agent. ISDA 2003 Term: Assignable Loan."> + consentRequiredLoan PCDeliverableObligationCharac (0..1) <"A deliverable obligation characteristic. A loan that is capable of being assigned with the consent of the Reference Entity or the guarantor, if any, of the loan or any agent. ISDA 2003 Term: Consent Required Loan."> + directLoanParticipation LoanParticipation (0..1) <"A deliverable obligation characteristic. A loan with a participation agreement whereby the buyer is capable of creating, or procuring the creation of, a contractual right in favour of the seller that provides the seller with recourse to the participation seller for a specified share in any payments due under the relevant loan which are received by the participation seller. ISDA 2003 Term: Direct Loan Participation."> + transferable boolean (0..1) <"A deliverable obligation characteristic. An obligation that is transferable to institutional investors without any contractual, statutory or regulatory restrictions. ISDA 2003 Term: Transferable."> + maximumMaturity Period (0..1) <"A deliverable obligation characteristic. An obligation that has a remaining maturity from the Physical Settlement Date of not greater than the period specified. ISDA 2003 Term: Maximum Maturity."> + acceleratedOrMatured boolean (0..1) <"A deliverable obligation characteristic. An obligation at time of default is due to mature and due to be repaid, or as a result of downgrade/bankruptcy is due to be repaid as a result of an acceleration clause. ISDA 2003 Term: Accelerated or Matured."> + notBearer boolean (0..1) <"A deliverable obligation characteristic. Any obligation that is not a bearer instrument. This applies to Bonds only and is meant to avoid tax, fraud and security/delivery provisions that can potentially be associated with Bearer Bonds. ISDA 2003 Term: Not Bearer."> + fullFaithAndCreditObLiability boolean (0..1) <"An obligation and deliverable obligation characteristic. Defined in the ISDA published additional provisions for U.S. Municipal as Reference Entity. ISDA 2003 Term: Full Faith and Credit Obligation Liability."> + generalFundObligationLiability boolean (0..1) <"An obligation and deliverable obligation characteristic. Defined in the ISDA published additional provisions for U.S. Municipal as Reference Entity. ISDA 2003 Term: General Fund Obligation Liability."> + revenueObligationLiability boolean (0..1) <"An obligation and deliverable obligation characteristic. Defined in the ISDA published additional provisions for U.S. Municipal as Reference Entity. ISDA 2003 Term: Revenue Obligation Liability."> + indirectLoanParticipation LoanParticipation (0..1) <"ISDA 1999 Term: Indirect Loan Participation. NOTE: Only applicable as a deliverable obligation under ISDA Credit 1999."> + excluded string (0..1) <"A free format string to specify any excluded obligations or deliverable obligations, as the case may be, of the reference entity or excluded types of obligations or deliverable obligations. ISDA 2003 Term: Excluded Obligations/Excluded Deliverable Obligations."> + othReferenceEntityObligations string (0..1) <"This element is used to specify any other obligations of a reference entity in both obligations and deliverable obligations. The obligations can be specified free-form. ISDA 2003 Term: Other Obligations of a Reference Entity."> + +type SpecifiedCurrency: + applicable boolean (1..1) <"Indicates whether the specified currency provision is applicable."> + currency string (0..1) <"The currency in which the specified currency is denominated. The list of valid currencies is not presently positioned as an enumeration as part of the CDM because that scope is limited to the values specified by ISDA and FpML. As a result, implementers have to make reference to the relevant standard, such as the ISO 4217 standard for currency codes."> + +type NotDomesticCurrency: <"A class to specify the ISDA 2003 Term: Not Domestic Currency."> + applicable boolean (1..1) <"Indicates whether the Not Domestic Currency provision is applicable."> + currency string (0..1) <"An explicit specification of the domestic currency. The list of valid currencies is not presently positioned as an enumeration as part of the CDM because that scope is limited to the values specified by ISDA and FpML. As a result, implementers have to make reference to the relevant standard, such as the ISO 4217 standard for currency codes."> + +type PCDeliverableObligationCharac: <"A class to specify the Partial Cash Deliverable Obligation Characteristic."> + applicable boolean (1..1) <"Indicates whether the provision is applicable."> + partialCashSettlement boolean (0..1) <"Specifies whether either 'Partial Cash Settlement of Assignable Loans', 'Partial Cash Settlement of Consent Required Loans' or 'Partial Cash Settlement of Participations' is applicable. If this element is specified and Assignable Loan is a Deliverable Obligation Characteristic, any Assignable Loan that is deliverable, but where a non-receipt of Consent by the Physical Settlement Date has occurred, the Loan can be cash settled rather than physically delivered. If this element is specified and Consent Required Loan is a Deliverable Obligation Characteristic, any Consent Required Loan that is deliverable, but where a non-receipt of Consent by the Physical Settlement Date has occurred, the Loan can be cash settled rather than physically delivered. If this element is specified and Direct Loan Participation is a Deliverable Obligation Characteristic, any Participation that is deliverable, but where this participation has not been effected (has not come into effect) by the Physical Settlement Date, the participation can be cash settled rather than physically delivered."> + +type LoanParticipation extends PCDeliverableObligationCharac: <"A class to specify loan with a participation agreement whereby the buyer is capable of creating, or procuring the creation of, a contractual right in favour of the seller that provides the seller with recourse to the participation seller for a specified share in any payments due under the relevant loan which are received by the participation seller. ISDA 2003 Term: Direct Loan Participation."> + qualifyingParticipationSeller string (0..1) <"If Direct Loan Participation is specified as a deliverable obligation characteristic, this specifies any requirements for the Qualifying Participation Seller. The requirements may be listed free-form. ISDA 2003 Term: Qualifying Participation Seller."> + +/*type ExchangeRate: <"A class that is used for describing the exchange rate for a particular transaction."> + crossRate CrossRate (0..*) <"An optional element that allow for definition of the currency exchange rates used to cross between the traded currencies for non-base currency FX contracts."> +*/ + +type CrossRate extends QuotedCurrencyPair: <"A class that is used for including the currency exchange rates used to cross between the traded currencies for non-base currency FX contracts."> + rate number (1..1) <"The exchange rate used to cross between the traded currencies."> + spotRate number (0..1) <"An optional element used for FX forwards and certain types of FX OTC options. For deals consummated in the FX Forwards Market, this represents the current market rate for a particular currency pair."> + forwardPoints number (0..1) <"An optional element used for deals consummated in the FX Forwards market. Forward points represent the interest rate differential between the two currencies traded and are quoted as a premium or a discount. Forward points are added to, or subtracted from, the spot rate to create the rate of the forward trade."> + +type QuotedCurrencyPair: <"A class that describes the composition of a rate that has been quoted or is to be quoted. This includes the two currencies and the quotation relationship between the two currencies and is used as a building block throughout the FX specification."> + currency1 string (1..1) <"The first currency specified when a pair of currencies is to be evaluated."> + currency2 string (1..1) <"The second currency specified when a pair of currencies is to be evaluated."> + quoteBasis QuoteBasisEnum (1..1) <"The method by which the exchange rate is quoted."> + +type ValuationMethod: <"Specifies the parameters required to obtain a valuation, including the source, quotation method (bid, mid etc.) and any applicable quotation amount."> + valuationSource ValuationSource (1..1) <"The source for obtaining a valuation. This may come from some information source (e.g. Reuters), from a rate option fixing (e.g. FX fixing for cross-currency settlement), or from a set of reference banks. This is a mandatory attribute as the valuation method relies on one of those sources to be specified."> + quotationMethod QuotationRateTypeEnum (0..1) <"The type of price quotations to be requested from dealers when determining the market value of the reference obligation for purposes of cash settlement, or which rate quote is to be observed for a fixing. For example, Bid, Offer, Mid-market or Exercising Party Pays. ISDA 2003 Term: Quotation Method. The meaning of Exercising Party Pays is defined in the 2000 ISDA Definitions, Section 17.2. Certain Definitions Relating to Cash Settlement, paragraph (j)."> + valuationMethod ValuationMethodEnum (0..1) <"The ISDA defined methodology for determining the final price of the reference obligation for purposes of cash settlement. (ISDA 2003 Term: Valuation Method). For example, Market, Highest etc."> + quotationAmount Money (0..1) <"In the determination of a cash settlement amount, if weighted average quotations are to be obtained, the quotation amount specifies an upper limit to the outstanding principal balance of the reference obligation for which the quote should be obtained. If not specified, the ISDA definitions provide for a fallback amount equal to the floating rate payer calculation amount. ISDA 2003 Term: Quotation Amount."> + minimumQuotationAmount Money (0..1) <"In the determination of a cash settlement amount, if weighted average quotations are to be obtained, the minimum quotation amount specifies a minimum intended threshold amount of outstanding principal balance of the reference obligation for which the quote should be obtained. If not specified, the ISDA definitions provide for a fallback amount of the lower of either USD 1,000,000 (or its equivalent in the relevant obligation currency) or the quotation amount. ISDA 2003 Term: Minimum Quotation Amount."> + cashCollateralValuationMethod CashCollateralValuationMethod (0..1) <"Specifies the parameters representing several mid-market valuation and replacement value methods."> + +type ValuationSource: <"A class describing the method for obtaining a settlement rate, specified through either an information source (page), a settlement rate option (fixing) or by using quotes from reference banks."> + quotedCurrencyPair QuotedCurrencyPair (0..1) <"Defines the two currencies for an FX trade and the quotation relationship between the two currencies. This attribute was formerly part of 'fxSettlementTerms', which is now being harmonised into a common 'CashSettlementTerms' that includes a 'ValuationDate'."> + informationSource FxSpotRateSource (0..1) <"The information source where a published or displayed market rate will be obtained, e.g. Telerate Page 3750."> + settlementRateOption SettlementRateOption (0..1) <"The rate option to use for the fixing. Currently only applicable to foreign exchange fixing in case of cross-currency settlement."> + referenceBanks ReferenceBanks (0..1) <"A container for a set of reference institutions that may be called upon to provide rate quotations as part of the method to determine the applicable cash settlement amount. If institutions are not specified, it is assumed that reference institutions will be agreed between the parties on the exercise date, or in the case of swap transaction to which mandatory early termination is applicable, the cash settlement valuation date."> + dealerOrCCP AncillaryEntity (0..1) <"Holds an identifier for the reference entity that is agreed by both parties as a basis for cash settlement calculations. This could be a dealer from whom quotations are obtained by the calculation agent on the reference obligation for purposes of cash settlement in a credit event. ISDA 2003 Term: Dealer. This could be the clearing organization (CCP, DCO) to which the trade should be cleared, as applicable for cash-settled swaptions."> + +type ReferenceBank: <"A class to describe an institution (party) identified by means of a coding scheme and an optional name."> + referenceBankId string (1..1) <"An institution (party) identifier, e.g. a bank identifier code (BIC). FpML specifies a referenceBankIdScheme."> + referenceBankName string (0..1) <"The name of the institution (party). A free format string. FpML does not define usage rules for the element."> + +type ReferenceBanks: <"A class defining the list of reference institutions polled for relevant rates or prices when determining the cash settlement amount for a product where cash settlement is applicable."> + referenceBank ReferenceBank (1..*) <"An institution (party) identified by means of a coding scheme and an optional name."> + +type SettlementRateOption: <"Defines the settlement rate option to use for fixing in case of cash settlement. Currently only applicable to foreign exchange fixing in case of cross-currency settlement."> + settlementRateOption SettlementRateOptionEnum (1..1) <"The rate source for the conversion to the settlement currency. This source is specified through a scheme that reflects the terms of the Annex A to the 1998 FX and Currency Option Definitions."> + priceSourceDisruption PriceSourceDisruption (0..1) <"An attribute defining the parameters to get a new quote when a settlement rate option is disrupted."> + +type PriceSourceDisruption: <"A data defining: the parameters used to get a price quote to replace the settlement rate option that is disrupted."> + fallbackReferencePrice FallbackReferencePrice (1..1) <"The method, prioritised by the order it is listed in this element, to get a replacement rate for the disrupted settlement rate option."> + +type FallbackReferencePrice: <"The method, prioritised by the order it is listed in this element, to get a replacement rate for the disrupted settlement rate option."> + valuationPostponement ValuationPostponement (0..1) <"Specifies how long to wait to get a quote from a settlement rate option upon a price source disruption."> + fallBackSettlementRateOption SettlementRateOptionEnum (0..*) <"This settlement rate option will be used in its place."> + fallbackSurveyValuationPostponement boolean (0..1) <"Request rate quotes from the market. This element is set as type Empty in FpML. When present, the FpML synonym is mapped to a value True in the CDM."> + calculationAgentDetermination CalculationAgent (0..1) <"The calculation agent will decide the rate."> + +type ValuationPostponement: <"Specifies how long to wait to get a quote from a settlement rate option upon a price source disruption."> + maximumDaysOfPostponement int (1..1) <"The maximum number of days to wait for a quote from the disrupted settlement rate option before proceeding to the next method."> + +type CalculationAgent: <"A class defining the ISDA calculation agent responsible for performing duties as defined in the applicable product definitions."> + calculationAgentParty AncillaryRoleEnum (0..1) <"Specifies the party which is the ISDA Calculation Agent for the trade. If more than one party is referenced then the parties are assumed to be co-calculation agents, i.e. they have joint responsibility."> + calculationAgentPartyEnum PartyDeterminationEnum (0..1) <"Specifies the ISDA calculation agent responsible for performing duties as defined in the applicable product definitions. For example, the Calculation Agent may be defined as being the Non-exercising Party."> + calculationAgentBusinessCenter BusinessCenterEnum (0..1) <"The city in which the office through which ISDA Calculation Agent is acting for purposes of the transaction is located The short-form confirm for a trade that is executed under a Sovereign or Asia Pacific Master Confirmation Agreement ( MCA ), does not need to specify the Calculation Agent. However, the confirm does need to specify the Calculation Agent City. This is due to the fact that the MCA sets the value for Calculation Agent but does not set the value for Calculation Agent City."> + +type AncillaryEntity: <"Holds an identifier for an ancillary entity, either identified directly via its ancillary role or directly as a legal entity."> + ancillaryParty AncillaryRoleEnum (0..1) <"Identifies a party via its ancillary role on a transaction (e.g. CCP or DCO through which the trade should be cleared.)"> + legalEntity LegalEntity (0..1) + condition: one-of + +type LegalEntity: <"A class to specify a legal entity, with a required name and an optional entity identifier (such as the LEI)."> + entityId string (0..*) <"A legal entity identifier (e.g. RED entity code)."> + name string (1..1) <"The legal entity name."> + +type CashCollateralValuationMethod : <"This type is a generic structure that can represent the parameters of several mid-market valuation and replacement value methods described in the 2021 ISDA Definitions."> + applicableCsa CsaTypeEnum (0..1) <"This may be used to specify what type of CSA (credit support annex/agreement) is to be used for cash settlement purposes."> + cashCollateralCurrency string (0..1)<"This may be used to indicate the currency of cash collateral for cash settlement purposes."> + cashCollateralInterestRate string (0..1)<"This may be used to indicate the interest rate to be used for cash collateral for cash settlement purposes."> + agreedDiscountRate string (0..1) <"This may be used to indicate the discount rate to be used for cash collateral for cash settlement purposes."> + protectedParty PartyDeterminationEnum (0..2) <"This may be used to specify which party is protected (e.g. under Replacement Value cash settlement methods)."> + prescribedDocumentationAdjustment boolean (0..1) <"This may be used to indicate that 'prescribed documentation adjustment' is applicable."> diff --git a/resources/Rosetta/test-multiple.rosetta b/resources/Rosetta/test-multiple.rosetta index 0984104..7ea1bd8 100644 --- a/resources/Rosetta/test-multiple.rosetta +++ b/resources/Rosetta/test-multiple.rosetta @@ -207,4 +207,15 @@ func EuropeanOption: option Contract (1..1) assign-output option: - MkGet(Perhaps(endDate,contract)) \ No newline at end of file + MkGet(Perhaps(endDate,contract)) + +func AmericanOption: + inputs: + startDate string (1..1) + endDate string (1..1) + contract Contract (1..1) + output: + option Contract (1..1) + alias opt: MkAnytime(Perhaps(endDate,contract)) + assign-output option: + MkThereafter(MkGet (MkTruncate(startDate,opt)),opt) \ No newline at end of file diff --git a/resources/Rosetta/test-period.rosetta b/resources/Rosetta/test-period.rosetta index 237a2e1..298d489 100644 --- a/resources/Rosetta/test-period.rosetta +++ b/resources/Rosetta/test-period.rosetta @@ -1,21 +1,11 @@ namespace test.period : <"Something"> version "${version.ok}" - -type ExchangeRate: - from int (1..1) - to int (1..1) - - -type Obs: - constant number (0..1) - exchangeRate ExchangeRate (0..1) - condition: one-of - -func Konst: +func PayoutParty1: inputs: - constant number (1..1) + payout PayoutBase (1..1) + contract Contract (1..1) output: - observable Obs (1..1) - assign-output observable -> constant: - constant \ No newline at end of file + contractOut Contract (1..1) + assign-output contractOut: + if (payout -> payerReceiver -> payer = CounterpartyRoleEnum -> PARTY_1) or (payout -> payerReceiver -> receiver = CounterpartyRoleEnum -> PARTY_2) then MkGive(contract) else contract \ No newline at end of file diff --git a/src/Model/Enum.hs b/src/Model/Enum.hs index e901e0a..a8bc15e 100644 --- a/src/Model/Enum.hs +++ b/src/Model/Enum.hs @@ -1,4 +1,5 @@ module Model.Enum where +import Model.Type -- |The representation of a Rosetta enum data type data EnumType = MakeEnum { @@ -12,4 +13,11 @@ data EnumValue = MakeEnumValue { enumValueName :: String, enumValueDescription :: Maybe String, enumValueDisplayName :: Maybe String -} deriving (Show, Eq) \ No newline at end of file +} deriving (Show, Eq) + +convertEnumToType :: EnumType -> Type +convertEnumToType (MakeEnum name desc val) = MakeType name (BasicType "Object") desc (map (convertValueToAttribute typ) val) [MakeCondition Nothing (Keyword "one-of")] + where typ = MakeType name (BasicType "Object") desc [] [MakeCondition Nothing (Keyword "one-of")] + +convertValueToAttribute :: Type -> EnumValue -> TypeAttribute +convertValueToAttribute typ (MakeEnumValue name desc _) = MakeTypeAttribute name typ (Bounds (0, 1)) Nothing \ No newline at end of file diff --git a/src/Model/Function.hs b/src/Model/Function.hs index bb8e087..4b20c7e 100644 --- a/src/Model/Function.hs +++ b/src/Model/Function.hs @@ -15,6 +15,7 @@ data FunctionSignature = data Function = MakeFunction { signature :: FunctionSignature, + aliases :: [(String, Expression)], assignment :: [(Expression, Expression)] } deriving (Show) @@ -22,6 +23,7 @@ data Function = data ExplicitFunction = MakeExplicitFunction { sign :: FunctionSignature, + explicitAliases :: [(String, ExplicitExpression)], explicitAssignment :: [(ExplicitExpression, ExplicitExpression)] } deriving Show \ No newline at end of file diff --git a/src/Model/Type.hs b/src/Model/Type.hs index f9c796a..f552bd3 100644 --- a/src/Model/Type.hs +++ b/src/Model/Type.hs @@ -36,6 +36,7 @@ data Expression = Variable String | Int String | Real String | Boolean String + | Enum String String | Empty | Parens Expression | List [Expression] @@ -51,8 +52,9 @@ data ExplicitExpression = ExplicitEmpty | ExplicitVariable {name :: String, returnCoercion :: Coercion} | Value {name :: String, returnCoercion :: Coercion} | ExplicitList [ExplicitExpression] + | ExplicitEnumCall {name :: String, val :: String, returnCoercion :: Coercion} | ExplicitKeyword String - | ExplicitParens ExplicitExpression + | ExplicitParens {expression :: ExplicitExpression, returnCoercion :: Coercion} | ExplicitPath {super :: ExplicitExpression, sub :: ExplicitExpression, returnCoercion :: Coercion} | ExplicitFunction {name :: String, args :: [(ExplicitExpression, Coercion)], returnCoercion :: Coercion} | ExplicitIfSimple {cond :: (ExplicitExpression, Coercion), block1 :: (ExplicitExpression, Coercion), returnCoercion :: Coercion} @@ -64,23 +66,25 @@ changeCoercion (ExplicitVariable n _) c = ExplicitVariable n c changeCoercion (Value n _) c = Value n c changeCoercion (ExplicitList e) _ = ExplicitList e changeCoercion (ExplicitKeyword n) _ = ExplicitKeyword n -changeCoercion (ExplicitParens e) _ = ExplicitParens e +changeCoercion (ExplicitParens e _) c = ExplicitParens e c changeCoercion (ExplicitPath s n _) c = ExplicitPath s n c changeCoercion (ExplicitFunction n args _) c = ExplicitFunction n args c changeCoercion (ExplicitIfSimple cond block _) c = ExplicitIfSimple cond block c -changeCoercion (ExplicitIfElse cond block block2 _) c = ExplicitIfElse cond block block2 c +changeCoercion (ExplicitIfElse cond block block2 _) c = ExplicitIfElse cond block block2 c +changeCoercion (ExplicitEnumCall n val _) c = ExplicitEnumCall n val c instance Show ExplicitExpression where show (ExplicitVariable name coer) = show $ "Variable: " ++ name show (Value name coer) = show $ "Value: " ++ name show (ExplicitList lst) = concatMap show lst show (ExplicitKeyword name) = show $ "Keyword: " ++ name - show (ExplicitParens name) = show $ "(" ++ show name ++ ")" + show (ExplicitParens name coer) = show $ "(" ++ show name ++ ")" show (ExplicitPath super sub coer) = show $ "(->" ++ show super ++ " " ++ show sub ++ ")" show (ExplicitFunction name args coer) = show $ name ++ "(" ++ concatMap show args ++ ")" show (ExplicitIfSimple cond block coer) = show $ "if" ++ show cond ++ " then " ++ show block show (ExplicitIfElse cond block1 block2 coer) = show $ "if" ++ show cond ++ " then " ++ show block1 ++ " else " ++ show block2 show ExplicitEmpty = show "Empty" + show (ExplicitEnumCall n val coer) = show $ "Enumcall: " ++ n ++ "->" ++ val data TypeCoercion = MakeIdCoercion {toType :: Type} diff --git a/src/Parser/Enum.hs b/src/Parser/Enum.hs index 1549c62..6640d37 100755 --- a/src/Parser/Enum.hs +++ b/src/Parser/Enum.hs @@ -25,7 +25,8 @@ enumValueParser = vName <- try nameParser dName <- optional enumValueDisplayNameParser vDescription <- optional descriptionParser - return (MakeEnumValue vName vDescription dName) + let name = if head vName == '_' then 'X' : tail vName else vName in + return (MakeEnumValue name vDescription dName) -- |Parses the display name of a Rosetta enum value into a String diff --git a/src/Parser/Expression.hs b/src/Parser/Expression.hs index 8983463..21a2cca 100644 --- a/src/Parser/Expression.hs +++ b/src/Parser/Expression.hs @@ -39,7 +39,7 @@ ifParser :: Parser Expression ifParser = do _ <- lexeme $ string "if" - condition <- lexeme $ between (char '(') (char ')') expressionParser <|> expressionParser + condition <- lexeme $ expressionParser <|> between (char '(') (char ')') expressionParser _ <- lexeme $ string "then" expr <- expressionParser els <- observing $ lexeme $ string "else" @@ -69,10 +69,14 @@ listParser = variableParser :: Parser Expression variableParser = do - name <- camelNameParser - if name == "endDate," then error "lool" - else return $ Variable name - --Variable <$> camelNameParser + Variable <$> camelNameParser + +enumValueParser :: Parser Expression +enumValueParser = + do + enum <- pascalNameParser + _ <- lexeme $ string "->" + Enum enum <$> pascalNameParser -- |Parses an integer in Rosetta into an Expression integerParser :: Parser Expression @@ -118,6 +122,7 @@ terminalParser = try emptyParser, try decimalParser, try variableParser, + try enumValueParser, integerParser ] diff --git a/src/Parser/Function.hs b/src/Parser/Function.hs index 1dfc0e8..5b6bfd9 100644 --- a/src/Parser/Function.hs +++ b/src/Parser/Function.hs @@ -20,7 +20,18 @@ functionParser = fDescription <- optional descriptionParser fInput <- inputAttributesParser fOutput <- outputAttributeParser - MakeFunction (MakeFunctionSignature fName fDescription fInput fOutput) <$> many assignmentParser + aliases <- many aliasParser + MakeFunction (MakeFunctionSignature fName fDescription fInput fOutput) aliases <$> many assignmentParser + +-- |Parses an alias definition from a function +aliasParser :: Parser (String, Expression) +aliasParser = + do + _ <- lexeme $ string "alias" + name <- camelNameParser + _ <- lexeme $ char ':' + assign <- expressionParser + return (name, assign) -- parseTest assignmentParser (Text.pack "assign-output observable -> exchangeRate -> from: from") -- |Parses the output assignment statement from a function in Rosetta into an Expression diff --git a/src/PrettyPrinter/Enum.hs b/src/PrettyPrinter/Enum.hs index 988ffcb..4b2cf96 100644 --- a/src/PrettyPrinter/Enum.hs +++ b/src/PrettyPrinter/Enum.hs @@ -11,35 +11,35 @@ printEnum :: EnumType -> String printEnum (MakeEnum name description values) = show $ printDescription description (vcat ["data" <+> pretty name <+> "=", - indent 4 (printEnumValues values), + indent 4 (printEnumValues name values), indent 4 "deriving (Eq)", "", - printDisplayNames name values, emptyDoc]) + printDisplayNames name values]) <> emptyDoc <> emptyDoc -- |Converts a list of EnumValues into a haskell valid Doc -printEnumValues :: [EnumValue] -> Doc a -printEnumValues [] = "" -printEnumValues (x:xs) = vcat (printFirstEnumValue x: map printEnumValue xs) +printEnumValues :: String -> [EnumValue] -> Doc a +printEnumValues _ [] = "" +printEnumValues enumName (x:xs) = vcat (printFirstEnumValue enumName x: map (printEnumValue enumName) xs) -- |Converts the first EnumValue (in haskell without the '|') into a haskell valid Doc -printFirstEnumValue :: EnumValue -> Doc a -printFirstEnumValue (MakeEnumValue name description _) = - printDescription description (pretty name) +printFirstEnumValue :: String -> EnumValue -> Doc a +printFirstEnumValue enumName (MakeEnumValue name description _) = + printDescription description (pretty enumName <> pretty name) -- |Converts a non-first EnumValue (in haskell with the '|') into a haskell valid Doc -printEnumValue :: EnumValue -> Doc a -printEnumValue (MakeEnumValue name description _) = - printDescription description ("|" <+> pretty name) +printEnumValue :: String -> EnumValue -> Doc a +printEnumValue enumName (MakeEnumValue name description _) = + printDescription description ("|" <+> pretty enumName <> pretty name) -- |Converts the display names of an EnumType into a haskell valid Doc printDisplayNames :: String -> [EnumValue] -> Doc a printDisplayNames name values = - nest 4 $ vcat ("instance Show" <+> pretty name <+> "where": map printDisplayName values) + nest 4 $ vcat ("instance Show" <+> pretty name <+> "where": map (printDisplayName name) values) -- |Converts a single display name into a haskell valid Doc -printDisplayName :: EnumValue -> Doc a -printDisplayName (MakeEnumValue name _ (Just display)) = - "show" <+> pretty name <+> "= \"" <> pretty display <> "\"" -printDisplayName (MakeEnumValue name _ Nothing) = - "show" <+> pretty name <+> "= \"" <> pretty name <> "\"" +printDisplayName :: String -> EnumValue -> Doc a +printDisplayName enumName (MakeEnumValue name _ (Just display)) = + "show" <+> pretty enumName <> pretty name <+> "= \"" <> pretty display <> "\"" +printDisplayName enumName (MakeEnumValue name _ Nothing) = + "show" <+> pretty enumName <> pretty name <+> "= \"" <> pretty name <> "\"" diff --git a/src/PrettyPrinter/Expression.hs b/src/PrettyPrinter/Expression.hs index 613b45e..1777064 100644 --- a/src/PrettyPrinter/Expression.hs +++ b/src/PrettyPrinter/Expression.hs @@ -8,17 +8,21 @@ import Semantic.ExpressionChecker(coercionIncluded) import Utils.Utils printExpression :: ExplicitExpression -> Doc a -printExpression ExplicitEmpty = "[]" +printExpression ExplicitEmpty = "[]" printExpression (ExplicitVariable name coer) = printCoercion coer $ pretty name printExpression (Value s coer) = printCoercion coer $ pretty s printExpression (ExplicitKeyword k) = pretty k -printExpression (ExplicitParens ex) = "(" <> printExpression ex <> ")" +printExpression (ExplicitEnumCall name val coer) = printCoercion coer $ pretty name <> pretty val +printExpression (ExplicitParens ex c) = "(" <> printExpression ex <> ")" printExpression (ExplicitList ex) = list [printExpression x | x <- ex] -printExpression (ExplicitPath ex1 ex2 returnCoerce) = printCoercion (returnCoercion ex1) (printExpression ex1) <+> "->" <+> printCoercion (returnCoercion ex2) (printExpression ex2) +printExpression (ExplicitPath ex1 (ExplicitVariable var ret) returnCoerce) = + pretty (uncapitalize $ typeName $ coercionType $ typeCoercion $ returnCoercion ex1) <> pretty (capitalize var) <+> + enclose "(" ")" (printExpression ex1) +printExpression ExplicitPath {} = error "This should never happen. Path Expression 2nd argument is not variable" printExpression (ExplicitFunction "exists" args returnCoerce) = printCoercion returnCoerce "isJust" <+> printCoercion (snd $ head args) (printExpression (fst $ head args)) printExpression (ExplicitFunction "is absent" args returnCoerce) = printCoercion returnCoerce "isNothing" <+> printCoercion (snd $ head args) (printExpression (fst $ head args)) printExpression (ExplicitFunction "single exists" args returnCoerce) = printCoercion returnCoerce "length" <+> printCoercion (snd $ head args) (printExpression (fst $ head args)) <+> "==" <+> "1" -printExpression (ExplicitFunction "multiple exists" args returnCoerce) = printCoercion returnCoerce "length" <+> printCoercion (snd $ head args) (printExpression (fst $ head args)) <+> ">" <+> "1" +printExpression (ExplicitFunction "multiple exists" args returnCoerce) = printCoercion returnCoerce "length" <+> printCoercion (snd $ head args) (printExpression (fst $ head args)) <+> ">" <+> "1" printExpression (ExplicitFunction "count" args returnCoerce) = printCoercion returnCoerce "length" <+> printCoercion (snd $ head args) (printExpression (fst $ head args)) -- Equality expressions -- [a] a all = @@ -30,19 +34,19 @@ printExpression (ExplicitFunction "all <>" args returnCoerce) = printCoercion (s printExpression (ExplicitFunction "all =" args returnCoerce) = "all (Eq)" <+> printCoercion (snd $ head $ tail args) (printExpression (fst $ head $ tail args)) <+> printCoercion (snd $ head args) (printExpression (fst $ head args)) printExpression (ExplicitFunction "and" args returnCoerce) = printCoercion (snd $ head args) (printExpression (fst $ head args)) <+> "&&" <+> printCoercion (snd $ head $ tail args) (printExpression (fst $ head $ tail args)) printExpression (ExplicitFunction "or" args returnCoerce) = printCoercion (snd $ head args) (printExpression (fst $ head args)) <+> "||" <+> printCoercion (snd $ head $ tail args) (printExpression (fst $ head $ tail args)) -printExpression (ExplicitFunction name args returnCoerce) = - if null printedArgs then pretty (uncapitalize name) +printExpression (ExplicitFunction name args returnCoerce) = + if null printedArgs then pretty (uncapitalize name) else "(" <> pretty (uncapitalize name) <+> printCoercion returnCoerce (hsep printedArgs) <> ")" where printedArgs = zipWith printCoercion [c | (e,c) <- args] [printExpression e | (e, c) <- args] -printExpression (ExplicitIfSimple cond thenBlock returnCoercion) = - "if" <+> printCoercion (snd cond) (printExpression (fst cond)) <+> - "then" <+> printCoercion (snd thenBlock) (printExpression (fst thenBlock)) <+> +printExpression (ExplicitIfSimple cond thenBlock returnCoercion) = + "if" <+> printCoercion (snd cond) (printExpression (fst cond)) <+> + "then" <+> printCoercion (snd thenBlock) (printExpression (fst thenBlock)) <+> "else" <+> case MakeCoercion [MakeIdCoercion $ coercionType $ typeCoercion returnCoercion] (MakeCardinalityIdCoercion (Bounds (0, 0))) `coercionIncluded` returnCoercion of Left err -> error $ show err Right c -> printCoercion c emptyDoc -printExpression (ExplicitIfElse cond thenBlock elseBlock returnCoercion) = - "if" <+> printCoercion (snd cond) (printExpression (fst cond)) <+> - "then" <+> printCoercion (snd thenBlock) (printExpression (fst thenBlock)) <+> +printExpression (ExplicitIfElse cond thenBlock elseBlock returnCoercion) = + "if" <+> printCoercion (snd cond) (printExpression (fst cond)) <+> + "then" <+> printCoercion (snd thenBlock) (printExpression (fst thenBlock)) <+> "else" <+> printCoercion (snd elseBlock) (printExpression (fst elseBlock)) -- |Converts a coercion into a haskell string diff --git a/src/PrettyPrinter/Function.hs b/src/PrettyPrinter/Function.hs index 3179b12..1dc3938 100644 --- a/src/PrettyPrinter/Function.hs +++ b/src/PrettyPrinter/Function.hs @@ -36,16 +36,20 @@ instance Show AssignmentTree where -- |Converts a Function into a haskell valid String printFunction :: ExplicitFunction -> String -printFunction f = show $ vcat [printFunctionSignature (sign f), printFunctionBody f, emptyDoc] +printFunction f = show $ vcat [printFunctionSignature (sign f), printFunctionBody f, line] -- |Converts the body of a Function into a haskell valid Doc printFunctionBody :: ExplicitFunction -> Doc a -printFunctionBody (MakeExplicitFunction (MakeFunctionSignature name _ inp out) ex) = +printFunctionBody (MakeExplicitFunction (MakeFunctionSignature name _ inp out) alias ex) = pretty name <+> printVariableNames inp <+> "=" <+> - printAssignmentTree (head $ mergeAssignmentTrees [convertToAssignmentTree (fst exp) (AssignmentLeaf (snd exp)) | exp <- ex]) + nest 4 (vsep (map printAlias alias ++ + [printAssignmentTree (head $ mergeAssignmentTrees [convertToAssignmentTree (fst exp) (AssignmentLeaf (snd exp)) | exp <- ex])])) --error $ show $ mergeAssignmentTrees [convertToAssignmentTree (fst exp) (AssignmentLeaf (snd exp)) | exp <- ex] +printAlias :: (String, ExplicitExpression) -> Doc a +printAlias (name, exp) = "let" <+> pretty name <+> "=" <+> printExpression exp <+> "in" + -- |Converts a function into a haskell valid Doc representing the signature of the function printFunctionSignature :: FunctionSignature -> Doc a printFunctionSignature (MakeFunctionSignature name description inputs output) = diff --git a/src/PrettyPrinter/Type.hs b/src/PrettyPrinter/Type.hs index e94f05d..746bfbc 100644 --- a/src/PrettyPrinter/Type.hs +++ b/src/PrettyPrinter/Type.hs @@ -12,12 +12,12 @@ printType :: Type -> String printType (MakeType name (MakeType super _ _ _ _) description attributes conditions) = printType (MakeType name (BasicType "Object") description (superToAttribute super:attributes) conditions) printType (MakeType name (BasicType "Object") description attributes conditions) = show $ printTypeName name description <+> - printAttributes name conditions attributes + printAttributes name conditions attributes <> line <> line printType (MakeType _ (BasicType _) _ _ _) = error "Can't extend basic types" printType (BasicType name) = show $ pretty name printTypeName :: String -> Maybe String -> Doc a -printTypeName name desc = printDescription desc (line <> "data" <+> pretty name <+> "=") +printTypeName name desc = printDescription desc ("data" <+> pretty name <+> "=") -- |Creates an attribute that accesses the super type superToAttribute :: String -> TypeAttribute @@ -27,9 +27,9 @@ superToAttribute typ = MakeTypeAttribute "super" (MakeType typ (BasicType "Objec printAttributes :: String -> [Condition] -> [TypeAttribute] -> Doc a printAttributes objName conditions ats | MakeCondition Nothing (Keyword "one-of") `elem` conditions || length ats < 2 = vcat [nest 4 $ vcat $ - zipWith (<>) ("" : repeat "| ") (map (printSumType objName) ats) ++ map printCondition conditions, emptyDoc, emptyDoc] + zipWith (<>) ("" : repeat "| ") (map (printSumType objName) ats) ++ map printCondition conditions, " deriving (Eq)"] | otherwise = vcat [nest 4 $ vcat ("Make" <> pretty objName <+> "{" : - reverse (zipWith (<>) (reverse (map (printAttribute objName) ats)) ("" : repeat ",")) ++ map printCondition conditions), "}", emptyDoc, emptyDoc] + punctuate comma (map (printAttribute objName) ats) ++ map printCondition conditions), "}"] <+> "deriving (Eq)" -- |Converts a TypeAttribute into a haskell valid Doc printAttribute :: String -> TypeAttribute -> Doc a diff --git a/src/Semantic/ExpressionChecker.hs b/src/Semantic/ExpressionChecker.hs index a0c4dcc..24b5ad1 100644 --- a/src/Semantic/ExpressionChecker.hs +++ b/src/Semantic/ExpressionChecker.hs @@ -41,6 +41,8 @@ defaultMap = [ Func "contains" [(BasicType "Any", OneBound 0), (BasicType "Any", OneBound 0)] (BasicType "Boolean", Bounds (1, 1)), Func "disjoint" [(BasicType "Any", OneBound 0), (BasicType "Any", OneBound 0)] (BasicType "Boolean", Bounds (1, 1)), + Func "=" [(BasicType "Any", Bounds(1, 1)), (BasicType "Any", Bounds(1, 1))] (BasicType "Boolean", Bounds(1, 1)), + Func "=" [(BasicType "Any", Bounds(0, 1)), (BasicType "Any", Bounds(0, 1))] (BasicType "Boolean", Bounds(1, 1)), Func "=" [(BasicType "Any", OneBound 0), (BasicType "Any", OneBound 0)] (BasicType "Boolean", Bounds(1, 1)), Func ">=" [(BasicType "Any", OneBound 0), (BasicType "Any", OneBound 0)] (BasicType "Boolean", Bounds(1, 1)), Func "<=" [(BasicType "Any", OneBound 0), (BasicType "Any", OneBound 0)] (BasicType "Boolean", Bounds(1, 1)), @@ -68,7 +70,7 @@ defaultMap = [ -- |Checks whether a function is valid (inputs, outputs are of valid type and all variables are defined) and adds it to the symbol table addFunction :: ([Type], [Symbol]) -> Function -> Either [TypeCheckError] [Symbol] -addFunction (definedTypes, definedSymbols) (MakeFunction (MakeFunctionSignature name _ inps out) _) = +addFunction (definedTypes, definedSymbols) (MakeFunction (MakeFunctionSignature name _ inps out) _ _) = case head $ checkAttributes definedTypes [out] of Left err -> Left [err] Right checkedOutput -> if null (lefts checkedInputs) @@ -92,6 +94,12 @@ checkExpression _ _ (Int val) = Right $ Value val $ MakeCoercion [MakeIdCoercion checkExpression _ _ (Real val) = Right $ Value val $ MakeCoercion [MakeIdCoercion (BasicType "Double")] (MakeCardinalityIdCoercion (Bounds (1, 1))) checkExpression _ _ (Boolean val) = Right $ Value val $ MakeCoercion [MakeIdCoercion (BasicType "Boolean")] (MakeCardinalityIdCoercion (Bounds (1, 1))) checkExpression _ _ Empty = Right $ Value "empty" $ MakeCoercion [MakeIdCoercion (BasicType "Empty")] (MakeCardinalityIdCoercion (Bounds (0, 0))) +checkExpression defT symbolMap (Enum enum val) = case getType enum defT of + Left err -> Left err + Right typ -> if val `elem` map attributeName (typeAttributes typ) + then Right $ ExplicitEnumCall enum val $ MakeCoercion [MakeIdCoercion typ] (MakeCardinalityIdCoercion (Bounds (1, 1))) + else Left $ UndefinedVariable val + checkExpression _ _ (Keyword k) = Right $ ExplicitKeyword k checkExpression defT symbolMap (PathExpression ex1 (Variable b)) = case checkExpression defT symbolMap ex1 of @@ -107,7 +115,7 @@ checkExpression _ _ (PathExpression _ ex) = Left $ UnsupportedExpressionInPathEx checkExpression defT symbolMap (Parens ex) = case checkExpression defT symbolMap ex of Left err -> Left err - Right exp -> Right $ ExplicitParens exp + Right exp -> Right $ ExplicitParens exp (returnCoercion exp) checkExpression defT symbolMap (List lst) = checkList defT symbolMap lst checkExpression defT symbolMap (PrefixExp name ex) = checkFunctionCall symbolMap name [checkExpression defT symbolMap ex] checkExpression defT symbolMap (Function name exps) = checkFunctionCall symbolMap name (map (checkExpression defT symbolMap) exps) @@ -181,21 +189,28 @@ checkList1 defT symbs (ex : exps) typ = -- |Checks whether the function that is called is already defined with the same argument types checkFunctionCall :: [Symbol] -> String -> [Either TypeCheckError ExplicitExpression ] -> Either TypeCheckError ExplicitExpression -checkFunctionCall [] fun args = Left $ UndefinedFunction $ "Undefined function: \"" ++ fun ++ "\" [" ++ show (rights args) ++ "]" +checkFunctionCall [] fun args = error $ show args --Left $ UndefinedFunction $ "Undefined function: " ++ fun ++ " [" ++ show (rights args) ++ "]" checkFunctionCall ((Func n a r):symbolMap) name args - | length (rights args) /= length args = Left $ ErrorInsideFunction (name ++ ": " ++ show args ++ show (lefts args)) - | name == n && all isRight coerce = Right $ ExplicitFunction name (zip (rights args) (rights coerce)) (MakeCoercion [MakeIdCoercion (fst r)] (MakeCardinalityIdCoercion (snd r))) + | not $ null $ lefts args = Left $ ErrorInsideFunction (name ++ ": " ++ show args ++ show (lefts args)) + | name == n = if all isRight coerce then Right $ ExplicitFunction name (zip (rights args) (rights coerce)) (MakeCoercion [MakeIdCoercion (fst r)] (MakeCardinalityIdCoercion (snd r))) + else error $ show argCoerce | otherwise = checkFunctionCall symbolMap name args where argCoerce = map returnCoercion (rights args) coerce = zipWith coercionIncluded argCoerce (map createCoercion a) checkFunctionCall (_:symbolMap) name args = checkFunctionCall symbolMap name args +getType :: String -> [Type] -> Either TypeCheckError Type +getType t [] = Left $ UndefinedType t +getType typ (t : ts) + | typ == typeName t = Right t + | otherwise = getType typ ts + typeIncluded :: (Type, Cardinality) -> (Type, Cardinality) -> Either TypeCheckError Coercion typeIncluded (t1, c1) (t2, c2) = case t1 `isSubType` t2 of Left err -> Left err - Right typeCoercion -> + Right typeCoercion -> case c1 `cardinalityIncluded` c2 of Left err -> Left err Right cardCoercion -> Right $ MakeCoercion typeCoercion cardCoercion @@ -238,6 +253,7 @@ findAttributeType var (t : ts) -- |Checks whether the first argument is a subtype of the second argument isSubType :: Type -> Type -> Either TypeCheckError [TypeCoercion] isSubType (BasicType "Integer") (BasicType "Double") = Right [MakeTypeCoercion (BasicType "Integer") (BasicType "Double") "fromInteger"] +isSubType t (BasicType "Any") = Right [MakeIdCoercion t] isSubType (BasicType x) y | x == typeName y = Right [MakeIdCoercion y] | otherwise = Left $ TypeMismatch x (typeName y) @@ -250,12 +266,12 @@ isSubType x y -- |Finds the type attributes from a type in the symbol table getTypeAttributes :: [Type] -> Type -> [TypeAttribute] getTypeAttributes [] t = [] -getTypeAttributes (defT : ts) t - | typeName defT == typeName t = - [MakeTypeAttribute {attributeName = attributeName attr, - attributeType = toHaskell (attributeType attr), - Model.Type.cardinality = if MakeCondition Nothing (Keyword "one-of") `elem` conditions defT then Bounds (1,1) else Model.Type.cardinality attr, - attributeDescription = attributeDescription attr} +getTypeAttributes (defT : ts) t + | typeName defT == typeName t = + [MakeTypeAttribute {attributeName = attributeName attr, + attributeType = toHaskell (attributeType attr), + Model.Type.cardinality = if MakeCondition Nothing (Keyword "one-of") `elem` conditions defT then Bounds (1,1) else Model.Type.cardinality attr, + attributeDescription = attributeDescription attr} | attr <- typeAttributes defT] | otherwise = getTypeAttributes ts t diff --git a/src/Semantic/FunctionChecker.hs b/src/Semantic/FunctionChecker.hs index a859fab..256cebc 100644 --- a/src/Semantic/FunctionChecker.hs +++ b/src/Semantic/FunctionChecker.hs @@ -10,24 +10,27 @@ import Utils.Utils -- |Checks if all the inputs and the output of a function call have valid types, and then checks that the assign-output expression is valid checkFunction :: ([Type], [Symbol]) -> Function -> Either [TypeCheckError] ExplicitFunction -checkFunction (definedTypes, symbols) (MakeFunction (MakeFunctionSignature name desc inp out) ex) = +checkFunction (definedTypes, symbols) (MakeFunction (MakeFunctionSignature name desc inp out) alias ex) = let checkedIn = checkAttributes definedTypes inp in if null $ lefts checkedIn then - case head $ checkAttributes definedTypes [out] of + let symbolTable = addVariables symbols (rights checkedIn) in + case addAliases definedTypes symbolTable alias of Left err -> Left [err] - Right checkedOut -> case checkAssignment definedTypes (addVariables symbols (checkedOut : rights checkedIn)) ex of - Left err -> Left err - Right checkedEx -> Right $ MakeExplicitFunction (MakeFunctionSignature (toLower (head name) : tail name) desc (rights checkedIn) checkedOut) checkedEx + Right checkedAlias -> case head $ checkAttributes definedTypes [out] of + Left err -> Left [err] + Right checkedOut -> case checkAssignment definedTypes (addVariables (fst checkedAlias) [checkedOut]) ex of + Left err -> Left err + Right checkedEx -> Right $ MakeExplicitFunction (MakeFunctionSignature (toLower (head name) : tail name) desc (rights checkedIn) checkedOut) (snd checkedAlias) checkedEx else Left $ lefts checkedIn checkAssignment :: [Type] -> [Symbol] -> [(Expression, Expression)] -> Either [TypeCheckError] [(ExplicitExpression, ExplicitExpression)] checkAssignment _ _ [] = Right [] checkAssignment defT symbs ((assign, ex): assigns) = + -- Here we use only tail symbs, beacuse the head of the symbol table is the out variable, and that can't be used in the expression body case checkExpression defT (tail symbs) ex of Left err -> Left [err] - -- Here we use only tail symbs, beacuse the head of the symbol table is the out variable, and that can't be used in the expression body Right checkedExp -> case checkExpression defT symbs assign of Left err -> Left [err] Right checkedA -> case checkAssignment defT symbs assigns of @@ -35,4 +38,14 @@ checkAssignment defT symbs ((assign, ex): assigns) = -- Add a final explicit transformation to match the expected output Right checked -> case returnCoercion checkedExp `coercionIncluded` returnCoercion checkedA of Left err -> Left [err] - Right c -> Right $ (checkedA, changeCoercion checkedExp c) : checked \ No newline at end of file + Right c -> Right $ (checkedA, changeCoercion checkedExp c) : checked + +addAliases :: [Type] -> [Symbol] -> [(String, Expression)] -> Either TypeCheckError ([Symbol], [(String, ExplicitExpression)]) +addAliases definedTypes symbolMap [] = Right (symbolMap, []) +addAliases definedTypes symbolMap (alias : aliases) = + case checkExpression definedTypes symbolMap (snd alias) of + Left err -> Left err + Right ex -> case add of + Left err -> Left err + Right added -> Right (fst added, (fst alias, ex) : snd added) + where add = addAliases definedTypes (addVariables symbolMap [MakeTypeAttribute (fst alias) (coercionType $ typeCoercion $ returnCoercion ex) (toCardinality $ cardinalityCoercion $ returnCoercion ex) Nothing]) aliases \ No newline at end of file