I am using an API to direct orders based on some proprietary buy/sell signal. I am trying to frame a thought process which outlines the slippage/impact risks versus execution risks given the option to utilize different order and algo types. The intent is to identify a (quasi-)optimal execution method, either by individual security or a blanket approach for the entire portfolio. Implicitly, my ultimate goal is maximizing my portfolio’s logarithmic growth rate, so I am willing to trade off some execution price for slippage risk, and vice versa. I have modeled the expected execution costs, but this only tells me that I should be willing to forego a fill if the trading costs exceed the expected return.
General Information about the strategy:
- Buys/sells illiquid securities (e.g., small and micro-cap stocks; some OTC)
- Holding periods tend to be in the months or longer
The API I am using allows for the following basic order types (there is additionally a little bit of customizability for algos):
- Limit
- Market / Market on Close / Market on Open
- max % of volume
- Relative to NBBO
- Relative to NBBO + limit
- VWAP
So far, I have ruled out market and simple limits orders. VWAPs (best efforts) seem sensible, but I am worried about their susceptibility to gaming since this is what probably what liquidity seeking algos expect. Relative orders are interesting, but a similar problem is that I would think anything at the top of the book is subject to game playing. % of volume orders seem highly susceptible to fill risk, especially for illiquid securities.
How should I begin to think about optimal execution given a choice of execution methods? What simplifying assumptions or heuristic frameworks could be useful in identifying quasi-optimal execution strategies? Is it worth investing serious time and energy into investigating algorithmic order types which seek hidden liquidity on illiquid securities?
Note: Given my trading frequency, I am not particularly interested in doing better than the midpoint of the NBBO. I am just trying to figure out how to execute at the highest rate possible without becoming scalper bait. Strict optimality conditions and dynamic stochastic control are not required.