Supported Models
Terminal Link
Introduction
This page explains the Terminal Link brokerage, including the asset classes it supports, its default security-level models, and it's default markets.
Orders
Terminal Link enables you to create and manage Bloomberg™ orders.
Order Types
The following table describes the available order types for each asset class that Terminal Link supports:
Order Type | Equity | Equity Options | Futures | Index Options |
---|---|---|---|---|
Market | ||||
Limit | ||||
Stop market | ||||
Stop limit |
Order Properties
We model custom order properties from the Bloomberg EMSX API. The following table describes the members of the TerminalLinkOrderProperties
object that you can set to customize order execution:
Property | Data Type | Description | Default Value |
---|---|---|---|
TimeInForce time_in_force | TimeInForce | A TimeInForce instruction to apply to the order. The following instructions are supported:
| TimeInForce.GoodTilCanceled TimeInForce.GOOD_TIL_CANCELED |
Notes notes | string str | The free form instructions that may be sent to the broker. | |
HandlingInstruction handling_instruction | string str | The instructions for handling the order or route. The values can be preconfigured or a value customized by the broker. | |
CustomNotes1 custom_notes_1 | string str | Custom user order notes 1. For more information about custom order notes, see Custom Notes & Free Text Fields in the EMSX API documentation | |
CustomNotes2 custom_notes_2 | string str | Custom user order notes 2. | |
CustomNotes3 custom_notes_3 | string str | Custom user order notes 3. | |
CustomNotes4 custom_notes_4 | string str | Custom user order notes 4. | |
CustomNotes5 custom_notes_5 | string str | Custom user order notes 5. | |
Account account | string str | The EMSX account. | |
Broker broker | string str | The EMSX broker code. | |
Strategy strategy | StrategyParameters | An object that represents the EMSX order strategy details. You must append strategy parameters in the order that the EMSX API expects. The following strategy names are supported: "DMA", "DESK", "VWAP", "TWAP", "FLOAT", "HIDDEN", "VOLUMEINLINE", "CUSTOM", "TAP", "CUSTOM2", "WORKSTRIKE", "TAPNOW", "TIMED", "LIMITTICK", "STRIKE" | |
ExecutionInstruction execution_instruction | string str | The execution instruction field. | |
AutomaticPositionSides automatic_position_sides | bool | A flag that determines whether to automatically include the position side in the order direction (buy-to-open, sell-to-close, etc.) instead of the default (buy, sell). | |
PositionSide position_side | OrderPosition? OrderPosition/NoneType |
An OrderPosition object that specifies the position side in the order direction (buy-to-open, sell-to-close, etc.) instead of the default (buy, sell).
This member has precedence over AutomaticPositionSides automatic_position_sides .
| |
Exchange exchange | Exchange | Defines the exchange name for sending the order to. |
public override void Initialize() { // Set the default order properties DefaultOrderProperties = new TerminalLinkOrderProperties { TimeInForce = TimeInForce.GoodTilCanceled, Strategy = new TerminalLinkOrderProperties.StrategyParameters( "VWAP", new List<TerminalLinkOrderProperties.StrategyField> { new("09:30:00"), new("10:30:00"), new(), new() } ) }; } public override void OnData(Slice slice) { // Use default order order properties LimitOrder(_symbol, quantity, limitPrice); // Override the default order properties LimitOrder(_symbol, quantity, limitPrice, orderProperties: new TerminalLinkOrderProperties { TimeInForce = TimeInForce.Day, Account = "account1" }); LimitOrder(_symbol, quantity, limitPrice, orderProperties: new TerminalLinkOrderProperties { TimeInForce = TimeInForce.GoodTilDate(new DateTime(year, month, day)), Account = "account2" }); }
def initialize(self) -> None: # Set the default order properties self.default_order_properties = TerminalLinkOrderProperties() self.default_order_properties.time_in_force = TimeInForce.GOOD_TIL_CANCELED self.default_order_properties.strategy = TerminalLinkOrderProperties.StrategyParameters( "VWAP", [ TerminalLinkOrderProperties.StrategyField("09:30:00"), TerminalLinkOrderProperties.StrategyField("10:30:00"), TerminalLinkOrderProperties.StrategyField(), TerminalLinkOrderProperties.StrategyField() ] ) def on_data(self, slice: Slice) -> None: # Use default order order properties self.limit_order(self._symbol, quantity, limit_price) # Override the default order properties order_properties = TerminalLinkOrderProperties() order_properties.time_in_force = TimeInForce.DAY order_properties.account = "account1" self.limit_order(self._symbol, quantity, limit_price, order_properties=order_properties) order_properties.time_in_force = TimeInForce.good_til_date(datetime(year, month, day)) order_properties.account = "account2" self.limit_order(self._symbol, quantity, limit_price, order_properties=order_properties)
For more information about the format that the Bloomberg EMSX API expects, see Create Order and Route Extended Request in the EMSX API documentation and the createOrderAndRouteWithStrat documentation on the MathWorks website.
Get Open Orders
Terminal Link lets you access open orders.
Monitor Fills
Terminal Link allows you to monitor orders as they fill through order events.
Updates
Terminal Link doesn't support order updates, but you can cancel an existing order and then create a new order with the desired arguments. For more information about this workaround, see the Workaround for Brokerages That Don’t Support Updates.
Cancellations
Terminal Link enables you to cancel open orders.
Handling Splits
If you're using raw data normalization and you have active orders with a limit, stop, or trigger price in the market for a US Equity when a stock split occurs, the following properties of your orders automatically adjust to reflect the stock split:
- Quantity
- Limit price
- Stop price
- Trigger price
Brokerage-Side Orders
By default, your algorithm doesn't record orders that you submit to your account by third-parties instead of through LEAN. To accept these orders, create a custom brokerage message handler.
Fills
To view how we model fills in backtests, see Fills.
Slippage
To view how we model slippage in backtests, see Slippage.
Fees
To view how we model fees in backtests, see Fees.
Buying Power
To view how we model buying power in backtests, see Buying Power.
Settlement
To view how we model settlements in backtests, see Settlement.
Margin Interest Rate
To view how we model margin interest rates in backtests, see Margin Interest Rate.
Default Markets
To view the default markets of each asset class when you use Terminal Link, see Default Markets.