Defining Automatic Contract Fees

Fee types associated with the FeeGrid calculator can be automatically generated on a trade if:

Option 1 (Recommended option for clearing fees, when Fees are known at the inception of the trade) - You set the action on which you want to generate automatic fees using the domain “AutomaticFeesTradeEnricher.TradeAction”. The default value is NEW.

Option 2 (Recommended option when the fee generation requires trade keywords for example) - The AutomaticFees rule is set on a workflow transition in the trade workflow, for example PRICING - EXECUTE - PENDING, and PENDING - AMEND - PENDING for the fee recalculation in case of trade amendment.

The fee amount will be automatically calculated based on the fee grid.

 

Fee grids are created from the Calypso Navigator using Configuration > Fees, Haircuts, & Margin Calls > Fee Setup (menu action refdata.FeeSetUpWindow), Fee Grid panel.

By default, you can define fees for the ProcessingOrg role and for the trade counterparty role (CounterParty, or another role if you change it in the trade). The role must be the same in the Fee Definition and the Fee Grid.

For example, the fee type FEE has a fee definition and a fee grid for the role Agent. The fee will only be calculated if the role of the trade counterparty is changed to Agent on the trade, and an agent is selected as trade counterparty.

However, you can setup an automatic fee for any role, provided you add a trade keyword of specified role, and populate the trade keyword on the trade.

In the previous example, you can keep the trade counterparty role as "CounterParty", and add a trade keyword "Agent" that contains an Agent legal entity. In this case, the corresponding "Agent" fee will be generated.

The product type can be a group of products. From the Calypso Navigator, navigate to Configuration > Product > Group (menu action refdata.ProductGroupWindow) for information on creating groups of products. Note that the environment property USE_PRODUCT_GROUP should be set to true in order to allow specifying fee grids by product group.

 

1. Setup Example

The fee type COMMISSION is defined for the counterparty role with the FeeGrid calculator.

See Defining Fees for details on the Fee Definition window.

Sample fee type with FeeGrid calculator

The fee grid can be defined as shown below.

Sample fee grid

» The fee will be calculated based on the selected amount and calculator.

See Defining Fees for a description of the various calculators.

Note that the description is mandatory.

By default, the direction of the fee will be “received” by the selected legal entity (“paid” by the processing organization). To make the fee “paid” by the legal entity (“received” by the processing organization), you need to enter a negative amount in the fee grid.

» You can click Attributes to set attributes for the fee grid.

See Fee Grid Attributes for details.

» The minimum amount and maximum amount can be specified if:
The currency selection field (Ccy field) is different from ANY - In that case these amounts will be expressed in the selected currency.
The currency selection field is set to ANY, and the FeeCurrency attribute is set to a specific currency - In that case these amounts will be expressed in the FeeCurrency.

If you want to specify a fee schedule instead of a flat fee, or use a more complex calculator, select the FeeConfig calculator, and configure a fee grid.

See Defining Contract Fee Schedules for details on defining fee schedules for contract fees.

» The fee date defaults to "trade date + spot days (from the fee currency) + fee offset (from the fee definition)".

You can define a date lag and date roll between the trade date and the fee date in the fee grid - It overrides the setting of the fee definition if any. It can be used in particular in the context of terminations.

In case a lag is specified in the fee grid, Fee Date = Trade Date + Spot Days (from Fee currency) + Lag (from Fee Grid).

See Termination for details.

You can also force the fee date by setting the fee grid attribute TRADE_DATE_TYPE - See details below.

You can also use the Fee Definition properties FeeStartDate / FeeEndDate / FeeDate (if set, they override the "spot days" logic).

» Round turn setup is described in Calypso Futures documentation.
» Withholding tax setup is described under Defining Withholding Tax Fees.
» If the Authorization mode is enabled, an authorized user must approve your entry.

 

2. Fee Grid Attributes

The following attributes can be set out-of-the-box.

 

AdjustmentRelatedFees

Used in the computation of a trade overall minimum fee.

Let's say you have a trade for which three types of fees are computed (COMMISSION, EXCHANGE_FEE, CLEARING_FEE) and you want to ensure an overall minimum fee for the trade, taking into account all three fees.

You can select one of the fees as the “main” fee, COMMISSION for example, configure a fee formula that contains the other fee amounts using the variable RelatedFeesAmount, and set the fees to be taken into account in the fee grid attribute AdjustmentRelatedFees of the “main” fee.

Example:

The formula for the COMMISSION fee is: Max(3.10*Quantity + RelatedFeesAmount, 3.50*Quantity) – RelatedFeesAmount

The commission is 3.10*Quantity
The overall minimum fee is 3.50*Quantity
Attribute AdjustmentRelatedFees = EXCHANGE_FEE, CLEARING_FEE
RelatedFeesAmount is the sum of EXCHANGE_FEE and CLEARING_FEE

The COMMISSION fee will be adjusted to reflect the overall minimum fee if applicable.

 

ApplyFeeOffset

Only applies to related fees - See below.

 

DefaultLegalEntity

Short name of the legal entity that will receive/pay the fee, if different from the trade counterparty. This can be used to pay/receive a fee to/from a specific legal entity.

 

FeeCurrency

You can use this attribute to set the fee currency to a specific currency. Otherwise, the fee currency defaults to the trade currency.

 

FeeSettleCurrency

You can use this attribute to set the fee settlement currency to a specific currency. Otherwise, the fee settlement currency defaults to the fee currency.

In this case, you can also set the following attributes:

FeeSettleCurrrency.PrincingEnv or FeeSettleCurrency.FXRateName

FeeSettleCurrrency.PrincingEnv – Pricing environment to retrieve the FX quote. The User Defaults pricing environment is used if not set.

FeeSettleCurrency.FXRateName – FX Reset used to retrieve the FX quote. If empty FX.<original ccy>.<fee settle ccy> is used.

FeeSettleCurrency.FixingDate = TradeDate or FeeDate - It allows defining the fixing date used to retrieve the FX quote. If empty, FeeDate is used.

 

FEE_PAYREC

Only applies to related fees - See below.

 

RELATED_FEE

This is used to compute fees on fees using the FeePercentage calculator.

Say you want to calculate FEEB as a percentage of FEEA - Define FEEB with the FeeGrid calculator. In the fee grid, select the FeePercentage calculator, and set the attribute RELATED_FEE=FEEA.

 Ⓘ   [NOTE: RELATED_FEE can contain a comma-separated list of fee types]

 

You can also generate the fee on fee based on the direction of the related fee by setting the fee grid attribute FEE_PAYREC to REC or PAY (on the fee on fee, FEEB in this example). Otherwise, the fee is generated for each related fee.

 

In order to apply the Lag Days of the Fee Definition to the fee on fee, you need to set the fee grid attribute ApplyFeeOffset = true (on the fee on fee, FEEB in this example).

 

You can use the fee grid attribute RelatedFeeCheckRole to control the legal entity to be used by the fee on fee.

When true (default value), the fee on fee uses the role of its definition. The legal entity is taken from the trade keyword of selected role.
When false, the fee on fee is generated on the same legal entity and role as the related fee.

 

RelatedFeeCheckRole

Only applies to related fees - See above.

 

TRADE_DATE_TYPE

You can use this attribute to force the fee date:

TRADE_DATE_TYPE = CLEARED DATE: The system sets the fee date to the date stored in the trade keyword CCPClearedDate.
TRADE_DATE_TYPE = TRADE DATE: The system sets the fee date to the trade date.
TRADE_DATE_TYPE = ALTERNATE DATE: The system sets the fee date to the trade’s alternate date for FX trades.
TRADE_DATE_TYPE = DATE RULE: The fee date is set using the Date Rule defined in the attribute DateRuleName.

DateRuleName

Date Rule used to set the fee date when attribute TRADE_DATE_TYPE = DATE RULE.

 

WHT_USE_CALCULATOR

If set to true, the calculator specified on the Fee grid must be used to compute the withholding task, instead of the hard-coded calculator.

This fee calculator must implement the interface com.calypso.tk.bo.WHTFeeCalculator.

A specific fee calculator has been implemented to handle rounding conventions different than the Ccy decimals.

See Defining Withholding Tax Fees for details.

 

ZeroAmount

The fee grid attribute ZeroAmount should be set to false to prevent the generation of fees with a 0 amount. If true, the system will generate a fee with a 0 amount if a valid fee grid exists.