Hide N' Seek Pt.1 - Avoiding Detection
How to reduce market impact through disguising your flow when executing
Introduction
This is the 1st in a 3 part series where we explore the games behind hiding and detecting flow from market participants. Here’s a brief overview of what this series should look like (subject to small changes):
Avoiding Detection (How to hide your flow: algorithms, rules & tricks)
Detecting Order Execution Algorithms (Swapping roles, how to detect flow)
A Real Strategy (We’ll make a strategy from #2, showing the research process start-to-finish, regardless of failure or success)
I have an existing article on execution algorithms, but we focused mostly on one side of the problem - the cost side (assuming an arbitrarily small size). Obviously, in most cases, we care both about how much size we can push through AND the cost for that, but you typically end up making a distinction based on what you care about more.
For more details on the difference between the two sides of execution, and some exploration of execution holistically, feel free to check out this prior article:
Index
Randomization
When Detection Doesn’t Matter Anymore
Aggression
Retail Flow
Matching Size Distributions
Hiding In High Volume
Wash Flow & Manipulation
Adversarial Games
Randomization
For our basic model, there are two dimensions we need to randomize:
Order Size
Order Frequency
If we sent $2,000 every 20 seconds, that would be easily detectable, even by someone sitting and watching the trade feed. We want to make sure that our flow does not have any regularity in its sizing or in its frequency.
We have a parameter that we must tune to decide exactly how random we are willing to be. If there is a real need to have this size executed within a period, then random sizes and intervals will lead to a random execution finish time. This means we need to trade off the potential for predictability with the benefits of executing within a certain window.
On top of this, we will have times when it makes sense to execute more size compared to others. Liquidity is very seasonal and at certain times of day, there is a lot more of it so disguising it may not necessarily make sense.
We also don’t care an awful lot if we get detected near the end of our execution schedule, but we do care if we get detected right at the start before we’ve put much flow through the market.
As a result of both our need to have a non-random end time and the potential benefits of tuning our aggression level in real-time, we often won’t have a truly random frequency and order size.
For a good example of a simple execution algorithm, it is worth looking at the IBKR Accumulate-Distribute Algorithm:
https://www.interactivebrokers.com/en/trading/accumulate-distribute.php
When Detection Doesn’t Matter Anymore
There are two reasons why we would want to get detected (or be indifferent to it). Either there is enough liquidity to sweep the book and finish executing in one go, or the signal that you intend to put a lot of flow into the market will attract more liquidity providers.