FINXIS.

PriceSchedule

Type CDM 7.2.0

Specifies 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.

Extends MeasureBaseSchedule
Extended by Price
Attributes 11 (8 own)
Namespace cdm.observable.asset

Attributes

8 declared on PriceSchedule, 3 inherited. Cardinality in amber is required.

NameTypeCard.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.

UnitOfAmountExists Condition
Requires that a unit of amount must be specified for price unless price type is Variance, Volatility or Correlation.
if priceType = Variance or priceType = Volatility or priceType = Correlation
then unit is absent and perUnitOf is absent
else unit exists and perUnitOf exists
PositiveAssetPrice Condition
Requires that per FpML rules, the FX rate must be a positive value.
if (priceType = ExchangeRate or priceType = AssetPrice)
        and arithmeticOperator is absent
then value > 0 or datedValue -> value all > 0
PositiveSpotRate Condition
Requires that per FpML rules, the spot rate must be a positive value, for example for FX or Commodities.
if (priceType = ExchangeRate or priceType = AssetPrice)
        and composite -> baseValue exists
then composite -> baseValue > 0
PositivePremium Condition
Requires that any price expressed as a Premium must be positive
if priceType = Premium then value > 0
CurrencyUnitForInterestRate Condition
Requires that the unit of amount for an interest rate must be a currency.
if priceType = PriceTypeEnum -> InterestRate
then unit -> currency exists
Choice Condition
The price can be specified mutually exclusively as an operator (e.g. a spread or multiplier) or a composite.
optional choice arithmeticOperator, composite
Premium Condition
If we are applying a premium to the price then we must define this as a premium in priceType.
if premiumType exists then priceType = Premium
ArithmeticOperator Condition
Operator must not be subtract or divide.
arithmeticOperator <> Subtract and arithmeticOperator <> Divide
SpreadPrice Condition
A spread type can only be specified when the price type is an asset price or an interest rate.
if arithmeticOperator = Add
then priceType = AssetPrice or priceType = InterestRate
ForwardPoint Condition
If composite operand type is ForwardPoint then the price type must be ExchangeRate.
if composite -> operandType = ForwardPoint
then priceType = ExchangeRate
AccruedInterest Condition
If composite operand type is AccruedInterest then the price type must be AssetPrice.
if composite -> operandType = AccruedInterest
then priceType = AssetPrice
InterestRateFeeType Condition
If a lending fee or rebate fee is specified then the price type must be InterestRate.
if priceSubType = Fee or priceSubType = Rebate
then priceType = InterestRate
DerivedQuantityMultiplier Condition
A derivedQuantity must not specify a multiplier.
derivedQuantity -> multiplier is absent
DerivedQuantityUnit Condition
Where derivedQuantity specifies a unit, the derivedQuantity unit must match the parent quantity unit.
if derivedQuantity exists and unit exists
then derivedQuantity -> unit = unit
DerivedQuantityCurrency Condition
Where a derivedQuantity exists and no parent quantity unit is present, the derivedQuantity must specify a currency-denominated 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.

FunctionRoleDescription
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.

Model Browser All 200+ releases
Parsed from CDM 7.2.0 · observable-asset-type.rosetta cdm.observable.asset