Market By Order and Noise Filtering - Part 1

Market By Order and Noise Filtering - Part 1

MBO data can provide valuable insights. However, processing it requires robust filtering to extract meaningful trends, especially in fast-moving markets.

In the context of high-frequency trading (HFT) or algorithmic trading, the type of data feed you use can significantly impact how you process and interpret market information. Data feeds generally come in two forms:

  • Level 1 (L1): Provides top-of-book information, such as the best bid and ask prices, along with last trade prices and volume.
  • Level 2 (L2) or Market-by-Order (MBO): Offers more detailed data, including the order book depth with individual orders, cancellations, and modifications.

Your data processing approach will vary based on the feed type and its granularity.

MBO data shows each individual order at every price level. This detailed view is often very noisy, especially in highly liquid markets where orders frequently get cancelled, modified, or added.

This continuous activity can lead to a "noisy" dataset that requires filtering to extract meaningful insights. Filtering can reduce this noise, but the extent of filtering should balance between keeping essential information and discarding redundant updates.

For Example - If the order book is "thin" (i.e., many price levels have no active orders), it may lead to high volatility. With a small tick size (such as 0.1 cents), each level may represent a tiny increment, which could lead to price levels changing rapidly as orders are added or cancelled. This can make it challenging to get a stable view of market sentiment.

If only top-level information (best bid/ask and last trade) is relevant to your strategy, you can avoid Level 2/MBO data and reduce processing time and complexity by focusing only on Level 1 data. This helps in simplifying the data flow, especially if you're trying to manage large volumes of data.

However, understand that when there are large jumps in Level 1 prices (e.g., changes of 100-200 ticks between updates), this may be due to a low-liquidity environment, large market orders, or sweeping of multiple price levels. This can introduce significant volatility into your strategy and is something to account for if your algorithm relies on L1 data alone. For such conditions you may need to work with L2 data also.

In certain cases, only executed transactions are meaningful, and you might want to ignore updates on unfilled orders, order modifications, or cancellations. For example, if your trading strategy relies only on price movements resulting from actual trades, you can disregard order book changes that don’t involve trades, reducing noise further.

Some strategies only need information about changes to a price level rather than every single tick. By updating your records only when a new price level appears (for example, when the best bid or ask price changes), you avoid processing repetitive data, further reducing computational load.

In general, Data filtering approaches should align with the specific objectives of your trading strategy. There’s no one-size-fits-all approach, and knowing the exact pain points (like data overload, latency, or analysis complexity) can help tailor a solution.

To be Continued in Part 2

要查看或添加评论,请登录

社区洞察

其他会员也浏览了