Skip to content

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

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

used by used in type used
CorporateAction dividendObservation range PriceSchedule
AdjustmentFactorCalculationTerms dividendObservation range PriceSchedule
AccrualFactor value range PriceSchedule
PriceQuantity price range PriceSchedule
BasketConstituent initialValuationPrice range PriceSchedule
BasketConstituent interimValuationPrice range PriceSchedule
BasketConstituent finalValuationPrice range PriceSchedule
Trigger level range PriceSchedule
SpreadSchedule price range PriceSchedule
RateSchedule price range PriceSchedule
ResolvablePriceQuantity priceSchedule range PriceSchedule
FixedPrice price range PriceSchedule
PerformancePayout initialValuationPrice range PriceSchedule
PerformancePayout interimValuationPrice range PriceSchedule
PerformancePayout finalValuationPrice range PriceSchedule
PortfolioReturnTerms initialValuationPrice range PriceSchedule
PortfolioReturnTerms interimValuationPrice range PriceSchedule
PortfolioReturnTerms finalValuationPrice range PriceSchedule
StrikeSchedule price range PriceSchedule

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

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.