Differences
This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision | ||
desktop:custom_strategies [2025/03/27 19:19] – [Strategy Editor-Legs Tab] rob | desktop:custom_strategies [2025/03/27 20:15] (current) – [T4 Custom Strategies Calculations] rob | ||
---|---|---|---|
Line 87: | Line 87: | ||
====== Strategy Editor-Reverse Tab ====== | ====== Strategy Editor-Reverse Tab ====== | ||
- | Image | + | |
- | Reverse Tab | + | {{: |
- | Reverse Strategy Enable: Determines whether a balancing Reverse Strategy is executed if a leg is rejected. | + | |
- | A Reverse Strategy attempts to balance potential fills of non-rejected orders from the original strategy. | + | __**Reverse Tab**__ |
- | As the strategy market is executing client-side, | + | |
- | If Reverse Strategy is not Enabled, leg rejections may result in an Unbalanced Strategy. Such Unbalanced Strategy would have to be balanced manually by launching the constituent Leg Contracts. | + | * **Reverse Strategy Enable:** Determines whether a balancing Reverse Strategy is executed if a leg is rejected. A Reverse Strategy attempts to balance potential fills of non-rejected orders from the original strategy. As the strategy market is executing client-side, |
- | Reverse Only To Open: Only execute the Reverse Strategy when opening a position (i.e. the strategy market is flat). | + | * **Reverse Only To Open:** Only execute the Reverse Strategy when opening a position (i.e. the strategy market is flat). |
- | Pulls on Reverse: Determines if pulls are allowed while a balancing Reverse Strategy is executing per a previous leg rejection." | + | * **Pulls on Reverse:** Determines if pulls are allowed while a balancing Reverse Strategy is executing per a previous leg rejection." |
- | Reverse Fills at Market: Determines if the balancing orders of the Reverse Strategy are entered at market price instead of the filled price. | + | * **Reverse Fills at Market:** Determines if the balancing orders of the Reverse Strategy are entered at market price instead of the filled price. |
- | If both Reverse Fills At Market and Reverse Fills At TOB are unchecked, the Reverse Strategy orders are submitted at the fill prices of the non-rejected orders. This default behavior attempts to reverse fills without a loss." | + | |
- | Reverse Fills at TOB: Determines if the balancing orders of the Reverse Strategy are entered at the top-of-book (tob) price instead of the filled price. | + | * **Reverse Fills at TOB:** Determines if the balancing orders of the Reverse Strategy are entered at the top-of-book (tob) price instead of the filled price. |
- | If both Reverse Fills At Market and Reverse Fills At TOB are unchecked, the Reverse Strategy orders are submitted at the fill prices of the non-rejected orders. This default behavior attempts to reverse fills without a loss." | + | |
- | Dialog Display: Determines if a Strategy Manager' | + | * **Dialog Display:** Determines if a Strategy Manager' |
====== Strategy Editor-Advanced Pricing ====== | ====== Strategy Editor-Advanced Pricing ====== | ||
- | Image | ||
- | Advanced Pricing Tab | ||
- | Price Parameters Leg: Leg to use for the strategy' | ||
- | By default, the strategy automatically uses the price parameters of the first defined leg (i.e. Leg 1). | ||
- | Price Parameters Method: The method to use to set up Price Parameters (i.e. TickValue, Numerator, Denominator) for the spread market. | + | {{: |
- | The Auto method indicates that the price parameters will be automatically selected from the defined Price Parameters Leg. | + | |
+ | __**Advanced Pricing Tab**__ | ||
+ | |||
+ | * **Price Parameters Leg:** Leg to use for the strategy' | ||
+ | |||
+ | * **Price Parameters Method:** The method to use to set up Price Parameters (i.e. TickValue, Numerator, Denominator) for the spread market. | ||
+ | | ||
+ | * The Override method allows the manual override of price parameters. The override price parameters are defaulted to -1. If any override price parameter is not modified from -1, the corresponding price parameter from the selected Price Parameters Leg will be used." | ||
- | The Override method allows the manual override of price parameters. The override price parameters are defaulted | + | * **Price Code Disabled:** Enables/ |
- | Price Code Disabled: Enables/ | + | * **Include Leg Implied Prices:** Whether to include implied prices from leg spreads into the leg outright bid and offer books. Implied prices from an underlying leg market are only included if such leg supports trading implieds. |
- | By default, PriceCode is enabled to display prices in traditional form. When disabled for special cases (e.g. yield calculations), | + | * **Sampling Rate:** The rate (in milliseconds) at which strategy quotes are built from the quotes of the underlying leg markets. Minimum value = 0 ms. Maximum value = 20 ms. Default value = 0 ms (asynchronous). |
- | Include Leg Implied Prices: Whether to include implied prices from leg spreads into the leg outright bid and offer books. Implied prices from an underlying leg market are only included if such leg supports trading implieds. | + | |
- | Sampling Rate: The rate (in milliseconds) at which strategy quotes are built from the quotes of the underlying leg markets. Minimum value = 0 ms. Maximum value = 20 ms. Default value = 0 ms (asynchronous). | + | |
- | Subscription Rate: Subscription rate of depth/trade updates for the strategy legs: | + | |
- | Values allowed: | + | |
- | Fast (DepthBuffer.FastTrade) | + | * **Subscription Rate:** Subscription rate of depth/trade updates for the strategy legs: |
- | Normal | + | __Values allowed: |
- | Slow (DepthBuffer.SlowTrade). | + | * __Fast__ |
+ | * __Normal__ | ||
+ | * __Slow__ | ||
+ | |||
+ | <WRAP center round important 100%> | ||
Please note that FastTrade can lead to significant CPU requirements under fast markets. | Please note that FastTrade can lead to significant CPU requirements under fast markets. | ||
+ | </ | ||
- | Trade Matching Interval: Maximum time interval (in milliseconds) between adjacent leg trades in order to match a strategy trade. Default: 50 milliseconds. Minimum=1. | + | |
+ | * **Trade Matching Interval:** Maximum time interval (in milliseconds) between adjacent leg trades in order to match a strategy trade. Default: 50 milliseconds. Minimum=1. | ||
+ | |||
+ | <WRAP center round important 100%> | ||
Please note a higher value will result in increased trade matching and more demanding cpu requirements. | Please note a higher value will result in increased trade matching and more demanding cpu requirements. | ||
+ | </ | ||
+ | |||
- | Due to Spread Matching: When enabled, strategy trade matching (for charts and asynchronous trades) also includes implied leg trades from spreads. Note that exchange-provided implied leg trade prices may be off market. This may generate noise in charts. Default = Disabled." | + | * **Due to Spread Matching:** When enabled, strategy trade matching (for charts and asynchronous trades) also includes implied leg trades from spreads. Note that exchange-provided implied leg trade prices may be off market. This may generate noise in charts. Default = Disabled." |
====== Quote Snapshot ====== | ====== Quote Snapshot ====== | ||
ou can open a quote snapshot from your New Screen Drop Down located on the trading ladder of your strategy or you can right click on your strategy in your custom strategies window and it will open a new window that breaks down the spread quotes into the constituent leg quotes and volumes for each depth level. | ou can open a quote snapshot from your New Screen Drop Down located on the trading ladder of your strategy or you can right click on your strategy in your custom strategies window and it will open a new window that breaks down the spread quotes into the constituent leg quotes and volumes for each depth level. | ||
- | Image | + | {{: |
Once you have selected the quote snapshot it will bring up a window that breaks down the spread quotes into the constituent leg quotes and volumes for each depth level. Keep in mind this is a snapshot and it will not keep updating as the market updates you can click the refresh buttonImage that will take a new snapshot of the market. | Once you have selected the quote snapshot it will bring up a window that breaks down the spread quotes into the constituent leg quotes and volumes for each depth level. Keep in mind this is a snapshot and it will not keep updating as the market updates you can click the refresh buttonImage that will take a new snapshot of the market. | ||
- | Image | + | {{: |
From the Snapshot window you can click on one of the offer or bid levels value area and it will bring up a window that will break down calculation of that price level. See the below image for the break down of Offer level 5. | From the Snapshot window you can click on one of the offer or bid levels value area and it will bring up a window that will break down calculation of that price level. See the below image for the break down of Offer level 5. | ||
- | Image | + | {{: |
From the above window you can left click anywhere in the window to bring up the Strategy quote calculation window which will further breakdown how the price was calculated at that level. | From the above window you can left click anywhere in the window to bring up the Strategy quote calculation window which will further breakdown how the price was calculated at that level. | ||
- | Image | + | {{: |
====== Quick Start Guide ====== | ====== Quick Start Guide ====== | ||
Line 153: | Line 162: | ||
To start a new strategy from scratch, click Create New (3) on the right side. To build a strategy based on one of the existing templates, click the desired template followed by New From Template (4). Both of these buttons will open the Strategy Editor. | To start a new strategy from scratch, click Create New (3) on the right side. To build a strategy based on one of the existing templates, click the desired template followed by New From Template (4). Both of these buttons will open the Strategy Editor. | ||
- | Image | + | {{: |
Within the Spread tab (1) of the Strategy Editor, give the new strategy a name in the Description box (2). Then click the Legs tab (3) to configure the legs of the strategy. | Within the Spread tab (1) of the Strategy Editor, give the new strategy a name in the Description box (2). Then click the Legs tab (3) to configure the legs of the strategy. | ||
- | Image | + | {{: |
Click the Add New Leg button (1) to add the first leg of the strategy. Repeat this step until all legs have been added. If just two legs are chosen and both legs are of the same product, the Market Generation Mode (2) will need to be changed to Sequential Calendar Expiries, or the Fixed Market dropdowns (3) will need to be changed to specify the desired expirations for each leg. Next choose whether each leg is being bought or sold by changing the Leg Side dropdown (4). If you plan on executing orders through the Custom Strategies be sure to adjust the Trade Ratio (5) to reflect the number of contracts of each leg you would like to buy or sell for each 1 lot placed in the strategy. Changing this factor will not change how the price of the strategy is calculated. Instead, adjust the Leg Multiplier (6) to change the price calculation. For example, if a particular strategy is quoted by multiplying the first leg’s price by 2 and subtracting the second leg’s price as-is, the first leg would have a leg multiplier of 2 while the second leg would remain at 1. Once the parameters have been set, click the Create/ | Click the Add New Leg button (1) to add the first leg of the strategy. Repeat this step until all legs have been added. If just two legs are chosen and both legs are of the same product, the Market Generation Mode (2) will need to be changed to Sequential Calendar Expiries, or the Fixed Market dropdowns (3) will need to be changed to specify the desired expirations for each leg. Next choose whether each leg is being bought or sold by changing the Leg Side dropdown (4). If you plan on executing orders through the Custom Strategies be sure to adjust the Trade Ratio (5) to reflect the number of contracts of each leg you would like to buy or sell for each 1 lot placed in the strategy. Changing this factor will not change how the price of the strategy is calculated. Instead, adjust the Leg Multiplier (6) to change the price calculation. For example, if a particular strategy is quoted by multiplying the first leg’s price by 2 and subtracting the second leg’s price as-is, the first leg would have a leg multiplier of 2 while the second leg would remain at 1. Once the parameters have been set, click the Create/ | ||
When setting up your spread there are more options to better configure your spread for a more indepth break down of category' | When setting up your spread there are more options to better configure your spread for a more indepth break down of category' | ||
- | Image | + | |
+ | {{: | ||
After a custom strategy has been created, it can be edited by selecting it and clicking the Edit button (1). To trade or see quotes for a strategy, select it from the Custom Strategies window then click the Trade/ | After a custom strategy has been created, it can be edited by selecting it and clicking the Edit button (1). To trade or see quotes for a strategy, select it from the Custom Strategies window then click the Trade/ | ||
- | Image | + | {{: |
Within the contract window for a custom strategy, the dropdown menu (1) will contain three new features. Leg Contracts (2) will open additional contract windows for each of the legs of the strategy. Snapshot Quote (3) will open a new window that breaks down the spread quotes into the constituent leg quotes and volumes for each depth level. The Strategy Definition button (4) will open a view-only version of the Strategy Editor to display the complete strategy configuration at a glance. | Within the contract window for a custom strategy, the dropdown menu (1) will contain three new features. Leg Contracts (2) will open additional contract windows for each of the legs of the strategy. Snapshot Quote (3) will open a new window that breaks down the spread quotes into the constituent leg quotes and volumes for each depth level. The Strategy Definition button (4) will open a view-only version of the Strategy Editor to display the complete strategy configuration at a glance. | ||
- | Image | + | {{: |
Upon logging out of T4, if you have any orders working in the Custom Strategies you will be asked if you would like to save them for your next session. If you choose yes, the next time you login you will see the Saved Strategy Orders window on top of the other windows in your workspace. You can check any orders you would like to resubmit (1), then click the Submit Checked button (2) to put the orders back in the Custom Strategies or the Cancel button (3) to discard them. Any orders that would be filled instantly upon resubmitting will have a yellow background (4) behind the order type field. After either submitting or cancelling the orders they will be permanently removed from the server and will need to be manually resubmitted if desired after that point. | Upon logging out of T4, if you have any orders working in the Custom Strategies you will be asked if you would like to save them for your next session. If you choose yes, the next time you login you will see the Saved Strategy Orders window on top of the other windows in your workspace. You can check any orders you would like to resubmit (1), then click the Submit Checked button (2) to put the orders back in the Custom Strategies or the Cancel button (3) to discard them. Any orders that would be filled instantly upon resubmitting will have a yellow background (4) behind the order type field. After either submitting or cancelling the orders they will be permanently removed from the server and will need to be manually resubmitted if desired after that point. | ||
- | Image | + | {{: |
- | Image | + | {{: |
- | + | ||
- | Image | + | |
+ | {{: | ||
====== T4 Custom Strategies Calculations ====== | ====== T4 Custom Strategies Calculations ====== | ||
- | Inputs Description | ||
- | Ticks This is the price of the product as published by the exchange. Note that this value may not match the display price. | ||
- | TickValue This is the cash value of a minimum tick for the product multiplied by the leg multiplier chosen for that leg, i.e. a leg multiplier of 3 with a $10 minimum tick creates a $30 TickValue. | ||
- | Numerator The minimum tick increment in the same terms as the " | ||
- | Denominator The value sent from the exchange that divides into Ticks to create a decimal value. | ||
- | PriceCode If applicable, this applies a special conversion to a decimal value to create a more legible display price, i.e. a 10yr Note decimal price of 127.296875 becomes 127095 after applying the appropriate PriceCode. | ||
- | DisplayFormat The decimal precision applied to a display price, i.e. a price of 1258.75 with a DisplayFormat of 0.0 will truncate the last digit, leaving 1258.7 as the display price | ||
- | Edit | + | ^ **Inputs** |
- | Cash Calculation¶ | + | |**Ticks** |This is the price of the product as published by the exchange. Note that this value may not match the display price.| |
- | Step 1 - Multiply each leg price by its TickValue and Denominator, | + | |**TickValue** |This is the cash value of a minimum tick for the product multiplied by the leg multiplier chosen for that leg, i.e. a leg multiplier of 3 with a $10 minimum tick creates a $30 TickValue.| |
- | Step 2 - Add all leg values calculated in Step 1, where buy-side legs are positive and sell-side legs are negative. | + | |**Numerator** |The minimum tick increment in the same terms as the " |
- | Step 3 - Multiply the value derived in Step 2 by the first leg's Numerator, then divide by the first leg's TickValue and Denominator. | + | |**Denominator** |The value sent from the exchange that divides into Ticks to create a decimal value. | |
+ | |**PriceCode** |If applicable, this applies a special conversion to a decimal value to create a more legible display price, i.e. a 10yr Note decimal price of 127.296875 becomes 127095 after applying the appropriate PriceCode.| | ||
+ | |**DisplayFormat** |The decimal precision applied to a display price, i.e. a price of 1258.75 with a DisplayFormat of 0.0 will truncate the last digit, leaving 1258.7 as the display price. | | ||
+ | |||
+ | |||
+ | __**Cash Calculation**__ | ||
+ | * **Step 1** - Multiply each leg price by its TickValue and Denominator, | ||
+ | * **Step 2** - Add all leg values calculated in Step 1, where buy-side legs are positive and sell-side legs are negative. | ||
+ | * **Step 3** - Multiply the value derived in Step 2 by the first leg's Numerator, then divide by the first leg's TickValue and Denominator. | ||
+ | |||
+ | |||
+ | __**Decimal Calculation**__ | ||
+ | * **Step 1** - Multiply each leg price by its leg multiplier. | ||
+ | * **Step 2** - Add all leg values calculated in Step 1, where buy-side legs are positive and sell-side legs are negative. | ||
- | Edit | + | __**Tick Calculation**__ |
- | Decimal Calculation¶ | + | * **Step 1** - Multiply each leg price by its leg multiplier |
- | Step 1 - Multiply each leg price by its leg multiplier. | + | * **Step 2** - Add all leg values calculated in Step 1, where buy-side legs are positive and sell-side legs are negative. |
- | Step 2 - Add all leg values calculated in Step 1, where buy-side legs are positive and sell-side legs are negative. | + | * **Step 3** - Divide the value derived in Step 2 by the first leg's Denominator. |
- | Edit | ||
- | Tick Calculation¶ | ||
- | Step 1 - Multiply each leg price by its leg multiplier and Denominator. | ||
- | Step 2 - Add all leg values calculated in Step 1, where buy-side legs are positive and sell-side legs are negative. | ||
- | Step 3 - Divide the value derived in Step 2 by the first leg's Denominator. | ||
- | Edit | + | __**Yield Calculation**__ |
- | Yield Calculation¶ | + | |
The yield calculation is the same as the cash calculation, | The yield calculation is the same as the cash calculation, | ||