Brokerages

Bloomberg EMSX

Introduction

The Lean CLI supports live trading on your local machine or in QuantConnect Cloud, which makes the transfer from backtesting to live trading as seamless as possible. You must log in using your QuantConnect account to deply your algorithm on your local machine or in QuantConnect Cloud. This page contains instructions on how to start live trading with the Terminal Link brokerage. If the Lean Configuration file in your organization workspace contains values for some of the command options, the CLI skips some of the prompts.

The LEAN CLI integrates with the Bloomberg Desktop API (DAPI) to get data for research, backtests, optimization, and live trading or through your existing Bloomberg data subscriptions. In addition, you can route live trading strategies and and UAT paper trading through Bloomberg order routing via the EMSX network.

Asset Classes

Terminal Link supports trading the following asset classes:

Data Feeds

Terminal Link with the LEAN CLI lets you source historical data from Bloomberg and save it onto your desktop computer for backtesting as within your license permissions from Bloomberg. The Bloomberg API includes up to six months of history in low resolutions like second and minute resolutions.

Orders

Terminal Link enables you to create and manage Bloomberg™ orders. You can also use the LEAN CLI with the Terminal Link integration to test paper trading with LEAN. In this case, LEAN models order fills using the live tick data feed from Bloomberg™.

Order Types

The following table describes the available order types for each asset class that Terminal Link supports:

Order TypeEquityEquity OptionsFuturesIndex Options
MarketOrdergreen checkgreen checkgreen checkgreen check
LimitOrdergreen checkgreen checkgreen checkgreen check
StopMarketOrdergreen checkgreen checkgreen checkgreen check
StopLimitOrdergreen checkgreen checkgreen checkgreen check

Time In Force

Terminal Link supports the following TimeInForce instructions:

  • DayDAY
  • GoodTilCanceledGOOD_TIL_CANCELED
  • GoodTilDategood_til_date

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

Fees

Orders filled with Terminal Link are subject to the fees of the Bloomberg™ Execution Management System and your prime brokerage destination. To view how we model their fees, see Fees.

Historical Data

When LEAN taps into Bloomberg™ via Terminal Link, it can run backtests and research notebooks with rich historical data sourced from the Bloomberg™ Terminal. LEAN provides accurate slippage, spread, and transaction fee models for realistic backtesting. All models are customizable to adapt to your strategy requirements. Historical data is cached locally in an efficient format for quick backtesting in the LEAN engine. If you request intraday historical data, you can request data from within the last 6 months. Historical open interest and custom data isn't available.

Compliance

Bloomberg™ is not affiliated with QuantConnect, nor does it endorse Terminal Link. QuantConnect requires a Trading Firm or Institutional license to use the Terminal Link integration.

The following rules apply:

  • All users of the integration must hold a Bloomberg License to be defined as an "Entitled User".
  • All data accessed via the Bloomberg Desktop API must remain on the host computer. The Bloomberg Terminal and the LEAN instance must be on the same computer.

The following table shows the activities each of the Bloomberg technologies support:

TechnologyResearchBacktestingPaper TradingLive Trading
Desktop APIgreen checkgreen checkgreen checkgreen check
B.PIPEgreen checkgreen checkgreen checkgreen check

CLI Commands

Execute the CLI commands in the following sections to interact with Terminal Link. If you need further assistance, see the CLI Reference.

Run Local Backtests

Launch local backtests with data from the Bloomberg Terminal Desktop API. Lean automatically fetches the data required for your backtest.

$ lean backtest "<projectName>" --data-provider-historical "Terminal Link"

Launch Research Notebooks

Start Jupyter Research Notebooks, tapping into the entire QuantConnect API with the data sourced from a Bloomberg Terminal.

$ lean research "<projectName>" --data-provider-historical "Terminal Link"

Deploy Live Algorithms

Launch live trading algorithms to trade with any of the 1300+ routing destinations in the Bloomberg EMSX network.

$ lean live "<projectName>" --brokerage "Terminal Link" --data-provider-live "Terminal Link"

Deploy Local Algorithms

You need to install the Bloomberg Terminal and the BBComm component from the Bloomberg website before you can deploy local algorithms with Terminal Link.

Follow these steps to start local live trading with the Terminal Link brokerage:

  1. Log in to the CLI if you haven't done so already.
  2. Open a terminal in the organization workspace that contains the project.
  3. Run lean live deploy "<projectName>" to start a live deployment wizard for the project in . / <projectName> and then enter the brokerage number, 10.
    $ lean live deploy "My Project"
    Select a brokerage:
    1) Paper Trading
    2) Interactive Brokers
    3) Tradier
    4) OANDA
    5) Bitfinex
    6) Coinbase Advanced Trade
    7) Binance
    8) Zerodha
    9) Samco
    10) Terminal Link
    11) Trading Technologies
    12) Kraken
    13) Charles Schwab
    14) Bybit
    15) TradeStation
    16) Alpaca
    Enter an option: 10
  4. Enter the environment to use.
    $ lean live "My Project"
    Environment (Production, Beta): Production
  5. Enter the host and port of the Bloomberg server.
    $ lean live "My Project"
    Server host: 127.0.0.1
    Server port: 8194
  6. Enter your EMSX configuration
    $ lean live "My Project"
    EMSX broker: someValue
    EMSX account:
  7. Enter your Open FIGI API key.
    $ lean live "My Project"
    Open FIGI API key: 
  8. Enter 9 to select the Terminal Link live data provider.
    $ lean live deploy "My Project"
    Select a live data provider:
    1) Interactive Brokers
    2) Tradier
    3) Oanda
    4) Bitfinex
    5) Coinbase Advanced Trade
    6) Binance
    7) Zerodha
    8) Samco
    9) Terminal Link
    10) Trading Technologies
    11) Kraken
    12) Charles Schwab
    13) IQFeed
    14) Polygon
    15) IEX
    16) CoinApi
    17) ThetaData
    18) Custom data only
    19) Bybit
    20) TradeStation
    21) Alpaca
    To enter multiple options, separate them with comma: 9
  9. View the result in the <projectName> / live / <timestamp> directory. Results are stored in real-time in JSON format. You can save results to a different directory by providing the --output <path> option in step 2.

If you already have a live environment configured in your Lean configuration file, you can skip the interactive wizard by providing the --environment <value> option in step 2. The value of this option must be the name of an environment which has live-mode set to true.

Deploy Cloud Algorithms

You need to set up the Bloomberg SAPI before you can deploy cloud algorithms with Terminal Link.

Follow these steps to start live trading a project in the cloud with the Terminal Link brokerage and the Terminal Link data provider:

  1. Log in to the CLI if you haven't done so already.
  2. Open a terminal in the organization workspace that contains the project.
  3. Run lean cloud live deploy "<projectName>" --push --open to push . / <projectName>. to the cloud, start a live deployment wizard, and open the results in the browser once the deployment starts.
  4. $ lean cloud live deploy "My Project" --push --open
    [1/1] Pushing 'My Project'
    Successfully updated cloud file 'My Project/main.py'
    Started compiling project 'My Project'
    Successfully compiled project 'My Project'
  5. Enter 10 to select the Terminal Link brokerage.
  6. $ lean cloud live deploy "My Project" --push --open
    Select a brokerage:
    1) Paper Trading
    2) Interactive Brokers
    3) Tradier
    4) Oanda
    5) Bitfinex
    6) Coinbase Advanced Trade
    7) Binance
    8) Zerodha
    9) Samco
    10) Terminal Link
    11) Trading Technologies
    12) Kraken
    13) Charles Schwab
    14) Bybit
    15) TradeStation
    16) Alpaca
    Enter an option: 10
  7. Enter your unique user identifier (UUID).
  8. $ lean cloud live "My Project" --push --open
    Configure credentials for Terminal Link
    Using 'SAPI' Connection Type
    Server Auth ID: 

    The UUID is a unique integer identifier that's assigned to each Bloomberg Anywhere user. If you don't know your UUID, contact Bloomberg.

  9. Enter the environment to use.
  10. $ lean cloud live "My Project" --push --open
    Environment (Production, Beta): 
  11. Enter the SAPI host and port.
  12. $ lean cloud live "My Project" --push --open
    Server host: 
    Server port:  

    The default port is 8194.

  13. Enter the EMSX broker to use.
  14. $ lean cloud live "My Project" --push --open
    EMSX broker: 
  15. Enter the account to which LEAN should route orders.
  16. $ lean cloud live "My Project" --push --open
    EMSX account []: 
  17. Enter your OpenFIGI API key.
  18. $ lean cloud live "My Project" --push --open
    OpenFIGI API key: 
  19. Configure your notification settings.
  20. You can configure any combination of email, webhook, SMS, and Telegram notifications for order events and emitted insights. To view the number of notification you can send for free, see the Live Trading Notification Quotas.

    $ lean cloud live deploy "My Project" --push --open
    Do you want to send notifications on order events? [y/N]: y
    Do you want to send notifications on insights? [y/N]: y
    Email notifications: None
    Webhook notifications: None
    SMS notifications: None
    Select a notification method:
    1) Email
    2) Webhook
    3) SMS
    4) Telegram
    Enter an option: 1
    Email address: john.doe@example.com
    Subject: Algorithm notification
    Email notifications: john.doe@example.com
    Webhook notifications: None
    SMS notifications: None
    Telegram notifications: None
    Do you want to add another notification method? [y/N]: n
  21. Enable or disable automatic algorithm restarting.
  22. This feature attempts to restart your algorithm if it fails due to a runtime error, like a brokerage API disconnection.

    $ lean cloud live deploy "My Project" --push --open
    Do you want to enable automatic algorithm restarting? [Y/n]: y
  23. Set your initial cash balance.
  24. $ lean cloud live deploy "My Project" --push --open
    Previous cash balance: [{'currency': 'USD', 'amount': 100000.0}]
    Do you want to set a different initial cash balance? [y/N]: y
    Setting initial cash balance...
    Currency: USD
    Amount: 95800
    Cash balance: [{'currency': 'USD', 'amount': 95800.0}]
    Do you want to add more currency? [y/N]: n
  25. Set your initial portfolio holdings.
  26. $ lean cloud live deploy "My Project" --push --open
    Do you want to set the initial portfolio holdings? [y/N]: y
    Do you want to use the last portfolio holdings? [] [y/N]: n
    Setting custom initial portfolio holdings...
    Symbol: GOOG
    Symbol ID: GOOCV VP83T1ZUHROL
    Quantity: 10
    Average Price: 50
    Portfolio Holdings: [{'symbol': 'GOOG', 'symbolId': 'GOOCV VP83T1ZUHROL', 'quantity': 10, 'averagePrice': 50.0}]
    Do you want to add more holdings? [y/N]: n
  27. Select the live node that you want to use.
  28. If you only have one idle live trading node, it is selected automatically and this step is skipped.

    $ lean cloud live deploy "My Project" --push --open
    Select a node:
    1) L-MICRO node 89c90172 - 1 CPU @ 2.4GHz, 0.5GB Ram
    2) L-MICRO node 85a52135 - 1 CPU @ 2.4GHz, 0.5GB Ram
    Enter an option: 1
  29. Enter 10 to select the Terminal Link data provider.
  30. $ lean live "My Project"
    Select a live data feed:
    1) QuantConnect
    2) Interactive Brokers
    3) Tradier
    4) Oanda
    5) Bitfinex
    6) Coinbase Advanced Trade
    7) Binance
    8) Zerodha
    9) Samco
    10) Terminal Link
    11) Trading Technologies
    12) Kraken
    13) Charles Schwab
    14) Polygon
    15) IEX
    16) CoinApi
    17) Bybit
    18) TradeStation
    19) Alpaca
    To enter multiple options, separate them with comma: 10

    If you select one of the following data providers, see the respective page for more instructions:

  31. Verify the configured settings and confirm them to start the live deployment in the cloud.
  32. $ lean cloud live deploy "My Project" --push --open
    Brokerage: Terminal Link
    Project id: 1234567
    Environment: Live
    Server name: L-MICRO node 89c90172
    Server type: L-MICRO
    Live Data providers: Terminal Link
    LEAN version: 11157
    Order event notifications: Yes
    Insight notifications: Yes
    Email notifications: john.doe@example.com
    Webhook notifications: None
    SMS notifications: None
    Telegram notifications: None
    Initial live cash balance: [{'currency': 'USD', 'amount': 95800.0}]
    Initial live portfolio holdings: [{'symbol': 'GOOG', 'symbolId': 'GOOCV VP83T1ZUHROL', 'quantity': 10, 'averagePrice': 50.0}]
    Automatic algorithm restarting: Yes
    Are you sure you want to start live trading for project 'My Project'? [y/N]: y
  33. Inspect the result in the browser, which opens automatically after the deployment starts.

Follow these steps to see the live status of a project:

  1. Log in to the CLI if you haven't done so already.
  2. Open a terminal in the organization workspace that contains the project.
  3. Run lean cloud status "<projectName>" to show the status of the cloud project named "<projectName>".
  4. $ lean cloud status "My Project"
    Project id: 1234567
    Project name: My Project
    Project url: https://www.quantconnect.com/project/1234567
    Live status: Running
    Live id: L-1234567a8901d234e5e678ddd9b0123c
    Live url: https://www.quantconnect.com/project/1234567/live
    Brokerage: Terminal Link
    Launched: 2021-06-09 15:10:12 UTC

You can also see our Videos. You can also get in touch with us via Discord.

Did you find this page helpful?

Contribute to the documentation: