diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..a1f04bd --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +scripts/.Rhistory diff --git a/actus-dictionary-applicability.json b/actus-dictionary-applicability.json index 05f1d61..4a777da 100644 --- a/actus-dictionary-applicability.json +++ b/actus-dictionary-applicability.json @@ -12,7 +12,7 @@ "endOfMonthConvention": "x", "contractType": "NN", "statusDate": "NN(,,1)", - "contractRole": "NN(,,1)", + "contractRole": "NN", "creatorID": "NN(,,1)", "contractID": "NN", "marketObjectCode": "x", @@ -74,7 +74,7 @@ "lifeFloor": "x(9,1,)", "periodCap": "x(9,1,)", "periodFloor": "x(9,1,)", - "fixingDays": "x(9,1,)", + "fixingPeriod": "x(9,1,)", "nextResetRate": "x(9,1,)", "rateMultiplier": "x(9,1,)", "settlementCurrency": "x" @@ -86,7 +86,7 @@ "endOfMonthConvention": "x", "contractType": "NN", "statusDate": "NN(,,1)", - "contractRole": "NN(,,1)", + "contractRole": "NN", "creatorID": "NN(,,1)", "contractID": "NN", "counterpartyID": "NN(,,2)", @@ -117,7 +117,7 @@ "cycleOfRateReset": "x(9,0,)", "rateSpread": "NN(9,1,)", "marketObjectCodeRateReset": "NN(9,1,)", - "fixingDays": "x(9,1,)", + "fixingPeriod": "x(9,1,)", "nextResetRate": "x(9,1,)", "rateMultiplier": "x(9,1,)", "settlementCurrency": "x" @@ -177,13 +177,13 @@ "contractDealDate": "NN", "exerciseDate": "x(7,0,)", "exerciseAmount": "NN(7,1,)\n", - "settlementDays": "x" + "settlementPeriod": "x" }, "commodity": { "contract": "commodity", "contractType": "NN", "statusDate": "NN(,,1)", - "contractRole": "NN(,,1)", + "contractRole": "NN", "creatorID": "NN(,,1)", "contractID": "NN", "marketObjectCode": "x", @@ -205,7 +205,7 @@ "endOfMonthConvention": "x", "contractType": "NN", "statusDate": "NN(,,1)", - "contractRole": "NN(,,1)", + "contractRole": "NN", "creatorID": "NN(,,1)", "contractID": "NN", "marketObjectCode": "x", @@ -269,7 +269,7 @@ "periodCap": "x(9,1,)", "periodFloor": "x(9,1,)", "cyclePointOfRateReset": "x(9,1,)1", - "fixingDays": "x(9,1,)", + "fixingPeriod": "x(9,1,)", "nextResetRate": "x(9,1,)", "rateMultiplier": "x(9,1,)", "settlementCurrency": "x" @@ -305,7 +305,7 @@ "marketValueObserved": "x", "exerciseDate": "x(7,0,)", "exerciseAmount": "NN(7,1,)\n", - "settlementDays": "x", + "settlementPeriod": "x", "deliverySettlement": "x(,,1)", "settlementCurrency": "x" }, @@ -345,7 +345,7 @@ "marketValueObserved": "x", "exerciseDate": "x(7,0,)", "exerciseAmount": "NN(7,1,)\n", - "settlementDays": "x", + "settlementPeriod": "x", "deliverySettlement": "x(,,1)", "futuresPrice": "NN", "settlementCurrency": "x" @@ -385,7 +385,7 @@ "priceAtTerminationDate": "NN(6,1,1)", "exerciseDate": "x(7,0,)", "exerciseAmount": "NN(7,1,)\n", - "settlementDays": "x", + "settlementPeriod": "x", "settlementCurrency": "x" }, "linearAmortizer": { @@ -395,7 +395,7 @@ "endOfMonthConvention": "x", "contractType": "NN", "statusDate": "NN(,,1)", - "contractRole": "NN(,,1)", + "contractRole": "NN", "creatorID": "NN(,,1)", "contractID": "NN", "marketObjectCode": "x", @@ -458,7 +458,7 @@ "periodCap": "x(9,1,)", "periodFloor": "x(9,1,)", "cyclePointOfRateReset": "x(9,1,)1", - "fixingDays": "x(9,1,)", + "fixingPeriod": "x(9,1,)", "nextResetRate": "x(9,1,)", "rateMultiplier": "x(9,1,)", "settlementCurrency": "x" @@ -470,7 +470,7 @@ "endOfMonthConvention": "x", "contractType": "NN", "statusDate": "NN(,,1)", - "contractRole": "NN(,,1)", + "contractRole": "NN", "creatorID": "NN(,,1)", "contractID": "NN", "marketObjectCode": "x", @@ -531,7 +531,7 @@ "lifeFloor": "x(9,1,)", "periodCap": "x(9,1,)", "periodFloor": "x(9,1,)", - "fixingDays": "x(9,1,)", + "fixingPeriod": "x(9,1,)", "nextResetRate": "x(9,1,)", "rateMultiplier": "x(9,1,)", "settlementCurrency": "x" @@ -563,7 +563,7 @@ "terminationDate": "x(6,0,1)", "priceAtTerminationDate": "NN(6,1,1)", "marketValueObserved": "x", - "optionExecutionType": "NN", + "optionExerciseType": "NN", "optionExerciseEndDate": "NN", "optionStrike1": "NN", "optionStrike2": "x", @@ -572,7 +572,7 @@ "cycleOfOptionality": "x", "exerciseDate": "x(7,0,)", "exerciseAmount": "NN(7,1,)\n", - "settlementDays": "x", + "settlementPeriod": "x", "deliverySettlement": "x(,,1)", "settlementCurrency": "x" }, @@ -614,7 +614,7 @@ "rateSpread": "NN", "marketObjectCodeRateReset": "NN", "cyclePointOfRateReset": "x(9,1,)1", - "fixingDays": "x(9,1,)", + "fixingPeriod": "x(9,1,)", "nextResetRate": "x(9,1,)", "rateMultiplier": "x(9,1,)", "deliverySettlement": "x(,,1)", @@ -627,7 +627,7 @@ "endOfMonthConvention": "x", "contractType": "NN", "statusDate": "NN(,,1)", - "contractRole": "NN(,,1)", + "contractRole": "NN", "creatorID": "NN(,,1)", "contractID": "NN", "marketObjectCode": "x", @@ -683,7 +683,7 @@ "periodCap": "x(9,1,)", "periodFloor": "x(9,1,)", "cyclePointOfRateReset": "x(9,1,)1", - "fixingDays": "x(9,1,)", + "fixingPeriod": "x(9,1,)", "nextResetRate": "x(9,1,)", "rateMultiplier": "x(9,1,)", "settlementCurrency": "x" @@ -695,7 +695,7 @@ "endOfMonthConvention": "x", "contractType": "NN", "statusDate": "NN(,,1)", - "contractRole": "NN(,,1)", + "contractRole": "NN", "creatorID": "NN(,,1)", "contractID": "NN", "marketObjectCode": "x", diff --git a/actus-dictionary-contract-reference.json b/actus-dictionary-contract-reference.json new file mode 100644 index 0000000..1d12d21 --- /dev/null +++ b/actus-dictionary-contract-reference.json @@ -0,0 +1,106 @@ +{ + "version": { + "Version": "1.0", + "Edition": "0", + "Date": "2019-10-23" + }, + "contractReference": { + "object": { + "identifier": "object", + "name": "Object", + "acronym": "OBJ", + "description": "The referencing object", + "type": "Varchar", + "allowedValues": [] + }, + "role": { + "identifier": "role", + "name": "Reference Role", + "acronym": "RRL", + "description": "The role of the referencing object", + "type": "Enum", + "allowedValues": [ + { + "option": "0", + "identifier": "underlying", + "name": "Underlying", + "acronym": "UDL", + "description": "The reference represents a simple underlyer contract" + }, + { + "option": "1", + "identifier": "firstLeg", + "name": "First Leg", + "acronym": "FIL", + "description": "The reference represents the first leg contract" + }, + { + "option": "2", + "identifier": "secondLeg", + "name": "Second Leg", + "acronym": "SEL", + "description": "The reference represents the second leg contract" + }, + { + "option": "3", + "identifier": "coveredContract", + "name": "Covered Contract", + "acronym": "COVE", + "description": "The reference represents a contract that is covered under the parent contract" + }, + { + "option": "4", + "identifier": "coveringContract", + "name": "Covering Contract", + "acronym": "COVI", + "description": "The reference represents a contract that covers for covering contracts under the parent contract Contract" + } + ] + }, + "type": { + "identifier": "type", + "name": "Reference Type", + "acronym": "RTP", + "description": "The type of the referencing object", + "type": "Enum", + "allowedValues": [ + { + "option": "0", + "identifier": "contract", + "name": "Contract", + "acronym": "CNT", + "description": "The reference represents an actual contract" + }, + { + "option": "1", + "identifier": "contractIdentifier", + "name": "Contract Identifier", + "acronym": "CID", + "description": "The reference represents an identifier of an actual contract" + }, + { + "option": "2", + "identifier": "marketObjectIdentifier", + "name": "Market Object Identifier", + "acronym": "MOC", + "description": "The reference represents the identifier of a market object" + }, + { + "option": "3", + "identifier": "legalEntityIdentifier", + "name": "Legal Entity Identifier", + "acronym": "EID", + "description": "The reference represents the identifier of a legal entity" + }, + { + "option": "4", + "identifier": "contractStructure", + "name": "Contract Structure", + "acronym": "CST", + "description": "The reference represents a ContractStructure" + } + ] + } + } +} + diff --git a/actus-dictionary-contract-structure.json b/actus-dictionary-contract-structure.json deleted file mode 100644 index 14b7902..0000000 --- a/actus-dictionary-contract-structure.json +++ /dev/null @@ -1,76 +0,0 @@ -{ - "version": { - "Version": "1.0", - "Edition": "0", - "Date": "2019-10-23" - }, - "contractStructure": { - "contractReference": [ - { - "object": "", - "type": "", - "role": "" - }, - { - "object": "", - "type": "", - "role": "" - } - ], - "type": { - "contract": { - "identifier": "contract", - "name": "Contract", - "description": "The reference represents an actual contract" - }, - "contractIdentifier": { - "identifier": "contractIdentifier", - "name": "Contract Identifier", - "description": "The reference represents an identifier of an actual contract" - }, - "marketObjectIdentifier": { - "identifier": "marketObjectIdentifier", - "name": "Market Object Identifier", - "description": "The reference represents the identifier of a market object" - }, - "legalEntityIdentifier": { - "identifier": "legalEntityIdentifier", - "name": "Legal Entity Identifier", - "description": "The reference represents the identifier of a legal entity" - }, - "contractStructure": { - "identifier": "contractStructure", - "name": "Contract Structure", - "description": "The reference represents a ContractStructure" - } - }, - "role": { - "underlying": { - "identifier": "underlying", - "name": "Underlying", - "description": "The reference represents a simple underlyer contract" - }, - "firstLeg": { - "identifier": "firstLeg", - "name": "First Leg", - "description": "The reference represents the first leg contract" - }, - "secondLeg": { - "identifier": "secondLeg", - "name": "Second Leg", - "description": "The reference represents the second leg contract" - }, - "coveredContract": { - "identifier": "coveredContract", - "name": "Covered Contract", - "description": "The reference represents a contract that is covered under the parent contract" - }, - "coveringContract": { - "identifier": "coveringContract", - "name": "Covering Contract", - "description": "The reference represents a contract that covers for covering contracts under the parent contract Contract" - } - } - } -} - diff --git a/actus-dictionary-event-types.json b/actus-dictionary-event-types.json deleted file mode 100644 index 2c166f7..0000000 --- a/actus-dictionary-event-types.json +++ /dev/null @@ -1,164 +0,0 @@ -{ - "version": { - "Version": "1.0", - "Edition": "0", - "Date": "2019-10-23" - }, - "eventType": { - "analysis": { - "identifier": "analysis", - "name": "Analysis", - "acronym": "AD", - "description": "Analysis of contract. Evaluates all contract states", - "sequence": 22 - }, - "creditEvent": { - "identifier": "creditEvent", - "name": "Credit Event", - "acronym": "CE", - "description": "Credit event of counterparty to a contract", - "sequence": 10 - }, - "dividendPayment": { - "identifier": "dividendPayment", - "name": "Dividend Payment", - "acronym": "DV", - "description": "Scheduled dividend payment", - "sequence": 13 - }, - "execution": { - "identifier": "execution", - "name": "Execution", - "acronym": "XD", - "description": "Execution of a contractual feature such as optionality", - "sequence": 20 - }, - "feePayment": { - "identifier": "feePayment", - "name": "Fee Payment", - "acronym": "FP", - "description": "Scheduled fee payment", - "sequence": 2 - }, - "initialExchange": { - "identifier": "initialExchange", - "name": "Initial Exchange", - "acronym": "IED", - "description": "Scheduled date of first principal event, start of accrual calculation", - "sequence": 1 - }, - "interestCalculationBaseFixing": { - "identifier": "interestCalculationBaseFixing", - "name": "Interest Calculation Base Fixing", - "acronym": "IPCB", - "description": "Scheduled re-fixing of the interest calculation base", - "sequence": 18 - }, - "interestCapitalization": { - "identifier": "interestCapitalization", - "name": "Interest Capitalization", - "acronym": "IPCI", - "description": "Scheduled interest capitalization. Interest is capitalized instead of paid out", - "sequence": 9 - }, - "interestPayment": { - "identifier": "interestPayment", - "name": "Interest Payment", - "acronym": "IP", - "description": "Scheduled interest payment", - "sequence": 8 - }, - "marginCallPayment": { - "identifier": "marginCallPayment", - "name": "Margin Call Payment", - "acronym": "MR", - "description": "Scheduled margin call payment", - "sequence": 15 - }, - "maturity": { - "identifier": "maturity", - "name": "Maturity", - "acronym": "MD", - "description": "Scheduled maturity of a contract", - "sequence": 19 - }, - "penaltyPayment": { - "identifier": "penaltyPayment", - "name": "Penalty Payment", - "acronym": "PY", - "description": "Payment of a penalty", - "sequence": 6 - }, - "principal Drawing": { - "identifier": "principal Drawing", - "name": "Principal Drawing", - "acronym": "PD", - "description": "Drawing of principal amount\n", - "sequence": 4 - }, - "principalPaymentAmountFixing": { - "identifier": "principalPaymentAmountFixing", - "name": "Principal Payment Amount Fixing", - "acronym": "PRF", - "description": "Scheduled re-fixing of principal payment amount", - "sequence": 5 - }, - "principalPrepayment": { - "identifier": "principalPrepayment", - "name": "Principal Prepayment", - "acronym": "PP", - "description": "Unscheduled early repayment of principal", - "sequence": 7 - }, - "principalRedemption": { - "identifier": "principalRedemption", - "name": "Principal Redemption", - "acronym": "PR", - "description": "Scheduled principal redemption payment", - "sequence": 3 - }, - "purchase": { - "identifier": "purchase", - "name": "Purchase", - "acronym": "PRD", - "description": "Purchase of a contract", - "sequence": 14 - }, - "rateResetFixed": { - "identifier": "rateResetFixed", - "name": "Rate Reset Fixed", - "acronym": "RRF", - "description": "Scheduled variable rate fixing with new rate already fixed", - "sequence": 11 - }, - "rateResetVariable": { - "identifier": "rateResetVariable", - "name": "Rate Reset Variable", - "acronym": "RR", - "description": "Scheduled variable rate fixing with new rate fixed at event time", - "sequence": 12 - }, - "scalingIndexRevision": { - "identifier": "scalingIndexRevision", - "name": "Scaling Index Revision", - "acronym": "SC", - "description": "Scheduled re-fixing of a scaling index", - "sequence": 17 - }, - "settlement": { - "identifier": "settlement", - "name": "Settlement", - "acronym": "STD", - "description": "Settlement of contractual claim", - "sequence": 21 - }, - "termination": { - "identifier": "termination", - "name": "Termination", - "acronym": "TD", - "description": "Termination of a contract", - "sequence": 16 - } - } -} - diff --git a/actus-dictionary-event.json b/actus-dictionary-event.json index 6acd924..d1f1d91 100644 --- a/actus-dictionary-event.json +++ b/actus-dictionary-event.json @@ -5,70 +5,236 @@ "Date": "2019-10-23" }, "event": { + "currency": { + "identifier": "currency", + "name": "Currency", + "acronym": "CUR", + "description": "The currency in which the event payoff is scheduled", + "type": "Varchar", + "allowedValues": [ + "ISO4217" + ] + }, "eventTime": { "identifier": "eventTime", "name": "Event Time", + "acronym": "TEV", + "description": "The timestamp of the event", "type": "Timestamp", - "allowedValues": ["ISO8601 Datetime"] - }, - "scheduleTime": { - "identifier": "scheduleTime", - "name": "Schedule Time", - "type": "Timestamp", - "allowedValues": ["ISO8601 Datetime"] + "allowedValues": [ + "ISO8601 Datetime" + ] }, "eventType": { "identifier": "eventType", "name": "Event Type", + "acronym": "EVT", + "description": "The type of the event. Different types have their own business logic in terms of payoff and state transition functions", "type": "Enum", "allowedValues": [ - "AD", - "CE", - "DV", - "XD", - "FP", - "IED", - "IPCB", - "IPCI", - "IP", - "MR", - "MD", - "PY", - "PD", - "PRF", - "PP", - "PR", - "PRD", - "RRF", - "RR", - "SC", - "STD", - "TD" - ] - }, - "currency": { - "identifier": "currency", - "name": "Currency", - "type": "Varchar", - "allowedValues": [ - + { + "option": "0", + "identifier": "monitoring", + "name": "Monitoring", + "acronym": "AD", + "description": "Monitoring of contract. Evaluates all contract states", + "sequence": "22" + }, + { + "option": "1", + "identifier": "initialExchange", + "name": "Initial Exchange", + "acronym": "IED", + "description": "Scheduled date of initial exchange of e.g. principal value in fixed income products", + "sequence": "1" + }, + { + "option": "2", + "identifier": "feePayment", + "name": "Fee Payment", + "acronym": "FP", + "description": "Scheduled fee payments", + "sequence": "2" + }, + { + "option": "3", + "identifier": "principalRedemption", + "name": "Principal Redemption", + "acronym": "PR", + "description": "Scheduled principal redemption payment", + "sequence": "3" + }, + { + "option": "4", + "identifier": "principalDrawing", + "name": "Principal Drawing", + "acronym": "PD", + "description": "Drawing of principal amount e.g. in a credit line", + "sequence": "4" + }, + { + "option": "5", + "identifier": "principalPaymentAmountFixing", + "name": "Principal Payment Amount Fixing", + "acronym": "PRF", + "description": "Scheduled fixing of principal payment amount", + "sequence": "5" + }, + { + "option": "6", + "identifier": "penalytPayment", + "name": "Penalty Payment", + "acronym": "PY", + "description": "Scheduled payment of a penalty", + "sequence": "6" + }, + { + "option": "7", + "identifier": "principalPrepayment", + "name": "Principal Prepayment", + "acronym": "PP", + "description": "Unscheduled early repayment of principal", + "sequence": "7" + }, + { + "option": "8", + "identifier": "interestPayment", + "name": "Interest Payment", + "acronym": "IP", + "description": "Scheduled interest payment", + "sequence": "8" + }, + { + "option": "9", + "identifier": "interestCapitalization", + "name": "Interest Capitalization", + "acronym": "IPCI", + "description": "Scheduled capitalization of accrued interest", + "sequence": "9" + }, + { + "option": "10", + "identifier": "creditEvent", + "name": "Credit Event", + "acronym": "CE", + "description": "Credit event of counterparty to a contract", + "sequence": "10" + }, + { + "option": "11", + "identifier": "rateResetFixed", + "name": "Rate Reset Fixing with Known Rate", + "acronym": "RRF", + "description": "Scheduled fixing of variable rate with known new rate", + "sequence": "11 " + }, + { + "option": "12", + "identifier": "rateResetVariable", + "name": "Rate Reset Fixing with Unknown Rate", + "acronym": "RR", + "description": "Scheduled fixing of variable rate with unknown new rate", + "sequence": "12" + }, + { + "option": "13", + "identifier": "dividendPayment", + "name": "Dividend Payment", + "acronym": "DV", + "description": "Payment of dividends", + "sequence": "13" + }, + { + "option": "14", + "identifier": "purchase", + "name": "Purchase", + "acronym": "PRD", + "description": "Purchase of a contract", + "sequence": "14" + }, + { + "option": "15", + "identifier": "marginCall", + "name": "Margin Call", + "acronym": "MR", + "description": "Scheduled margin call", + "sequence": "15" + }, + { + "option": "16", + "identifier": "termination", + "name": "Termination", + "acronym": "TD", + "description": "Termination of a contract", + "sequence": "16" + }, + { + "option": "17", + "identifier": "scalingIndexFixing", + "name": "Scaling Index Fixing", + "acronym": "SC", + "description": "Scheduled fixing of a scaling index", + "sequence": "17" + }, + { + "option": "18", + "identifier": "interestCalculationBaseFixing", + "name": "Interest Calculation Base Fixing", + "acronym": "IPCB", + "description": "Scheduled fixing of the interest calculation base", + "sequence": "18" + }, + { + "option": "19", + "identifier": "maturity", + "name": "Maturity", + "acronym": "MD", + "description": "Maturity of a contract", + "sequence": "19" + }, + { + "option": "20", + "identifier": "exercise", + "name": "Exercise", + "acronym": "XD", + "description": "Exercise of a contractual feature such as an optionality", + "sequence": "20" + }, + { + "option": "21", + "identifier": "settlement", + "name": "Settlement", + "acronym": "STD", + "description": "Settlement of an exercised contractual claim", + "sequence": "21" + } ] }, "payoff": { "identifier": "payoff", "name": "Payoff", - "type": "number", + "acronym": "PYO", + "description": "The event payoff (if any). Is zero if no payoff needs be settled for the event", + "type": "Real", + "allowedValues": [] + }, + "scheduleTime": { + "identifier": "scheduleTime", + "name": "Schedule Time", + "acronym": "TSC", + "description": "The scheduled timestamp for updating event payoff and post-event state", + "type": "Timestamp", "allowedValues": [ - + "ISO8601 Datetime" ] }, "state": { "identifier": "state", "name": "State", + "acronym": "EVS", + "description": "The post-event state. Results from applying the event’s state transition function to the pre-event state", "type": "State", - "allowedValues": [ - - ] + "allowedValues": [] } } } diff --git a/actus-dictionary-states.json b/actus-dictionary-states.json index b40e9d0..43b4e50 100644 --- a/actus-dictionary-states.json +++ b/actus-dictionary-states.json @@ -28,10 +28,48 @@ "description": "Indicates the current Contract Performance status. Different states of the contract range from performing to default.", "type": "Enum", "allowedValues": [ - "PF", - "DL", - "DQ", - "DF" + { + "option": "0", + "identifier": "performant", + "name": "Performant", + "acronym": "PF", + "description": "Contract is performing according to terms and conditions." + }, + { + "option": "1", + "identifier": "delayed", + "name": "Delayed", + "acronym": "DL", + "description": "Contractual payment obligations are delayed according to the Grace Period." + }, + { + "option": "2", + "identifier": "delinquent", + "name": "Delinquent", + "acronym": "DQ", + "description": "Contractual payment obligations are delinquent according to the Delinquency Period." + }, + { + "option": "3", + "identifier": "default", + "name": "Default", + "acronym": "DF", + "description": "Contract defaulted on payment obligations according to Delinquency Period." + }, + { + "option": "4", + "identifier": "matured", + "name": "Matured", + "acronym": "MA", + "description": "Contract matured." + }, + { + "option": "5", + "identifier": "terminated", + "name": "Terminated", + "acronym": "TE", + "description": "Contract has been terminated." + } ] }, "exerciseAmount": { @@ -48,7 +86,9 @@ "acronym": "XD", "description": "The timestamp at which a contingent event/obligation is exercised", "type": "Timestamp", - "allowedValues": ["ISO8601 Datetime"] + "allowedValues": [ + "ISO8601 Datetime" + ] }, "feeAccrued": { "identifier": "feeAccrued", @@ -58,10 +98,10 @@ "type": "Real", "allowedValues": [] }, - "interestCalculationBase": { - "identifier": "interestCalculationBase", - "name": "Interest Calculation Base", - "acronym": "ICB", + "interestCalculationBaseAmount": { + "identifier": "interestCalculationBaseAmount", + "name": "Interest Calculation Base Amount", + "acronym": "ICBA", "description": "The basis at which interest is being accrued. Potentially different from NVL.", "type": "Real", "allowedValues": [] @@ -74,6 +114,16 @@ "type": "Real", "allowedValues": [] }, + "maturityDate": { + "identifier": "maturityDate", + "name": "Maturity Date", + "acronym": "MD", + "description": "The timestamp as per which the contract matures according to the initial terms or as per unscheduled events", + "type": "Timestamp", + "allowedValues": [ + "ISO8601 Datetime" + ] + }, "nextPrincipalRedemptionPayment": { "identifier": "nextPrincipalRedemptionPayment", "name": "Next Principal Redemption Payment", @@ -102,9 +152,11 @@ "identifier": "nonPerformingDate", "name": "Non Performing Date", "acronym": "NPD", - "description": "The date of the (uncovered) payment event responsible for the current value of the \"Contract Performance\" state variable.", + "description": "The date of the (uncovered) payment event responsible for the current value of the Contract Performance state variable.", "type": "Timestamp", - "allowedValues": ["ISO8601 Datetime"] + "allowedValues": [ + "ISO8601 Datetime" + ] }, "notionalPrincipal": { "identifier": "notionalPrincipal", @@ -136,7 +188,19 @@ "acronym": "SD", "description": "The timestamp as per which the state is captured at any point in time", "type": "Timestamp", - "allowedValues": ["ISO8601 Datetime"] + "allowedValues": [ + "ISO8601 Datetime" + ] + }, + "terminationDate": { + "identifier": "terminationDate", + "name": "Termination Date", + "acronym": "TD", + "description": "The timestamp of unscheduled termination of a contract", + "type": "Timestamp", + "allowedValues": [ + "ISO8601 Datetime" + ] } } } diff --git a/actus-dictionary-taxonomy.json b/actus-dictionary-taxonomy.json index 97440f4..4cb68ee 100644 --- a/actus-dictionary-taxonomy.json +++ b/actus-dictionary-taxonomy.json @@ -21,8 +21,8 @@ "acronym": "CLM", "family": "Basic", "class": "Fixed Income", - "description": "Lonas that are rolled over as long as they are not called. Once called it has to be paid back after the stipulated notice period.", - "coverage": "Inerbank loans with call features.", + "description": "Loans that are rolled over as long as they are not called. Once called it has to be paid back after the stipulated notice period.", + "coverage": "Interbank loans with call features.", "status": "Released" }, "capFloor": { diff --git a/actus-dictionary-terms.json b/actus-dictionary-terms.json index c533309..7ca1187 100644 --- a/actus-dictionary-terms.json +++ b/actus-dictionary-terms.json @@ -21,7 +21,9 @@ "name": "Amortization Date", "acronym": "AMD", "type": "Timestamp", - "allowedValues": ["ISO8601 Datetime"], + "allowedValues": [ + "ISO8601 Datetime" + ], "default": "", "description": "This Date is used to calculate the annuity amounts for ANN and ANX NGX CT's. Needs only to be set in case where the contract balloon at MD and MD is less than AD." }, @@ -31,7 +33,9 @@ "name": "Array Cycle Anchor Date Of Interest Payment", "acronym": "ARIPANXi", "type": "Timestamp[]", - "allowedValues": ["ISO8601 Datetime"], + "allowedValues": [ + "ISO8601 Datetime" + ], "default": "", "description": "Same like IPANX but as array" }, @@ -92,8 +96,20 @@ "acronym": "ARFIXVAR", "type": "Enum[]", "allowedValues": [ - "F", - "V" + { + "option": "0", + "identifier": "fixedRate", + "name": "Fixed Rate", + "acronym": "F", + "description": "Rate spread represents a fixed rate." + }, + { + "option": "1", + "identifier": "variableRate", + "name": "Variable Rate", + "acronym": "V", + "description": "Rate spread represents the spread on top of a reference rate." + } ], "default": "", "description": "For array-type rate reset schedules, this attributes defines the meaning of ARRATE." @@ -105,8 +121,20 @@ "acronym": "ARINCDEC", "type": "Enum[]", "allowedValues": [ - "INC", - "DEC" + { + "option": "0", + "identifier": "increase", + "name": "Increase", + "acronym": "INC", + "description": "Notional is increased in this period." + }, + { + "option": "1", + "identifier": "decrease", + "name": "Decrease", + "acronym": "DEC", + "description": "Notional is decreased in this period." + } ], "default": "", "description": "Indicates whether a certain PRNXT element in ARPRNX increases the principal (NT) or decreases it.\nApplies only for ANX, NAX, LAX Maturity CTs. For all other Maturity CTs the first principal payment is always in the opposite direction of all other (following) payments." @@ -129,7 +157,7 @@ "type": "Real[]", "allowedValues": [], "default": "", - "description": "For array-type rate reset schedules, this attribute represents either an interest rate (corresponding to IPNR) or a spread (corresponding to RRSP). Which case applies depends on the attribute ARFIXVAR: if ARFIXVAR=”FIX” then it represents the new IPNR and if ARFIXVAR=”VAR” then the applicable RRSP." + "description": "For array-type rate reset schedules, this attribute represents either an interest rate (corresponding to IPNR) or a spread (corresponding to RRSP). Which case applies depends on the attribute ARFIXVAR: if ARFIXVAR=FIX then it represents the new IPNR and if ARFIXVAR=VAR then the applicable RRSP." }, "businessDayConvention": { "identifier": "businessDayConvention", @@ -138,17 +166,71 @@ "acronym": "BDC", "type": "Enum", "allowedValues": [ - "NOS", - "SCF", - "SCMF", - "CSF", - "CSMF", - "SCP", - "SCMP", - "CSP", - "CSMP" - ], - "default": "SCF\n", + { + "option": "0", + "identifier": "noShift", + "name": "No Shift", + "acronym": "NOS", + "description": "No shift applied to non-business days." + }, + { + "option": "1", + "identifier": "shiftCalculateFollowing", + "name": "Shift-Calculate Following", + "acronym": "SCF", + "description": "Shift event dates first then calculate accruals etc. Strictly shift to the next following business day." + }, + { + "option": "2", + "identifier": "shiftCalculateModifiedFollowing", + "name": "Shift-Calculate Modified-Following", + "acronym": "SCMF", + "description": "Shift event dates first then calculate accruals etc. Shift to the next following business day if this falls in the same month. Shift to the most recent preceding business day otherwise." + }, + { + "option": "3", + "identifier": "calculateShiftFollowing", + "name": "Calculate-Shift Following", + "acronym": "CSF", + "description": "Calculate accruals etc. first then shift event dates. Strictly shift to the next following business day." + }, + { + "option": "4", + "identifier": "calculateShiftModifiedFollowing", + "name": "Calculate-Shift Modified-Following", + "acronym": "CSMF", + "description": "Calculate accruals etc. first then shift event dates. Shift to the next following business day if this falls in the same month. Shift to the most recent preceding business day otherwise." + }, + { + "option": "5", + "identifier": "shiftCalculatePreceding", + "name": "Shift-Calculate Preceding", + "acronym": "SCP", + "description": "Shift event dates first then calculate accruals etc. Strictly shift to the most recent preceding business day." + }, + { + "option": "6", + "identifier": "shiftCalculateModifiedPreceding", + "name": "Shift-Calculate Modified-Preceding", + "acronym": "SCMP", + "description": "Shift event dates first then calculate accruals etc. Shift to the most recent preceding business day if this falls in the same month. Shift to the next following business day otherwise." + }, + { + "option": "7", + "identifier": "calculateShiftPreceding", + "name": "Calculate-Shift Preceding", + "acronym": "CSP", + "description": "Calculate accruals etc. first then shift event dates. Strictly shift to the most recent preceding business day." + }, + { + "option": "8", + "identifier": "calculateShiftModifiedPreceding", + "name": "Calculate-Shift Modified-Preceding", + "acronym": "SCMP", + "description": "Calculate accruals etc. first then shift event dates. Shift to the most recent preceding business day if this falls in the same month. Shift to the next following business day otherwise." + } + ], + "default": "nos", "description": "BDC's are linked to a calendar. Calendars have working and non-working days. A BDC value other than N means that cash flows cannot fall on non-working days, they must be shifted to the next business day (following) or the previous on (preceding).\nThese two simple rules get refined twofold:\n- Following modified (preceding): Same like following (preceding), however if a cash flow gets shifted into a new month, then it is shifted to preceding (following) business day.\n- Shift/calculate (SC) and calculate/shift (CS). Accrual, principal, and possibly other calculations are affected by this choice. In the case of SC first the dates are shifted and after the shift cash flows are calculated. In the case of CS it is the other way round.\nAttention: Does not affect non-cyclical dates such as PRD, MD, TD, IPCED since they can be set to the correct date directly." }, "calendar": { @@ -158,12 +240,23 @@ "acronym": "CLDR", "type": "Enum", "allowedValues": [ - "NoCalendar", - "MondayToFriday", - "" + { + "option": "0", + "identifier": "noCalendar", + "name": "No Calendar", + "acronym": "NC", + "description": "No holidays defined" + }, + { + "option": "1", + "identifier": "mondayToFriday", + "name": "MondayToFriday", + "acronym": "MF", + "description": "Saturdays and Sundays are holidays" + } ], - "default": "NoCalendar", - "description": "Calendar defines the non-working days which affect the dates of contract events (CDE's) in combination with EOMC and BDC." + "default": "noCalendar", + "description": "Calendar defines the non-working days which affect the dates of contract events (CDE's) in combination with EOMC and BDC. Custom calendars can be added as additional enum options." }, "capitalizationEndDate": { "identifier": "capitalizationEndDate", @@ -171,7 +264,9 @@ "name": "Capitalization End Date", "acronym": "IPCED", "type": "Timestamp", - "allowedValues": ["ISO8601 Datetime"], + "allowedValues": [ + "ISO8601 Datetime" + ], "default": "", "description": "If IPCED is set, then interest is not paid or received but added to the balance (NT) until IPCED. If IPCED does not coincide with an IP cycle, one additional interest payment gets calculated at IPCED and capitalized. Thereafter normal interest payments occur." }, @@ -182,8 +277,20 @@ "acronym": "MRCLH", "type": "Enum", "allowedValues": [ - "Y", - "N" + { + "option": "0", + "identifier": "isClearingHouse", + "name": "Is Clearing House", + "acronym": "Y", + "description": "Contract creator is the clearing house." + }, + { + "option": "1", + "identifier": "isNotClearingHouse", + "name": "Is Not Clearing House", + "acronym": "N", + "description": "Contract creator is not the clearing house." + } ], "default": "", "description": "Indicates wheter CRID takes a clearing house function or not. In other word, whether CRID receive margins (MRIM, MRVM)." @@ -194,7 +301,9 @@ "name": "Contract Deal Date", "acronym": "CDD", "type": "Timestamp", - "allowedValues": ["ISO8601 Datetime"], + "allowedValues": [ + "ISO8601 Datetime" + ], "default": "", "description": "This date signifies the origination of the contract where an agreement between the customer and the bank has been settled. From this date on, the institution will have a (market) risk position for financial contracts. This is even the case when IED is in future." }, @@ -215,10 +324,48 @@ "acronym": "PRF", "type": "Enum", "allowedValues": [ - "PF", - "DL", - "DQ", - "DF" + { + "option": "0", + "identifier": "performant", + "name": "Performant", + "acronym": "PF", + "description": "Contract is performing according to terms and conditions." + }, + { + "option": "1", + "identifier": "delayed", + "name": "Delayed", + "acronym": "DL", + "description": "Contractual payment obligations are delayed according to the Grace Period." + }, + { + "option": "2", + "identifier": "delinquent", + "name": "Delinquent", + "acronym": "DQ", + "description": "Contractual payment obligations are delinquent according to the Delinquency Period." + }, + { + "option": "3", + "identifier": "default", + "name": "Default", + "acronym": "DF", + "description": "Contract defaulted on payment obligations according to Delinquency Period." + }, + { + "option": "4", + "identifier": "matured", + "name": "Matured", + "acronym": "MA", + "description": "Contract matured." + }, + { + "option": "5", + "identifier": "terminated", + "name": "Terminated", + "acronym": "TE", + "description": "Contract has been terminated." + } ], "default": "PF", "description": "Indicates the current contract performance status. Different states of the contract range from performing to default." @@ -230,18 +377,97 @@ "acronym": "CNTRL", "type": "Enum", "allowedValues": [ - "RPA", - "RPL", - "LG", - "ST", - "RFL", - "PFL", - "BUY", - "SEL", - "COL", - "CNO", - "GUA", - "OBL" + { + "option": "0", + "identifier": "realPositionAsset", + "name": "Real Position Asset", + "acronym": "RPA", + "description": "Contract creator takes the asset or lender side." + }, + { + "option": "1", + "identifier": "realPositionLiability", + "name": "Real Position Liability", + "acronym": "RPL", + "description": "Contract creator takes the liability or borrower side. " + }, + { + "option": "2", + "identifier": "receiveFirstLegl", + "name": "Receive First Leg", + "acronym": "RFL", + "description": "Contract creator receives the first leg. " + }, + { + "option": "3", + "identifier": "payFirstLeg", + "name": "Pay First Leg", + "acronym": "PFL", + "description": "Contract creator pays the first leg." + }, + { + "option": "4", + "identifier": "receiveFix", + "name": "Receive Fix", + "acronym": "RF", + "description": "Contract creator receives the fixed leg." + }, + { + "option": "5", + "identifier": "payFix", + "name": "Pay Fix", + "acronym": "PF", + "description": "Contract creator pays the fixed leg." + }, + { + "option": "6", + "identifier": "buyer", + "name": "Buyer", + "acronym": "BUY", + "description": "Contract creator holds the right to buy the underlying / exercise the option. " + }, + { + "option": "7", + "identifier": "seller", + "name": "Seller", + "acronym": "SEL", + "description": "Contract creator holds the obligation to sell the underlying / deliver the option. " + }, + { + "option": "8", + "identifier": "collateralPosition", + "name": "Collateral Position", + "acronym": "COL", + "description": "Contract represents a collateral to an underlying instrument" + }, + { + "option": "9", + "identifier": "closeOutNetting", + "name": "Close out Netting", + "acronym": "CNO", + "description": "Contract creator and counterparty agree on netting payment obligations of underlying instruments in case of default. " + }, + { + "option": "10", + "identifier": "underlying", + "name": "Underlying", + "acronym": "UDL", + "description": "Contract represents the underlying to a composed contract. Role of the underlying is derived from the parent. " + }, + { + "option": "11", + "identifier": "underlyingPlus", + "name": "Underlying Plus", + "acronym": "UDLP", + "description": "Contract represents the underlying to a composed contract. Role of the underlying is derived from the parent. When considered a standalone contract the underlying’s creator takes the asset side. " + }, + { + "option": "12", + "identifier": "underlyingMinus", + "name": "Underlying Minus", + "acronym": "UDLM", + "description": "Contract represents the underlying to a composed contract. Role of the underlying is derived from the parent. When considered a standalone contract the underlying’s creator takes the liability side." + } ], "default": "", "description": "CNTRL defines which position the CRID ( the creator of the contract record ) takes in a contract. For example, whether the contract is an asset or liability, a long or short position for the CRID. \nMost contracts are simple on or off balance sheet positions which are assets, liabilities. Such contracts can also play a secondary role as a collateral. \nThe attribute is highly significant since it determines the direction of all cash flows. The exact meaning is given with each CT in the ACTUS High Level Specification document." @@ -251,7 +477,7 @@ "group": "Contract identification", "name": "Contract Structure", "acronym": "CTS", - "type": "ContractStructure", + "type": "ContractReference[]", "allowedValues": [], "default": "", "description": "A structure identifying individual or sets of underlying contracts. E.g. for FUTUR, this structure identifies the single underlying contract, for SWAPS, the FirstLeg and SecondLeg are identified, or for CEG, CEC the structure identifies Covered and Covering contracts." @@ -263,24 +489,132 @@ "acronym": "CT", "type": "Enum", "allowedValues": [ - "PAM", - "ANN", - "NAM", - "LAM", - "LAX", - "CLM", - "UMP", - "CSH", - "STK", - "COM", - "SWAPS", - "SWPPV", - "FXOUT", - "CAPFL", - "FUTUR", - "OPTNS", - "CEG", - "CEC" + { + "option": "0", + "identifier": "principalAtMaturity", + "name": "Principal at Maturity", + "acronym": "PAM", + "description": "Lending agreements with full amortization at maturity." + }, + { + "option": "1", + "identifier": "annuity", + "name": "Annuity", + "acronym": "ANN", + "description": "Lending agreements with fixed periodic payments consisting of an interest and principal portion. The periodic payments are adjusted for variable rate instruments such that maturity remains fixed." + }, + { + "option": "2", + "identifier": "negativeAmortizer", + "name": "Negative Amortizer", + "acronym": "NAM", + "description": "Lending agreements with fixed periodic payments consisting of an interest and principal portion. Maturity changes for variable rate instruments. " + }, + { + "option": "3", + "identifier": "linearAmortizer", + "name": "Linear Amortizer", + "acronym": "LAM", + "description": "Lending agreements with fixed principal repayment amounts and variable interest payments." + }, + { + "option": "4", + "identifier": "exoticLinearAmortizer", + "name": "Exotic Linear Amortizer", + "acronym": "LAX", + "description": "Lending agreements with exotic repayment schedules." + }, + { + "option": "5", + "identifier": "callMoney", + "name": "Call Money", + "acronym": "CLM", + "description": "Lonas that are rolled over as long as they are not called. Once called it has to be paid back after the stipulated notice period." + }, + { + "option": "6", + "identifier": "undefinedMaturityProfile", + "name": "Undefined Maturity Profile", + "acronym": "UMP", + "description": "Interest paying cash accounts (current / savings / etc.). " + }, + { + "option": "7", + "identifier": "cash", + "name": "Cash", + "acronym": "CSH", + "description": "Represents cash holdings. " + }, + { + "option": "8", + "identifier": "stock", + "name": "Stock", + "acronym": "STK", + "description": "Represents stocks/shares/equity. " + }, + { + "option": "9", + "identifier": "commodity", + "name": "Commodity", + "acronym": "COM", + "description": "Represents commodities. " + }, + { + "option": "10", + "identifier": "swap", + "name": "Swap", + "acronym": "SWAPS", + "description": "An agreement of swapping two legs such as fixed against variable or currency 1 against currency 2 etc. " + }, + { + "option": "11", + "identifier": "plainVanillaSwap", + "name": "Plain Vanilla Swap", + "acronym": "SWPPV", + "description": "Plain vanilla interest rate swaps. " + }, + { + "option": "12", + "identifier": "foreignExchangeOutright", + "name": "Foreign Exchange Outright", + "acronym": "FXOUT", + "description": "An agreement of swapping two cash flows in different currencies at a future point in time. " + }, + { + "option": "13", + "identifier": "capFloor", + "name": "Cap and Floor", + "acronym": "CAPFL", + "description": "An agreement of paying the differential (cap or floor) of a reference rate versus a fixed rate. " + }, + { + "option": "14", + "identifier": "future", + "name": "Future", + "acronym": "FUTUR", + "description": "An agreement of exchanging an underlying instrument against a fixed price in the future. " + }, + { + "option": "15", + "identifier": "option", + "name": "Option", + "acronym": "OPTNS", + "description": "Different types of options on buying an underlying instrument at a fixed price in the future. " + }, + { + "option": "16", + "identifier": "creditEnhancementGuarantee", + "name": "Credit Enhancement Guarantee", + "acronym": "CEG", + "description": "A guarantee / letter of credit by a third party on the scheduled payment obligations of an underlying instrument " + }, + { + "option": "17", + "identifier": "creditEnhancementCollateral", + "name": "Credit Enhancement Collateral", + "acronym": "CEC", + "description": "A collateral securing the scheduled payment obligations of an underlying instrument" + } ], "default": "", "description": "The ContractType is the most important information. It defines the cash flow generating pattern of a contract. The ContractType information in combination with a given state of the risk factors will produce a deterministic sequence of cash flows which are the basis of any financial analysis." @@ -301,8 +635,10 @@ "name": "Coverage Of Credit Enhancement", "acronym": "CECV", "type": "Real", - "allowedValues": ["(0,1)"], - "default": "1.0", + "allowedValues": [ + "(0,1)" + ], + "default": "1", "description": "Defines which percentage of the exposure is covered" }, "creatorID": { @@ -311,7 +647,11 @@ "name": "Creator Identifier", "acronym": "CRID", "type": "Varchar", - "allowedValues": [], + "allowedValues": [ + [ + + ] + ], "default": "", "description": "This identifies the legal entity creating the contract record. The counterparty of the contract is tracked in CPID.\nCRID is ideally the official LEI which can be a firm, a government body, even a single person etc. However, this can also refer to a annonymous group in which case this information is not to be disclosed. CRID may also refer to a group taking a joint risk." }, @@ -322,10 +662,27 @@ "acronym": "CETC", "type": "Enum[]", "allowedValues": [ - "DL", - "DQ", - "DF", - "" + { + "option": "0", + "identifier": "delayed", + "name": "Delayed", + "acronym": "DL", + "description": "Delay of the underlying represents a credit event." + }, + { + "option": "1", + "identifier": "delinquent", + "name": "Delinquent", + "acronym": "DQ", + "description": "Delinquency of the underlying represents a credit event." + }, + { + "option": "2", + "identifier": "default", + "name": "Default", + "acronym": "DF", + "description": "Default of the underlying represents a credit event." + } ], "default": "DF", "description": "The type of credit events covered e.g. in credit enhancement or credit default swap contracts. Only the defined credit event types may trigger the protection." @@ -336,7 +693,9 @@ "name": "Credit Line Amount", "acronym": "CLA", "type": "Real", - "allowedValues": ["Positive"], + "allowedValues": [ + "Positive" + ], "default": "", "description": "If defined, gives the total amount that can be drawn from a credit line. The remaining amount that can still be drawn is given by CLA-NT.\nFor ANN, NAM, the credit line can only be drawn prior to PRANX-1PRCL.\nFor CRL, the remaining amount that can still be drawn is given by CLA-Sum(NT of attached contracts)." }, @@ -346,7 +705,9 @@ "name": "Currency", "acronym": "CUR", "type": "Varchar", - "allowedValues": "ISO4217", + "allowedValues": [ + "ISO4217" + ], "default": "", "description": "The currency of the cash flows." }, @@ -356,7 +717,9 @@ "name": "Currency 2", "acronym": "CUR2", "type": "Varchar", - "allowedValues": "ISO4217", + "allowedValues": [ + "ISO4217" + ], "default": "", "description": "The currency of the cash flows of the second leg (if not defined, main currency applies)\n" }, @@ -366,7 +729,9 @@ "name": "Cycle Anchor Date Of Dividend", "acronym": "DVANX", "type": "Timestamp", - "allowedValues": ["ISO8601 Datetime"], + "allowedValues": [ + "ISO8601 Datetime" + ], "default": "", "description": "Date from which the dividend payment date schedule is calculated according to the cycle length. The first dividend payment event takes place on this anchor." }, @@ -376,7 +741,9 @@ "name": "Cycle Anchor Date Of Fee", "acronym": "FEANX", "type": "Timestamp", - "allowedValues": ["ISO8601 Datetime"], + "allowedValues": [ + "ISO8601 Datetime" + ], "default": "", "description": "Date from which the fee payment date schedule is calculated according to the cycle length. The first fee payment event takes place on this anchor." }, @@ -386,7 +753,9 @@ "name": "Cycle Anchor Date Of Interest Calculation Base", "acronym": "IPCBANX", "type": "Timestamp", - "allowedValues": ["ISO8601 Datetime"], + "allowedValues": [ + "ISO8601 Datetime" + ], "default": "", "description": "Date from which the interest calculation base date schedule is calculated according to the cycle length. The first interest calculation base event takes place on this anchor." }, @@ -396,7 +765,9 @@ "name": "Cycle Anchor Date Of Interest Payment", "acronym": "IPANX", "type": "Timestamp", - "allowedValues": ["ISO8601 Datetime"], + "allowedValues": [ + "ISO8601 Datetime" + ], "default": "", "description": "Date from which the interest payment date schedule is calculated according to the cycle length. The first interest payment event takes place on this anchor." }, @@ -406,7 +777,9 @@ "name": "Cycle Anchor Date Of Margining", "acronym": "MRANX", "type": "Timestamp", - "allowedValues": ["ISO8601 Datetime"], + "allowedValues": [ + "ISO8601 Datetime" + ], "default": "", "description": "Date from which the margin call date schedule is calculated according to the cycle length. The first margin call event takes place on this anchor." }, @@ -416,7 +789,9 @@ "name": "Cycle Anchor Date Of Optionality", "acronym": "OPANX", "type": "Timestamp", - "allowedValues": ["ISO8601 Datetime"], + "allowedValues": [ + "ISO8601 Datetime" + ], "default": "", "description": "Used for Basic Maturities (such as PAM, RGM, ANN, NGM and their Step-up versions) and American and Bermudan style options. \n- Basic Maturities: Within the group of these Maturities, it indicates the possibility of prepayments. Prepayment features are controlled by Behavior. \n- American and Bermudan style Options: Begin of exercise period." }, @@ -426,7 +801,9 @@ "name": "Cycle Anchor Date Of Principal Redemption", "acronym": "PRANX", "type": "Timestamp", - "allowedValues": ["ISO8601 Datetime"], + "allowedValues": [ + "ISO8601 Datetime" + ], "default": "", "description": "Date from which the principal payment date schedule is calculated according to the cycle length. The first principal payment event takes place on this anchor." }, @@ -436,7 +813,9 @@ "name": "Cycle Anchor Date Of Rate Reset", "acronym": "RRANX", "type": "Timestamp", - "allowedValues": ["ISO8601 Datetime"], + "allowedValues": [ + "ISO8601 Datetime" + ], "default": "", "description": "Date from which the rate reset date schedule is calculated according to the cycle length. The first rate reset event takes place on this anchor." }, @@ -446,7 +825,9 @@ "name": "Cycle Anchor Date Of Scaling Index", "acronym": "SCANX", "type": "Timestamp", - "allowedValues": ["ISO8601 Datetime"], + "allowedValues": [ + "ISO8601 Datetime" + ], "default": "", "description": "Date from which the scaling date schedule is calculated according to the cycle length. The first scaling event takes place on this anchor." }, @@ -455,8 +836,10 @@ "group": "Dividend", "name": "Cycle Of Dividend", "acronym": "DVCL", - "type": "Period", - "allowedValues": [], + "type": "Cycle", + "allowedValues": [ + "[ISO8601 Duration]L[s={0,1}]" + ], "default": "", "description": "Defines in combination with DVANX the payment points of dividends. The dividend payment schedule will start at DVANX and end at MaximumProjectionPeriod (cf. sheet Modeling Parameters)." }, @@ -466,7 +849,9 @@ "name": "Cycle Of Fee", "acronym": "FECL", "type": "Cycle", - "allowedValues": [], + "allowedValues": [ + "[ISO8601 Duration]L[s={0,1}]" + ], "default": "", "description": "Defines in combination with FEANX the payment points of fees" }, @@ -476,7 +861,9 @@ "name": "Cycle Of Interest Calculation Base", "acronym": "IPCBCL", "type": "Cycle", - "allowedValues": [], + "allowedValues": [ + "[ISO8601 Duration]L[s={0,1}]" + ], "default": "", "description": "Concerning the format see PRCL. \nDefines the subsequent adjustment points to NT of the interest payment calculation base." }, @@ -486,7 +873,9 @@ "name": "Cycle Of Interest Payment", "acronym": "IPCL", "type": "Cycle", - "allowedValues": [], + "allowedValues": [ + "[ISO8601 Duration]L[s={0,1}]" + ], "default": "", "description": "Cycle according to which the interest payment date schedule will be calculated.\nIn case IPCL is not set, then there will only be an interest payment event at MD (and possibly at IPANX if set).\nThe interval will be adjusted yet by EOMC and BDC." }, @@ -496,7 +885,9 @@ "name": "Cycle Of Margining", "acronym": "MRCL", "type": "Cycle", - "allowedValues": [], + "allowedValues": [ + "[ISO8601 Duration]L[s={0,1}]" + ], "default": "", "description": "Defines together with MRANX the points where margins can be called." }, @@ -506,9 +897,11 @@ "name": "Cycle Of Optionality", "acronym": "OPCL", "type": "Cycle", - "allowedValues": [], + "allowedValues": [ + "[ISO8601 Duration]L[s={0,1}]" + ], "default": "", - "description": "Cycle according to which the option execution date schedule will be calculated.\nOPCL can be NULL for American Options or Prepayment Optionality in which case the optionality period starts at OPANX and ends at OPXED (for american options) or MD (in case of prepayment optionality).\nThe interval will be adjusted yet by EOMC and BDC." + "description": "Cycle according to which the option exercise date schedule will be calculated.\nOPCL can be NULL for American Options or Prepayment Optionality in which case the optionality period starts at OPANX and ends at OPXED (for american options) or MD (in case of prepayment optionality).\nThe interval will be adjusted yet by EOMC and BDC." }, "cycleOfPrincipalRedemption": { "identifier": "cycleOfPrincipalRedemption", @@ -516,7 +909,9 @@ "name": "Cycle Of Principal Redemption", "acronym": "PRCL", "type": "Cycle", - "allowedValues": [], + "allowedValues": [ + "[ISO8601 Duration]L[s={0,1}]" + ], "default": "", "description": "Cycle according to which the interest payment date schedule will be calculated.\nIn case PRCL is not set, then there will only be one principal payment event at MD (and possibly at PRANX if set).\nThe interval will be adjusted yet by EOMC and BDC." }, @@ -526,7 +921,9 @@ "name": "Cycle Of Rate Reset", "acronym": "RRCL", "type": "Cycle", - "allowedValues": [], + "allowedValues": [ + "[ISO8601 Duration]L[s={0,1}]" + ], "default": "", "description": "Cycle according to which the rate reset date schedule will be calculated.\nIn case RRCL is not set, then there will only be one rate reset event at RRANX given RRANX if set.\nThe interval will be adjusted yet by EOMC and BDC." }, @@ -536,7 +933,9 @@ "name": "Cycle Of Scaling Index", "acronym": "SCCL", "type": "Cycle", - "allowedValues": [], + "allowedValues": [ + "[ISO8601 Duration]L[s={0,1}]" + ], "default": "", "description": "Cycle according to which the scaling date schedule will be calculated.\nIn case SCCL is not set, then there will only be one scaling event at SCANX given SCANX is set.\nThe interval will be adjusted yet by EOMC and BDC." }, @@ -547,8 +946,20 @@ "acronym": "IPPNT", "type": "Enum", "allowedValues": [ - "B", - "E" + { + "option": "0", + "identifier": "beginning", + "name": "Beginning", + "acronym": "B", + "description": "Interest is paid upfront of the interest period." + }, + { + "option": "1", + "identifier": "end", + "name": "End", + "acronym": "E", + "description": "Interest is paid at the end of the interest period." + } ], "default": "E", "description": "Usually, interest is paid at the end of each IPCL which corresponds to a IPPNT value of E which is also the default. If interest payment occurs at the beginning of the cycle, the value is B." @@ -560,8 +971,20 @@ "acronym": "RRPNT", "type": "Enum", "allowedValues": [ - "B", - "E" + { + "option": "0", + "identifier": "beginning", + "name": "Beginning", + "acronym": "B", + "description": "The new rate is applied at the beginning of the reset period." + }, + { + "option": "1", + "identifier": "end", + "name": "End", + "acronym": "E", + "description": "The new rate is applied at the end of the reset period." + } ], "default": "B", "description": "Normally rates get reset at the beginning of any resetting cycles. There are contracts where the rate is not set at the beginning but at the end of the cycle and then applied to the previous cycle (post-fixing); in other words the rate applies before it is fixed. Hence, the new rate is not known during the entire cycle where it applies. Therefore, the rate will be applied backwards at the end of the cycle. This happens through a correction of interest accrued." @@ -573,13 +996,48 @@ "acronym": "IPDC", "type": "Enum", "allowedValues": [ - "A/AISDA", - "A/360", - "A/365", - "30E/360ISDA", - "30E/360", - "B/252", - "" + { + "option": "0", + "identifier": "actualActual", + "name": "Actual/Actual", + "acronym": "AA", + "description": "Year fractions accrue on the basis of the actual number of days per month and per year in the respective period." + }, + { + "option": "1", + "identifier": "actualThreeSixty", + "name": "Actual Three Sixty", + "acronym": "A360", + "description": "Year fractions accrue on the basis of the actual number of days per month and 360 days per year in the respective period." + }, + { + "option": "2", + "identifier": "actualThreeSixtyFive", + "name": "Actual Three Sixty Five", + "acronym": "A365", + "description": "Year fractions accrue on the basis of the actual number of days per month and 365 days per year in the respective period." + }, + { + "option": "3", + "identifier": "thirtyEThreeSixtyISDA", + "name": "Thirty E Three Sixty ISDA", + "acronym": "30E360ISDA", + "description": "Year fractions accrue on the basis of 30 days per month and 360 days per year in the respective period (ISDA method)." + }, + { + "option": "4", + "identifier": "thirtyEThreeSixty", + "name": "Thirty E Three Sixty", + "acronym": "30E360", + "description": "Year fractions accrue on the basis of 30 days per month and 360 days per year in the respective period." + }, + { + "option": "5", + "identifier": "twentyEightEThreeThirtySix", + "name": "Twenty Eight E Three Thirty Six", + "acronym": "28E336", + "description": "Year fractions accrue on the basis of 28 days per month and 336 days per year in the respective period." + } ], "default": "", "description": "Method defining how days are counted between two dates. This finally defines the year fraction in accrual calculations." @@ -590,8 +1048,10 @@ "name": "Delinquency Period", "acronym": "DQP", "type": "Period", - "allowedValues": [], - "default": "0D", + "allowedValues": [ + "ISO8601 Duration" + ], + "default": "P0D", "description": "If real payment happens after scheduled payment date plus DLP, then the counterparty is in technical default. This means that the creditor legally has the right to declare default of the debtor." }, "delinquencyRate": { @@ -600,8 +1060,10 @@ "name": "Delinquency Rate", "acronym": "DQR", "type": "Real", - "allowedValues": ["Positive"], - "default": "0.0", + "allowedValues": [ + "Positive" + ], + "default": "0", "description": "Rate at which Delinquency Payments accrue on NT (in addition to the interest rate) during the DelinquencyPeriod" }, "deliverySettlement": { @@ -611,11 +1073,23 @@ "acronym": "DS", "type": "Enum", "allowedValues": [ - "S", - "D" + { + "option": "0", + "identifier": "cashSettlement", + "name": "Cash Settlement", + "acronym": "S", + "description": "The market value of the underlying is settled." + }, + { + "option": "1", + "identifier": "physicalSettlement", + "name": "Physical Settlement", + "acronym": "D", + "description": "The underlying is delivered physically." + } ], "default": "D", - "description": "Indicates whether the contract is settled in cash or physical delivery.\nIn case of “physical delivery”, the underlying contract and associated (future) cash flows are effectively exchanged. In case of “cash” settlement, the current market value of the underlying contract determines the cash flow exchanged." + "description": "Indicates whether the contract is settled in cash or physical delivery.\nIn case of physical delivery, the underlying contract and associated (future) cash flows are effectively exchanged. In case of cash settlement, the current market value of the underlying contract determines the cash flow exchanged." }, "endOfMonthConvention": { "identifier": "endOfMonthConvention", @@ -624,10 +1098,22 @@ "acronym": "EOMC", "type": "Enum", "allowedValues": [ - "EOM", - "SD" + { + "option": "0", + "identifier": "sameDay", + "name": "Same Day", + "acronym": "SD", + "description": "Schedule times always fall on the schedule anchor date day of the month." + }, + { + "option": "1", + "identifier": "endOfMonth", + "name": "End of Month", + "acronym": "EOM", + "description": "Schedule times fall on the end of every month if the anchor date represents the last day of the respective month." + } ], - "default": "SD", + "default": "sd", "description": "When computing schedules a special problem arises if an anchor date is at the end of a month and a cycle of monthly or quarterly is applied (yearly in the case of leap years only). How do we have to interpret an anchor date April 30 plus 1M cycles? In case where EOM is selected, it will jump to the 31st of May, then June 30, July 31 and so on. If SM is selected, it will jump to the 30st always with of course an exception in February. \nThis logic applies for all months having 30 or less days and an anchor date at the last day. Month with 31 days will at any rate jump to the last of the month if anchor date is on the last day." }, "exDividendDate": { @@ -636,9 +1122,11 @@ "name": "Ex Dividend Date", "acronym": "DVEX", "type": "Timestamp", - "allowedValues": ["ISO8601 Datetime"], + "allowedValues": [ + "ISO8601 Datetime" + ], "default": "", - "description": "In case contract is traded between DVEX and next DV payment date (i.e. PRD>DVEX & PRDDVEX & PRD" + { + "option": "0", + "identifier": "barrel", + "name": "Barrel", + "acronym": "BRL", + "description": "Physical unit of the contract is Barrels." + }, + { + "option": "1", + "identifier": "bushel", + "name": "Bushel", + "acronym": "BSH", + "description": "Physical unit of the contract is Bushel." + }, + { + "option": "2", + "identifier": "gallon", + "name": "Gallon", + "acronym": "GLN", + "description": "Physical unit of the contract is Gallons." + }, + { + "option": "3", + "identifier": "currencyUnit", + "name": "Currency Unit", + "acronym": "CUU", + "description": "Physical unit of the contract is Currency Units." + }, + { + "option": "4", + "identifier": "megaWattHours", + "name": "Mega Watt Hours", + "acronym": "MWH", + "description": "Physical unit of the contract is Mega Watt Hours." + }, + { + "option": "5", + "identifier": "pounds", + "name": "Pounds", + "acronym": "PND", + "description": "Physical unit of the contract is Pounds." + }, + { + "option": "6", + "identifier": "shortTons", + "name": "Short Tons", + "acronym": "STN", + "description": "Physical unit of the contract is Short Tons." + }, + { + "option": "7", + "identifier": "tons", + "name": "Tons", + "acronym": "TON", + "description": "Physical unit of the contract is Tons." + }, + { + "option": "8", + "identifier": "troyOunce", + "name": "Troy Ounce", + "acronym": "TRO", + "description": "Physical unit of the contract is Troy Ounces." + } ], "default": "", - "description": "The physical unit of the contract. Example: “Barrels” for an Oil COM CT." + "description": "The physical unit of the contract. Example: Barrels for an Oil COM CT." }, "variationMargin": { "identifier": "variationMargin", @@ -1261,7 +2022,9 @@ "name": "Variation Margin", "acronym": "MRVM", "type": "Real", - "allowedValues": ["Positive"], + "allowedValues": [ + "Positive" + ], "default": "", "description": "MRVM reflects the accrued but not yet paid margin as per SD. \nOpen traded positions are revalued by the exchange at the end of every trading day using mark-to-market valuation. Often clearing members do not credit or debit their clients daily with MRVM, but rather use a Maintenance Margin. If the balance falls outside MRMML (and MRMMU), then capital must be added (is refunded) to reach the original margin amount MRIM. We can also say that MVO+MRVM is equal to the reference value as per last margin update." }, @@ -1271,7 +2034,9 @@ "name": "X Day Notice", "acronym": "XDN", "type": "Period", - "allowedValues": [], + "allowedValues": [ + "ISO8601 Duration" + ], "default": "", "description": "Used as rolling attribute with the callable CT's UMP and CLM uniquely. CLM's and UMP's will not be settled (MD not set) until the client uses his option to call the contract X_Day_Notice after Current Date. As long as MD or TD is not set, the client postpones his right to call to the future. The cycle is normally defined in number of business days." } diff --git a/actus-dictionary.json b/actus-dictionary.json index 3b7dffa..00cf3f8 100644 --- a/actus-dictionary.json +++ b/actus-dictionary.json @@ -21,8 +21,8 @@ "acronym": "CLM", "family": "Basic", "class": "Fixed Income", - "description": "Lonas that are rolled over as long as they are not called. Once called it has to be paid back after the stipulated notice period.", - "coverage": "Inerbank loans with call features.", + "description": "Loans that are rolled over as long as they are not called. Once called it has to be paid back after the stipulated notice period.", + "coverage": "Interbank loans with call features.", "status": "Released" }, "capFloor": { @@ -322,7 +322,9 @@ "name": "Amortization Date", "acronym": "AMD", "type": "Timestamp", - "allowedValues": ["ISO8601 Datetime"], + "allowedValues": [ + "ISO8601 Datetime" + ], "default": "", "description": "This Date is used to calculate the annuity amounts for ANN and ANX NGX CT's. Needs only to be set in case where the contract balloon at MD and MD is less than AD." }, @@ -332,7 +334,9 @@ "name": "Array Cycle Anchor Date Of Interest Payment", "acronym": "ARIPANXi", "type": "Timestamp[]", - "allowedValues": ["ISO8601 Datetime"], + "allowedValues": [ + "ISO8601 Datetime" + ], "default": "", "description": "Same like IPANX but as array" }, @@ -393,8 +397,20 @@ "acronym": "ARFIXVAR", "type": "Enum[]", "allowedValues": [ - "F", - "V" + { + "option": "0", + "identifier": "fixedRate", + "name": "Fixed Rate", + "acronym": "F", + "description": "Rate spread represents a fixed rate." + }, + { + "option": "1", + "identifier": "variableRate", + "name": "Variable Rate", + "acronym": "V", + "description": "Rate spread represents the spread on top of a reference rate." + } ], "default": "", "description": "For array-type rate reset schedules, this attributes defines the meaning of ARRATE." @@ -406,8 +422,20 @@ "acronym": "ARINCDEC", "type": "Enum[]", "allowedValues": [ - "INC", - "DEC" + { + "option": "0", + "identifier": "increase", + "name": "Increase", + "acronym": "INC", + "description": "Notional is increased in this period." + }, + { + "option": "1", + "identifier": "decrease", + "name": "Decrease", + "acronym": "DEC", + "description": "Notional is decreased in this period." + } ], "default": "", "description": "Indicates whether a certain PRNXT element in ARPRNX increases the principal (NT) or decreases it.\nApplies only for ANX, NAX, LAX Maturity CTs. For all other Maturity CTs the first principal payment is always in the opposite direction of all other (following) payments." @@ -430,7 +458,7 @@ "type": "Real[]", "allowedValues": [], "default": "", - "description": "For array-type rate reset schedules, this attribute represents either an interest rate (corresponding to IPNR) or a spread (corresponding to RRSP). Which case applies depends on the attribute ARFIXVAR: if ARFIXVAR=”FIX” then it represents the new IPNR and if ARFIXVAR=”VAR” then the applicable RRSP." + "description": "For array-type rate reset schedules, this attribute represents either an interest rate (corresponding to IPNR) or a spread (corresponding to RRSP). Which case applies depends on the attribute ARFIXVAR: if ARFIXVAR=FIX then it represents the new IPNR and if ARFIXVAR=VAR then the applicable RRSP." }, "businessDayConvention": { "identifier": "businessDayConvention", @@ -439,17 +467,71 @@ "acronym": "BDC", "type": "Enum", "allowedValues": [ - "NOS", - "SCF", - "SCMF", - "CSF", - "CSMF", - "SCP", - "SCMP", - "CSP", - "CSMP" - ], - "default": "SCF\n", + { + "option": "0", + "identifier": "noShift", + "name": "No Shift", + "acronym": "NOS", + "description": "No shift applied to non-business days." + }, + { + "option": "1", + "identifier": "shiftCalculateFollowing", + "name": "Shift-Calculate Following", + "acronym": "SCF", + "description": "Shift event dates first then calculate accruals etc. Strictly shift to the next following business day." + }, + { + "option": "2", + "identifier": "shiftCalculateModifiedFollowing", + "name": "Shift-Calculate Modified-Following", + "acronym": "SCMF", + "description": "Shift event dates first then calculate accruals etc. Shift to the next following business day if this falls in the same month. Shift to the most recent preceding business day otherwise." + }, + { + "option": "3", + "identifier": "calculateShiftFollowing", + "name": "Calculate-Shift Following", + "acronym": "CSF", + "description": "Calculate accruals etc. first then shift event dates. Strictly shift to the next following business day." + }, + { + "option": "4", + "identifier": "calculateShiftModifiedFollowing", + "name": "Calculate-Shift Modified-Following", + "acronym": "CSMF", + "description": "Calculate accruals etc. first then shift event dates. Shift to the next following business day if this falls in the same month. Shift to the most recent preceding business day otherwise." + }, + { + "option": "5", + "identifier": "shiftCalculatePreceding", + "name": "Shift-Calculate Preceding", + "acronym": "SCP", + "description": "Shift event dates first then calculate accruals etc. Strictly shift to the most recent preceding business day." + }, + { + "option": "6", + "identifier": "shiftCalculateModifiedPreceding", + "name": "Shift-Calculate Modified-Preceding", + "acronym": "SCMP", + "description": "Shift event dates first then calculate accruals etc. Shift to the most recent preceding business day if this falls in the same month. Shift to the next following business day otherwise." + }, + { + "option": "7", + "identifier": "calculateShiftPreceding", + "name": "Calculate-Shift Preceding", + "acronym": "CSP", + "description": "Calculate accruals etc. first then shift event dates. Strictly shift to the most recent preceding business day." + }, + { + "option": "8", + "identifier": "calculateShiftModifiedPreceding", + "name": "Calculate-Shift Modified-Preceding", + "acronym": "SCMP", + "description": "Calculate accruals etc. first then shift event dates. Shift to the most recent preceding business day if this falls in the same month. Shift to the next following business day otherwise." + } + ], + "default": "nos", "description": "BDC's are linked to a calendar. Calendars have working and non-working days. A BDC value other than N means that cash flows cannot fall on non-working days, they must be shifted to the next business day (following) or the previous on (preceding).\nThese two simple rules get refined twofold:\n- Following modified (preceding): Same like following (preceding), however if a cash flow gets shifted into a new month, then it is shifted to preceding (following) business day.\n- Shift/calculate (SC) and calculate/shift (CS). Accrual, principal, and possibly other calculations are affected by this choice. In the case of SC first the dates are shifted and after the shift cash flows are calculated. In the case of CS it is the other way round.\nAttention: Does not affect non-cyclical dates such as PRD, MD, TD, IPCED since they can be set to the correct date directly." }, "calendar": { @@ -459,12 +541,23 @@ "acronym": "CLDR", "type": "Enum", "allowedValues": [ - "NoCalendar", - "MondayToFriday", - "" + { + "option": "0", + "identifier": "noCalendar", + "name": "No Calendar", + "acronym": "NC", + "description": "No holidays defined" + }, + { + "option": "1", + "identifier": "mondayToFriday", + "name": "MondayToFriday", + "acronym": "MF", + "description": "Saturdays and Sundays are holidays" + } ], - "default": "NoCalendar", - "description": "Calendar defines the non-working days which affect the dates of contract events (CDE's) in combination with EOMC and BDC." + "default": "noCalendar", + "description": "Calendar defines the non-working days which affect the dates of contract events (CDE's) in combination with EOMC and BDC. Custom calendars can be added as additional enum options." }, "capitalizationEndDate": { "identifier": "capitalizationEndDate", @@ -472,7 +565,9 @@ "name": "Capitalization End Date", "acronym": "IPCED", "type": "Timestamp", - "allowedValues": ["ISO8601 Datetime"], + "allowedValues": [ + "ISO8601 Datetime" + ], "default": "", "description": "If IPCED is set, then interest is not paid or received but added to the balance (NT) until IPCED. If IPCED does not coincide with an IP cycle, one additional interest payment gets calculated at IPCED and capitalized. Thereafter normal interest payments occur." }, @@ -483,8 +578,20 @@ "acronym": "MRCLH", "type": "Enum", "allowedValues": [ - "Y", - "N" + { + "option": "0", + "identifier": "isClearingHouse", + "name": "Is Clearing House", + "acronym": "Y", + "description": "Contract creator is the clearing house." + }, + { + "option": "1", + "identifier": "isNotClearingHouse", + "name": "Is Not Clearing House", + "acronym": "N", + "description": "Contract creator is not the clearing house." + } ], "default": "", "description": "Indicates wheter CRID takes a clearing house function or not. In other word, whether CRID receive margins (MRIM, MRVM)." @@ -495,7 +602,9 @@ "name": "Contract Deal Date", "acronym": "CDD", "type": "Timestamp", - "allowedValues": ["ISO8601 Datetime"], + "allowedValues": [ + "ISO8601 Datetime" + ], "default": "", "description": "This date signifies the origination of the contract where an agreement between the customer and the bank has been settled. From this date on, the institution will have a (market) risk position for financial contracts. This is even the case when IED is in future." }, @@ -516,10 +625,48 @@ "acronym": "PRF", "type": "Enum", "allowedValues": [ - "PF", - "DL", - "DQ", - "DF" + { + "option": "0", + "identifier": "performant", + "name": "Performant", + "acronym": "PF", + "description": "Contract is performing according to terms and conditions." + }, + { + "option": "1", + "identifier": "delayed", + "name": "Delayed", + "acronym": "DL", + "description": "Contractual payment obligations are delayed according to the Grace Period." + }, + { + "option": "2", + "identifier": "delinquent", + "name": "Delinquent", + "acronym": "DQ", + "description": "Contractual payment obligations are delinquent according to the Delinquency Period." + }, + { + "option": "3", + "identifier": "default", + "name": "Default", + "acronym": "DF", + "description": "Contract defaulted on payment obligations according to Delinquency Period." + }, + { + "option": "4", + "identifier": "matured", + "name": "Matured", + "acronym": "MA", + "description": "Contract matured." + }, + { + "option": "5", + "identifier": "terminated", + "name": "Terminated", + "acronym": "TE", + "description": "Contract has been terminated." + } ], "default": "PF", "description": "Indicates the current contract performance status. Different states of the contract range from performing to default." @@ -531,18 +678,97 @@ "acronym": "CNTRL", "type": "Enum", "allowedValues": [ - "RPA", - "RPL", - "LG", - "ST", - "RFL", - "PFL", - "BUY", - "SEL", - "COL", - "CNO", - "GUA", - "OBL" + { + "option": "0", + "identifier": "realPositionAsset", + "name": "Real Position Asset", + "acronym": "RPA", + "description": "Contract creator takes the asset or lender side." + }, + { + "option": "1", + "identifier": "realPositionLiability", + "name": "Real Position Liability", + "acronym": "RPL", + "description": "Contract creator takes the liability or borrower side. " + }, + { + "option": "2", + "identifier": "receiveFirstLegl", + "name": "Receive First Leg", + "acronym": "RFL", + "description": "Contract creator receives the first leg. " + }, + { + "option": "3", + "identifier": "payFirstLeg", + "name": "Pay First Leg", + "acronym": "PFL", + "description": "Contract creator pays the first leg." + }, + { + "option": "4", + "identifier": "receiveFix", + "name": "Receive Fix", + "acronym": "RF", + "description": "Contract creator receives the fixed leg." + }, + { + "option": "5", + "identifier": "payFix", + "name": "Pay Fix", + "acronym": "PF", + "description": "Contract creator pays the fixed leg." + }, + { + "option": "6", + "identifier": "buyer", + "name": "Buyer", + "acronym": "BUY", + "description": "Contract creator holds the right to buy the underlying / exercise the option. " + }, + { + "option": "7", + "identifier": "seller", + "name": "Seller", + "acronym": "SEL", + "description": "Contract creator holds the obligation to sell the underlying / deliver the option. " + }, + { + "option": "8", + "identifier": "collateralPosition", + "name": "Collateral Position", + "acronym": "COL", + "description": "Contract represents a collateral to an underlying instrument" + }, + { + "option": "9", + "identifier": "closeOutNetting", + "name": "Close out Netting", + "acronym": "CNO", + "description": "Contract creator and counterparty agree on netting payment obligations of underlying instruments in case of default. " + }, + { + "option": "10", + "identifier": "underlying", + "name": "Underlying", + "acronym": "UDL", + "description": "Contract represents the underlying to a composed contract. Role of the underlying is derived from the parent. " + }, + { + "option": "11", + "identifier": "underlyingPlus", + "name": "Underlying Plus", + "acronym": "UDLP", + "description": "Contract represents the underlying to a composed contract. Role of the underlying is derived from the parent. When considered a standalone contract the underlying’s creator takes the asset side. " + }, + { + "option": "12", + "identifier": "underlyingMinus", + "name": "Underlying Minus", + "acronym": "UDLM", + "description": "Contract represents the underlying to a composed contract. Role of the underlying is derived from the parent. When considered a standalone contract the underlying’s creator takes the liability side." + } ], "default": "", "description": "CNTRL defines which position the CRID ( the creator of the contract record ) takes in a contract. For example, whether the contract is an asset or liability, a long or short position for the CRID. \nMost contracts are simple on or off balance sheet positions which are assets, liabilities. Such contracts can also play a secondary role as a collateral. \nThe attribute is highly significant since it determines the direction of all cash flows. The exact meaning is given with each CT in the ACTUS High Level Specification document." @@ -552,7 +778,7 @@ "group": "Contract identification", "name": "Contract Structure", "acronym": "CTS", - "type": "ContractStructure", + "type": "ContractReference[]", "allowedValues": [], "default": "", "description": "A structure identifying individual or sets of underlying contracts. E.g. for FUTUR, this structure identifies the single underlying contract, for SWAPS, the FirstLeg and SecondLeg are identified, or for CEG, CEC the structure identifies Covered and Covering contracts." @@ -564,24 +790,132 @@ "acronym": "CT", "type": "Enum", "allowedValues": [ - "PAM", - "ANN", - "NAM", - "LAM", - "LAX", - "CLM", - "UMP", - "CSH", - "STK", - "COM", - "SWAPS", - "SWPPV", - "FXOUT", - "CAPFL", - "FUTUR", - "OPTNS", - "CEG", - "CEC" + { + "option": "0", + "identifier": "principalAtMaturity", + "name": "Principal at Maturity", + "acronym": "PAM", + "description": "Lending agreements with full amortization at maturity." + }, + { + "option": "1", + "identifier": "annuity", + "name": "Annuity", + "acronym": "ANN", + "description": "Lending agreements with fixed periodic payments consisting of an interest and principal portion. The periodic payments are adjusted for variable rate instruments such that maturity remains fixed." + }, + { + "option": "2", + "identifier": "negativeAmortizer", + "name": "Negative Amortizer", + "acronym": "NAM", + "description": "Lending agreements with fixed periodic payments consisting of an interest and principal portion. Maturity changes for variable rate instruments. " + }, + { + "option": "3", + "identifier": "linearAmortizer", + "name": "Linear Amortizer", + "acronym": "LAM", + "description": "Lending agreements with fixed principal repayment amounts and variable interest payments." + }, + { + "option": "4", + "identifier": "exoticLinearAmortizer", + "name": "Exotic Linear Amortizer", + "acronym": "LAX", + "description": "Lending agreements with exotic repayment schedules." + }, + { + "option": "5", + "identifier": "callMoney", + "name": "Call Money", + "acronym": "CLM", + "description": "Lonas that are rolled over as long as they are not called. Once called it has to be paid back after the stipulated notice period." + }, + { + "option": "6", + "identifier": "undefinedMaturityProfile", + "name": "Undefined Maturity Profile", + "acronym": "UMP", + "description": "Interest paying cash accounts (current / savings / etc.). " + }, + { + "option": "7", + "identifier": "cash", + "name": "Cash", + "acronym": "CSH", + "description": "Represents cash holdings. " + }, + { + "option": "8", + "identifier": "stock", + "name": "Stock", + "acronym": "STK", + "description": "Represents stocks/shares/equity. " + }, + { + "option": "9", + "identifier": "commodity", + "name": "Commodity", + "acronym": "COM", + "description": "Represents commodities. " + }, + { + "option": "10", + "identifier": "swap", + "name": "Swap", + "acronym": "SWAPS", + "description": "An agreement of swapping two legs such as fixed against variable or currency 1 against currency 2 etc. " + }, + { + "option": "11", + "identifier": "plainVanillaSwap", + "name": "Plain Vanilla Swap", + "acronym": "SWPPV", + "description": "Plain vanilla interest rate swaps. " + }, + { + "option": "12", + "identifier": "foreignExchangeOutright", + "name": "Foreign Exchange Outright", + "acronym": "FXOUT", + "description": "An agreement of swapping two cash flows in different currencies at a future point in time. " + }, + { + "option": "13", + "identifier": "capFloor", + "name": "Cap and Floor", + "acronym": "CAPFL", + "description": "An agreement of paying the differential (cap or floor) of a reference rate versus a fixed rate. " + }, + { + "option": "14", + "identifier": "future", + "name": "Future", + "acronym": "FUTUR", + "description": "An agreement of exchanging an underlying instrument against a fixed price in the future. " + }, + { + "option": "15", + "identifier": "option", + "name": "Option", + "acronym": "OPTNS", + "description": "Different types of options on buying an underlying instrument at a fixed price in the future. " + }, + { + "option": "16", + "identifier": "creditEnhancementGuarantee", + "name": "Credit Enhancement Guarantee", + "acronym": "CEG", + "description": "A guarantee / letter of credit by a third party on the scheduled payment obligations of an underlying instrument " + }, + { + "option": "17", + "identifier": "creditEnhancementCollateral", + "name": "Credit Enhancement Collateral", + "acronym": "CEC", + "description": "A collateral securing the scheduled payment obligations of an underlying instrument" + } ], "default": "", "description": "The ContractType is the most important information. It defines the cash flow generating pattern of a contract. The ContractType information in combination with a given state of the risk factors will produce a deterministic sequence of cash flows which are the basis of any financial analysis." @@ -602,8 +936,10 @@ "name": "Coverage Of Credit Enhancement", "acronym": "CECV", "type": "Real", - "allowedValues": ["(0,1)"], - "default": "1.0", + "allowedValues": [ + "(0,1)" + ], + "default": "1", "description": "Defines which percentage of the exposure is covered" }, "creatorID": { @@ -612,7 +948,11 @@ "name": "Creator Identifier", "acronym": "CRID", "type": "Varchar", - "allowedValues": [], + "allowedValues": [ + [ + + ] + ], "default": "", "description": "This identifies the legal entity creating the contract record. The counterparty of the contract is tracked in CPID.\nCRID is ideally the official LEI which can be a firm, a government body, even a single person etc. However, this can also refer to a annonymous group in which case this information is not to be disclosed. CRID may also refer to a group taking a joint risk." }, @@ -623,10 +963,27 @@ "acronym": "CETC", "type": "Enum[]", "allowedValues": [ - "DL", - "DQ", - "DF", - "" + { + "option": "0", + "identifier": "delayed", + "name": "Delayed", + "acronym": "DL", + "description": "Delay of the underlying represents a credit event." + }, + { + "option": "1", + "identifier": "delinquent", + "name": "Delinquent", + "acronym": "DQ", + "description": "Delinquency of the underlying represents a credit event." + }, + { + "option": "2", + "identifier": "default", + "name": "Default", + "acronym": "DF", + "description": "Default of the underlying represents a credit event." + } ], "default": "DF", "description": "The type of credit events covered e.g. in credit enhancement or credit default swap contracts. Only the defined credit event types may trigger the protection." @@ -637,7 +994,9 @@ "name": "Credit Line Amount", "acronym": "CLA", "type": "Real", - "allowedValues": ["Positive"], + "allowedValues": [ + "Positive" + ], "default": "", "description": "If defined, gives the total amount that can be drawn from a credit line. The remaining amount that can still be drawn is given by CLA-NT.\nFor ANN, NAM, the credit line can only be drawn prior to PRANX-1PRCL.\nFor CRL, the remaining amount that can still be drawn is given by CLA-Sum(NT of attached contracts)." }, @@ -647,7 +1006,9 @@ "name": "Currency", "acronym": "CUR", "type": "Varchar", - "allowedValues": "ISO4217", + "allowedValues": [ + "ISO4217" + ], "default": "", "description": "The currency of the cash flows." }, @@ -657,7 +1018,9 @@ "name": "Currency 2", "acronym": "CUR2", "type": "Varchar", - "allowedValues": "ISO4217", + "allowedValues": [ + "ISO4217" + ], "default": "", "description": "The currency of the cash flows of the second leg (if not defined, main currency applies)\n" }, @@ -667,7 +1030,9 @@ "name": "Cycle Anchor Date Of Dividend", "acronym": "DVANX", "type": "Timestamp", - "allowedValues": ["ISO8601 Datetime"], + "allowedValues": [ + "ISO8601 Datetime" + ], "default": "", "description": "Date from which the dividend payment date schedule is calculated according to the cycle length. The first dividend payment event takes place on this anchor." }, @@ -677,7 +1042,9 @@ "name": "Cycle Anchor Date Of Fee", "acronym": "FEANX", "type": "Timestamp", - "allowedValues": ["ISO8601 Datetime"], + "allowedValues": [ + "ISO8601 Datetime" + ], "default": "", "description": "Date from which the fee payment date schedule is calculated according to the cycle length. The first fee payment event takes place on this anchor." }, @@ -687,7 +1054,9 @@ "name": "Cycle Anchor Date Of Interest Calculation Base", "acronym": "IPCBANX", "type": "Timestamp", - "allowedValues": ["ISO8601 Datetime"], + "allowedValues": [ + "ISO8601 Datetime" + ], "default": "", "description": "Date from which the interest calculation base date schedule is calculated according to the cycle length. The first interest calculation base event takes place on this anchor." }, @@ -697,7 +1066,9 @@ "name": "Cycle Anchor Date Of Interest Payment", "acronym": "IPANX", "type": "Timestamp", - "allowedValues": ["ISO8601 Datetime"], + "allowedValues": [ + "ISO8601 Datetime" + ], "default": "", "description": "Date from which the interest payment date schedule is calculated according to the cycle length. The first interest payment event takes place on this anchor." }, @@ -707,7 +1078,9 @@ "name": "Cycle Anchor Date Of Margining", "acronym": "MRANX", "type": "Timestamp", - "allowedValues": ["ISO8601 Datetime"], + "allowedValues": [ + "ISO8601 Datetime" + ], "default": "", "description": "Date from which the margin call date schedule is calculated according to the cycle length. The first margin call event takes place on this anchor." }, @@ -717,7 +1090,9 @@ "name": "Cycle Anchor Date Of Optionality", "acronym": "OPANX", "type": "Timestamp", - "allowedValues": ["ISO8601 Datetime"], + "allowedValues": [ + "ISO8601 Datetime" + ], "default": "", "description": "Used for Basic Maturities (such as PAM, RGM, ANN, NGM and their Step-up versions) and American and Bermudan style options. \n- Basic Maturities: Within the group of these Maturities, it indicates the possibility of prepayments. Prepayment features are controlled by Behavior. \n- American and Bermudan style Options: Begin of exercise period." }, @@ -727,7 +1102,9 @@ "name": "Cycle Anchor Date Of Principal Redemption", "acronym": "PRANX", "type": "Timestamp", - "allowedValues": ["ISO8601 Datetime"], + "allowedValues": [ + "ISO8601 Datetime" + ], "default": "", "description": "Date from which the principal payment date schedule is calculated according to the cycle length. The first principal payment event takes place on this anchor." }, @@ -737,7 +1114,9 @@ "name": "Cycle Anchor Date Of Rate Reset", "acronym": "RRANX", "type": "Timestamp", - "allowedValues": ["ISO8601 Datetime"], + "allowedValues": [ + "ISO8601 Datetime" + ], "default": "", "description": "Date from which the rate reset date schedule is calculated according to the cycle length. The first rate reset event takes place on this anchor." }, @@ -747,7 +1126,9 @@ "name": "Cycle Anchor Date Of Scaling Index", "acronym": "SCANX", "type": "Timestamp", - "allowedValues": ["ISO8601 Datetime"], + "allowedValues": [ + "ISO8601 Datetime" + ], "default": "", "description": "Date from which the scaling date schedule is calculated according to the cycle length. The first scaling event takes place on this anchor." }, @@ -756,8 +1137,10 @@ "group": "Dividend", "name": "Cycle Of Dividend", "acronym": "DVCL", - "type": "Period", - "allowedValues": [], + "type": "Cycle", + "allowedValues": [ + "[ISO8601 Duration]L[s={0,1}]" + ], "default": "", "description": "Defines in combination with DVANX the payment points of dividends. The dividend payment schedule will start at DVANX and end at MaximumProjectionPeriod (cf. sheet Modeling Parameters)." }, @@ -767,7 +1150,9 @@ "name": "Cycle Of Fee", "acronym": "FECL", "type": "Cycle", - "allowedValues": [], + "allowedValues": [ + "[ISO8601 Duration]L[s={0,1}]" + ], "default": "", "description": "Defines in combination with FEANX the payment points of fees" }, @@ -777,7 +1162,9 @@ "name": "Cycle Of Interest Calculation Base", "acronym": "IPCBCL", "type": "Cycle", - "allowedValues": [], + "allowedValues": [ + "[ISO8601 Duration]L[s={0,1}]" + ], "default": "", "description": "Concerning the format see PRCL. \nDefines the subsequent adjustment points to NT of the interest payment calculation base." }, @@ -787,7 +1174,9 @@ "name": "Cycle Of Interest Payment", "acronym": "IPCL", "type": "Cycle", - "allowedValues": [], + "allowedValues": [ + "[ISO8601 Duration]L[s={0,1}]" + ], "default": "", "description": "Cycle according to which the interest payment date schedule will be calculated.\nIn case IPCL is not set, then there will only be an interest payment event at MD (and possibly at IPANX if set).\nThe interval will be adjusted yet by EOMC and BDC." }, @@ -797,7 +1186,9 @@ "name": "Cycle Of Margining", "acronym": "MRCL", "type": "Cycle", - "allowedValues": [], + "allowedValues": [ + "[ISO8601 Duration]L[s={0,1}]" + ], "default": "", "description": "Defines together with MRANX the points where margins can be called." }, @@ -807,9 +1198,11 @@ "name": "Cycle Of Optionality", "acronym": "OPCL", "type": "Cycle", - "allowedValues": [], + "allowedValues": [ + "[ISO8601 Duration]L[s={0,1}]" + ], "default": "", - "description": "Cycle according to which the option execution date schedule will be calculated.\nOPCL can be NULL for American Options or Prepayment Optionality in which case the optionality period starts at OPANX and ends at OPXED (for american options) or MD (in case of prepayment optionality).\nThe interval will be adjusted yet by EOMC and BDC." + "description": "Cycle according to which the option exercise date schedule will be calculated.\nOPCL can be NULL for American Options or Prepayment Optionality in which case the optionality period starts at OPANX and ends at OPXED (for american options) or MD (in case of prepayment optionality).\nThe interval will be adjusted yet by EOMC and BDC." }, "cycleOfPrincipalRedemption": { "identifier": "cycleOfPrincipalRedemption", @@ -817,7 +1210,9 @@ "name": "Cycle Of Principal Redemption", "acronym": "PRCL", "type": "Cycle", - "allowedValues": [], + "allowedValues": [ + "[ISO8601 Duration]L[s={0,1}]" + ], "default": "", "description": "Cycle according to which the interest payment date schedule will be calculated.\nIn case PRCL is not set, then there will only be one principal payment event at MD (and possibly at PRANX if set).\nThe interval will be adjusted yet by EOMC and BDC." }, @@ -827,7 +1222,9 @@ "name": "Cycle Of Rate Reset", "acronym": "RRCL", "type": "Cycle", - "allowedValues": [], + "allowedValues": [ + "[ISO8601 Duration]L[s={0,1}]" + ], "default": "", "description": "Cycle according to which the rate reset date schedule will be calculated.\nIn case RRCL is not set, then there will only be one rate reset event at RRANX given RRANX if set.\nThe interval will be adjusted yet by EOMC and BDC." }, @@ -837,7 +1234,9 @@ "name": "Cycle Of Scaling Index", "acronym": "SCCL", "type": "Cycle", - "allowedValues": [], + "allowedValues": [ + "[ISO8601 Duration]L[s={0,1}]" + ], "default": "", "description": "Cycle according to which the scaling date schedule will be calculated.\nIn case SCCL is not set, then there will only be one scaling event at SCANX given SCANX is set.\nThe interval will be adjusted yet by EOMC and BDC." }, @@ -848,8 +1247,20 @@ "acronym": "IPPNT", "type": "Enum", "allowedValues": [ - "B", - "E" + { + "option": "0", + "identifier": "beginning", + "name": "Beginning", + "acronym": "B", + "description": "Interest is paid upfront of the interest period." + }, + { + "option": "1", + "identifier": "end", + "name": "End", + "acronym": "E", + "description": "Interest is paid at the end of the interest period." + } ], "default": "E", "description": "Usually, interest is paid at the end of each IPCL which corresponds to a IPPNT value of E which is also the default. If interest payment occurs at the beginning of the cycle, the value is B." @@ -861,8 +1272,20 @@ "acronym": "RRPNT", "type": "Enum", "allowedValues": [ - "B", - "E" + { + "option": "0", + "identifier": "beginning", + "name": "Beginning", + "acronym": "B", + "description": "The new rate is applied at the beginning of the reset period." + }, + { + "option": "1", + "identifier": "end", + "name": "End", + "acronym": "E", + "description": "The new rate is applied at the end of the reset period." + } ], "default": "B", "description": "Normally rates get reset at the beginning of any resetting cycles. There are contracts where the rate is not set at the beginning but at the end of the cycle and then applied to the previous cycle (post-fixing); in other words the rate applies before it is fixed. Hence, the new rate is not known during the entire cycle where it applies. Therefore, the rate will be applied backwards at the end of the cycle. This happens through a correction of interest accrued." @@ -874,13 +1297,48 @@ "acronym": "IPDC", "type": "Enum", "allowedValues": [ - "A/AISDA", - "A/360", - "A/365", - "30E/360ISDA", - "30E/360", - "B/252", - "" + { + "option": "0", + "identifier": "actualActual", + "name": "Actual/Actual", + "acronym": "AA", + "description": "Year fractions accrue on the basis of the actual number of days per month and per year in the respective period." + }, + { + "option": "1", + "identifier": "actualThreeSixty", + "name": "Actual Three Sixty", + "acronym": "A360", + "description": "Year fractions accrue on the basis of the actual number of days per month and 360 days per year in the respective period." + }, + { + "option": "2", + "identifier": "actualThreeSixtyFive", + "name": "Actual Three Sixty Five", + "acronym": "A365", + "description": "Year fractions accrue on the basis of the actual number of days per month and 365 days per year in the respective period." + }, + { + "option": "3", + "identifier": "thirtyEThreeSixtyISDA", + "name": "Thirty E Three Sixty ISDA", + "acronym": "30E360ISDA", + "description": "Year fractions accrue on the basis of 30 days per month and 360 days per year in the respective period (ISDA method)." + }, + { + "option": "4", + "identifier": "thirtyEThreeSixty", + "name": "Thirty E Three Sixty", + "acronym": "30E360", + "description": "Year fractions accrue on the basis of 30 days per month and 360 days per year in the respective period." + }, + { + "option": "5", + "identifier": "twentyEightEThreeThirtySix", + "name": "Twenty Eight E Three Thirty Six", + "acronym": "28E336", + "description": "Year fractions accrue on the basis of 28 days per month and 336 days per year in the respective period." + } ], "default": "", "description": "Method defining how days are counted between two dates. This finally defines the year fraction in accrual calculations." @@ -891,8 +1349,10 @@ "name": "Delinquency Period", "acronym": "DQP", "type": "Period", - "allowedValues": [], - "default": "0D", + "allowedValues": [ + "ISO8601 Duration" + ], + "default": "P0D", "description": "If real payment happens after scheduled payment date plus DLP, then the counterparty is in technical default. This means that the creditor legally has the right to declare default of the debtor." }, "delinquencyRate": { @@ -901,8 +1361,10 @@ "name": "Delinquency Rate", "acronym": "DQR", "type": "Real", - "allowedValues": ["Positive"], - "default": "0.0", + "allowedValues": [ + "Positive" + ], + "default": "0", "description": "Rate at which Delinquency Payments accrue on NT (in addition to the interest rate) during the DelinquencyPeriod" }, "deliverySettlement": { @@ -912,11 +1374,23 @@ "acronym": "DS", "type": "Enum", "allowedValues": [ - "S", - "D" + { + "option": "0", + "identifier": "cashSettlement", + "name": "Cash Settlement", + "acronym": "S", + "description": "The market value of the underlying is settled." + }, + { + "option": "1", + "identifier": "physicalSettlement", + "name": "Physical Settlement", + "acronym": "D", + "description": "The underlying is delivered physically." + } ], "default": "D", - "description": "Indicates whether the contract is settled in cash or physical delivery.\nIn case of “physical delivery”, the underlying contract and associated (future) cash flows are effectively exchanged. In case of “cash” settlement, the current market value of the underlying contract determines the cash flow exchanged." + "description": "Indicates whether the contract is settled in cash or physical delivery.\nIn case of physical delivery, the underlying contract and associated (future) cash flows are effectively exchanged. In case of cash settlement, the current market value of the underlying contract determines the cash flow exchanged." }, "endOfMonthConvention": { "identifier": "endOfMonthConvention", @@ -925,10 +1399,22 @@ "acronym": "EOMC", "type": "Enum", "allowedValues": [ - "EOM", - "SD" + { + "option": "0", + "identifier": "sameDay", + "name": "Same Day", + "acronym": "SD", + "description": "Schedule times always fall on the schedule anchor date day of the month." + }, + { + "option": "1", + "identifier": "endOfMonth", + "name": "End of Month", + "acronym": "EOM", + "description": "Schedule times fall on the end of every month if the anchor date represents the last day of the respective month." + } ], - "default": "SD", + "default": "sd", "description": "When computing schedules a special problem arises if an anchor date is at the end of a month and a cycle of monthly or quarterly is applied (yearly in the case of leap years only). How do we have to interpret an anchor date April 30 plus 1M cycles? In case where EOM is selected, it will jump to the 31st of May, then June 30, July 31 and so on. If SM is selected, it will jump to the 30st always with of course an exception in February. \nThis logic applies for all months having 30 or less days and an anchor date at the last day. Month with 31 days will at any rate jump to the last of the month if anchor date is on the last day." }, "exDividendDate": { @@ -937,9 +1423,11 @@ "name": "Ex Dividend Date", "acronym": "DVEX", "type": "Timestamp", - "allowedValues": ["ISO8601 Datetime"], + "allowedValues": [ + "ISO8601 Datetime" + ], "default": "", - "description": "In case contract is traded between DVEX and next DV payment date (i.e. PRD>DVEX & PRDDVEX & PRD" + { + "option": "0", + "identifier": "barrel", + "name": "Barrel", + "acronym": "BRL", + "description": "Physical unit of the contract is Barrels." + }, + { + "option": "1", + "identifier": "bushel", + "name": "Bushel", + "acronym": "BSH", + "description": "Physical unit of the contract is Bushel." + }, + { + "option": "2", + "identifier": "gallon", + "name": "Gallon", + "acronym": "GLN", + "description": "Physical unit of the contract is Gallons." + }, + { + "option": "3", + "identifier": "currencyUnit", + "name": "Currency Unit", + "acronym": "CUU", + "description": "Physical unit of the contract is Currency Units." + }, + { + "option": "4", + "identifier": "megaWattHours", + "name": "Mega Watt Hours", + "acronym": "MWH", + "description": "Physical unit of the contract is Mega Watt Hours." + }, + { + "option": "5", + "identifier": "pounds", + "name": "Pounds", + "acronym": "PND", + "description": "Physical unit of the contract is Pounds." + }, + { + "option": "6", + "identifier": "shortTons", + "name": "Short Tons", + "acronym": "STN", + "description": "Physical unit of the contract is Short Tons." + }, + { + "option": "7", + "identifier": "tons", + "name": "Tons", + "acronym": "TON", + "description": "Physical unit of the contract is Tons." + }, + { + "option": "8", + "identifier": "troyOunce", + "name": "Troy Ounce", + "acronym": "TRO", + "description": "Physical unit of the contract is Troy Ounces." + } ], "default": "", - "description": "The physical unit of the contract. Example: “Barrels” for an Oil COM CT." + "description": "The physical unit of the contract. Example: Barrels for an Oil COM CT." }, "variationMargin": { "identifier": "variationMargin", @@ -1562,7 +2323,9 @@ "name": "Variation Margin", "acronym": "MRVM", "type": "Real", - "allowedValues": ["Positive"], + "allowedValues": [ + "Positive" + ], "default": "", "description": "MRVM reflects the accrued but not yet paid margin as per SD. \nOpen traded positions are revalued by the exchange at the end of every trading day using mark-to-market valuation. Often clearing members do not credit or debit their clients daily with MRVM, but rather use a Maintenance Margin. If the balance falls outside MRMML (and MRMMU), then capital must be added (is refunded) to reach the original margin amount MRIM. We can also say that MVO+MRVM is equal to the reference value as per last margin update." }, @@ -1572,7 +2335,9 @@ "name": "X Day Notice", "acronym": "XDN", "type": "Period", - "allowedValues": [], + "allowedValues": [ + "ISO8601 Duration" + ], "default": "", "description": "Used as rolling attribute with the callable CT's UMP and CLM uniquely. CLM's and UMP's will not be settled (MD not set) until the client uses his option to call the contract X_Day_Notice after Current Date. As long as MD or TD is not set, the client postpones his right to call to the future. The cycle is normally defined in number of business days." } @@ -1585,7 +2350,7 @@ "endOfMonthConvention": "x", "contractType": "NN", "statusDate": "NN(,,1)", - "contractRole": "NN(,,1)", + "contractRole": "NN", "creatorID": "NN(,,1)", "contractID": "NN", "marketObjectCode": "x", @@ -1647,7 +2412,7 @@ "lifeFloor": "x(9,1,)", "periodCap": "x(9,1,)", "periodFloor": "x(9,1,)", - "fixingDays": "x(9,1,)", + "fixingPeriod": "x(9,1,)", "nextResetRate": "x(9,1,)", "rateMultiplier": "x(9,1,)", "settlementCurrency": "x" @@ -1659,7 +2424,7 @@ "endOfMonthConvention": "x", "contractType": "NN", "statusDate": "NN(,,1)", - "contractRole": "NN(,,1)", + "contractRole": "NN", "creatorID": "NN(,,1)", "contractID": "NN", "counterpartyID": "NN(,,2)", @@ -1690,7 +2455,7 @@ "cycleOfRateReset": "x(9,0,)", "rateSpread": "NN(9,1,)", "marketObjectCodeRateReset": "NN(9,1,)", - "fixingDays": "x(9,1,)", + "fixingPeriod": "x(9,1,)", "nextResetRate": "x(9,1,)", "rateMultiplier": "x(9,1,)", "settlementCurrency": "x" @@ -1750,13 +2515,13 @@ "contractDealDate": "NN", "exerciseDate": "x(7,0,)", "exerciseAmount": "NN(7,1,)\n", - "settlementDays": "x" + "settlementPeriod": "x" }, "commodity": { "contract": "commodity", "contractType": "NN", "statusDate": "NN(,,1)", - "contractRole": "NN(,,1)", + "contractRole": "NN", "creatorID": "NN(,,1)", "contractID": "NN", "marketObjectCode": "x", @@ -1778,7 +2543,7 @@ "endOfMonthConvention": "x", "contractType": "NN", "statusDate": "NN(,,1)", - "contractRole": "NN(,,1)", + "contractRole": "NN", "creatorID": "NN(,,1)", "contractID": "NN", "marketObjectCode": "x", @@ -1842,7 +2607,7 @@ "periodCap": "x(9,1,)", "periodFloor": "x(9,1,)", "cyclePointOfRateReset": "x(9,1,)1", - "fixingDays": "x(9,1,)", + "fixingPeriod": "x(9,1,)", "nextResetRate": "x(9,1,)", "rateMultiplier": "x(9,1,)", "settlementCurrency": "x" @@ -1878,7 +2643,7 @@ "marketValueObserved": "x", "exerciseDate": "x(7,0,)", "exerciseAmount": "NN(7,1,)\n", - "settlementDays": "x", + "settlementPeriod": "x", "deliverySettlement": "x(,,1)", "settlementCurrency": "x" }, @@ -1918,7 +2683,7 @@ "marketValueObserved": "x", "exerciseDate": "x(7,0,)", "exerciseAmount": "NN(7,1,)\n", - "settlementDays": "x", + "settlementPeriod": "x", "deliverySettlement": "x(,,1)", "futuresPrice": "NN", "settlementCurrency": "x" @@ -1958,7 +2723,7 @@ "priceAtTerminationDate": "NN(6,1,1)", "exerciseDate": "x(7,0,)", "exerciseAmount": "NN(7,1,)\n", - "settlementDays": "x", + "settlementPeriod": "x", "settlementCurrency": "x" }, "linearAmortizer": { @@ -1968,7 +2733,7 @@ "endOfMonthConvention": "x", "contractType": "NN", "statusDate": "NN(,,1)", - "contractRole": "NN(,,1)", + "contractRole": "NN", "creatorID": "NN(,,1)", "contractID": "NN", "marketObjectCode": "x", @@ -2031,7 +2796,7 @@ "periodCap": "x(9,1,)", "periodFloor": "x(9,1,)", "cyclePointOfRateReset": "x(9,1,)1", - "fixingDays": "x(9,1,)", + "fixingPeriod": "x(9,1,)", "nextResetRate": "x(9,1,)", "rateMultiplier": "x(9,1,)", "settlementCurrency": "x" @@ -2043,7 +2808,7 @@ "endOfMonthConvention": "x", "contractType": "NN", "statusDate": "NN(,,1)", - "contractRole": "NN(,,1)", + "contractRole": "NN", "creatorID": "NN(,,1)", "contractID": "NN", "marketObjectCode": "x", @@ -2104,7 +2869,7 @@ "lifeFloor": "x(9,1,)", "periodCap": "x(9,1,)", "periodFloor": "x(9,1,)", - "fixingDays": "x(9,1,)", + "fixingPeriod": "x(9,1,)", "nextResetRate": "x(9,1,)", "rateMultiplier": "x(9,1,)", "settlementCurrency": "x" @@ -2136,7 +2901,7 @@ "terminationDate": "x(6,0,1)", "priceAtTerminationDate": "NN(6,1,1)", "marketValueObserved": "x", - "optionExecutionType": "NN", + "optionExerciseType": "NN", "optionExerciseEndDate": "NN", "optionStrike1": "NN", "optionStrike2": "x", @@ -2145,7 +2910,7 @@ "cycleOfOptionality": "x", "exerciseDate": "x(7,0,)", "exerciseAmount": "NN(7,1,)\n", - "settlementDays": "x", + "settlementPeriod": "x", "deliverySettlement": "x(,,1)", "settlementCurrency": "x" }, @@ -2187,7 +2952,7 @@ "rateSpread": "NN", "marketObjectCodeRateReset": "NN", "cyclePointOfRateReset": "x(9,1,)1", - "fixingDays": "x(9,1,)", + "fixingPeriod": "x(9,1,)", "nextResetRate": "x(9,1,)", "rateMultiplier": "x(9,1,)", "deliverySettlement": "x(,,1)", @@ -2200,7 +2965,7 @@ "endOfMonthConvention": "x", "contractType": "NN", "statusDate": "NN(,,1)", - "contractRole": "NN(,,1)", + "contractRole": "NN", "creatorID": "NN(,,1)", "contractID": "NN", "marketObjectCode": "x", @@ -2256,7 +3021,7 @@ "periodCap": "x(9,1,)", "periodFloor": "x(9,1,)", "cyclePointOfRateReset": "x(9,1,)1", - "fixingDays": "x(9,1,)", + "fixingPeriod": "x(9,1,)", "nextResetRate": "x(9,1,)", "rateMultiplier": "x(9,1,)", "settlementCurrency": "x" @@ -2268,7 +3033,7 @@ "endOfMonthConvention": "x", "contractType": "NN", "statusDate": "NN(,,1)", - "contractRole": "NN(,,1)", + "contractRole": "NN", "creatorID": "NN(,,1)", "contractID": "NN", "marketObjectCode": "x", @@ -2360,162 +3125,6 @@ "settlementCurrency": "x" } }, - "eventType": { - "analysis": { - "identifier": "analysis", - "name": "Analysis", - "acronym": "AD", - "description": "Analysis of contract. Evaluates all contract states", - "sequence": 22 - }, - "creditEvent": { - "identifier": "creditEvent", - "name": "Credit Event", - "acronym": "CE", - "description": "Credit event of counterparty to a contract", - "sequence": 10 - }, - "dividendPayment": { - "identifier": "dividendPayment", - "name": "Dividend Payment", - "acronym": "DV", - "description": "Scheduled dividend payment", - "sequence": 13 - }, - "execution": { - "identifier": "execution", - "name": "Execution", - "acronym": "XD", - "description": "Execution of a contractual feature such as optionality", - "sequence": 20 - }, - "feePayment": { - "identifier": "feePayment", - "name": "Fee Payment", - "acronym": "FP", - "description": "Scheduled fee payment", - "sequence": 2 - }, - "initialExchange": { - "identifier": "initialExchange", - "name": "Initial Exchange", - "acronym": "IED", - "description": "Scheduled date of first principal event, start of accrual calculation", - "sequence": 1 - }, - "interestCalculationBaseFixing": { - "identifier": "interestCalculationBaseFixing", - "name": "Interest Calculation Base Fixing", - "acronym": "IPCB", - "description": "Scheduled re-fixing of the interest calculation base", - "sequence": 18 - }, - "interestCapitalization": { - "identifier": "interestCapitalization", - "name": "Interest Capitalization", - "acronym": "IPCI", - "description": "Scheduled interest capitalization. Interest is capitalized instead of paid out", - "sequence": 9 - }, - "interestPayment": { - "identifier": "interestPayment", - "name": "Interest Payment", - "acronym": "IP", - "description": "Scheduled interest payment", - "sequence": 8 - }, - "marginCallPayment": { - "identifier": "marginCallPayment", - "name": "Margin Call Payment", - "acronym": "MR", - "description": "Scheduled margin call payment", - "sequence": 15 - }, - "maturity": { - "identifier": "maturity", - "name": "Maturity", - "acronym": "MD", - "description": "Scheduled maturity of a contract", - "sequence": 19 - }, - "penaltyPayment": { - "identifier": "penaltyPayment", - "name": "Penalty Payment", - "acronym": "PY", - "description": "Payment of a penalty", - "sequence": 6 - }, - "principal Drawing": { - "identifier": "principal Drawing", - "name": "Principal Drawing", - "acronym": "PD", - "description": "Drawing of principal amount\n", - "sequence": 4 - }, - "principalPaymentAmountFixing": { - "identifier": "principalPaymentAmountFixing", - "name": "Principal Payment Amount Fixing", - "acronym": "PRF", - "description": "Scheduled re-fixing of principal payment amount", - "sequence": 5 - }, - "principalPrepayment": { - "identifier": "principalPrepayment", - "name": "Principal Prepayment", - "acronym": "PP", - "description": "Unscheduled early repayment of principal", - "sequence": 7 - }, - "principalRedemption": { - "identifier": "principalRedemption", - "name": "Principal Redemption", - "acronym": "PR", - "description": "Scheduled principal redemption payment", - "sequence": 3 - }, - "purchase": { - "identifier": "purchase", - "name": "Purchase", - "acronym": "PRD", - "description": "Purchase of a contract", - "sequence": 14 - }, - "rateResetFixed": { - "identifier": "rateResetFixed", - "name": "Rate Reset Fixed", - "acronym": "RRF", - "description": "Scheduled variable rate fixing with new rate already fixed", - "sequence": 11 - }, - "rateResetVariable": { - "identifier": "rateResetVariable", - "name": "Rate Reset Variable", - "acronym": "RR", - "description": "Scheduled variable rate fixing with new rate fixed at event time", - "sequence": 12 - }, - "scalingIndexRevision": { - "identifier": "scalingIndexRevision", - "name": "Scaling Index Revision", - "acronym": "SC", - "description": "Scheduled re-fixing of a scaling index", - "sequence": 17 - }, - "settlement": { - "identifier": "settlement", - "name": "Settlement", - "acronym": "STD", - "description": "Settlement of contractual claim", - "sequence": 21 - }, - "termination": { - "identifier": "termination", - "name": "Termination", - "acronym": "TD", - "description": "Termination of a contract", - "sequence": 16 - } - }, "states": { "accruedInterest": { "identifier": "accruedInterest", @@ -2540,10 +3149,48 @@ "description": "Indicates the current Contract Performance status. Different states of the contract range from performing to default.", "type": "Enum", "allowedValues": [ - "PF", - "DL", - "DQ", - "DF" + { + "option": "0", + "identifier": "performant", + "name": "Performant", + "acronym": "PF", + "description": "Contract is performing according to terms and conditions." + }, + { + "option": "1", + "identifier": "delayed", + "name": "Delayed", + "acronym": "DL", + "description": "Contractual payment obligations are delayed according to the Grace Period." + }, + { + "option": "2", + "identifier": "delinquent", + "name": "Delinquent", + "acronym": "DQ", + "description": "Contractual payment obligations are delinquent according to the Delinquency Period." + }, + { + "option": "3", + "identifier": "default", + "name": "Default", + "acronym": "DF", + "description": "Contract defaulted on payment obligations according to Delinquency Period." + }, + { + "option": "4", + "identifier": "matured", + "name": "Matured", + "acronym": "MA", + "description": "Contract matured." + }, + { + "option": "5", + "identifier": "terminated", + "name": "Terminated", + "acronym": "TE", + "description": "Contract has been terminated." + } ] }, "exerciseAmount": { @@ -2560,7 +3207,9 @@ "acronym": "XD", "description": "The timestamp at which a contingent event/obligation is exercised", "type": "Timestamp", - "allowedValues": ["ISO8601 Datetime"] + "allowedValues": [ + "ISO8601 Datetime" + ] }, "feeAccrued": { "identifier": "feeAccrued", @@ -2570,10 +3219,10 @@ "type": "Real", "allowedValues": [] }, - "interestCalculationBase": { - "identifier": "interestCalculationBase", - "name": "Interest Calculation Base", - "acronym": "ICB", + "interestCalculationBaseAmount": { + "identifier": "interestCalculationBaseAmount", + "name": "Interest Calculation Base Amount", + "acronym": "ICBA", "description": "The basis at which interest is being accrued. Potentially different from NVL.", "type": "Real", "allowedValues": [] @@ -2586,6 +3235,16 @@ "type": "Real", "allowedValues": [] }, + "maturityDate": { + "identifier": "maturityDate", + "name": "Maturity Date", + "acronym": "MD", + "description": "The timestamp as per which the contract matures according to the initial terms or as per unscheduled events", + "type": "Timestamp", + "allowedValues": [ + "ISO8601 Datetime" + ] + }, "nextPrincipalRedemptionPayment": { "identifier": "nextPrincipalRedemptionPayment", "name": "Next Principal Redemption Payment", @@ -2614,9 +3273,11 @@ "identifier": "nonPerformingDate", "name": "Non Performing Date", "acronym": "NPD", - "description": "The date of the (uncovered) payment event responsible for the current value of the \"Contract Performance\" state variable.", + "description": "The date of the (uncovered) payment event responsible for the current value of the Contract Performance state variable.", "type": "Timestamp", - "allowedValues": ["ISO8601 Datetime"] + "allowedValues": [ + "ISO8601 Datetime" + ] }, "notionalPrincipal": { "identifier": "notionalPrincipal", @@ -2648,75 +3309,350 @@ "acronym": "SD", "description": "The timestamp as per which the state is captured at any point in time", "type": "Timestamp", - "allowedValues": ["ISO8601 Datetime"] + "allowedValues": [ + "ISO8601 Datetime" + ] + }, + "terminationDate": { + "identifier": "terminationDate", + "name": "Termination Date", + "acronym": "TD", + "description": "The timestamp of unscheduled termination of a contract", + "type": "Timestamp", + "allowedValues": [ + "ISO8601 Datetime" + ] } }, - "contractStructure": { - "contractReference": [ - { - "object": "", - "type": "", - "role": "" - }, - { - "object": "", - "type": "", - "role": "" - } - ], - "type": { - "contract": { - "identifier": "contract", - "name": "Contract", - "description": "The reference represents an actual contract" - }, - "contractIdentifier": { - "identifier": "contractIdentifier", - "name": "Contract Identifier", - "description": "The reference represents an identifier of an actual contract" - }, - "marketObjectIdentifier": { - "identifier": "marketObjectIdentifier", - "name": "Market Object Identifier", - "description": "The reference represents the identifier of a market object" - }, - "legalEntityIdentifier": { - "identifier": "legalEntityIdentifier", - "name": "Legal Entity Identifier", - "description": "The reference represents the identifier of a legal entity" - }, - "contractStructure": { - "identifier": "contractStructure", - "name": "Contract Structure", - "description": "The reference represents a ContractStructure" - } + "event": { + "currency": { + "identifier": "currency", + "name": "Currency", + "acronym": "CUR", + "description": "The currency in which the event payoff is scheduled", + "type": "Varchar", + "allowedValues": [ + "ISO4217" + ] + }, + "eventTime": { + "identifier": "eventTime", + "name": "Event Time", + "acronym": "TEV", + "description": "The timestamp of the event", + "type": "Timestamp", + "allowedValues": [ + "ISO8601 Datetime" + ] + }, + "eventType": { + "identifier": "eventType", + "name": "Event Type", + "acronym": "EVT", + "description": "The type of the event. Different types have their own business logic in terms of payoff and state transition functions", + "type": "Enum", + "allowedValues": [ + { + "option": "0", + "identifier": "monitoring", + "name": "Monitoring", + "acronym": "AD", + "description": "Monitoring of contract. Evaluates all contract states", + "sequence": "22" + }, + { + "option": "1", + "identifier": "initialExchange", + "name": "Initial Exchange", + "acronym": "IED", + "description": "Scheduled date of initial exchange of e.g. principal value in fixed income products", + "sequence": "1" + }, + { + "option": "2", + "identifier": "feePayment", + "name": "Fee Payment", + "acronym": "FP", + "description": "Scheduled fee payments", + "sequence": "2" + }, + { + "option": "3", + "identifier": "principalRedemption", + "name": "Principal Redemption", + "acronym": "PR", + "description": "Scheduled principal redemption payment", + "sequence": "3" + }, + { + "option": "4", + "identifier": "principalDrawing", + "name": "Principal Drawing", + "acronym": "PD", + "description": "Drawing of principal amount e.g. in a credit line", + "sequence": "4" + }, + { + "option": "5", + "identifier": "principalPaymentAmountFixing", + "name": "Principal Payment Amount Fixing", + "acronym": "PRF", + "description": "Scheduled fixing of principal payment amount", + "sequence": "5" + }, + { + "option": "6", + "identifier": "penalytPayment", + "name": "Penalty Payment", + "acronym": "PY", + "description": "Scheduled payment of a penalty", + "sequence": "6" + }, + { + "option": "7", + "identifier": "principalPrepayment", + "name": "Principal Prepayment", + "acronym": "PP", + "description": "Unscheduled early repayment of principal", + "sequence": "7" + }, + { + "option": "8", + "identifier": "interestPayment", + "name": "Interest Payment", + "acronym": "IP", + "description": "Scheduled interest payment", + "sequence": "8" + }, + { + "option": "9", + "identifier": "interestCapitalization", + "name": "Interest Capitalization", + "acronym": "IPCI", + "description": "Scheduled capitalization of accrued interest", + "sequence": "9" + }, + { + "option": "10", + "identifier": "creditEvent", + "name": "Credit Event", + "acronym": "CE", + "description": "Credit event of counterparty to a contract", + "sequence": "10" + }, + { + "option": "11", + "identifier": "rateResetFixed", + "name": "Rate Reset Fixing with Known Rate", + "acronym": "RRF", + "description": "Scheduled fixing of variable rate with known new rate", + "sequence": "11 " + }, + { + "option": "12", + "identifier": "rateResetVariable", + "name": "Rate Reset Fixing with Unknown Rate", + "acronym": "RR", + "description": "Scheduled fixing of variable rate with unknown new rate", + "sequence": "12" + }, + { + "option": "13", + "identifier": "dividendPayment", + "name": "Dividend Payment", + "acronym": "DV", + "description": "Payment of dividends", + "sequence": "13" + }, + { + "option": "14", + "identifier": "purchase", + "name": "Purchase", + "acronym": "PRD", + "description": "Purchase of a contract", + "sequence": "14" + }, + { + "option": "15", + "identifier": "marginCall", + "name": "Margin Call", + "acronym": "MR", + "description": "Scheduled margin call", + "sequence": "15" + }, + { + "option": "16", + "identifier": "termination", + "name": "Termination", + "acronym": "TD", + "description": "Termination of a contract", + "sequence": "16" + }, + { + "option": "17", + "identifier": "scalingIndexFixing", + "name": "Scaling Index Fixing", + "acronym": "SC", + "description": "Scheduled fixing of a scaling index", + "sequence": "17" + }, + { + "option": "18", + "identifier": "interestCalculationBaseFixing", + "name": "Interest Calculation Base Fixing", + "acronym": "IPCB", + "description": "Scheduled fixing of the interest calculation base", + "sequence": "18" + }, + { + "option": "19", + "identifier": "maturity", + "name": "Maturity", + "acronym": "MD", + "description": "Maturity of a contract", + "sequence": "19" + }, + { + "option": "20", + "identifier": "exercise", + "name": "Exercise", + "acronym": "XD", + "description": "Exercise of a contractual feature such as an optionality", + "sequence": "20" + }, + { + "option": "21", + "identifier": "settlement", + "name": "Settlement", + "acronym": "STD", + "description": "Settlement of an exercised contractual claim", + "sequence": "21" + } + ] + }, + "payoff": { + "identifier": "payoff", + "name": "Payoff", + "acronym": "PYO", + "description": "The event payoff (if any). Is zero if no payoff needs be settled for the event", + "type": "Real", + "allowedValues": [] + }, + "scheduleTime": { + "identifier": "scheduleTime", + "name": "Schedule Time", + "acronym": "TSC", + "description": "The scheduled timestamp for updating event payoff and post-event state", + "type": "Timestamp", + "allowedValues": [ + "ISO8601 Datetime" + ] + }, + "state": { + "identifier": "state", + "name": "State", + "acronym": "EVS", + "description": "The post-event state. Results from applying the event’s state transition function to the pre-event state", + "type": "State", + "allowedValues": [] + } + }, + "contractReference": { + "object": { + "identifier": "object", + "name": "Object", + "acronym": "OBJ", + "description": "The referencing object", + "type": "Varchar", + "allowedValues": [] }, "role": { - "underlying": { - "identifier": "underlying", - "name": "Underlying", - "description": "The reference represents a simple underlyer contract" - }, - "firstLeg": { - "identifier": "firstLeg", - "name": "First Leg", - "description": "The reference represents the first leg contract" - }, - "secondLeg": { - "identifier": "secondLeg", - "name": "Second Leg", - "description": "The reference represents the second leg contract" - }, - "coveredContract": { - "identifier": "coveredContract", - "name": "Covered Contract", - "description": "The reference represents a contract that is covered under the parent contract" - }, - "coveringContract": { - "identifier": "coveringContract", - "name": "Covering Contract", - "description": "The reference represents a contract that covers for covering contracts under the parent contract Contract" - } + "identifier": "role", + "name": "Reference Role", + "acronym": "RRL", + "description": "The role of the referencing object", + "type": "Enum", + "allowedValues": [ + { + "option": "0", + "identifier": "underlying", + "name": "Underlying", + "acronym": "UDL", + "description": "The reference represents a simple underlyer contract" + }, + { + "option": "1", + "identifier": "firstLeg", + "name": "First Leg", + "acronym": "FIL", + "description": "The reference represents the first leg contract" + }, + { + "option": "2", + "identifier": "secondLeg", + "name": "Second Leg", + "acronym": "SEL", + "description": "The reference represents the second leg contract" + }, + { + "option": "3", + "identifier": "coveredContract", + "name": "Covered Contract", + "acronym": "COVE", + "description": "The reference represents a contract that is covered under the parent contract" + }, + { + "option": "4", + "identifier": "coveringContract", + "name": "Covering Contract", + "acronym": "COVI", + "description": "The reference represents a contract that covers for covering contracts under the parent contract Contract" + } + ] + }, + "type": { + "identifier": "type", + "name": "Reference Type", + "acronym": "RTP", + "description": "The type of the referencing object", + "type": "Enum", + "allowedValues": [ + { + "option": "0", + "identifier": "contract", + "name": "Contract", + "acronym": "CNT", + "description": "The reference represents an actual contract" + }, + { + "option": "1", + "identifier": "contractIdentifier", + "name": "Contract Identifier", + "acronym": "CID", + "description": "The reference represents an identifier of an actual contract" + }, + { + "option": "2", + "identifier": "marketObjectIdentifier", + "name": "Market Object Identifier", + "acronym": "MOC", + "description": "The reference represents the identifier of a market object" + }, + { + "option": "3", + "identifier": "legalEntityIdentifier", + "name": "Legal Entity Identifier", + "acronym": "EID", + "description": "The reference represents the identifier of a legal entity" + }, + { + "option": "4", + "identifier": "contractStructure", + "name": "Contract Structure", + "acronym": "CST", + "description": "The reference represents a ContractStructure" + } + ] } } } diff --git a/actus-dictionary.xlsx b/actus-dictionary.xlsx index 1b7a68f..1f984b2 100644 Binary files a/actus-dictionary.xlsx and b/actus-dictionary.xlsx differ diff --git a/scripts/create-dictionary.R b/scripts/create-dictionary.R index b905fbf..4d8cafc 100644 --- a/scripts/create-dictionary.R +++ b/scripts/create-dictionary.R @@ -17,9 +17,8 @@ version = read_excel(paste0(excel_path, "actus-dictionary.xlsx"), sheet="README" taxonomy = read_excel(paste0(excel_path,"actus-dictionary.xlsx"), sheet="Taxonomy") terms = read_excel(paste0(excel_path,"actus-dictionary.xlsx"), sheet="Terms") states = read_excel(paste0(excel_path,"actus-dictionary.xlsx"), sheet="State") -eventType = read_excel(paste0(excel_path,"actus-dictionary.xlsx"), sheet="EventType") -contractStruct = read_excel(paste0(excel_path,"actus-dictionary.xlsx"), sheet="ContractStructure", col_types="text", col_names=FALSE) -eventStruct = read_excel(paste0(excel_path,"actus-dictionary.xlsx"), sheet="Event", col_types="text", col_names=FALSE) +contractRef = read_excel(paste0(excel_path,"actus-dictionary.xlsx"), sheet="ContractStructure") +eventStruct = read_excel(paste0(excel_path,"actus-dictionary.xlsx"), sheet="Event") # format column names tocamel=function(x,delim=" ") { @@ -39,7 +38,8 @@ tocamel=function(x,delim=" ") { colnames(taxonomy)=tocamel(colnames(taxonomy),delim=" ") colnames(terms)=tocamel(colnames(terms),delim=" ") colnames(states)=tocamel(colnames(states),delim=" ") -colnames(eventType)=tocamel(colnames(eventType),delim=" ") +colnames(eventStruct)=tocamel(colnames(eventStruct),delim=" ") +colnames(contractRef)=tocamel(colnames(contractRef),delim=" ") # create dictionary base structure dictionary = list() @@ -57,7 +57,13 @@ dictionary[["taxonomy"]] = lapply(split(taxonomy,taxonomy$identifier),unbox) terms_sub=terms[,c("identifier", "group", "name", "acronym", "type", "allowedValues", "default", "description")] # -> convert enum values to json array -terms_sub$allowedValues = sapply(sapply(sapply(terms_sub$allowedValues,strsplit,"\n"),strsplit,"="),function(x) sapply(x,function(y) trimws(y[1]))) +#terms_sub$allowedValues = sapply(sapply(sapply(terms_sub$allowedValues,strsplit,"\n"),strsplit,"="),function(x) sapply(x,function(y) trimws(y[1]))) +terms_sub$allowedValues = sapply(sapply(sapply(terms_sub$allowedValues,strsplit,"\n"),strsplit,", "),function(x) { + obj = sapply(x,strsplit,": ") + allowedValues = x + if(!is.null(dim(obj))) allowedValues = do.call("rbind",apply(obj,2,function(x) { df = as.data.frame(x)[2,]; colnames(df)=c("option", "identifier", "name", "acronym", "description"); df } )) + return(allowedValues) +}) # -> format NA strings terms_sub[which(is.na(terms_sub$default)),"default"]="" @@ -76,28 +82,58 @@ rownames(applic_sub) = NULL # -> add to dictionary dictionary[["applicability"]] = lapply(split(applic_sub,applic_sub$contract),unbox) -# add events -dictionary[["eventType"]] = lapply(split(eventType,eventType$identifier),unbox) - # add states # -> convert enum values to json array -states$allowedValues = sapply(sapply(sapply(states$allowedValues,strsplit,"\n"),strsplit,"="),function(x) sapply(x,function(y) trimws(y[1]))) +#states$allowedValues = sapply(sapply(sapply(states$allowedValues,strsplit,"\n"),strsplit,"="),function(x) sapply(x,function(y) trimws(y[1]))) +states$allowedValues = sapply(sapply(sapply(states$allowedValues,strsplit,"\n"),strsplit,", "),function(x) { + obj = sapply(x,strsplit,": ") + allowedValues = x + if(!is.null(dim(obj))) allowedValues = do.call("rbind",apply(obj,2,function(x) { df = as.data.frame(x)[2,]; colnames(df)=c("option", "identifier", "name", "acronym", "description"); df } )) + return(allowedValues) +}) # -> add to dictionary dictionary[["states"]] = lapply(split(states,states$identifier),unbox) +# add event +# -> convert enum values to json array +#states$allowedValues = sapply(sapply(sapply(states$allowedValues,strsplit,"\n"),strsplit,"="),function(x) sapply(x,function(y) trimws(y[1]))) +eventStruct$allowedValues = sapply(sapply(sapply(eventStruct$allowedValues,strsplit,"\n"),strsplit,", "),function(x) { + obj = sapply(x,strsplit,": ") + allowedValues = x + if(!is.null(dim(obj))) allowedValues = do.call("rbind",apply(obj,2,function(x) { df = as.data.frame(x)[2,]; colnames(df)=c("option", "identifier", "name", "acronym", "description", "sequence"); df } )) + return(allowedValues) +}) + +# -> add to dictionary +dictionary[["event"]] = lapply(split(eventStruct,eventStruct$identifier),unbox) + # add contract structure -dictionary[["contractStructure"]] = fromJSON(as.character(contractStruct)) +# -> convert enum values to json array +#states$allowedValues = sapply(sapply(sapply(states$allowedValues,strsplit,"\n"),strsplit,"="),function(x) sapply(x,function(y) trimws(y[1]))) +contractRef$allowedValues = sapply(sapply(sapply(contractRef$allowedValues,strsplit,"\n"),strsplit,", "),function(x) { + obj = sapply(x,strsplit,": ") + allowedValues = x + if(!is.null(dim(obj))) allowedValues = do.call("rbind",apply(obj,2,function(x) { df = as.data.frame(x)[2,]; colnames(df)=c("option", "identifier", "name", "acronym", "description"); df } )) + return(allowedValues) +}) + +# -> add to dictionary +dictionary[["contractReference"]] = lapply(split(contractRef,contractRef$identifier),unbox) + # write dictionary as single file # ------------------------------- # parse to json and fix formatting jsonDict = prettify(toJSON(dictionary,auto_unbox=TRUE,pretty=TRUE,digits=NA)) -jsonDict = gsub("null", "[]", jsonDict, fixed=TRUE) -jsonDict = gsub("\"ISO8601 Datetime\"", "[\"ISO8601 Datetime\"]", jsonDict,fixed=TRUE) -jsonDict = gsub("\"(0,1)\"", "[\"(0,1)\"]", jsonDict,fixed=TRUE) -jsonDict = gsub("\"Positive\"", "[\"Positive\"]", jsonDict,fixed=TRUE) +jsonDict = gsub("{ + + }", "[]", jsonDict,fixed=TRUE) + +jsonDict = gsub("[ + null + ]", "[]", jsonDict,fixed=TRUE) # write json dictionary jsonDict %>% write_lines(paste0(json_path,'actus-dictionary.json')) @@ -115,10 +151,13 @@ jsonTaxon %>% write_lines(paste0(json_path,'actus-dictionary-taxonomy.json')) # 2. terms # parse to json and fix formatting jsonTerms = prettify(toJSON(dictionary[c("version","terms")],auto_unbox=TRUE,pretty=TRUE,digits=NA)) -jsonTerms = gsub("null", "[]", jsonTerms, fixed=TRUE) -jsonTerms = gsub("\"ISO8601 Datetime\"", "[\"ISO8601 Datetime\"]", jsonTerms,fixed=TRUE) -jsonTerms = gsub("\"(0,1)\"", "[\"(0,1)\"]", jsonTerms,fixed=TRUE) -jsonTerms = gsub("\"Positive\"", "[\"Positive\"]", jsonTerms,fixed=TRUE) +jsonTerms = gsub("{ + + }", "[]", jsonTerms,fixed=TRUE) + +jsonTerms = gsub("[ + null + ]", "[]", jsonTerms,fixed=TRUE) # write json jsonTerms %>% write_lines(paste0(json_path,'actus-dictionary-terms.json')) @@ -130,23 +169,15 @@ jsonApplic = prettify(toJSON(dictionary[c("version","applicability")],auto_unbox # write json jsonApplic %>% write_lines(paste0(json_path,'actus-dictionary-applicability.json')) -# 4. event types -# parse to json and fix formatting -jsonEventTypes = prettify(toJSON(dictionary[c("version","eventType")],auto_unbox=TRUE,pretty=TRUE,digits=NA)) - -# write json -jsonEventTypes %>% write_lines(paste0(json_path,'actus-dictionary-event-types.json')) - # 5. event -# read json event structure -jsonEvent = fromJSON(as.character(eventStruct)) +jsonEvent = prettify(toJSON(dictionary[c("version","event")],auto_unbox=TRUE,pretty=TRUE,digits=NA)) +jsonEvent = gsub("{ -# add allowed values for event type -jsonEvent$eventType$allowedValues = sapply(dictionary$eventType,function(x) x$acronym) + }", "[]", jsonEvent,fixed=TRUE) -# convert back to json and fix formatting -jsonEvent = prettify(toJSON(list(version=dictionary$version,event=jsonEvent),auto_unbox=TRUE,pretty=TRUE,digits=NA)) -jsonEvent = gsub("\"ISO8601 Datetime\"", "[\"ISO8601 Datetime\"]", jsonEvent,fixed=TRUE) +jsonEvent = gsub("[ + null + ]", "[]", jsonEvent,fixed=TRUE) # write json jsonEvent %>% write_lines(paste0(json_path,'actus-dictionary-event.json')) @@ -154,16 +185,27 @@ jsonEvent %>% write_lines(paste0(json_path,'actus-dictionary-event.json')) # 6. states # parse to json and fix formatting jsonStates = prettify(toJSON(dictionary[c("version","states")],auto_unbox=TRUE,pretty=TRUE,digits=NA)) -jsonStates = gsub("null", "[]", jsonStates, fixed=TRUE) -jsonStates = gsub("\"ISO8601 Datetime\"", "[\"ISO8601 Datetime\"]", jsonStates) +jsonStates = gsub("{ + + }", "[]", jsonStates,fixed=TRUE) + +jsonStates = gsub("[ + null + ]", "[]", jsonStates,fixed=TRUE) # write json jsonStates %>% write_lines(paste0(json_path,'actus-dictionary-states.json')) # 7. contract structure # parse to json and fix formatting -jsonStruct = prettify(toJSON(dictionary[c("version","contractStructure")],auto_unbox=TRUE,pretty=TRUE,digits=NA)) +jsonStruct = prettify(toJSON(dictionary[c("version","contractReference")],auto_unbox=TRUE,pretty=TRUE,digits=NA)) +jsonStruct = gsub("{ + + }", "[]", jsonStruct,fixed=TRUE) +jsonStruct = gsub("[ + null + ]", "[]", jsonStruct,fixed=TRUE) # write json -jsonStruct %>% write_lines(paste0(json_path,'actus-dictionary-contract-structure.json')) +jsonStruct %>% write_lines(paste0(json_path,'actus-dictionary-contract-reference.json'))