ADL®

Overview

ADL® (Algo Design Lab) introduces futures and options traders to an interactive way of creating trading algorithms and automated strategies. ADL allows futures and options traders to design, create and deploy automated high frequency trading algorithms without having to write a single line of code. With an intuitive drag-and-drop interface, users can use building blocks to construct circuit-like designs on their computer screens. At the same time, ADL grants granular flexibility in design instead of offering pre-made strategies.

When an ADL strategy is deployed to the trade server, the strategy is compiled and run as if it were a traditional computer program. ADL makes algorithm design accessible to anyone, not just computer programmers. It provides safety measures (at design time and at run time) that are not available in traditional programming context, thereby reducing risk and the time required to design, create and test programs while providing a safer trading environment. What once took days or weeks, now takes minutes. In addition, by handling code-writing "behind the scenes" for the user, ADL lowers risks for traders, trading firms, and exchanges - especially for high-frequency automated trading.

An example: ADL in action

Designing a strategy in ADL is similar to depicting a strategy on a piece of paper. The following example will demonstrate how a trader would design a strategy in ADL.

Consider the following strategy which attempts to buy 5 contracts of Jul 2016 Crude Oil Nymex futures (CL) for the best bid price, and upon execution, attempts to sell them at the best offer price (note that the strategy would be slightly more complex in practice but the example has been simplified for the sake of clarity in demonstration).

Example Market marking strategy in Crude Oil Nymex futures

  1. For any order submission, a trader needs to specify the instrument, price and the quantity. In ADL, a building block designated as the "Order Block" performs this function.

    Example The Order Block will submit orders at the specified Price and Quantity for the specified Instrument

  2. For the Entry Order, the chosen Instrument is "CL Jul16," the desired Price is "Best Bid Price of CL Jul16," and the desired Quantity is "5." The following building blocks are used to specify each:

    Example Specifying Instrument, Price and Quantity using building blocks

    Instrument:

    To specify an instrument for the entry order, use an Instrument block that retrieves an instrument selected by a user.

    Price:

    To specify the price for the entry order, use the Field block that extracts a value from a connected Instrument block.

    Quantity:

    To specify the quantity for the entry order, use the Number block. You can set a specific value or as a variable the user can alter while the algorithm is running.

  3. Connect the above-mentioned building blocks to the Order Block to complete the automation for the Entry Order.

    Example Connecting inputs to the Order Block

  4. For the exit order, the chosen Instrument is "CL Jul16," the desired Price is "Best Ask Price of CL Jul16," and the desired Quantity is "however many were executed from the Entry order." The following building blocks are used to specify each:

    Example Specifying exit order Instrument, Price and Quantity using building blocks

    Instrument:

    To specify an instrument for the hedge order, use an Instrument block that retrieves an instrument selected by a user.

    Price:

    To specify the price for the hedge order, use the Field block that extracts a value from a connected Instrument block.

    Quantity:

    To specify the quantity for the hedge order as the total quantity of the fills on the entry side, use Value Accumulator block to count the number of fills generated from the entry order block

  5. Connect the above-mentioned blocks to another Order Block which will submit the Hedge Order. Note that the Accumulator Block (specifying the Hedge Order quantity) naturally connects the Entry side automation and the Hedge side automation. This completes the automation for the overall strategy.

    Example Connecting inputs to the hedge side Order Block