lob package - fastlob

Hide navigation sidebar
Hide table of contents sidebar
Skip to content
Back to top
Toggle table of contents sidebar

# lob package

## Submodules

## lob.orderbook module

Main module containing the Orderbook class.

class fastlob.lob.orderbook.Orderbook(name='LOB-1', start=False)

  Bases: `object`

  The Orderbook is a collection of bid and ask limits. It is reponsible for: - Calling engine when order is market. - Placing order in correct side when order is limit. - All the safety checking before and after order has been processed. - Logging informations.

  asks_volume()

    Total volume on the ask side.

    Return type:

      `Decimal`

  best_ask()

    Get the best ask limit=(price, volume, #orders) in the lob.

    Return type:

      `Optional`[`tuple`[`Decimal`, `Decimal`, `int`]]

  best_asks(n)

    Return best n asks (price, volume, #orders) triplets. If n > #asks, returns #asks elements.

    Return type:

      `list`[`tuple`[`Decimal`, `Decimal`, `int`]]

  best_bid()

    Get the best bid limit=(price, volume, #orders) in the lob.

    Return type:

      `Optional`[`tuple`[`Decimal`, `Decimal`, `int`]]

  best_bids(n)

    Return best n bids (price, volume, #orders) triplets. If n > #bids, returns #bids elements.

    Return type:

      `list`[`tuple`[`Decimal`, `Decimal`, `int`]]

  bids_volume()

    Total volume on the bid side.

    Return type:

      `Decimal`

  cancel(orderid)

    Cancel an order sitting in the lob given it’s identifier.

    Return type:

      `ExecutionResult`

    Args:

      orderid (str): Identifier of the order to cancel.

    Returns:

      ExecutionResult: The result of the cancellation.

  static from_snapshot(snapshot, name='LOB', start=False)

    Instantiate a new LOB from a given snapshot. A “snapshot” is a dictionary of the following form {“bids”: <list_of_(price, volume)_pairs>, “asks”: <list_of_(price, volume)_pairs>}.

    It does so by placing a “fake” order. These orders are also not added to the history. They are simply added to each price level.

    Returns:

      Orderbook: A new LOB initialized with snapshot.

  get_status(orderid)

    Get the status and the quantity left for a given order or None if order was not accepted by the lob.

    Return type:

      `Optional`[`tuple`[`OrderStatus`, `Decimal`]]

  imbalance(n=None)

    Get the lob imbalance for the n best limits on each side. If n is not provided, takes all limits on each side.

    Return type:

      `Decimal`

  load_updates(updates)

    Load updates so that every time step is called, the lob gets updated (using fake orders).

  midprice()

    Get the lob midprice.

    Return type:

      `Optional`[`Decimal`]

  n_asks()

    Get the number of ask limits.

    Return type:

      `int`

  n_bids()

    Get the number of bid limits.

    Return type:

      `int`

  n_prices()

    Get the total number of limits (price levels).

    Return type:

      `int`

  process(orderparams)

    Process one order params instance.

    Return type:

      `ExecutionResult`

    Args:

      orderparams (OrderParams): OrderParams to process.

    Returns:

      ExecutionResult: The result of the execution of the order.

  process_many(ordersparams)

    Process many order parameters.

    Return type:

      `list`[`ExecutionResult`]

    Args:

      ordersparams (Iterable[OrderParams]): Iterable of OrderParams to process.

    Returns:

      list[ExecutionResult]: The result of the execution of each order.

  render(n=10)

    Pretty-print the best n limits on each side of the lob.

    Return type:

      `None`

  reset()

    Reset the lob. Equivalent to re-instantiating it.

    Return type:

      `None`

  running_time()

    Number of seconds since the lob has been started.

    Return type:

      `int`

    Returns:

      int: Time in seconds since the lob has been started.

  spread()

    Get the lob spread.

    Return type:

      `Decimal`

  start()

    Start the lob. Required before orders can be placed.

    Return type:

      `None`

  step()

    Apply the updates in next(updates) to the lob.

  step_updates(updates)

    Apply the updates directly to the lob.

  stop()

    Stop the lob and its background processes.

    Return type:

      `None`

  total_volume()

    Total volume on ask and bid side.

    Return type:

      `Decimal`

  view(n=10)

    Get a pretty-printed view of the lob state.

    Return type:

      `str`

  weighted_midprice()

    Get the lob weighted midprice.

    Return type:

      `Optional`[`Decimal`]

## lob.utils module

Utility functions for lob.

fastlob.lob.utils.check_limit_order(order)

  Check if limit order can be processed.

  Return type:

    `Optional`[`str`]

fastlob.lob.utils.not_running_error(logger)

  Build the not running error.

  Return type:

    `ResultBuilder`

## Module contents

Main module containing the Orderbook class.