Same strategy, written on both intraday and daily data takes different trades around acct equity caps

I have a strategy that was originally written on daily data. We now want to do things with this strategy that requires intraday data. So I rewrote the strategy to be able to work with intraday data instead. I am now comparing the trade lists side-by-side. When I set the equity per trade so low that it takes every trade (skips none due to insufficient funds), then the two strategies' trade lists and results match perfectly. But when I up the equity percent per trade so that it maxes out every so often then the two lists are different by about 20 trades. Also, using a compare tool of the the two trade lists (see snapshot below), then I can see that AB is processing these in a different sequence. Also, I have noticed that the main differences between the two lists is around insufficient funds caps. I know that AB is processing the availability of funds at different times between the two, so this is causing the difference. I see that there is an option to only use funds available as of the close of the last bar (UsePrevBarEquityForPosSizing), but I would like to delay the use of funds by a whole day, so that my intraday strategy cannot use funds until the next day, the same way that the daily strategy does. Is there a way to do this? Any ideas on how to get these two to sync better around equity cap areas?


This is a classic problem when comparing intraday to EOD results. It usually boils down to the fact that on any given day that there are more trades than your system can accommodate, the intraday system is selecting trades chronologically (with ties on a particular intraday bar resolved by PositionScore) while the EOD system is selecting trades based only on PositionScore.

so no way to make them match?

Depends on your strategy rules. If you are only allowed to "place orders" for the number of positions that you currently have capacity to enter, then yes you should be able to make the lists match. For example, you could determine at the start of each day that you have the ability to enter 4 trades, and therefore you will only consider the potential entries for today that have one of the top 4 position scores. If you're using limit orders of some kind, that of course will mean that you won't always get 4 fills (trade entries).

If you are conceptually placing more orders than you have capacity to take, then the trade lists will likely be different.

Yes, using limit orders and no way to tell beforehand if an order will be hit or not. Do not think we will be able to get the lists to match.....

In your EOD model, how do you determine how many Setups to consider, where "Setup" means a stock that has met all entry criteria except possibly breaching the limit price?

There is no limit as to how many I take. I set position size to 3% and then AB takes trades until it runs out of available funds to take another.

So there is no "penalty" incurred when you encounter a Setup that does not result in an entry (limit price not breached)?

correct. The trade is just never entered.

Unless I am misunderstanding something, there is no way to replicate that behavior in live trading. Essentially you have a future leak because you're using information from the end of the day (which trades breached the limit today?) to enter trades intraday.

Yes, we are well aware that on a given day that we can afford lets say 10 max positions, yet have signals for 100 entries, that there is no accurate way to determine which 10 AB is going to take before the fact. After verbal discussions with you I can conclude we will never get the intraday trade list to match with the daily list. But this is one of the reasons we are moving to intraday data, so we can accurately detect which 10 of the above entries would have actually been taken. This means the daily strategy is totally inaccurate anyway, so why would it matter if they match or not....... Thanks for your help @mradtke!