Months such as March may have up to 23 trading days, depending on the year. In general, a month which starts on Monday will have its maximum number of trading days in that year. In general, a month which starts on Saturday will have its minimum number of trading days in that year.
March has a possible range of 21-23 trading days. In 2019, it only has 21.
In the beginning, it made good sense to me to give the user the option to trade on the 22nd and 23rd trading days, even though they might not be there. But at the very least, the LAST trade of each month (whether that is the 1st trade, the 2nd, or the 3rd G trade) MUST occur. Imagine you trade to S fund on the 23rd trading day of March, but then make no trades in April. So if that trade at the end of March does not occur, then your strategy will be completely different for all of April.
In order to make it work, I would have to either "PUSH" or "COLLAPSE" the trades from the 22nd and 23rd trading day, so that they would occur earlier. Each method had to prioritize something and compromise something.
Example strategy:
Began month in the C fund.
1st IFT: S fund on 21st Trading Day.
2nd IFT: I fund on 22nd Trading Day.
3rd IFT: G fund on 23rd Trading Day.
PUSH
This method would establish the priority as "all trades must occur."
PUSH Trades for 2019:
Began month in the C fund.
1st IFT: S fund on 19th Trading Day.
2nd IFT: I fund on 20th Trading Day.
3rd IFT: G fund on 21st Trading Day.
The compromise is that the user may have intended to stay in the beginning fund (C) for 20 trading days, and under this method, they would only stay in the C fund for 19 trading days.
COLLAPSE
This method would establish the priority as "trades will occur on the date they were planned, or not at all." Trades from the 21st, 22nd and 23rd trading days all collapse onto the 21st. The trade scheduled for the 22nd trading day would overwrite one scheduled for the 21st. And a trade scheduled for the 23rd trading day would overwrite both.
COLLAPSE trades for 2019:
Began month in the C fund.
1st IFT: G fund on 21st Trading Day.
The compromise is of course that the first two trades just didn't happen at all this year.
In the beginning I chose COLLAPSE. But maybe I should have chosen PUSH.
The decision point today is what to do for the coming 4.0 site update.
1) I can leave trading day treatment as COLLAPSE, but that leaves the user without an option to trade relative to the end of the month (say you want to trade 2 days before the last trading day). So I would add a new option in the drop-down box, that would allow you to select "1EOM,2EOM,3EOM", which represents options that trade 1 day, 2 days, and 3 days before End of Month.
2) Switch the trading day treatment to PUSH. This will change some strategies' statistics, but probably only insignificantly. Changing to PUSH would mean that I don't need to add "1EOM,2EOM,3EOM" options, because now 21st, 22nd, and 23rd Trading Days would do exactly the same thing.