...
(route=ARCA),(contra=ARCA) => 0.003
Slicing
Sometimes you may want to match one particular character placed in the nth position of a string in order to assess a fee based on that sliced character. You can use brackets [ ] to do so and note that you can use this with non-numeric comparison operators (!= and =). Using [] or [:] alone will have no effect. Slicing is available beginning in version 1.6.5.68.
Example: In the Liq field there is an eight character string of "ABCDEFGH". The following examples of slicing could be used:
Condition examples | Fee Rule Syntax |
liq[1] will match against A | liq[1]=A => 0.001 |
liq[2] will match against B | liq[2]=B => 0.001 |
liq[1:2] will match against AB | liq[1:2]=AB => 0.001 |
liq[1:5] will match against ABCDE | liq[1:5]=ABCDE => 0.001 |
liq[4:] will match against DEFGH | liq[4:]=DEFGH => 0.001 |
liq[:4] will match against ABCD | liq[:4]=ABCD => 0.001 |
When multiple sliced conditions need to be true, use the AND-ing semi-colon character ";" liq[1] will match against A and liq[4] will match against D | liq[1]=A;liq[4]=D => 0.001 |
When one sliced condition needs to be true, use the OR-ing comma character "," liq[1] will match against A or liq[4] will match against D | liq[1]=A,liq[4]=D => 0.001 |
Fees
Positive fees are charges, negative fees are rebates. There are four ways to assess a fee or rebate:
Method | Example |
---|---|
Per Share | 0.003 (1,000 shares @ $2 is charged 1,000 * 0.003 = $3.00). |
Percentage of Value | 0.003% (1,000 shares @ $2 is charged $2,000 * 0.003 = $6.00). |
Fixed Amount per Execution (available in v1.5.92.51.3 or greater) | [10] ($10 is charged) |
Pass Through (do not change) | blank (the fee will be left as received from the data source) |
You can also specify a minimum/maximum of two or three fees (available in PropReports v1.5.91.17 and greater):
Example | Description |
---|---|
max(0.003%, 0.003) | Result will be the highest of : (0.003 * trade value) or (0.003 * quantity) |
min(0.003%, 0.003, 3) | Result will be the lowest of : (0.003 * trade value) or (0.003 * quantity) or 3 |
Markup/Markdown
To mark up or mark down a received (original) fee you can specify a fee as follows (PropReports v1.5.97.14.36 and greater):
Important: When using in Fee Rules plan, the fee that is being marked up/down is the computed Exchange Fee. If you need to mark up/down a different trade fee, you will need to use this within a Per Execution plan type.
Example | Description |
---|---|
markup(0.003) | Add a charge of 0.003 per share to the imported fee. |
markdown([1]) | Reduce imported fee by $1 |
Blocks
To avoid repeating the same condition you can specify blocks.
Instead of:
route=EDGA;liq=A => -
0.002
route=EDGA;liq=B =>
0.0002
You can use:
route=EDGA {
liq=A => -
0.002
liq=B =>
0.0002
}
Blocks can also be nested. For example:
route=EDGA {
penny=
true
{
liq=A => -
0.001
%
liq=B =>
0.003
%
}
liq=A => -
0.002
liq=B =>
0.0002
}
Comments
Any lines that start with a '#' are ignored. Any text following a '#' at the end of a line will also be ignored. Comments are available in PropReports v1.5.91.17 and greater.
# this Comment line will be ignored
route=EDGA;liq=A => -
0.002
route=EDGA;liq=B =>
0.002
# another comment that will be ignored