Class: PriceSchedule
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.
URI: common_domain_model:PriceSchedule
classDiagram
class PriceSchedule
click PriceSchedule href "../PriceSchedule/"
MeasureSchedule <|-- PriceSchedule
click MeasureSchedule href "../MeasureSchedule/"
PriceSchedule <|-- Price
click Price href "../Price/"
PriceSchedule : arithmeticOperator
PriceSchedule --> "0..1" ArithmeticOperationEnum : arithmeticOperator
click ArithmeticOperationEnum href "../ArithmeticOperationEnum/"
PriceSchedule : composite
PriceSchedule --> "0..1" PriceComposite : composite
click PriceComposite href "../PriceComposite/"
PriceSchedule : datedValue
PriceSchedule --> "*" DatedValue : datedValue
click DatedValue href "../DatedValue/"
PriceSchedule : perUnitOf
PriceSchedule --> "0..1" UnitType : perUnitOf
click UnitType href "../UnitType/"
PriceSchedule : premiumType
PriceSchedule --> "0..1" PremiumTypeEnum : premiumType
click PremiumTypeEnum href "../PremiumTypeEnum/"
PriceSchedule : priceExpression
PriceSchedule --> "0..1" PriceExpressionEnum : priceExpression
click PriceExpressionEnum href "../PriceExpressionEnum/"
PriceSchedule : priceSubType
PriceSchedule --> "0..1" PriceSubTypeEnum : priceSubType
click PriceSubTypeEnum href "../PriceSubTypeEnum/"
PriceSchedule : priceType
PriceSchedule --> "1" PriceTypeEnum : priceType
click PriceTypeEnum href "../PriceTypeEnum/"
PriceSchedule : unit
PriceSchedule --> "0..1" UnitType : unit
click UnitType href "../UnitType/"
PriceSchedule : value
Inheritance
- MeasureBase
- MeasureSchedule
- PriceSchedule
- MeasureSchedule
Slots
| Name | Cardinality and Range | Description | Inheritance |
|---|---|---|---|
| perUnitOf | 0..1 UnitType |
Provides an attribute to define the unit of the thing being priced | direct |
| priceType | 1 PriceTypeEnum |
Specifies the price type as an enumeration: interest rate, exchange rate, ass... | direct |
| priceSubType | 0..1 PriceSubTypeEnum |
Allows further classification of the chosen price type | direct |
| priceExpression | 0..1 PriceExpressionEnum |
(Optionally) Specifies whether the price is expressed in absolute or percenta... | direct |
| composite | 0..1 PriceComposite |
(Optionally) Specifies the underlying price components if the price can be ex... | direct |
| arithmeticOperator | 0..1 ArithmeticOperationEnum |
(Optionally) When the price is to be understood as an operator to apply to an... | direct |
| premiumType | 0..1 PremiumTypeEnum |
(Optionally) Additional attribute that can further define any premium to the ... | direct |
| datedValue | * DatedValue |
A schedule of step date and value pairs | MeasureSchedule |
| value | 0..1 Decimal |
Specifies the value of the measure as a number | MeasureBase |
| unit | 0..1 UnitType |
Qualifies the unit by which the amount is measured | MeasureBase |
Usages
Rules
| Rule Applied | Preconditions | Postconditions | Elseconditions |
|---|---|---|---|
| Rule Applied | Preconditions | Postconditions | Elseconditions |
|---|---|---|---|
| slot_conditions | {'premiumType': {'required': True}} |
{'priceType': {'equals_string': 'Premium'}} |
In Subsets
Comments
- Rosetta condition: UnitOfAmountExists — if priceType = Variance or priceType = Volatility or priceType = Correlation then unit is absent and perUnitOf is absent else unit exists and perUnitOf exists
- Rosetta condition: PositiveAssetPrice — if (priceType = ExchangeRate or priceType = AssetPrice) and arithmeticOperator is absent then value > 0 or datedValue -> value all > 0
- Rosetta condition: PositiveSpotRate — if (priceType = ExchangeRate or priceType = AssetPrice) and composite -> baseValue exists then composite -> baseValue > 0
- Rosetta condition: PositivePremium — if priceType = Premium then value > 0
- Rosetta condition: CurrencyUnitForInterestRate — if priceType = PriceTypeEnum -> InterestRate then unit -> currency exists
- Rosetta condition: Choice — optional choice arithmeticOperator, composite
- Rosetta condition: Premium — if premiumType exists then priceType = Premium
- Rosetta condition: ArithmeticOperator — arithmeticOperator <> Subtract and arithmeticOperator <> Divide
- Rosetta condition: SpreadPrice — if arithmeticOperator = Add then priceType = AssetPrice or priceType = InterestRate
- Rosetta condition: ForwardPoint — if composite -> operandType = ForwardPoint then priceType = ExchangeRate
- Rosetta condition: AccruedInterest — if composite -> operandType = AccruedInterest then priceType = AssetPrice
- Rosetta condition: InterestRateFeeType — if priceSubType = Fee or priceSubType = Rebate then priceType = InterestRate
- Rosetta func: FilterPrice — Filter list of prices based on price type.
Identifier and Mapping Information
Annotations
| property | value |
|---|---|
| rosetta_functions | [{"name":"FilterPrice","description":"Filter list of prices based on price type.","inputs":[{"name":"prices","type":"PriceSchedule","cardinality":"0.."},{"name":"priceType","type":"PriceTypeEnum","cardinality":"1..1"},{"name":"arithmeticOperators","type":"ArithmeticOperationEnum","cardinality":"0.."},{"name":"priceExpression","type":"PriceExpressionEnum","cardinality":"0..1"}],"output":{"name":"price","type":"PriceSchedule","cardinality":"0..1"}}] |
Schema Source
- from schema: https://w3id.org/lmodel/common-domain-model
Mappings
| Mapping Type | Mapped Value |
|---|---|
| self | common_domain_model:PriceSchedule |
| native | common_domain_model:PriceSchedule |
LinkML Source
Direct
name: PriceSchedule
annotations:
rosetta_functions:
tag: rosetta_functions
value: '[{"name":"FilterPrice","description":"Filter list of prices based on price
type.","inputs":[{"name":"prices","type":"PriceSchedule","cardinality":"0..*"},{"name":"priceType","type":"PriceTypeEnum","cardinality":"1..1"},{"name":"arithmeticOperators","type":"ArithmeticOperationEnum","cardinality":"0..*"},{"name":"priceExpression","type":"PriceExpressionEnum","cardinality":"0..1"}],"output":{"name":"price","type":"PriceSchedule","cardinality":"0..1"}}]'
description: '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.'
comments:
- 'Rosetta condition: UnitOfAmountExists — if priceType = Variance or priceType =
Volatility or priceType = Correlation then unit is absent and perUnitOf is absent
else unit exists and perUnitOf exists'
- 'Rosetta condition: PositiveAssetPrice — if (priceType = ExchangeRate or priceType
= AssetPrice) and arithmeticOperator is absent then value > 0 or datedValue -> value
all > 0'
- 'Rosetta condition: PositiveSpotRate — if (priceType = ExchangeRate or priceType
= AssetPrice) and composite -> baseValue exists then composite -> baseValue > 0'
- 'Rosetta condition: PositivePremium — if priceType = Premium then value > 0'
- 'Rosetta condition: CurrencyUnitForInterestRate — if priceType = PriceTypeEnum ->
InterestRate then unit -> currency exists'
- 'Rosetta condition: Choice — optional choice arithmeticOperator, composite'
- 'Rosetta condition: Premium — if premiumType exists then priceType = Premium'
- 'Rosetta condition: ArithmeticOperator — arithmeticOperator <> Subtract and arithmeticOperator
<> Divide'
- 'Rosetta condition: SpreadPrice — if arithmeticOperator = Add then priceType = AssetPrice
or priceType = InterestRate'
- 'Rosetta condition: ForwardPoint — if composite -> operandType = ForwardPoint then
priceType = ExchangeRate'
- 'Rosetta condition: AccruedInterest — if composite -> operandType = AccruedInterest
then priceType = AssetPrice'
- 'Rosetta condition: InterestRateFeeType — if priceSubType = Fee or priceSubType
= Rebate then priceType = InterestRate'
- 'Rosetta func: FilterPrice — Filter list of prices based on price type.'
in_subset:
- cdm_observable_asset
from_schema: https://w3id.org/lmodel/common-domain-model
is_a: MeasureSchedule
slots:
- perUnitOf
- priceType
- priceSubType
- priceExpression
- composite
- arithmeticOperator
- premiumType
slot_usage:
arithmeticOperator:
name: arithmeticOperator
description: (Optionally) When the price is to be understood as an operator to
apply to an observable, i.e. a spread, multiplier or min/max.
required: false
rules:
- postconditions:
any_of:
- slot_conditions:
arithmeticOperator:
name: arithmeticOperator
required: true
- slot_conditions:
composite:
name: composite
required: true
description: The price can be specified mutually exclusively as an operator (e.g.
a spread or multiplier) or a composite.
- preconditions:
slot_conditions:
premiumType:
name: premiumType
required: true
postconditions:
slot_conditions:
priceType:
name: priceType
equals_string: Premium
description: If we are applying a premium to the price then we must define this
as a premium in priceType.
Induced
name: PriceSchedule
annotations:
rosetta_functions:
tag: rosetta_functions
value: '[{"name":"FilterPrice","description":"Filter list of prices based on price
type.","inputs":[{"name":"prices","type":"PriceSchedule","cardinality":"0..*"},{"name":"priceType","type":"PriceTypeEnum","cardinality":"1..1"},{"name":"arithmeticOperators","type":"ArithmeticOperationEnum","cardinality":"0..*"},{"name":"priceExpression","type":"PriceExpressionEnum","cardinality":"0..1"}],"output":{"name":"price","type":"PriceSchedule","cardinality":"0..1"}}]'
description: '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.'
comments:
- 'Rosetta condition: UnitOfAmountExists — if priceType = Variance or priceType =
Volatility or priceType = Correlation then unit is absent and perUnitOf is absent
else unit exists and perUnitOf exists'
- 'Rosetta condition: PositiveAssetPrice — if (priceType = ExchangeRate or priceType
= AssetPrice) and arithmeticOperator is absent then value > 0 or datedValue -> value
all > 0'
- 'Rosetta condition: PositiveSpotRate — if (priceType = ExchangeRate or priceType
= AssetPrice) and composite -> baseValue exists then composite -> baseValue > 0'
- 'Rosetta condition: PositivePremium — if priceType = Premium then value > 0'
- 'Rosetta condition: CurrencyUnitForInterestRate — if priceType = PriceTypeEnum ->
InterestRate then unit -> currency exists'
- 'Rosetta condition: Choice — optional choice arithmeticOperator, composite'
- 'Rosetta condition: Premium — if premiumType exists then priceType = Premium'
- 'Rosetta condition: ArithmeticOperator — arithmeticOperator <> Subtract and arithmeticOperator
<> Divide'
- 'Rosetta condition: SpreadPrice — if arithmeticOperator = Add then priceType = AssetPrice
or priceType = InterestRate'
- 'Rosetta condition: ForwardPoint — if composite -> operandType = ForwardPoint then
priceType = ExchangeRate'
- 'Rosetta condition: AccruedInterest — if composite -> operandType = AccruedInterest
then priceType = AssetPrice'
- 'Rosetta condition: InterestRateFeeType — if priceSubType = Fee or priceSubType
= Rebate then priceType = InterestRate'
- 'Rosetta func: FilterPrice — Filter list of prices based on price type.'
in_subset:
- cdm_observable_asset
from_schema: https://w3id.org/lmodel/common-domain-model
is_a: MeasureSchedule
slot_usage:
arithmeticOperator:
name: arithmeticOperator
description: (Optionally) When the price is to be understood as an operator to
apply to an observable, i.e. a spread, multiplier or min/max.
required: false
attributes:
perUnitOf:
name: perUnitOf
description: 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).
from_schema: https://w3id.org/lmodel/common-domain-model
rank: 1000
owner: PriceSchedule
domain_of:
- PriceSchedule
range: UnitType
priceType:
name: priceType
description: '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.'
from_schema: https://w3id.org/lmodel/common-domain-model
rank: 1000
owner: PriceSchedule
domain_of:
- PriceSchedule
range: PriceTypeEnum
required: true
priceSubType:
name: priceSubType
description: Allows further classification of the chosen price type.
from_schema: https://w3id.org/lmodel/common-domain-model
rank: 1000
owner: PriceSchedule
domain_of:
- PriceSchedule
range: PriceSubTypeEnum
priceExpression:
name: priceExpression
description: (Optionally) Specifies whether the price is expressed in absolute
or percentage terms.
from_schema: https://w3id.org/lmodel/common-domain-model
rank: 1000
owner: PriceSchedule
domain_of:
- PriceSchedule
range: PriceExpressionEnum
composite:
name: composite
description: '(Optionally) Specifies the underlying price components if the price
can be expressed as a composite: e.g. dirty price = clean price + accrued.'
from_schema: https://w3id.org/lmodel/common-domain-model
rank: 1000
owner: PriceSchedule
domain_of:
- PriceSchedule
- FxFeature
range: PriceComposite
arithmeticOperator:
name: arithmeticOperator
description: (Optionally) When the price is to be understood as an operator to
apply to an observable, i.e. a spread, multiplier or min/max.
from_schema: https://w3id.org/lmodel/common-domain-model
rank: 1000
owner: PriceSchedule
domain_of:
- PriceComposite
- PriceSchedule
range: ArithmeticOperationEnum
required: false
premiumType:
name: premiumType
description: (Optionally) Additional attribute that can further define any premium
to the price.
from_schema: https://w3id.org/lmodel/common-domain-model
rank: 1000
owner: PriceSchedule
domain_of:
- PriceSchedule
range: PremiumTypeEnum
datedValue:
name: datedValue
description: A schedule of step date and value pairs. On each step date the associated
step value becomes effective. The step dates are used to order the steps by
ascending order. This attribute is optional so the data type may be used to
define a schedule with a single value.
from_schema: https://w3id.org/lmodel/common-domain-model
rank: 1000
owner: PriceSchedule
domain_of:
- MeasureSchedule
- Schedule
range: DatedValue
multivalued: true
inlined: true
inlined_as_list: true
value:
name: value
description: Specifies the value of the measure as a number. Optional because
in a measure vector or schedule, this single value may be omitted.
from_schema: https://w3id.org/lmodel/common-domain-model
rank: 1000
owner: PriceSchedule
domain_of:
- MeasureBase
- Schedule
- DatedValue
- Taxonomy
- TaxonomyClassification
- CodeValue
- AdjustmentFactor
- AccrualFactor
- DisputeResolution
- OtherEligibleAndPostedSupport
- CSAThresholdVariableSet
- CSAMinimumTransferAmountVariableSet
- MasterAgreementVariableSet
range: decimal
unit:
name: unit
description: 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).
from_schema: https://w3id.org/lmodel/common-domain-model
rank: 1000
owner: PriceSchedule
domain_of:
- MeasureBase
- Qty
- Term
range: UnitType
rules:
- postconditions:
any_of:
- slot_conditions:
arithmeticOperator:
name: arithmeticOperator
required: true
- slot_conditions:
composite:
name: composite
required: true
description: The price can be specified mutually exclusively as an operator (e.g.
a spread or multiplier) or a composite.
- preconditions:
slot_conditions:
premiumType:
name: premiumType
required: true
postconditions:
slot_conditions:
priceType:
name: priceType
equals_string: Premium
description: If we are applying a premium to the price then we must define this
as a premium in priceType.