A question for P123 ranking developers

Yuval,

Do you still think BID/ASK spread data could be useful for slippage estimates? Meaning do you think the data is good, the programmers think it is practical, that everyone at P123 likes it still etc?

Keep in mind that I am not urging P123 to implement this. I am generally happy with the present method and I leave it to P123 to set the priorities.

Plus, I think the present slippage estimates are already about twice what one can get on just a moderately sized market order with a good broker. That is not a bad thing. Maybe a very good thing for my over-optimized ports, as you point out.

But in the context of this discussion, I was thinking that the option of putting a user defined factor on the BID/ASK spread estimate of slippage could be useful when (if) the idea is being considered for implementation.

It could be useful for the reason you describe above.

I think it could also be useful because the BID/ASK spreads change during the day–narrowing considerably at the close. Close BID/ASK spread data should probably be doubled for trades at 10:00 AM—or I would use a factor of 2 if I could.

Anyway, just something for discussion while we are on the subject.

-Jim

(I’m going to be using “transaction costs” and “slippage” as synonymous in my reply, even though they may not be.)

Transaction costs depend on so many things: the bid-ask spread, the type of order, the size of the order, the total volume of shares being traded. The bid-ask spread is going to affect fills with limit orders a lot less than fills with market orders, and a lot depends on how you place your limit orders and whether you adjust them during the day and how you count the contribution of an unfilled order to your slippage cost. And VWAP is a whole other thing. I have confidence in the bid-ask spreads that we get, but you’re right, they are closing bid-ask spreads and are therefore going to be significantly lower than those from early in the day. If you’re using market orders, you’ll probably be paying the entire spread for each order, but if you’re clever about placing limit orders, you might be able to evade the spread much of the time (unless you’re buying extremely illiquid securities). And the market impact related to order size is a major factor that’s also hard to estimate. There are simply so many variables at work that estimating accurate slippage for a host of different users placing different types of orders at different sizes is pretty much impossible. P123’s variable slippage is a valiant attempt, and better than anything else I’ve seen–but I haven’t seen much.

I am hoping that at some point it’ll be possible for users to create their own formulas for variable slippage. Until then, if you have your own formula you’d like to implement, here’s what I suggest.

Create a screen with your universe and your ranking system.

Then put in the rules:

Rank > 97

ShowVar(@slippage, )

If you’re using formula weights in your simulation, the next line should be

ShowVar(@weightedslippage, @slippage*)

If your formula weight could conceivably spit out negative numbers, the next line should be

@weightedslippage > 0

The last line will be, if you’re using formula weights,

ShowVar(@avgslippage, Aggregate (“@weightedslippage”,#previous)/Aggregate(“”,#previous))

When you run the screen you’ll see the slippage amount in the column @avgslippage. Put that into your simulation.

If you’re not using formula weights, you can skip a lot of this and just use

ShowVar(@avgslippage, Aggregate (“@slippage”,#previous)

as the last line.

This is more cumbersome than just guessing what your slippage is or using the default variable slippage. I have developed complicated formulae for measuring transaction costs, and I think it’s important for me to do so since I sometimes buy more of a stock than its average daily dollar volume.

Yuval,

Very cool. I have done this type of thing to calculate “market impact” before. And you are right BID/ASK spread, market impact and a bunch of other things all get mixed together into “slippage.”

Doing this with BID/ASK spread (with additional market impact calculations if I want) is something I had not considered.

This technique, variable slippage in the sims and even entering a high fixed number into sim all work well for me now.

Thanks.

-Jim

Every time I ask something here the answers are bigger than my initial doubt and open a huge variety of possibilities.

Thanks to all of you.

I think the obvious, straightforward principle that appears to be implied – but unsaid in this thread – one that maybe you are not realizing is that the rebalance period has nothing to do with the holding period. My strategies always rebalance every week – because I want them to make the appropriate buy or sell to a position when it is the optimum time to make that change.

However, while my rebalance period is always one week, my average holding time for positions is about 3-4 months. You are right that the fundamentals of an undervalued stock might need to improve in the direction your model is assessing to be likely, but, for example; for Position 1 that change may occur next week, while for Position 2, it might not happen for six months. You want to be assessing each position and conditions as often as possible. That active assessment has nothing to do with hold-time.

The economy, the market as a whole, the different sectors and segments of the market, and the fundamental data for all 9,733 stocks and 2,172 ETFs currently in the P123 database changes EVERY DAY (P123 updates fundamentals weekly). Don’t you want to assess that data when the “iron is hot,” and make the appropriate change to your portfolio when it is the optimum time? Your holding time can be one month, three months, one year, or 10 years for that matter!

TLDR; Rebalance period and holding period are entirely unrelated.