PriceSchedule
Type CDM 7.2.0Specifies the price of a financial instrument in a trade as a schedule of measures. A price generically expresses the value of an exchange as a ratio: it measures the amount of one thing needed to be exchanged for 1 unit of another thing (e.g. cash in a specific currency in exchange for a bond or share). This generic representation can be used to support any type of financial price beyond just cash price: e.g. an interest rate, a foreign exchange rate, etc. This data type is generically based on a schedule and can also be used to represent a price as a single value.
Attributes
8 declared on PriceSchedule, 3 inherited. Cardinality in amber is required.
| Name | Type | Card. | Description | From |
|---|---|---|---|---|
| value | number | 0..1 | The initial rate or amount, as the case may be. An initial rate of 5% would be represented as 0.05. | Schedule |
| datedValue | DatedValue | 0..* | The schedule of step date and value pairs. On each step date the associated step value becomes effective. A list of steps may be ordered in the document by ascending step date. An FpML document containing an unordered list of steps is still regarded as a conformant document. | Schedule |
| unit | UnitType | 0..1 | Qualifies the unit by which the amount is measured. Optional because a measure may be unit-less (e.g. when representing a ratio between amounts in the same unit). | MeasureBase |
| perUnitOf | UnitType | 0..1 | Provides an attribute to define the unit of the thing being priced. For example, {amount, unitOfAmount, PerUnitOfAmount} = [10, EUR, Shares] = (10.00 EUR/SHARE) * (300,000 SHARES) = EUR 3,000,000.00 (Shares cancel out in the calculation). | — |
| priceType | PriceTypeEnum | 1..1 | Specifies the price type as an enumeration: interest rate, exchange rate, asset price etc. This attribute is mandatory so that prices can always be clasiffied according to their type. The price type implies some constraints on the price's units. | — |
| priceSubType | PriceSubTypeEnum | 0..1 | Allows further classification of the chosen price type. | — |
| priceExpression | PriceExpressionEnum | 0..1 | (Optionally) Specifies whether the price is expressed in absolute or percentage terms. | — |
| composite | PriceComposite | 0..1 | (Optionally) Specifies the underlying price components if the price can be expressed as a composite: e.g. dirty price = clean price + accrued. | — |
| arithmeticOperator | ArithmeticOperationEnum | 0..1 | (Optionally) When the price is to be understood as an operator to apply to an observable, i.e. a spread, multiplier or min/max. | — |
| premiumType | PremiumTypeEnum | 0..1 | (Optionally) Additional attribute that can further define any premium to the price. | — |
| derivedQuantity | NonNegativeQuantitySchedule | 0..1 | Specifies the derived quantity associated with the price. For instance when the price is an asset price expressed in a currency, the primary quantity is the asset's quantity while the derived quantity is the corresponding monetary amount in that currency. When the price is an exchange rate, both the primary quantity and the derived quantity are monetary amounts, in the 2 currencies of the exchange rate. | — |
Conditions
Validation rules the model enforces on this type, in Rune. An instance that breaks one of these is invalid CDM, whatever produced it.
if priceType = Variance or priceType = Volatility or priceType = Correlation
then unit is absent and perUnitOf is absent
else unit exists and perUnitOf exists if (priceType = ExchangeRate or priceType = AssetPrice)
and arithmeticOperator is absent
then value > 0 or datedValue -> value all > 0 if (priceType = ExchangeRate or priceType = AssetPrice)
and composite -> baseValue exists
then composite -> baseValue > 0 if priceType = Premium then value > 0 if priceType = PriceTypeEnum -> InterestRate
then unit -> currency exists optional choice arithmeticOperator, composite if premiumType exists then priceType = Premium arithmeticOperator <> Subtract and arithmeticOperator <> Divide if arithmeticOperator = Add
then priceType = AssetPrice or priceType = InterestRate if composite -> operandType = ForwardPoint
then priceType = ExchangeRate if composite -> operandType = AccruedInterest
then priceType = AssetPrice if priceSubType = Fee or priceSubType = Rebate
then priceType = InterestRate derivedQuantity -> multiplier is absent if derivedQuantity exists and unit exists
then derivedQuantity -> unit = unit if derivedQuantity exists and unit is absent
then derivedQuantity -> unit -> currency exists Referenced by
11 types hold a PriceSchedule as an attribute.
Functions
Model functions that produce or consume this type. These are the CDM's own behaviour — the logic a correct implementation has to match.
| Function | Role | Description |
|---|---|---|
| CreatePriceWithLocation | returns | — |
| CreatePriceWithAddress | returns | — |
| MapFixedRateScheduleToPriceWithLocation | returns | — |
| MapFixedRateScheduleToPriceWithAddress | returns | — |
| MapFloatingRateMultiplierScheduleToPriceWithLocation | returns | — |
| MapSpreadScheduleToPriceWithLocation | returns | — |
| MapCapRateScheduleToPriceWithLocation | returns | — |
| MapFloorRateScheduleToPriceWithLocation | returns | — |
| MapScheduleToInterestRatePriceSchedule | returns | — |
| MapFixedRateToPriceScheduleWithLocation | returns | — |
| MapFixedRateToPriceScheduleWithAddress | returns | — |
| MapInterestRatePriceSchedule | returns | — |
| RateOfReturn | takes | Part 1 Section 12 of the 2018 ISDA CDM Equity Confirmation for Security Equity Swap, Para 139. 'Rate Of Return' means, in respect of any Equity Valuation Date, the amount determined pursuant to the following formula: Rate Of Return = (Final Price - Initial Price) / Initial Price. |
| CreatePriceWithLocation | takes | — |
| FilterPrice | takes | Filter list of prices based on price type. |
| PriceQuantityTriangulation | takes | Checks the relationship between price, multiplier, notional and number of units, and validates the result of their product. |
| ResolvePerformancePeriodStartPrice | takes | Resolves the price from the end of the previous period. If first period, then take the initial price. |
| ResolveEquityInitialPrice | takes | To be replaced by full resolve price function implementation. |
| UpdatePriceAmountForEachMatchingQuantity | takes | Updates any price from the PriceSchedule list if the unit of amount matches. |
| PriceUnitEquals | takes | Compares two PriceSchedule to check if all attributes match, except for the amount. |
Showing 12 of each. All 1286 functions →
Open PriceSchedule in the Model Browser
Walk the tree and the reference graph interactively, and switch releases to see how the type has changed. Free, no signup.