Defining Contract Fee Schedules
The Fee Set Up window allows defining fee schedules for the FeeConfig calculator in the context of automatic contract fees. When the FeeConfig calculator is set on the Fee Grid, the fee schedule defined in the Fee Config panel is used to compute the fee.
1. Fee Schedule Definition
From the Calypso Navigator, navigate to Configuration > Fees, Haircuts, & Margin Calls > Fee Setup (menu action refdata.FeeSetUpWindow
) to open the Fee Set Up window, Fee Config panel.
Sample contract fee schedule
In this example, if the trade notional is below 1,000,000, the fee rate is 1.2% - If the notional is 1,000,000 or above (and below 10,000,000), the fee rate is 0.8%.
» | Enter a configuration name and set the fee parameters as needed. They are described below. |
» | Then click Add to add an entry to the fee schedule. It brings up the Formula Definition dialog. It is described below. |
» | Click ![]() |
Note that if the Authorization mode is enabled, an authorized user must approve your entry.
You can also click to bring up the Browse panel for loading existing configurations.
References
These parameters are used to specify the fee.
Fields | Description | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Config ID |
ID of the configuration given by the system upon saving. |
|||||||||||||||
Name |
Enter a configuration name. |
|||||||||||||||
Config Type |
Select "Trade Fee" to generate contract fees. |
|||||||||||||||
Rule Type |
Select the reference amount unit:
|
|||||||||||||||
Scale By |
Select the reference amount of the fee schedule:
The fee rate used to compute the fee at trade capture depends on the trade's price / quantity / notional / premium. A fixed rebate may be applied at the end of the billing period to adjust the fee as needed.
|
|||||||||||||||
Range by Tenor |
Check to set the fee range by tenor, or clear to set the fee range by number of days. |
|||||||||||||||
Range by ResidualMat |
Check to set the fee range by residual maturity, or clear to set the fee range by product maturity. |
|||||||||||||||
Tiered |
Check to indicate that the reference amount is distributed over the range, rather than applied to the absolute range. For example, you have the following range:
The reference amount is 7,000.
|
|||||||||||||||
Event Type |
Select Trade. The fee is computed on trade events. |
|||||||||||||||
Fee Currency |
You can select a fee currency, or leave empty for ANY. |
|||||||||||||||
Day Count | Select a daycount as needed. | |||||||||||||||
Effective From |
Enter the effective start date of the configuration. |
|||||||||||||||
Effective To |
Enter the effective end date of the configuration (optional). |
|||||||||||||||
Description |
Enter a free form description as needed. |
Rebate
Check the Rebate checkbox to compute a fixed rebate on the contract fees, or a global rebate amount over a group of trades.
See Contract Rebate Process for details.
Fields | Description |
---|---|
Rebate Type |
Select Fixed for a fixed rebate, or Default for a global rebate amount over a group of trades. |
Rebate % |
For the Fixed rebate type, enter the rebate percentage. |
Rebate Period |
For the Default rebate type, select the rebate period:
Trade - The rebate is computed at the end of the trade. Daily - The rebate is computed daily. |
Filtering
These parameters are used to determine the conditions of application of the fee. You can use pre-defined filtering criteria, or a filter template.
Pre-defined criteria:
Fields | Description |
---|---|
Processing Org |
Select a processing organization as needed, or ALL. |
Legal Entity |
Select a legal entity of specified role, or ALL. |
Role |
Select a role. |
Fee Type |
Enter the fee type - The fee type must be defined in the Fee Definition window. |
Exchange |
Select one or multiple exchanges (legal entity of role MarketPlace), or leave empty for ALL. |
Product Type |
Select one or multiple product types, or leave empty for ALL. |
Security ID |
Enter one or multiple product IDs (separated by commas), or leave empty for ALL. |
Book |
Select one or multiple books, or leave empty for ALL. |
Book Attr |
Select one or multiple book attribute / attribute value, or leave empty for ALL. |
Currency |
Select one or multiple currencies, or leave empty for ALL. |
Account ID |
Only applies to account management fees. |
Fee Date |
Only applies to account management fees. |
SD Filter |
Select a static data filter as needed, or leave empty. |
Attributes |
Click |
Filter template:
» | To add a new filter template, choose ![]() |
» | Then choose ![]() |
Fields | Description |
---|---|
Filter Category |
Select a filter template previously created. |
Role |
Select a role. |
Fee Type |
Enter the fee type - The fee type must be defined in the Fee Definition window. |
Filter Template Criteria |
Select the values for the filter criteria defined in the filter template. In this example, the filter template contains the filter criteria Book and Strategy attribute. |
Formula Definition
Click Add to bring up the Formula Definition dialog.
Sample formula
» | Enter the parameters to define the ranges of the fee schedule. They are described below. |
» | You can type in the formula, or double-click variables and operators to add them to the formula. Only the displayed variables and operators can be used in the formula. |
» | Click OK when you are done. |
Fields | Description |
---|---|
Min Amount Max Amount |
Enter the minimum and maximum amounts of the range. It refers to the reference amount defined by the Rule Type and Scale By parameters: Quantity, Notional, or Price. No value is considered as 0 for the minimum amount, and infinite for the maximum amount. The minimum amount is inclusive. The maximum amount is non inclusive. |
Min Tenor Max Tenor Min Days Max Days |
You can also select a minimum tenor and a maximum tenor to scale the fee rates by product maturity ("Range by ResidualMat" is not checked), or by residual maturity ("Range by ResidualMat" is checked). Ⓘ [NOTE: For products without maturity date, the fee rates are scaled by settlement date instead] The minimum tenor is non-inclusive. The maximum tenor is inclusive. When the "End Date" falls on a non-business day, its is rolled to the following business day. So in this situation the minimum tenor becomes inclusive and the maximum tenor becomes non-inclusive. If "Range by Tenor" is not checked, you can enter a number of days instead of selecting a tenor. |
Calc Unit |
Enter a calculation unit when defining a fee expressed as an amount per unit. For example 2 per million of notional: Calc Unit = 1000000 and Formula = 2*UnitNotional. |
Variables |
You can use the following variables in the formula depending on the selected reference amount: Quantity Price ContractSize FarLegPrice FaceValue Duration UnitNotional Notional NotionalInFeeCurrency (uses the trade keywords <fee>.FeeCCY, <fee>.FeeLeg and <fee>.FXRate to compute the trade notional in Fee currency) Markup - The Markup allows setting a markup percentage per legal entity. You can define the legal entity attribute "Client Markup" and set a markup percentage on the attribute. For example, Client Markup = 120 for 120%. The Markup variable in the formula will be multiplied by 120%. Premium RelatedFeesAmount (see Fee Grid Attribute AdjustmentRelatedFees for details on using this variable) MADVQuantity (Monthly Average Daily Volume) TradeAccrual (trade Accrual field) TradeKeyword(xxx) - You can select TradeKeyword. LegalEntityWHT (WHT rate from legal entity attribute LegalEntityTaxRate_<COUNTRY>) WHTRate (WHT rate from Withholding Tax Configuration). |
Operators |
You can use the following operators in the formula: Subtract (-), Multiply (*), Add (+), Divide (/), Exponent (^), Absolute Value, Max, Min, Round, Round Up, Round Down. Ⓘ [NOTE: If the fee is always paid, the formula should be defined as an absolute value] |
Functions |
You can select a function in Functions area and click Add to add it to the formula. Currently, only the DayCountFactor function is available, you will be prompted to select the start date, end date and daycount.
|
2. Contract Rebate Process
The rebate of contract fees is computed as soon as contract fees are generated but are settled periodically. The billing function is therefore used to generate contract rebate fees.
The billing function requires the setup of a billing grid and a billing rule. Then based on this setup, the Billing engine creates billing trades for the rebate fees.
2.1 Defining a Billing Grid
From the Calypso Navigator, navigate to Configuration > Fees, Haircuts, & Margin Calls > Fee Set Up, and select the Billing Grid panel to define a billing grid as shown below.
Sample billing grid for contract fee rebate
» | Select the "Trade" event type, the same role as the role defined for the fee configuration, and the calculator: "TradeFeeRebate" or "TradeFeeConfigRebate" - See below for calculator details. |
» | For NAV Fees, you can select "NAVFee" event type, and the calculator: "NAVFee". |
» | You can check "Use Multiple Calculators" to generate a fee for each applicable calculator. Otherwise, a fee is generated only for the first applicable calculator. |
» | Click Add to add the calculator to the billing grid - It will bring up a dialog, just click Apply. |
» | Then click Save to save the billing grid. |
Note that if the Authorization mode is enabled, an authorized user must approve your entry.
TradeFeeRebate
This calculator allows computing a fixed rebate based on the rebate percentage specified in the Fee Config.
TradeFeeConfigRebate
This calculator allows computing a rebate (if applicable) over a group of trades that share the same billing criteria. The rebate will be the sum of the individual trade fees minus the fee amount for the group of trades (in the case where it falls in a different fee bracket).
Example:
The fee range is defined as:
Trade Qty 0-100 - Fee Formula= Qty*5
Trade Qty 100-200 - Fee Formula= Qty*2
You have the following trades:
Trade1 Qty=70 => Fee=70*5=350
Trade2 Qty=80 => Fee=80*5=400
Total Fee Amount=350+400=750
Now, if grouping these trades to compute the fee globally, the fee amount is: Fee=100*5+50*2=600
Therefore there is a rebate of Rebate = 750-600 = 150
NAVFee
This calculator allows to define a mapping between the ‘NAVAmountType’ (Part of Event 'NAVFee') and the Billing Entry Type.
2.2 Defining a Billing Rule
A billing rule must be defined to set the rebate currency and rebate settlement date.
From the Calypso Navigator, navigate to Configuration > Fees, Haircuts, & Margin Calls > Fee Billing Rule to define a billing rule.
Sample billing rule for contract fee rebate
» | Enter the following fields: |
– | Select a legal entity, or double-click the Legal Entity label to set the legal entity to ALL. |
– | Select the same role as in the billing grid. |
– | Select the billing currency - This is the settlement currency of the fee. |
– | Select the billing date rule to determine the billing frequency. |
– | Select the settlement date rule to determine the settlement frequency of the fee. |
– | Input Date Type - Select the reference date to load the trades, messages, transfers: |
TradeDate - Trade date
SettleDate - Trade value date
FeeDate - Fee date (Fee Value Date defined in the Billing Grid)
EnteredDate - Trade entered date
– | Open the "Defaults Trade Billing Values" panel, and select the transfer type of the billing trade as needed. If not set, the transfer type is set to INTEREST. Note that
transfer types are defined in the domain “flowType”. |
Ⓘ [NOTE: If the attribute EntryType is set, and the Default Transfer Type is not set, the transfer type defaults to the EntryType]
» | You also need to define the following attributes: |
– | BillingOnly - Set to True so that it is only used for billing trades. |
– | EntryType - Set to "CONTRACT REBATE". |
– | XferByBook - Set to True to create a transfer by trading book (using the book of the original trade on which the contract fee was computed). |
» | Save the billing rule. |
Note that if the Authorization mode is enabled, an authorized user must approve your entry.
» | Billing rule attributes for NAVFee |
– | BillingFeeFullPeriod - When set to True, billing trade will contain only one Billing Fee Event (having the same characteristics) for the full period. When set to False, billing trade will have more than one Billing Fee Events. |
– | BillingAccrualDayCount – Used to input DayCount for computing accruals. |
– | BillingEnableAccrual has following possible values: |
- <Empty> - PricerBilling does not compute accrual.
- FromBillingFees – Accrual will be sum of billing fee event amounts for events with Fee Date before valuation date.
- FromPrincipal –
Accrual = Billing principal x (accrual date - billing start date) / (billing end date+1 - billing start date) if Billing Rule attribute “BillingAccrualDayCount” is empty.
Accrual = Billing principal x daycount (accrual date - billing start date) / daycount (billing end date+1 - billing start date) if Billing Rule attribute “BillingAccrualDayCount” is not empty.
2.3 Generating the Billing Fees
Make sure the Billing engine subscribes to PSEventTrade events using the Engine Manager in Web Admin.
The Billing engine can be started from the Engine Manager as well.
The Billing engine creates a billing fee to book the rebate amount in the original fee currency.
You can set the book attribute "Rebate Book" on the book of the original billing trade to book the rebate fee in the rebate book. If this book attribute is not set, the rebate fee is booked in the same book as the original billing trade.
See Example of Broker Fees with Rebate for a full example.
For the TradeFeeRebate calculator, you need to run the scheduled task EOD_REBATE_FEE to convert the fee into the rebate currency if applicable, and settle the rebate fee. The rebate fee is converted using the FX rate of the last day of the billing.
For the TradeFeeConfigRebate, you need to run the scheduled task EOD_REBATE_FEE to compute the global rebate amount.
Sample EOD_REBATE_FEE scheduled task setup
You need to set the following attributes:
• | Contract Fee = True. |
• | Process - Not used. |
• | APPLY ACTION - It is possible to specify the action to be applied in the scheduled task. For example, the billing trade could stay in PENDING status during the billing period and move to VERIFIED status once the conversion is done. This could be achieved by setting the action to AUTHORIZE for example. |
• | LegalEntity - You can enter a legal entity ID as needed. |
3. Example of Broker Fees with Rebate
This example uses the volume rule on the quantity amount. The volume rule is triggered by trade events and can be used for contract or invoice fees.
The fee rate used to compute the fee at trade capture depends on the trade quantity.
Fee Definition
Sample contract fee definition for automatic fee
» | Calculator set to FeeGrid. |
Fee Grid
Sample automatic contract fee grid based on fee schedule
» | Calculator set to FeeConfig |
Fee configuration with Rebate
Sample contract fee schedule configuration
Billing Grid for Rebate Process
Sample billing grid for contract rebate process
» | Select the calculator "TradeFeeRebate". |
Fee Billing Rule for Rebate Process
Sample contract fee rebate billing rule
Equity Trade and associated Fees
4. Contract Fees - Accounting Events
4.1 Accounting of Contract Fee
Make sure that the Accounting checkbox is checked in the fee definition.
Sample contract fee definition
Then from the Calypso Navigator, navigate to Configuration > Accounting > Events to create an accounting event that has the same name as the fee type - COMMISSION in this example.
Make sure that "Fee Related Event" is checked.
Sample fee accounting event
4.2 Accounting of Rebates
From the Calypso Navigator, navigate to Configuration > Accounting > Events to create an accounting event to book the rebate amount in original fee currency with effective date = rebate settle date.
The posting is booked on the original trading book.
Sample rebate accounting event in fee currency
Then create a second accounting event to book the rebate amount in settlement currency with effective date = rebate settle date.
The posting is booked on the original trading book.
Sample rebate accounting event in settlement currency
CST postings: For the billing trade, it is necessary to book CST postings on the underlying transfers in order to book the correct fee amount on each original trading book.
To do so, you need to configure a CST event type (with property UNNET) as shown below.
Sample CST accounting event
The postings will be generated from the underlying transfers, provided the engine filter PaymentOnlyEventFilter is not set on the Accounting engine in Web Admin.