Market maker

The Market maker allows users to:

  • Maintain single- and two-sided quotes on futures and options;
  • Perform classic market-making; and
  • Open and close positions on specific volatility with customizable terms of joint order execution.

Each MM is bound to one strategy under one account. MM places orders at a certain level from the current market price. If the price changes, the orders are cancelled and new ones are placed. All fills produced by MM orders will be applied to the MM strategy. This allows users to localize the MM positions in the specified strategy and to hedge MM positions separately from other positions.

General operations

Market maker manager

To open a Market Makersmanager window, click the button.

Market Maker manager window

Right-click on MM opens context menu with commands.

Market Maker context menu

To configure or run MM, you should open it first by double-clicking on its name in the manager window or by selecting the Open command. This will open the settings window of the selected MM.

Market Maker

After that, you may change the MM parameters, add contracts, start or stop work of MM.

Create Market maker

To create a new Market maker:

  1. Click the button. The Market makers manager window will open.

  2. Click the Add button. The Add new market maker pop-up window will open.

  3. Enter the parameters:

    • Name – the market maker name
    • Account – the account
    • Strategy – the target strategy for the account (if you enter the name of strategy that doesn't exist, it will be created automatically)
  4. Click the OK button to apply the changes.

Creating Market Maker

Created MM now appears in the Market makers manager window.

Contracts selection

By default, the table will be empty as no contracts are selected yet. You can add a contract by click-and-holding a contract instrument tree (position or a strategy from the Position manager) and dropping it onto the MM form. Alternatively, you can add in the following way:

  1. Click the Select contracts button.

    Contracts selection

  2. Click the desired contract from the left list [1].

    Instruments list

  3. Click the button to move it to the right list [2]. The contract can be moved by double-clicking on its name.

  4. Click the OK button or pressing the Enter key to confirm your input.

The contract will be added into the MM table.

Сontracts

The contracts are color-coded by type:

Put options – red background Call options – green background Futures and stocks – blue background

Before running MM, you should set the parameters for each contract (see Market maker settings).

Start and stop Market maker

In order to start MM:

  1. Double-click on the name of the desired MM.
  2. Right-click on the MM and select the Start command; or
  3. Click the button in the settings window of the selected MM or in the Market makers manager window.

In order to stop MM:

  1. Right-click on the MM and select the Stop command; or

  2. Click the [1] button.

    Start and stop market maker

You may also stop all Market makers by clicking button on the toolbar [2].

Delete Market maker

You cannot remove MM when its settings window is open. To delete MM, close the settings window and then click the button in the Market makers manager window.

Market maker settings

Contract parameters

MM is designed to quote future contracts and options. The quoting parameters are defined separately for each contract.

  • Name: Contract symbol

  • Price: Contract symbol

  • Enable: Contract will be quoted if this checkbox is set. No orders on the contract will be placed otherwise.

    If both Bid and Askcheckboxes are unchecked, no orders will be placed.

  • Bid: Place bid orders

  • Ask: Place ask orders

  • Shooter: Turns “shooter” mode on or off for the contract.

  • Join: Turns linked Market makers on or off for the contract.

  • Bid Quantity: Size of each bid order. This parameter may be defined in two formats:

    • in contracts (e.g. 1 or 5)
    • in the total Delta (e.g. 1d or 2.5 d).

    MM will choose the minimum number of contracts whose total Delta (absolute value) will be greater or equal to the specified value

  • Ask Quantity: Size of each ask order. This parameter is the same as Bid Quantity.

  • Replace at Quantity: Order non-filled size threshold.

    If the order non-filled size is equal or less than Replace at Quantity value, the order will be cancelled and a new order will be placed instead

  • Lower Limit: Position lower limit. A required parameter. Can be specified with the “minus” mark.

    If the Market maker position is less than or equal to specified value, Market maker will not place any more ask orders. For example:

    • the lower limit = 100
    • the number of contracts in the ask order = 30
    • the current position = 120

    In order to maintain the position within the limit ( 100), MM will reduce the ask order down to 20

  • Upper Limit: Position upper limit. A required parameter. Can be specified with the “minus” mark.

    If the Market maker position is greater than or equal to specified value, Market maker will not place any more bid orders. For example:

    • the upper limit = 100
    • the number of contracts in the order for sale = 30
    • the current position = 80

    In order to maintain position within the limit ( 100), MM will reduce the bid order size down to 20

  • Bid Spread: Bid order price spread. This parameter may be defined:

    • in price terms (e.g. 100)
    • in volatility terms (e.g. 2v)
    • in percentage
    • with the “minus” sign

    Parameter is used to calculate the order price (see Market maker algorithm).

  • Ask Spread: Ask order price spread. Like Bid Spread, this value may be defined either in price points or in volatility, in percentage, with the “minus” sign.

    Parameter is used to calculate the order price (see Market maker algorithm).

  • Sensitivity: MM sensitivity to price changes. This parameter may be defined:

    • in price terms (e.g. 100)
    • in volatility terms (e.g. 2v)

    For example:

    • the quote was given on a theoretical price = 4000
    • the sensitivity = 10

    When price changes by more than 10 points (3990 or 4010), orders are cancelled and new ones are created at the current theoretical price

  • Shift per Contract: An order price coefficient to correct order prices. This parameter may be defined:

    • in price terms (e.g. 100)
    • in volatility terms (e.g. 2v)

    For example, let the parameter be set to 5. If an ask order is filled and fill size is 3 then the next pair of orders will be placed at theor.price + 5*3. The orders will be moved up to reduce the chance of any further fills

  • Curr. Pos. : Current position on the contract.

Parameters for all contracts

Market maker also has a few parameters that affect all contracts. These parameters are accessible through the Settings block. If MM is started to apply changes click the Apply changes button.

Market maker parameters for all contracts

  • Check price deviation: If this mode is enabled, the MM will stop automatically if the contract theor. price deviation from the current midmarket is greater than the Deviation threshold value.
  • Deviation threshold: The maximum allowed deviation of the contract theor. price from the current midmarket in percentage.
  • Shift all contracts: Shift per Contract parameters will affect all contracts.
  • Confirmation on start: If this option is enabled, a confirmation dialog will appear before starting market maker. |

Viewing additional parameters

To view the parameters, open a contract by clicking the icon at the beginning of the row.

Additional parameters

Expand/collapse the field of all contracts by clicking the / buttons.

The field shows:

  • Bid and ask prices, middle-market [1].The values are expressed in price terms and in volatility terms

  • Market values of the instrument [2]

  • Accumulated shift shows the accumulated shift position(the current position value multiplied by the Shift parameter per contract) [3]

  • The current parameters relating to the linked MM [4]:

    • Cur. joint level – positions other than 0 (zero)
    • Max. joint level – the maximum level of positions
    • Cur. upper limit – the upper limit position (bid). MM will not place any more bid orders
    • Cur. lower limit – the lower limit of positions (ask). MM will not place any more ask orders

Market maker algorithm

The figure below shows the MM form, containing two call options and three put options.

Сall and put options

Parameters are specified for each contract. Each follows the same algorithm:

  1. MM will calculate the ask order price (Table 3). If the current position does not exceed the lower limit and ask orders are allowed by settings, MM places ask orders with AskQuantity;

    Table 3 – Price calculation

    Price calculation depends on spread type:

    • Price:

      • Ask:
      • Bid:
    • Volatility:

      • Ask:
      • Bid: (same as ask)
    • Percentage:

      • Ask:
      • Bid:

    Here:

    • BidSpread - bid spread in corresponding terms (with +/-)
    • AskSpread - ask spread in corresponding terms (with +/-)
    • AskPrice - ask price
    • BidPrice - bid price
    • TheorPrice - theoretical price
    • Shift – calculates as
    • ShiftPerContract – an order price coefficient to correct order prices
    • CurrentPosition - current position on the contract (with +/-)
  2. MM will calculate the bid order price (Table 3). If the current position does not exceed the upper limit and bid orders are allowed by settings MM places bid orders with BidQuantity.

  3. MM records theoretical price, on which the order were placed. MM will enter the standby state. MM cancels all orders if:

    • Difference between current contract theor. price and theor. price used in order price computations exceeds the Sensitivity threshold
    • Any of the orders placed is filled and its remaining size is less than or equal to the Replace at Quantity value
  4. MM repeats its algorithm.

If when placing an order, an error occurs, MM on the specific contract will be stopped. The Enable switch will be removed.

MM can work in the shooter mode (Shooter switch) and in the linked MM (Join switch) mode.

“Shooter” mode

This mode alters order placing behavior while order prices' calculation rules remain intact. To apply “Shooter” mode, set the Shooter switch. After starting:

  1. MM computes bid and ask order prices as usual (see item one and item two in the Market maker algorithm).

  2. Instead of placing orders with those prices, the MM monitors market situation:

    • if current then an ask order is placed. Order quantity is calculated as the lower of the current best bid quantity and the AskQuantity value

    • if current then a bid order is placed. Order quantity is calculated as the lower of the current best ask quantity and the BidQuantity value

  3. If any of those orders were placed and have not been filled immediately, MM cancels them.

  4. MM waits until the contract theor. price changes.

  5. MM repeats its algorithm until stopped.

If you need to specify both spreads in the price/volatility terms, their sum must be positive. It is not recommended to specify one spread in price terms and the other in volatility terms.

Linked Market makers

A few contracts within the same MM can be grouped. Linked MM will gain positions, depending on each other's position. For example, imagine a scenario when you must buy a straddle (100 puts and 100 calls). At the moment in the order book there are no orders. You can group contracts and set the parameters:

  • The upper limit = 100
  • The number of contracts in the order = 5

When an order on the one contract is filled, MM will stop placing new orders until the order on the second contract with the same quantity has been filled.

To include the contract in the group using the Join switch, you select the checkboxes under Join.

Linked market makers

Linked MM will gain positions according to the following algorithm:

  1. For each contract calculates its Current joint level:

    Here:

    • CurrentPosition – current position on the contract (with +/-)
    • Quantity – bid/ask quantity

    Sign of Current joint level depends on the current position sign and quoting side:

    Bid Ask
    CurrentPosition >= 0 + -
    CurrentPosition < 0 - +

    Example: If quoting side is Bid, Bid Quantity is 5and Current position is 20, Current joint level will be 4.

    Those Current joint level values will be recalculated on each fill or order size change.

  2. For the whole group of linked Market makers, the Max joint level is calculated:

  3. Each linked Market maker is allowed to place an order only if:

    • its Current joint level is less than the Max joint level and
    • all Market makers within the group have reached the same Current joint level value.

    Order size is calculated in order not to violate Lower Limit and Upper Limit restriction.

The interface shows Cur. upper limit for bids and Cur. lower limit for asks. In the event that an error occurs in any of the linked MM, the whole group will be stopped.

Linked Market makers may work in “shooter” mode.

Volatility quoting

In order to make MM quote based on user-defined volatility, set up a pricing model for the desired option series. The drop-down list displays options series, contracts of which were added to the Market maker.

Pricing model

To select a pricing model, click the Pricing Model link. A description of the settings is given here. When you click on the Option desk link an option desk will be opened in a separate window.

Schedule

Market maker supports activity scheduling. You may read more about this in Scheduling functionality.

Columns settings

For the convenience of working with contracts, users can apply some display settings using the toolbar, located above the main table:

  • / – expand/collapse the field of all contracts
  • – align the columns' width to fit the window size
  • Reset columns – return to default settings

You may configure which columns will be visible by clicking Select columns . Select the checkboxes to specify which columns you wish to see on the MM window, then click the OK button to apply the changes. Columns can be also reordered. Click-and-hold the left mouse button on the column to be moved, then drag-and-release the column in its new place.