Cart 0

Synchronizing your Trading Systems with Early Holiday Closes

Posted by David Bean on

Holiday's can be bitter sweet as traders with the early closings and synchronizing your trading systems. We never know for sure the exact future holiday schedule for the exchanges. The CME does offer a holiday calendar for the current year and have the dates for 2017 listed. We do not know how those may change as each holiday approaches or what future holiday calendars would look like from 2018 forward. For this reason, we adapt as we find out by checking the calendar a few days before each holiday. In general, we do not trade on holidays or half days.  

The futures markets can be open on days the stock market is closed. For example, on Thanksgiving, the futures traded until 1:00 pm EST and on Friday, the day after Thanksgiving, the market traded until 1:15 pm EST. Typically the stock index futures close 15 minutes after the stock market closes. This is the reason that the stock index futures closed at 1:15 pm EST on Friday, November 26, 2016.

It is not always as easy as just turning automation to Off. If you develop a trading system that typically exits the trade at 4:00 pm EST or anytime after 1:15 pm EST, you may run into synchronization issues if you have a trade signal during the day during a holiday shortened session that still shows a trade signal after the close. You come into Monday's trade with an open position which is not the intent of your day trade system (or swing strategies that would have an exit time at the end of a trading day or on a Friday for example).

There are three methods that that we can use to manage this:

1.) The easiest way is to use the Close At End of Day strategy in Tradestation. The signal with an open position will exit at the close of the last bar of the day so that your trading signals do not have any open positions when the next trading session starts. This method is great for backtesting as it will show exits on any trading sessions that end before your exit time. The downside of this method is that it can interfere with future trades if you keep this strategy Status to On. For example, if you have a trade that exits at 4:05 pm EST and you have the Close At End of Day status set to On, the strategy can send an exit signal between 4:00 pm and 4:05 pm, especially if you have a secondary data series such as NYSE TICK, NYSE ADV, NYSE DECL and the end of those sessions occur earlier than your exit time. It won't back test that way, but it will do that during automation (exit at 4:02 or 4:03 pm EST based on our experience). If your Exit Time is before or at 4:00 pm EST, then it is not usually issue. For this reason , we prefer not to use this method except during backtesting. It can still be used successfully for strategies that exit at 4:00 pm EST or earlier or if you wait for your first trading signal of the day after the holidays, and then turn the status to Off for Close At End of Day

2.) The second option is to use the DontTradeOnHolidays function. You simply add the line of code to your entry:

and DontTradeOnHolidays=1

and the list of dates in the DontTradeOnHolidays will be a list of dates that the strategy does not trade on.

Download DontTradeOnHolidays function for Tradestation

3.) You could create a custom strategy that would exit at the right time for each new holiday. You could then add this strategy to your existing strategy as a second strategy within Tradestation. Using the example of the 1:15 pm EST close for November 26, 2016, the day after Thanksgiving, the code would look like this:

If Date=ELDate(11,26,2016) and Time=1314 Then Sell next Bar at market;
If date=ELDate(11,26,2016) and Time=1314 Then Buy to Cover Next Bar at market;

This would allow you to trade and exit at the correct time, one minute before the close (the open of the last bar). The first line of code would exit long trades while the second line of code would exit short trades. 

This article has focused on Tradestation methods. Similar methods could be used for other platforms and languages as well.

Share this post

← Older Post Newer Post →

  • The function is useful but very inefficient in implementation.
    The cascading if statement means if it is NOT a holiday it must text every single date, every bar. it is going to call the ELDate function every bar for every date unless it finds a match before the end of the list.
    Testing for the Year and breaking it up into annual holiday batches would vastly reduce processing.
    A programmer should do the numeric conversion so the comparison is simply a numeric compare “date = 1190101” – is this date Jan 01, 2019?
    Passing in the Date, though require a few more machine cycles per bar (push Value on stack and pop it off), would allow you to test the value of a future bar, like tomorrow.

    Samuel K. Tennis
    Mr. EasyLanguage

    Samuel K. Tennis on

Leave a comment