Rule Summary
Click on any identifier to navigate to its definition.| Rule Set "Equity with American Exercise" | eqd-2 eqd-2b eqd-3 |
|---|---|
| Rule Set "Equity with Bermudan Exercise" | eqd-4 eqd-4b eqd-6 eqd-8 eqd-9 |
| Rule Set "Equity with European Exercise" | eqd-12 eqd-12b |
| Rule Set "Equity Derivative Trades" | eqd-13 eqd-13b eqd-14 eqd-14b eqd-15 eqd-17 eqd-17-shortform eqd-18 eqd-18-short eqd-19 eqd-19-short eqd-20 eqd-22 eqd-23 eqd-24 eqd-25 eqd-26 eqd-26-2 eqd-26b eqd-26b-2 eqd-27 eqd-28 eqd-29 eqd-30 eqd-31 eqd-32 |
| Global Rules | |
| Properties and Macros | "same scheme is specified in" "same currency is specified in" |
Operators
Summary of all language extensions used in the rules.| is an integer multiple of the decimal | Returns true if the first parameter is an integer multiple of the second. This rounds the decimal numbers passed as parameters before determining the answer using a modulo division. |
|---|
Model Elements
The following model elements and attributes are being referred to in the rules. Click on any element or attribute to show only rules that use them. Click the link below the table to show all rules.All Rules
-----------------------------------------------------------------------------
-- Natural Rule Language File
-- FpML 4.5 Equity Derivatives Rules
--
-- (c)2009 Model Two Zero. Licence terms:
-- http://creativecommons.org/licenses/by-nc-sa/3.0/
--
-- Original rules (c)ISDA. FpML(r) is a trademark of ISDA.
-----------------------------------------------------------------------------
-- Natural Rule Language File
-- FpML 4.5 Equity Derivatives Rules
--
-- (c)2009 Model Two Zero. Licence terms:
-- http://creativecommons.org/licenses/by-nc-sa/3.0/
--
-- Original rules (c)ISDA. FpML(r) is a trademark of ISDA.
-----------------------------------------------------------------------------
Model "schema/fpml-main-4-5.xsd"
Operators "operators.nrlop"
Rule Set "Equity with American Exercise"
Applies to a Trade where an equityOption is present and
equityOption.equityExercise.equityAmericanExercise is present
Applies to a Trade where an equityOption is present and
equityOption.equityExercise.equityAmericanExercise is present
Context: Trade
Rule "eqd-2"
equityOption.equityExercise.equityAmericanExercise.expirationDate.adjustableDate.unadjustedDate
is greater than or equal to tradeHeader.tradeDate
Rule "eqd-2"
equityOption.equityExercise.equityAmericanExercise.expirationDate.adjustableDate.unadjustedDate
is greater than or equal to tradeHeader.tradeDate
Context: Contract
Rule "eqd-2b"
equityOption.equityExercise.equityAmericanExercise.expirationDate.adjustableDate.unadjustedDate
is greater than or equal to header.contractDate
Rule "eqd-2b"
equityOption.equityExercise.equityAmericanExercise.expirationDate.adjustableDate.unadjustedDate
is greater than or equal to header.contractDate
Context: EquityAmericanExercise
Rule "eqd-3"
If latestExerciseTimeType is equal to TimeTypeEnum.SpecificTime then latestExerciseTime is present
Rule "eqd-3"
If latestExerciseTimeType is equal to TimeTypeEnum.SpecificTime then latestExerciseTime is present
Rule Set "Equity with Bermudan Exercise"
Applies to a Trade where equityOption.equityExercise.equityBermudaExercise is present
Applies to a Trade where equityOption.equityExercise.equityBermudaExercise is present
Context: Trade
Rule "eqd-4"
equityOption.equityExercise.equityBermudaExercise.commencementDate.adjustableDate.unadjustedDate
is greater than or equal to tradeHeader.tradeDate
Rule "eqd-4"
equityOption.equityExercise.equityBermudaExercise.commencementDate.adjustableDate.unadjustedDate
is greater than or equal to tradeHeader.tradeDate
Context: Contract
Rule "eqd-4b"
equityOption.equityExercise.equityBermudaExercise.commencementDate.adjustableDate.unadjustedDate
is greater than or equal to header.contractDate
Rule "eqd-4b"
equityOption.equityExercise.equityBermudaExercise.commencementDate.adjustableDate.unadjustedDate
is greater than or equal to header.contractDate
Context: EquityBermudaExercise
Rule "eqd-6"
If latestExerciseTimeType is equal to TimeTypeEnum.SpecificTime then latestExerciseTime is present
Rule "eqd-6"
If latestExerciseTimeType is equal to TimeTypeEnum.SpecificTime then latestExerciseTime is present
Context: EquityBermudaExercise
Rule "eqd-8"
For each "date" in the collection of bermudaExerciseDates.date, the date is greater than or equal to
EquityBermudaExercise.commencementDate.adjustableDate.unadjustedDate
Rule "eqd-8"
For each "date" in the collection of bermudaExerciseDates.date, the date is greater than or equal to
EquityBermudaExercise.commencementDate.adjustableDate.unadjustedDate
Context: EquityBermudaExercise
Rule "eqd-9"
For each "date" in the collection of bermudaExerciseDates.date, the date is less than or equal to
EquityBermudaExercise.expirationDate.adjustableDate.unadjustedDate
Rule "eqd-9"
For each "date" in the collection of bermudaExerciseDates.date, the date is less than or equal to
EquityBermudaExercise.expirationDate.adjustableDate.unadjustedDate
Rule Set "Equity with European Exercise"
Applies to a Trade where equityOption.equityExercise.equityEuropeanExercise is present
Applies to a Trade where equityOption.equityExercise.equityEuropeanExercise is present
Context: Trade
Rule "eqd-12"
equityOption.equityExercise.equityEuropeanExercise.expirationDate.adjustableDate.unadjustedDate
is greater than or equal to tradeHeader.tradeDate
Rule "eqd-12"
equityOption.equityExercise.equityEuropeanExercise.expirationDate.adjustableDate.unadjustedDate
is greater than or equal to tradeHeader.tradeDate
Context: Contract
Rule "eqd-12b"
equityOption.equityExercise.equityEuropeanExercise.expirationDate.adjustableDate.unadjustedDate
is greater than or equal to header.contractDate
Rule "eqd-12b"
equityOption.equityExercise.equityEuropeanExercise.expirationDate.adjustableDate.unadjustedDate
is greater than or equal to header.contractDate
Rule Set "Equity Derivative Trades"
Applies to a Trade where equityOption is present or equityForward is present or equityOptionTransactionSupplement
is present or equitySwap is present or equitySwapTransactionSupplement is present or brokerEquityOption
is present
Applies to a Trade where equityOption is present or equityForward is present or equityOptionTransactionSupplement
is present or equitySwap is present or equitySwapTransactionSupplement is present or brokerEquityOption
is present
Context: Trade
Rule "eqd-13"
If equityOption.equityPremium.paymentDate.unadjustedDate is present then
equityOption.equityPremium.paymentDate.unadjustedDate is greater than or equal to
tradeHeader.tradeDate
Rule "eqd-13"
If equityOption.equityPremium.paymentDate.unadjustedDate is present then
equityOption.equityPremium.paymentDate.unadjustedDate is greater than or equal to
tradeHeader.tradeDate
Context: Contract
Rule "eqd-13b"
If equityOption.equityPremium.paymentDate.unadjustedDate is present then
equityOption.equityPremium.paymentDate.unadjustedDate is greater than or equal to
header.contractDate
Rule "eqd-13b"
If equityOption.equityPremium.paymentDate.unadjustedDate is present then
equityOption.equityPremium.paymentDate.unadjustedDate is greater than or equal to
header.contractDate
Context: Trade
Rule "eqd-14"
If brokerEquityOption.equityPremium.paymentDate.unadjustedDate is present then
brokerEquityOption.equityPremium.paymentDate.unadjustedDate is greater than or equal to
tradeHeader.tradeDate
Rule "eqd-14"
If brokerEquityOption.equityPremium.paymentDate.unadjustedDate is present then
brokerEquityOption.equityPremium.paymentDate.unadjustedDate is greater than or equal to
tradeHeader.tradeDate
Context: Contract
Rule "eqd-14b"
If brokerEquityOption.equityPremium.paymentDate.unadjustedDate is present then
brokerEquityOption.equityPremium.paymentDate.unadjustedDate is greater than or equal to
header.contractDate
Rule "eqd-14b"
If brokerEquityOption.equityPremium.paymentDate.unadjustedDate is present then
brokerEquityOption.equityPremium.paymentDate.unadjustedDate is greater than or equal to
header.contractDate
Context: EquityExerciseValuationSettlement
Rule "eqd-15"
If equityValuation.valuationDate.adjustableDate is present and equityEuropeanExercise is present then
equityValuation.valuationDate.adjustableDate.unadjustedDate is equal to
equityEuropeanExercise.expirationDate.adjustableDate.unadjustedDate
Rule "eqd-15"
If equityValuation.valuationDate.adjustableDate is present and equityEuropeanExercise is present then
equityValuation.valuationDate.adjustableDate.unadjustedDate is equal to
equityEuropeanExercise.expirationDate.adjustableDate.unadjustedDate
Context: EquityOption
Rule "eqd-17"
If numberOfOptions > 0 and equityExercise.equityAmericanExercise.equityMultipleExercise.maximumNumberOfOptions
is present then equityExercise.equityAmericanExercise.equityMultipleExercise.maximumNumberOfOptions *
equityExercise.equityAmericanExercise.equityMultipleExercise.integralMultipleExercise >=
numberOfOptions
Rule "eqd-17"
If numberOfOptions > 0 and equityExercise.equityAmericanExercise.equityMultipleExercise.maximumNumberOfOptions
is present then equityExercise.equityAmericanExercise.equityMultipleExercise.maximumNumberOfOptions *
equityExercise.equityAmericanExercise.equityMultipleExercise.integralMultipleExercise >=
numberOfOptions
Context: EquityDerivativeShortFormBase
Rule "eqd-17-shortform"
If numberOfOptions > 0 and equityExercise.equityAmericanExercise.equityMultipleExercise.maximumNumberOfOptions
is present then equityExercise.equityAmericanExercise.equityMultipleExercise.maximumNumberOfOptions *
equityExercise.equityAmericanExercise.equityMultipleExercise.integralMultipleExercise >=
numberOfOptions
Rule "eqd-17-shortform"
If numberOfOptions > 0 and equityExercise.equityAmericanExercise.equityMultipleExercise.maximumNumberOfOptions
is present then equityExercise.equityAmericanExercise.equityMultipleExercise.maximumNumberOfOptions *
equityExercise.equityAmericanExercise.equityMultipleExercise.integralMultipleExercise >=
numberOfOptions
Context: EquityOption
Rule "eqd-18"
If equityExercise.equityBermudaExercise.equityMultipleExercise is present and
numberOfOptions is present and numberOfOptions > 0 then
equityExercise.equityBermudaExercise.equityMultipleExercise.maximumNumberOfOptions *
equityExercise.equityBermudaExercise.equityMultipleExercise.integralMultipleExercise <=
numberOfOptions
Rule "eqd-18"
If equityExercise.equityBermudaExercise.equityMultipleExercise is present and
numberOfOptions is present and numberOfOptions > 0 then
equityExercise.equityBermudaExercise.equityMultipleExercise.maximumNumberOfOptions *
equityExercise.equityBermudaExercise.equityMultipleExercise.integralMultipleExercise <=
numberOfOptions
Context: EquityDerivativeShortFormBase
Rule "eqd-18-short"
If equityExercise.equityBermudaExercise.equityMultipleExercise is present and
numberOfOptions is present and numberOfOptions > 0 then
equityExercise.equityBermudaExercise.equityMultipleExercise.maximumNumberOfOptions *
equityExercise.equityBermudaExercise.equityMultipleExercise.integralMultipleExercise <=
numberOfOptions
Rule "eqd-18-short"
If equityExercise.equityBermudaExercise.equityMultipleExercise is present and
numberOfOptions is present and numberOfOptions > 0 then
equityExercise.equityBermudaExercise.equityMultipleExercise.maximumNumberOfOptions *
equityExercise.equityBermudaExercise.equityMultipleExercise.integralMultipleExercise <=
numberOfOptions
Context: EquityOption
Rule "eqd-19"
If a notional is present and equityPremium.percentageOfNotional is present and equityPremium.paymentAmount
is present and the same currency is specified in notional.currency and equityPremium.paymentAmount.currency then
equityPremium.paymentAmount.amount = notional.amount * equityPremium.percentageOfNotional
Rule "eqd-19"
If a notional is present and equityPremium.percentageOfNotional is present and equityPremium.paymentAmount
is present and the same currency is specified in notional.currency and equityPremium.paymentAmount.currency then
equityPremium.paymentAmount.amount = notional.amount * equityPremium.percentageOfNotional
Context: EquityDerivativeShortFormBase
Rule "eqd-19-short"
If a notional is present and equityPremium.percentageOfNotional is present and equityPremium.paymentAmount
is present and the same currency is specified in notional.currency and equityPremium.paymentAmount.currency then
equityPremium.paymentAmount.amount = notional.amount * equityPremium.percentageOfNotional
Rule "eqd-19-short"
If a notional is present and equityPremium.percentageOfNotional is present and equityPremium.paymentAmount
is present and the same currency is specified in notional.currency and equityPremium.paymentAmount.currency then
equityPremium.paymentAmount.amount = notional.amount * equityPremium.percentageOfNotional
Context: EquityOption
Rule "eqd-20"
If numberOfOptions is present and optionEntitlement is present and equityPremium.paymentAmount is present
and equityPremium.pricePerOption is present and the same currency is specified in
equityPremium.paymentAmount.currency and equityPremium.pricePerOption.currency then
equityPremium.paymentAmount.amount = equityPremium.pricePerOption.amount * numberOfOptions * optionEntitlement
Rule "eqd-20"
If numberOfOptions is present and optionEntitlement is present and equityPremium.paymentAmount is present
and equityPremium.pricePerOption is present and the same currency is specified in
equityPremium.paymentAmount.currency and equityPremium.pricePerOption.currency then
equityPremium.paymentAmount.amount = equityPremium.pricePerOption.amount * numberOfOptions * optionEntitlement
Context: EquityDerivativeBase
Rule "eqd-22"
buyerPartyReference.href is not equal to sellerPartyReference.href
Rule "eqd-22"
buyerPartyReference.href is not equal to sellerPartyReference.href
Context: Trade
Rule "eqd-23"
If equityOption.equityEffectiveDate is present then
equityOption.equityEffectiveDate is greater than or equal to tradeHeader.tradeDate
Rule "eqd-23"
If equityOption.equityEffectiveDate is present then
equityOption.equityEffectiveDate is greater than or equal to tradeHeader.tradeDate
Context: AveragingSchedule
Rule "eqd-24"
startDate is less than or equal to endDate
Rule "eqd-24"
startDate is less than or equal to endDate
Context: BrokerEquityOption
Rule "eqd-25"
If numberOfOptions is present and numberOfOptions > 0 and
equityPremium.paymentAmount is present and equityPremium.pricePerOption
is present and the same currency is specified in equityPremium.paymentAmount.currency and
equityPremium.pricePerOption.currency then
equityPremium.paymentAmount.amount = equityPremium.pricePerOption.amount * numberOfOptions
Rule "eqd-25"
If numberOfOptions is present and numberOfOptions > 0 and
equityPremium.paymentAmount is present and equityPremium.pricePerOption
is present and the same currency is specified in equityPremium.paymentAmount.currency and
equityPremium.pricePerOption.currency then
equityPremium.paymentAmount.amount = equityPremium.pricePerOption.amount * numberOfOptions
Context: EquityOption
Rule "eqd-26"
If numberOfOptions is present and numberOfOptions > 0 and
equityExercise.equityAmericanExercise.equityMultipleExercise.maximumNumberOfOptions
is present then equityExercise.equityAmericanExercise.equityMultipleExercise.maximumNumberOfOptions
<= numberOfOptions
Rule "eqd-26"
If numberOfOptions is present and numberOfOptions > 0 and
equityExercise.equityAmericanExercise.equityMultipleExercise.maximumNumberOfOptions
is present then equityExercise.equityAmericanExercise.equityMultipleExercise.maximumNumberOfOptions
<= numberOfOptions
Context: EquityDerivativeShortFormBase
Rule "eqd-26-2"
If numberOfOptions is present and numberOfOptions > 0 and
equityExercise.equityAmericanExercise.equityMultipleExercise.maximumNumberOfOptions
is present then equityExercise.equityAmericanExercise.equityMultipleExercise.maximumNumberOfOptions
<= numberOfOptions
Rule "eqd-26-2"
If numberOfOptions is present and numberOfOptions > 0 and
equityExercise.equityAmericanExercise.equityMultipleExercise.maximumNumberOfOptions
is present then equityExercise.equityAmericanExercise.equityMultipleExercise.maximumNumberOfOptions
<= numberOfOptions
Context: EquityOption
Rule "eqd-26b"
If numberOfOptions is present and numberOfOptions > 0 and
equityExercise.equityBermudaExercise.equityMultipleExercise.maximumNumberOfOptions
is present then equityExercise.equityBermudaExercise.equityMultipleExercise.maximumNumberOfOptions
<= numberOfOptions
Rule "eqd-26b"
If numberOfOptions is present and numberOfOptions > 0 and
equityExercise.equityBermudaExercise.equityMultipleExercise.maximumNumberOfOptions
is present then equityExercise.equityBermudaExercise.equityMultipleExercise.maximumNumberOfOptions
<= numberOfOptions
Context: EquityDerivativeShortFormBase
Rule "eqd-26b-2"
If numberOfOptions is present and numberOfOptions > 0 and
equityExercise.equityBermudaExercise.equityMultipleExercise.maximumNumberOfOptions
is present then equityExercise.equityBermudaExercise.equityMultipleExercise.maximumNumberOfOptions
<= numberOfOptions
Rule "eqd-26b-2"
If numberOfOptions is present and numberOfOptions > 0 and
equityExercise.equityBermudaExercise.equityMultipleExercise.maximumNumberOfOptions
is present then equityExercise.equityBermudaExercise.equityMultipleExercise.maximumNumberOfOptions
<= numberOfOptions
Context: EquityMultipleExercise
Rule "eqd-27"
maximumNumberOfOptions >= minimumNumberOfOptions
Rule "eqd-27"
maximumNumberOfOptions >= minimumNumberOfOptions
Context: EquityMultipleExercise
Rule "eqd-28"
If integralMultipleExercise is present then minimumNumberOfOptions [is an integer multiple of the decimal]
integralMultipleExercise
Rule "eqd-28"
If integralMultipleExercise is present then minimumNumberOfOptions [is an integer multiple of the decimal]
integralMultipleExercise
Context: EquityMultipleExercise
Rule "eqd-29"
If integralMultipleExercise is present then maximumNumberOfOptions
[is an integer multiple of the decimal] integralMultipleExercise
Rule "eqd-29"
If integralMultipleExercise is present then maximumNumberOfOptions
[is an integer multiple of the decimal] integralMultipleExercise
Context: Contract
Rule "eqd-30"
If equityOption.equityEffectiveDate is present then equityOption.equityEffectiveDate
is greater than or equal to header.contractDate
Rule "eqd-30"
If equityOption.equityEffectiveDate is present then equityOption.equityEffectiveDate
is greater than or equal to header.contractDate
Context: Trade
Rule "eqd-31"
If equityOption.equityEffectiveDate is present then
equityOption.equityEffectiveDate >= tradeHeader.tradeDate else
if brokerEquityOption.equityEffectiveDate is present then
brokerEquityOption.equityEffectiveDate >= tradeHeader.tradeDate else
if equityForward.equityEffectiveDate is present then
equityForward.equityEffectiveDate >= tradeHeader.tradeDate
Rule "eqd-31"
If equityOption.equityEffectiveDate is present then
equityOption.equityEffectiveDate >= tradeHeader.tradeDate else
if brokerEquityOption.equityEffectiveDate is present then
brokerEquityOption.equityEffectiveDate >= tradeHeader.tradeDate else
if equityForward.equityEffectiveDate is present then
equityForward.equityEffectiveDate >= tradeHeader.tradeDate
Context: Contract
Rule "eqd-32"
If equityOption.equityEffectiveDate is present then
equityOption.equityEffectiveDate >= header.contractDate else
if brokerEquityOption.equityEffectiveDate is present then
brokerEquityOption.equityEffectiveDate >= header.contractDate else
if equityForward.equityEffectiveDate is present then
equityForward.equityEffectiveDate >= header.contractDate
Rule "eqd-32"
If equityOption.equityEffectiveDate is present then
equityOption.equityEffectiveDate >= header.contractDate else
if brokerEquityOption.equityEffectiveDate is present then
brokerEquityOption.equityEffectiveDate >= header.contractDate else
if equityForward.equityEffectiveDate is present then
equityForward.equityEffectiveDate >= header.contractDate
Context: Currency ("currencyA"), Currency ("currencyB")
Property "same scheme is specified in"
(currencyA.currencyScheme is not present and
currencyB.currencyScheme is not present) or
(currencyA.currencyScheme is present and
currencyB.currencyScheme is present and
currencyA.currencyScheme = currencyB.currencyScheme)
Property "same scheme is specified in"
(currencyA.currencyScheme is not present and
currencyB.currencyScheme is not present) or
(currencyA.currencyScheme is present and
currencyB.currencyScheme is present and
currencyA.currencyScheme = currencyB.currencyScheme)
Context: Currency ("currencyA"), Currency ("currencyB")
Property "same currency is specified in"
(The same scheme is specified in currencyA and currencyB) and
currencyA = currencyB
Property "same currency is specified in"
(The same scheme is specified in currencyA and currencyB) and
currencyA = currencyB