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/"
      MeasureBase <|-- PriceSchedule
        click MeasureBase href "../MeasureBase/"
      

      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 : derivedQuantity
        
          
    
        
        
        PriceSchedule --> "0..1" NonNegativeQuantitySchedule : derivedQuantity
        click NonNegativeQuantitySchedule href "../NonNegativeQuantitySchedule/"
    

        
      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
        
      
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
derivedQuantity 0..1
NonNegativeQuantitySchedule
Specifies the derived quantity associated with the price direct
unit 0..1
UnitType
Qualifies the unit by which the amount is measured MeasureBase
value 0..1
Decimal
The initial rate or amount, as the case may be Schedule
datedValue *
DatedValue
The schedule of step date and value pairs Schedule
Expressions & Logic

The class must satisfy all of:

  • AnonymousClassExpression({ ‘description’: (’From Schedule. ValueExists: A schedule may be specified as a single value or ’ ’as a set of date-value pairs. Both attributes may be specified, in which ’ ‘case the single amount number is the initial value.’), ‘any_of’: [AnonymousClassExpression({ ‘slot_conditions’: {‘value’: SlotDefinition({‘name’: ‘value’, ‘value_presence’: PresenceEnum(text=‘PRESENT’)})} }), AnonymousClassExpression({ ‘slot_conditions’: {‘datedValue’: SlotDefinition({‘name’: ‘datedValue’, ‘value_presence’: PresenceEnum(text=‘PRESENT’)})} })] })
  • AnonymousClassExpression({ ‘description’: (’Choice: The price can be specified mutually exclusively as an operator (e.g. ’ ‘a spread or multiplier) or a composite.’), ‘exactly_one_of’: [AnonymousClassExpression({ ‘slot_conditions’: {‘arithmeticOperator’: SlotDefinition({‘name’: ‘arithmeticOperator’, ‘value_presence’: PresenceEnum(text=‘PRESENT’)})} }), AnonymousClassExpression({ ‘slot_conditions’: {‘composite’: SlotDefinition({‘name’: ‘composite’, ‘value_presence’: PresenceEnum(text=‘PRESENT’)})} }), AnonymousClassExpression({ ‘all_of’: [AnonymousClassExpression({ ‘slot_conditions’: {‘arithmeticOperator’: SlotDefinition({‘name’: ‘arithmeticOperator’, ‘value_presence’: PresenceEnum(text=‘ABSENT’)})} }), AnonymousClassExpression({ ‘slot_conditions’: {‘composite’: SlotDefinition({‘name’: ‘composite’, ‘value_presence’: PresenceEnum(text=‘ABSENT’)})} })] })] })

The class must not satisfy any of:

  • AnonymousClassExpression({ ‘description’: ‘ArithmeticOperator: Operator must not be subtract or divide.’, ‘slot_conditions’: {‘arithmeticOperator’: SlotDefinition({ ‘name’: ‘arithmeticOperator’, ‘value_presence’: PresenceEnum(text=‘PRESENT’), ‘equals_string’: ‘Subtract’ })} })
  • AnonymousClassExpression({ ‘description’: ‘ArithmeticOperator: Operator must not be subtract or divide.’, ‘slot_conditions’: {‘arithmeticOperator’: SlotDefinition({ ‘name’: ‘arithmeticOperator’, ‘value_presence’: PresenceEnum(text=‘PRESENT’), ‘equals_string’: ‘Divide’ })} })
used by used in type used
AccrualFactor value range PriceSchedule
AdjustmentFactorCalculationTerms dividendObservation range PriceSchedule
CorporateAction dividendObservation range PriceSchedule
BasketConstituent initialValuationPrice range PriceSchedule
BasketConstituent interimValuationPrice range PriceSchedule
BasketConstituent finalValuationPrice range PriceSchedule
PriceQuantity price range PriceSchedule
RateSchedule price range PriceSchedule
Trigger level range PriceSchedule
SpreadSchedule price range PriceSchedule
FixedPrice price range PriceSchedule
ResolvablePriceQuantity priceSchedule 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

Rule Applied Preconditions Postconditions Elseconditions
any_of [{'slot_conditions': {'priceType': {'equals_string': 'Variance'}}}, {'slot_conditions': {'priceType': {'equals_string': 'Volatility'}}}, {'slot_conditions': {'priceType': {'equals_string': 'Correlation'}}}]
slot_conditions {'unit': {'value_presence': 'ABSENT'}, 'perUnitOf': {'value_presence': 'ABSENT'}} {'unit': {'value_presence': 'PRESENT'}, 'perUnitOf': {'value_presence': 'PRESENT'}}
Rule Applied Preconditions Postconditions Elseconditions
slot_conditions {'premiumType': {'value_presence': 'PRESENT'}} {'priceType': {'equals_string': 'Premium'}}
Rule Applied Preconditions Postconditions Elseconditions
slot_conditions {'arithmeticOperator': {'value_presence': 'PRESENT', 'equals_string': 'Add'}}
any_of [{'slot_conditions': {'priceType': {'equals_string': 'AssetPrice'}}}, {'slot_conditions': {'priceType': {'equals_string': 'InterestRate'}}}]
Rule Applied Preconditions Postconditions Elseconditions
any_of [{'slot_conditions': {'priceSubType': {'value_presence': 'PRESENT', 'equals_string': 'Fee'}}}, {'slot_conditions': {'priceSubType': {'value_presence': 'PRESENT', 'equals_string': 'Rebate'}}}]
slot_conditions {'priceType': {'equals_string': 'InterestRate'}}
  • Rosetta condition PositiveAssetPrice is not stated in LinkML: if (priceType = ExchangeRate or priceType = AssetPrice) and arithmeticOperator is absent then value > 0 or datedValue -> value all > 0
  • Rosetta condition PositiveSpotRate is not stated in LinkML: if (priceType = ExchangeRate or priceType = AssetPrice) and composite -> baseValue exists then composite -> baseValue > 0
  • Rosetta condition PositivePremium is not stated in LinkML: if priceType = Premium then value > 0
  • Rosetta condition CurrencyUnitForInterestRate is not stated in LinkML: if priceType = PriceTypeEnum -> InterestRate then unit -> currency exists
  • Rosetta condition ForwardPoint is not stated in LinkML: if composite -> operandType = ForwardPoint then priceType = ExchangeRate
  • Rosetta condition AccruedInterest is not stated in LinkML: if composite -> operandType = AccruedInterest then priceType = AssetPrice
  • Rosetta condition DerivedQuantityMultiplier is not stated in LinkML: derivedQuantity -> multiplier is absent
  • Rosetta condition DerivedQuantityUnit is not stated in LinkML: if derivedQuantity exists and unit exists then derivedQuantity -> unit = unit
  • Rosetta condition DerivedQuantityCurrency is not stated in LinkML: if derivedQuantity exists and unit is absent then derivedQuantity -> unit -> currency exists
Mapping Type Mapped Value
self common_domain_model:PriceSchedule
native common_domain_model:PriceSchedule
name: PriceSchedule
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 PositiveAssetPrice is not stated in LinkML: if (priceType = ExchangeRate
or priceType = AssetPrice) and arithmeticOperator is absent then value > 0 or datedValue
-> value all > 0'
- 'Rosetta condition PositiveSpotRate is not stated in LinkML: if (priceType = ExchangeRate
or priceType = AssetPrice) and composite -> baseValue exists then composite -> baseValue
> 0'
- 'Rosetta condition PositivePremium is not stated in LinkML: if priceType = Premium
then value > 0'
- 'Rosetta condition CurrencyUnitForInterestRate is not stated in LinkML: if priceType
= PriceTypeEnum -> InterestRate then unit -> currency exists'
- 'Rosetta condition ForwardPoint is not stated in LinkML: if composite -> operandType
= ForwardPoint then priceType = ExchangeRate'
- 'Rosetta condition AccruedInterest is not stated in LinkML: if composite -> operandType
= AccruedInterest then priceType = AssetPrice'
- 'Rosetta condition DerivedQuantityMultiplier is not stated in LinkML: derivedQuantity
-> multiplier is absent'
- 'Rosetta condition DerivedQuantityUnit is not stated in LinkML: if derivedQuantity
exists and unit exists then derivedQuantity -> unit = unit'
- 'Rosetta condition DerivedQuantityCurrency is not stated in LinkML: if derivedQuantity
exists and unit is absent then derivedQuantity -> unit -> currency exists'
from_schema: https://w3id.org/lmodel/common-domain-model
is_a: MeasureBase
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/cdm_observable_asset
rank: 1000
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/cdm_observable_asset
rank: 1000
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/cdm_observable_asset
rank: 1000
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/cdm_observable_asset
rank: 1000
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/cdm_observable_asset
rank: 1000
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/cdm_observable_asset
domain_of:
- PriceComposite
- PriceSchedule
range: ArithmeticOperationEnum
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/cdm_observable_asset
rank: 1000
domain_of:
- PriceSchedule
range: PremiumTypeEnum
derivedQuantity:
name: derivedQuantity
description: 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.
from_schema: https://w3id.org/lmodel/common-domain-model/cdm_observable_asset
rank: 1000
domain_of:
- PriceSchedule
range: NonNegativeQuantitySchedule
rules:
- preconditions:
any_of:
- slot_conditions:
priceType:
name: priceType
equals_string: Variance
- slot_conditions:
priceType:
name: priceType
equals_string: Volatility
- slot_conditions:
priceType:
name: priceType
equals_string: Correlation
postconditions:
slot_conditions:
unit:
name: unit
value_presence: ABSENT
perUnitOf:
name: perUnitOf
value_presence: ABSENT
elseconditions:
slot_conditions:
unit:
name: unit
value_presence: PRESENT
perUnitOf:
name: perUnitOf
value_presence: PRESENT
description: 'UnitOfAmountExists: Requires that a unit of amount must be specified
for price unless price type is Variance, Volatility or Correlation.'
- preconditions:
slot_conditions:
premiumType:
name: premiumType
value_presence: PRESENT
postconditions:
slot_conditions:
priceType:
name: priceType
equals_string: Premium
description: 'Premium: If we are applying a premium to the price then we must define
this as a premium in priceType.'
- preconditions:
slot_conditions:
arithmeticOperator:
name: arithmeticOperator
value_presence: PRESENT
equals_string: Add
postconditions:
any_of:
- slot_conditions:
priceType:
name: priceType
equals_string: AssetPrice
- slot_conditions:
priceType:
name: priceType
equals_string: InterestRate
description: 'SpreadPrice: A spread type can only be specified when the price type
is an asset price or an interest rate.'
- preconditions:
any_of:
- slot_conditions:
priceSubType:
name: priceSubType
value_presence: PRESENT
equals_string: Fee
- slot_conditions:
priceSubType:
name: priceSubType
value_presence: PRESENT
equals_string: Rebate
postconditions:
slot_conditions:
priceType:
name: priceType
equals_string: InterestRate
description: 'InterestRateFeeType: If a lending fee or rebate fee is specified then
the price type must be InterestRate.'
none_of:
- description: 'ArithmeticOperator: Operator must not be subtract or divide.'
slot_conditions:
arithmeticOperator:
name: arithmeticOperator
value_presence: PRESENT
equals_string: Subtract
- description: 'ArithmeticOperator: Operator must not be subtract or divide.'
slot_conditions:
arithmeticOperator:
name: arithmeticOperator
value_presence: PRESENT
equals_string: Divide
all_of:
- description: 'From Schedule. ValueExists: A schedule may be specified as a single
value or as a set of date-value pairs. Both attributes may be specified, in which
case the single amount number is the initial value.'
any_of:
- slot_conditions:
value:
name: value
value_presence: PRESENT
- slot_conditions:
datedValue:
name: datedValue
value_presence: PRESENT
- description: 'Choice: The price can be specified mutually exclusively as an operator
(e.g. a spread or multiplier) or a composite.'
exactly_one_of:
- slot_conditions:
arithmeticOperator:
name: arithmeticOperator
value_presence: PRESENT
- slot_conditions:
composite:
name: composite
value_presence: PRESENT
- all_of:
- slot_conditions:
arithmeticOperator:
name: arithmeticOperator
value_presence: ABSENT
- slot_conditions:
composite:
name: composite
value_presence: ABSENT
name: PriceSchedule
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 PositiveAssetPrice is not stated in LinkML: if (priceType = ExchangeRate
or priceType = AssetPrice) and arithmeticOperator is absent then value > 0 or datedValue
-> value all > 0'
- 'Rosetta condition PositiveSpotRate is not stated in LinkML: if (priceType = ExchangeRate
or priceType = AssetPrice) and composite -> baseValue exists then composite -> baseValue
> 0'
- 'Rosetta condition PositivePremium is not stated in LinkML: if priceType = Premium
then value > 0'
- 'Rosetta condition CurrencyUnitForInterestRate is not stated in LinkML: if priceType
= PriceTypeEnum -> InterestRate then unit -> currency exists'
- 'Rosetta condition ForwardPoint is not stated in LinkML: if composite -> operandType
= ForwardPoint then priceType = ExchangeRate'
- 'Rosetta condition AccruedInterest is not stated in LinkML: if composite -> operandType
= AccruedInterest then priceType = AssetPrice'
- 'Rosetta condition DerivedQuantityMultiplier is not stated in LinkML: derivedQuantity
-> multiplier is absent'
- 'Rosetta condition DerivedQuantityUnit is not stated in LinkML: if derivedQuantity
exists and unit exists then derivedQuantity -> unit = unit'
- 'Rosetta condition DerivedQuantityCurrency is not stated in LinkML: if derivedQuantity
exists and unit is absent then derivedQuantity -> unit -> currency exists'
from_schema: https://w3id.org/lmodel/common-domain-model
is_a: MeasureBase
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/cdm_observable_asset
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/cdm_observable_asset
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/cdm_observable_asset
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/cdm_observable_asset
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/cdm_observable_asset
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/cdm_observable_asset
owner: PriceSchedule
domain_of:
- PriceComposite
- PriceSchedule
range: ArithmeticOperationEnum
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/cdm_observable_asset
rank: 1000
owner: PriceSchedule
domain_of:
- PriceSchedule
range: PremiumTypeEnum
derivedQuantity:
name: derivedQuantity
description: 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.
from_schema: https://w3id.org/lmodel/common-domain-model/cdm_observable_asset
rank: 1000
owner: PriceSchedule
domain_of:
- PriceSchedule
range: NonNegativeQuantitySchedule
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
range: UnitType
value:
name: value
description: The initial rate or amount, as the case may be. An initial rate of
5% would be represented as 0.05.
from_schema: https://w3id.org/lmodel/common-domain-model/cdm_base_math
owner: PriceSchedule
domain_of:
- DatedValue
- Schedule
- Taxonomy
- TaxonomyClassification
- CodeValue
- AccrualFactor
- AdjustmentFactor
- ClauseLibraryVariableSet
- CSAMinimumTransferAmountVariableSet
- CSAThresholdVariableSet
- DisputeResolution
- OtherEligibleAndPostedSupport
range: decimal
datedValue:
name: datedValue
description: 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.
from_schema: https://w3id.org/lmodel/common-domain-model/cdm_base_math
rank: 1000
owner: PriceSchedule
domain_of:
- Schedule
range: DatedValue
multivalued: true
rules:
- preconditions:
any_of:
- slot_conditions:
priceType:
name: priceType
equals_string: Variance
- slot_conditions:
priceType:
name: priceType
equals_string: Volatility
- slot_conditions:
priceType:
name: priceType
equals_string: Correlation
postconditions:
slot_conditions:
unit:
name: unit
value_presence: ABSENT
perUnitOf:
name: perUnitOf
value_presence: ABSENT
elseconditions:
slot_conditions:
unit:
name: unit
value_presence: PRESENT
perUnitOf:
name: perUnitOf
value_presence: PRESENT
description: 'UnitOfAmountExists: Requires that a unit of amount must be specified
for price unless price type is Variance, Volatility or Correlation.'
- preconditions:
slot_conditions:
premiumType:
name: premiumType
value_presence: PRESENT
postconditions:
slot_conditions:
priceType:
name: priceType
equals_string: Premium
description: 'Premium: If we are applying a premium to the price then we must define
this as a premium in priceType.'
- preconditions:
slot_conditions:
arithmeticOperator:
name: arithmeticOperator
value_presence: PRESENT
equals_string: Add
postconditions:
any_of:
- slot_conditions:
priceType:
name: priceType
equals_string: AssetPrice
- slot_conditions:
priceType:
name: priceType
equals_string: InterestRate
description: 'SpreadPrice: A spread type can only be specified when the price type
is an asset price or an interest rate.'
- preconditions:
any_of:
- slot_conditions:
priceSubType:
name: priceSubType
value_presence: PRESENT
equals_string: Fee
- slot_conditions:
priceSubType:
name: priceSubType
value_presence: PRESENT
equals_string: Rebate
postconditions:
slot_conditions:
priceType:
name: priceType
equals_string: InterestRate
description: 'InterestRateFeeType: If a lending fee or rebate fee is specified then
the price type must be InterestRate.'
none_of:
- description: 'ArithmeticOperator: Operator must not be subtract or divide.'
slot_conditions:
arithmeticOperator:
name: arithmeticOperator
value_presence: PRESENT
equals_string: Subtract
- description: 'ArithmeticOperator: Operator must not be subtract or divide.'
slot_conditions:
arithmeticOperator:
name: arithmeticOperator
value_presence: PRESENT
equals_string: Divide
all_of:
- description: 'From Schedule. ValueExists: A schedule may be specified as a single
value or as a set of date-value pairs. Both attributes may be specified, in which
case the single amount number is the initial value.'
any_of:
- slot_conditions:
value:
name: value
value_presence: PRESENT
- slot_conditions:
datedValue:
name: datedValue
value_presence: PRESENT
- description: 'Choice: The price can be specified mutually exclusively as an operator
(e.g. a spread or multiplier) or a composite.'
exactly_one_of:
- slot_conditions:
arithmeticOperator:
name: arithmeticOperator
value_presence: PRESENT
- slot_conditions:
composite:
name: composite
value_presence: PRESENT
- all_of:
- slot_conditions:
arithmeticOperator:
name: arithmeticOperator
value_presence: ABSENT
- slot_conditions:
composite:
name: composite
value_presence: ABSENT