How accurate is Portfolio123's variable slippage model?

I am about 99% ready to launch my first port. There’s only one issue: balancing expected returns, opportunity costs, and trading costs. The biggest variable here is slippage. In a costless and frictionless marketplace, we would choose our top-ranked stocks without consideration for turnover and trading costs. But this is the real-world…

Most people seem to recommend liquidity filters. However, I think this leaves too much on the table. A LOT of my expected returns come from small and micro-caps.

I would like to get an idea of how accurate P123’s variable slippage model is. Can anyone share some anecdote or data to corroborate or refute the use of this model? Are there better models? I am willing to trade up worse simulated returns for better real-world returns.

Perhaps more important questions are: what execution strategies mitigate slippage for medium time-horizon investors (~1-2x annual turnover)? How does the expectancy for slippage change under these “better” execution strategies?

From, the help file :

I know it’s not your original question, but in your sim, see what happens if you:

  • set slippage to zero
  • set buy price to previous close
  • add the buy rule: low(-1) < close(0) and rankpos <= (whatever your max number of positions is)
  • on all existing sell rules add & hi(-1) > close(0)

If results are better (they’re normally going to be a lot better for moderate to low turnover models), then strict use of limit orders to (mostly) mitigate slippage may be your best bet, in which case you can sidestep the issue. The sim will tell you if letting some winners get away is better than incurring the cost of slippage.

1 Like

I use liquidity filters and use no slippage.

A related question – when you actually trade the micro caps, do you use market orders to trade at the opening price, or limit orders?

There is no way any slippage factor could account for trading on small and micro-caps. When it comes right down to it, the slippage factor is NOT measuring friction. It is measuring the ability to get the opening price. But once you start adding large orders to the open, you would change the dynamic of that opening price.

Suppose you have a successful backtest. That means the amount you are investing at the start in each position may be small compared to the amount you are investing in each position after 10 years, because everything is compounded (i.e. exponential growth). How does the slippage factor account for that?

My liquidity filters include a MINIMUM daily trade amount instead of an AVERAGE daily trade amount, because I’ve seen too many cases on the micro caps where there may be one active day of trading with one or more days with little or nothing traded. The average doesn’t cover you for a large trade on the days with little or no volume.

@rharmelink,

Thanks for the reply. Btw, that’s the flippin’ coolest profile pic I’ve ever seen.

You make an important distinction between market impact (a function of outstanding shares?) and slippage (a function of volume, b/a spread, and price variance?). There appears to be a lot of conflation, even in academia, between these key differences.

Anyway, whatever I do, I don’t want to play the sucker’s game of trying to take liquidity away from illiquid and thinly held securities. It seems that passive execution (e.g., pegged limit orders) may be the best way to receive liquidity without taking it. Here are some ideas for optimal execution: trading - How to simulate slippage - Quantitative Finance Stack Exchange.

There is a factor for “participation rate”: transaction costs - Typical coefficients uses in square-root model for market impact - Quantitative Finance Stack Exchange. I.e., slippage is modeled as a constant of price; impact increases as trade size increases.

@dmacdonal9,

Thanks for your response. I think I am slowly getting to that point where I “set slippage to zero” and just try to estimate impact and slippage under a “good” execution strategy, realizing that “good” may be idiosyncratic.

I invest almost exclusively in microcaps using only limit orders and have done a lot of thinking about transaction costs. Here is how I break them down:

  1. Commissions. Fidelity charges me $4.95 per trade. If I trade from more than one account (I have four different IRAs and a personal account), I pay more than one commission. If I buy more than 10,000 shares I have to place a separate order for the excess.

  2. Slippage, defined as the difference between the opening price and the price I pay.

  3. Market impact. Driving the price down as I sell my holdings, or driving it up as I buy.

  4. Partial fills. Means extra commission and opportunity costs.

  5. The bid-ask spread. This has become a lot bigger since the tick size program went into effect.

  6. Opportunity costs. Since I don’t use leverage I can’t buy and sell the same day, and sometimes it takes me several days to sell my positions in a stock (it just took me five days to sell OCC, and the price went down from $3.25 to $2.85 in the process).

From looking at all these costs together, I estimate my total transaction costs are about 0.55% or 0.6% per trade. They might be considerably higher these days because of the tick-size program.

I think P123’s variable slippage model is a good place to start. After a number of frustrating experiences, I don’t even consider buying stocks with average daily totals (measured over the last three months) of less than $48,000. And often the ADT will be sufficient to buy a stock but not to sell it without a lot of tsouris. I think that it makes sense to estimate a 5% slippage on stocks with ADTs lower than 50,000. The other numbers may be a bit high, but I rarely get fills at better than the opening price, and considering the opportunity costs, I think 1.5% is not too far off. I have always used variable slippage on my live ports. Like almost everything P123 puts in place, it took a lot of thought and experience to come up with the variable slippage model, and I trust it.

1 Like

Hi all, this thread probably most closely reflects my question, so I’m reviving this from a few months ago. Hope no-one minds. If folks would rather me start new threads please say so. I’m unsure of etiquette on p123 for these type things.

Essentially, I started trading a model this morning and was taking baby steps through the whole process. In particular I got to the part where I update my live portfolio transactions with what my actual trades were in the wild. And in particular I was adjusting the slippage. Or at least I started to. I was able to get several trades at a price below my target price from the previous close and/or below the open price.

So I was going to put in negative slippage in those cases, but the input field requires slippage to be greater than 0.

So it got me wondering how others are calculating slippage. Do you calculate slippage:

(Price of trade-Price Open)*#shares ?

edit: And I guess this has to consider my order might actually affect the open price (absent me some stocks might open at different price), so I can see reason to deviate some from the open price too.

Do you use other measures like the avg price of on previous day? Avg price for day of trade, etc? Essentially I’m just trying to determine how to best track how I’m doing on my executions given availability. Whether I’m setting my limits too low and missing out, or setting too high, or whether I’d be better just taking a reasonable ask-offer at open.

As an aside: I have one I was trying to buy that’s traded less than 100 shares so far today and on pace to be lowest trading volume of the year by far. Usually it trades 5-6 thousand so I thought it’d be liquid enough for my little order, but not yet.