Defining Fees

The Fee Definition window allows defining fee types. Fee types can be selected in trades and be associated with fee amounts. Fee amounts can be calculated automatically according to a fee grid, or can be entered at the time of the trade.

Open the Fee Definition window from the Calypso Navigator using Configuration > Fees, Haircuts, & Margin Calls > Fee Definition (menu action trading.FeeDefinitionWindow).

When you open the Fee Definition window, all existing fee types are loaded by default.

 


Contents

- Creating a Fee Type

- Defining Fee Properties

- Defining ETD Parameters

- Defining Fee Pricer Measures

- Specifying Round Turn Fees

- Amortizing Fees Based on Effective Yield Methodology

- Modifying a Fee Type

- Deleting a Fee Type


 

1. Creating a Fee Type

» Click New to create a new fee type, and enter a type in the Type field. Then enter information into the fields as applicable. The fields are described below.
» Click Save to save your changes.

 

Fields Details

Fields

Description

Type

Enter the type of the fee, for example, COMMISSION, BROKERAGE, etc.

It will identify the fee throughout the system.

Role

Select the role of the receiver/payer of the fee.

PnL Category

Click ... to select the P&L bucket to which the fee will be added in the Official P&L report.

The possible values are:

MTM, Accrual, Accretion, MV, Other - The fee will be added to the corresponding P&L bucket in the Official P&L report.
ExcludePnL - The fee is not included in the Official P&L report.

If one of these P&L buckets is not available for selection, it indicates that the corresponding domain is not available. The values come from the domains in the form "<P&L bucket>FeeType".

A fee should have only one PnL category.

Include

If the Pricing checkbox is checked, the corresponding fee amount will be included in the pricing of the trade, provided the pricing parameter INCLUDE_FEES is set to true.

If Pricing is unchecked, the corresponding fee amount will not be included in the pricing of the trade, regardless of the value of the pricing parameter INCLUDE_FEES.

Comments

Enter a free form fee description.

Fee Offset

By default, Fee Date = Trade Date + Spot Days (from Fee currency).

However, you can enter a number of days lag to compute the fee date. By default, the days are business days. You can double-click the Bus label to change to Cal as needed. Business days are computed using the product’s holiday calendar.

In case a fee offset is defined, Fee Date = Trade Date + Spot Days (from Fee currency) + Fee Offset.

Assigning different lags to different products with the same fee type can be done through the Fee Grid, provided the fee definition uses the FeeGrid calculator.

See Defining Automatic Contract Fees for details.

Products

Click ... to select the product types to which this fee applies, or ALL.

Default Calculator

Select the calculation method of the fee. The following methods are provided out-of-the-box:

NONE - The fee amount is manually entered in the trade.
Actualize, ActualizeAlternate, ActualizeComplete, ActualizeLinear, Linear - Not supported.
AnnualPercentage - The fee amount is nominal * (fee percentage * daycount/365). The fee percentage is entered in the trade.
BaseQuoting - Only applies to FX Option trades. The fee amount is the quoting currency amount * fee bps, expressed in Base currency. The fee bps is entered in the trade.
BPNominalRepo - Only applies to Repo trades. The fee amount is ((basis points * repo nominal)/10,000) * (repo duration / daycount). The basis points are entered in the trade. The repo duration is the number of calendar days between the start and end dates.
BPPrincipalRepo - Only applies to Repo trades. The fee amount is ((basis points * repo principal)/10,000) * (repo duration / daycount). The basis points are entered in the trade. The repo duration is the number of calendar days between the start and end dates.
Brokerage - Used to compute broker fees. Refer to Calypso FX documentation for details.
CFD - Only applies to CFD trades. The fee amount is calculated using the CFD financial grid and country grid. Refer to Calypso CFD documentation for details.
Commodity - Only applies to Commodity trades. Refer to Calypso Commodities documentation for details.
CustomerTransfer - Only applies to Customer Transfer trades. This is the base method for calculating REMITTANCE, CABLE, CORRESPONDANCE, and LIFTING fees.
EquityLinkedSwapPercentage - To be used for Equity Linked Swaps instead of Percentage when the settlement currency is different from the underlying currency. The fee is in settlement currency.
FeeConfig - The fee amount is calculated based on a fee configuration (fee configurations are defined from the Calypso Navigator using Configuration > Fees, Haircuts, & Margin Calls > Fee Set Up, Fee Config panel). Fee configurations allow defining fee schedules. It is used in the context of automatic fees and invoice fees.

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

See Defining Invoice Fee Schedules for details on defining fee schedules for invoice fees.

FeeGrid – The fee amount is calculated based on a fee grid (fee grids are defined from the Calypso Navigator using Configuration > Fees, Haircuts, & Margin Calls > Fee Set Up, Fee Grid panel).

See Defining Automatic Contract Fees for details.

FeePercentage – The fee amount is related fee amount * percentage. This is used to calculate fees on fees.

For example, 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 to FEEA.

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

ISDARisklessAccrual, ISDARiskyAccrual - Not supported.
MarginPts* - All MarginPts fees apply to sales margins.

See Defining Sales Margins for details.

NoticeWithdrawalPenalty - Used for Customer Transfer penalty fee. Refer to Calypso Client Custody documentation for details.
PctBase - Only applies to FX Option trades. The fee amount is base currency amount * fee percentage, expressed in base currency. The fee percentage is entered in the trade.
PctQuoting - Only applies to FX Option trades. The fee amount is quoting currency amount * fee percentage, expressed in quoting currency. The fee percentage is entered in the trade.
Percentage - The fee amount is nominal * fee percentage. The fee percentage is entered in the trade.
PhysicalSettlementPct - To be used for Commodities instead of SettlementPct to set the fee date to the Physical Settle Date.
PortfolioSwapCommission - Used internally by Portfolio Swap trades to compute upfront commissions based on the rates specified in the Portfolio Swap Contracts.
PrincipalPct - Same as Percentage for repos but takes into account principal changes.
Quantity - The fee amount is trade quantity * fee unit. The fee unit is entered in the trade.
QuotingBase - Only applies to FX Option trades. The fee amount is base currency amount * fee bps, expressed in quoting currency. The fee bps is entered in the trade.
SettlementPct - The fee amount is settlement amount * fee percentage. The fee percentage is entered in the trade.
TransferSettleDate - Sets the fee settlement date to Booking Date + Settle Lag.

You can create custom fee calculators and register them in the feeCalculator domain. Refer to the Calypso Developer’s Guide for details.

Preferences

Check or clear the following checkboxes as needed.

Accounting

If checked, the corresponding fee amount will generate an accounting event, provided accounting generation is enabled on your system.

In addition, in the accounting configuration, you should have the following:

The accounting event type for the fee should be the same as the fee type. For example, if you have a fee definition named PREMIUM, you should have an accounting event type named PREMIUM as well.

You can also configure the following accounting event types:

<FEE TYPE> - To book the fee amount with an Effective Date equal to the Fee Date. It will not be generated if the Fee is after a Termination Date or if the Fee has already been settled when coming from a Partial Termination or Novation (if the Fee has been propagated and is already settled).
<FEE TYPE>_AM - To book the accrual fee amount between the start and end dates.
<FEE TYPE>_INC - To book the fee amount with an Effective Date equal to the Trade Date or to the Transfer Trade Date.
<FEE TYPE>_ACCRUAL_YIELD - To book the accrual fee amount calculated using constant yield.
<FEE TYPE>_ACCRUAL_SETTLE - To book the accrual fee amount between the settlement date and the end date.
<FEE TYPE>_ACCRUALREC - To book the Accrued Fee Amount on the Maturity Date / Termination Date.
<FEE TYPE>_PREMDISC_YIELD - To book the amortized fee amount based on a constant yield between the start and end dates.

If the fee calculator is FeeABSContractualYield. If the Input is 0, set keyword.YIELD to null. Otherwise take the input and set it in the keyword.YIELD. The scheduled task FEE_YIELD_COMPUTATION allows computing and updating the Fee Yield.

<FEE TYPE>_REAL - To book the fee amount on the end date.
<FEE TYPE>_REC - To book the fee amount on the maturity date, exercise date or termination date based on the event.
<FEE TYPE>_START - To book the fee amount with an Effective Date equal to the Fee Start Date.
<FEE TYPE>_TA – To book <FEE TYPE> – ACCRUAL_BS on Trade Settle Date. For example, UPFONT_FEE – ACCRUAL_BS.
<FEE TYPE>_TERMREC - To book (Fee Amount - Accrued Fee Amount) on the Maturity Date or Termination Date.
The “Fee Related Event” checkbox must be checked for these accounting event types.

Allocation

Economic Based Fees can be defined with the Allocation flag. These are fees that are calculated based on the valuation of the parent trade, such as the premium of an option. This type of fee would require recalculation if any allocated attribute is changed.

The fee attaches to the parent trade, and when the trade is allocated, the fee is allocated to the children trades in the same proportions as the parent trade's notional. The fees roll back up to the parent trade and are re-allocated in the case of an amendment to the parent.

Transfer

If checked, the corresponding fee amount will have its own transfer (generated by the transfer engine), to represent the payment or receipt of the fee.

Otherwise, the fee amount can be added to the settlement amount (see “Settlement Amount”).

Therefore, when Transfer is checked, “ Settlement Amount” should be unchecked, otherwise the fee will be counted twice.

Note: Fees with Transfer unchecked are not represented in Forward Ladder.

Settlement Amount

If checked, the fee amount will be included in the settlement amount, therefore no specific transfer will be generated for the fee.

Including the fee amount in the settlement amount has many important impacts on the system:

The fee will not appear in the cashflows, as it will be part of the settlement amount itself.
The fee currency must be the same as either the trade currency or the settlement currency of the trade.
The trade will be incorporated into the position with a price that includes the fee amount.

Note that currently, only bond, money market, future and equity trades use this checkbox. If you want to add the fee amount to the settlement amount, without any impact on the position, you should uncheck "Settlement Amount", and check “Transfer” instead with Trade Netting for these trades.

Otherwise, the fee amount can have its own transfer (see “Transfer”).

Therefore, when “Settlement Amount” is checked, “Transfer” should be unchecked, otherwise the fee will be counted twice.

 

2. Defining Fee Properties

Double-click a value cell to specify the value of the corresponding property, then press Enter.

To create new properties, click . You will be prompted to enter a property name. They are stored in the domain "feeDefinitionAttributes".

 

Fee Dates

You can use the following Fee Definition properties to set the default date per date type: FeeStartDate / FeeEndDate / FeeDate with the values Trade Date / Settle Date / Maturity Date. When any or all of the FeeDate, FeeStartDate, FeeEndDate properties are specified with a trade, settle, or maturity date, the corresponding date property fields will be automatically populated on the trade's Fee panel when the defined fee type is selected.

 Ⓘ   [NOTE: The Pricing Sheet also supports this default date feature in the Trade Fees Details window for fee types CA_SALES_MARGIN and UPFRONT_FEE.]

 

Alternate Fee Dates

Alternatively, you can create a domain “FeeDefinition.<fee type>” with:

Value = <date type>

Comment = < default date>

The date type can be: FeeStartDate / FeeEndDate / FeeDate

The default date can be: Trade Date / Settle Date / Maturity Date

The Fee Definition properties have priority over the domain definition. When FeeStartDate, FeeEndDate, FeeDate are defined as described above, they override the “spot days” logic.

 

Fee Dates by Product Type

Fee Definition attributes can be defined in the domain “feeDefinitionAttributes” by product type as <fee date>.<product type or product group>. For example, FeeEndDate.FRA.

The values for the attributes can be defined in the domains “feeDefinitionAttributes.<attribute name>”. For example, “feeDefinitionAttributes.FeeEndDate.FRA” may contain the following values:

Maturity Date

Settle Date

Trade Date

If a given fee date is defined at the product type level (attribute <fee date>.<product type or product group>), it takes priority over the fee date defined at the fee type level (attribute <fee date>).

 

3. Defining ETD Properties

The ETD panel will appear if ETD Clearing is enabled on your system.

Please refer to Calypso ETD Clearing documentation for details.

 

4. Defining Fee Pricer Measures

The following fee pricer measures can be created from the Calypso Navigator using Configuration > System > Add Pricer Measure:

<FEE TYPE> - Fee amount attached to the trade.
<FEE TYPE>_ACCRUAL_SETTLE - Fee accrual calculated between the settlement date and the end date.
<FEE TYPE>_ACCRUAL_YIELD - Fee accrual calculated using constant yield.
<FEE TYPE>_AM - Fee accrual (amortized fee).
<FEE TYPE>_AM_DC_<DAYCOUNT> - Amortized fee using specified daycount.
<FEE TYPE>_CASH - Fee P&L.
<FEE TYPE>_CASH_YIELD - Fee P&L based on yield amortization.
<FEE TYPE>_NPV - Fee NPV.
<FEE TYPE>_PREMDISC_YIELD - Fee yield-based amortization.
<FEE TYPE>_REC - Fee amount on the Termination Trade Date or on the end date of the Fee.
<FEE TYPE>_REMAIN - <FEE TYPE> - <FEE TYPE>_AM (remaining fee to amortize).
<FEE TYPE>_REMAIN_DC_<DAYCOUNT> - Remaining fee to amortize using specified daycount.
<FEE TYPE>_TA – <FEE TYPE> – ACCRUAL_BS on Trade Settle Date. For example, UPFONT_FEE – ACCRUAL_BS.
<FEE TYPE>_UNREALIZED_JAS - < FEE TYPE >_NPV - <FEE TYPE>_AM
<FEE TYPE>_EXCLUDED_<all of the above> - Combines all the fees attached to a trade into one pricer measure, except for <FEE TYPE>.

Example: You have a trade with PREMIUM, COMMISSION, and ADJUST fees. Pricer measure PREMIUM_EXLUDED will combine COMMISSION and ADJUST fees.

FEES_ALL_<all of the above> - Combines all the fees attached to a trade into one pricer measure.

 

You can then use these pricer measures for any trade.

Example:

The class is tk.pricer.PricerMeasureGenericFee, and the ID should be an ID not already in use.

 

Yield Based Amortization

<FEE TYPE>_AM is calculated using straight-line amortization by default.

When pricing parameter FEE_AM_DISCOUNT = true, <FEE TYPE>_AM is calculated using yield based amortization based on trade keyword FeeDiscountRate.

This only applies to fees with fee attribute UseFeeDiscountRate = true.

The trade keyword FeeDiscountRate can be set by the workflow rule SetFeeDiscountRateFromAFR based on the AFR rate index. You need to define the pricing environment and the rate index quote name in the rule parameters as:

PricingEnv=<pricingenvironment>,RateIndex=<rate index quote name>.

Example:

PricingEnv=default,RateIndex=MM.USD.AFR.1M.ISR

It requires the definition of the AFR rate index with a 1M tenor and ISR source.

If you want to select a different index quote name based on the contract duration, you can define the quote name as:

<contract duration>=<rate index quote name> instead

Example:

PricingEnv=default,0-3Y=MM.USD.AFR.1M.ISR,3-9Y=MM.USD.AFRMD.1M.ISR

It requires the definition of each AFR rate index with a 1M tenor and ISR source.

 

5. Specifying Round Turn Fees

Round turn fees can be setup on Future and Future Option trades. They are computed by the ROUND_TURN_FEES scheduled task when the trades are liquidated, expired, or exercised.

Refer to Calypso Futures documentation for details.

 

6. Amortizing Fees Based on Effective Yield Methodology

 

6.1 Pricer Measures

Add the following pricer measures from the Calypso Navigator using Configuration > System > Add Pricer Measure.

To calculate the UPFRONT_FEE amortization based on a constant yield, define the additional pricing measure with the format“<FEE TYPE>_PREMDISC_YIELD” and attach the class name tk.pricer.PricerMeasureGenericFee.

For example, UPFRONT_FEE_PREMDISC_YIELD.

In addition to the pricer measure linked to constant yield amortization, you can also see the ACCRUAL calculated using the constant yield (UPFRONT_FEE_ACCRUAL_YIELD) and the ACCRUAL calculated between the settle date and end date (UPFRONT_FEE_ACCRUAL_SETTLE_DATE) using the same logic.

 

6.2 Bond Templates

Define Bond Templates named <ProductType>-Currency in the Bond Definition window.

For money market products, you need to define a “reference” bond template named <product type>-<currency>. For example, for your Cash trades (product type = CASH) in EUR, you should refer to the Bond Template "cash-eur" as shown below.

The "reference" bond template is used to store the information to convert yield/price and price type, which are missing on a money market trade to correctly perform the constant yield based on the contract rate/cashflows and initial settlement amount.

 

6.3 Pricing Parameters

Set pricing parameters HYBRID_AMORTIZATION and FORECAST_FROM_CURVE:

HYBRID_AMORTIZATION = true
FORECAST_FROM_CURVE = false

 

6.4 Accounting Events

To define the related accounting event, from the Calypso Navigator, navigate to Configuration > Accounting > Eventsand add the <FEE TYPE>_PREMDISC_YIELD accounting event. For example, UPFRONT_FEE_PREMDISC_YIELD, and attach the pericer measures UPFRONT_FEE_PREMDISC_YIELD to that event. The Triggering events for this Accounting Event should be TRADE_VALUATION, CANCELED_TRADE, TERMINATED_TRADE and MATURED_TRADE.

Note that you can use the same logic to define the related accounting events for UPFRONT_FEE_ACCRUAL_YIELD and UPFRONT_FEE_ACCRUAL_SETTLE_DATE.

 

7. Modifying a Fee Type

» Select a fee type, and make changes as applicable.
» Then click Save to save your changes.

 

8. Deleting a Fee Type

» Select a fee type, and click Delete.