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
- Defining Fee Pricer Measures
- Amortizing Fees Based on Effective Yield Methodology
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:
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.
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
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:
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]
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:
You can also configure the following accounting event types:
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.
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:
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. |