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 |
---|---|---|---|---|
MarketOrder | ||||
LimitOrder | ||||
StopMarketOrder | ||||
StopLimitOrder |
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 | Description |
---|---|
TimeInForce time_in_force | A TimeInForce instruction to apply to the order. The following instructions are supported:
|
Notes | The free form instructions that may be sent to the broker. |
HandlingInstruction | The instructions for handling the order or route. The values can be preconfigured or a value customized by the broker. |
CustomNotes1 | 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 user order notes 2. |
CustomNotes3 | Custom user order notes 3. |
CustomNotes4 | Custom user order notes 4. |
CustomNotes5 | Custom user order notes 5. |
Account | The EMSX account. |
Broker | The EMSX broker code. |
Strategy |
A StrategyParameters 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"
|
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.strategy_parameters( "VWAP", [ TerminalLinkOrderProperties.strategy_field("09:30:00"), TerminalLinkOrderProperties.strategy_field("10:30:00"), TerminalLinkOrderProperties.strategy_field(), TerminalLinkOrderProperties.strategy_field() ] ) 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.
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
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.