TAIEX futures day session: hours and day-only backtests
The TAIEX futures day session runs 08:45–13:45 Taiwan time. A correct day-only backtest uses bars inside those limits, treats each day as its own session, closes every trade before the last bar ends, and is compared with an all-session run under the same rules and costs.
By Soren Huang · Published · updated · Editorial policy
Contents
- What are the TAIEX futures day-session hours?
- What happens at the open and the close of the day session?
- How do you set the session boundaries in a day-only backtest?
- How do you make a strategy flat before 13:45?
- Day-only bars or combined bars: which should you test on?
- How do you compare day-only results with all-session results?
- Frequently asked questions
- References
The TAIEX futures (台指期) day session runs from 08:45 to 13:45 Taiwan time on trading days. On final settlement day, the expiring contract stops trading at 13:30. To backtest day-only, use bars that start at 08:45 and end at 13:45, treat each day as a separate session, and close every position on or before the last bar.
What are the TAIEX futures day-session hours?
The day session (日盤) is the regular trading session of TAIEX futures, from 08:45 to 13:45 Taiwan time (UTC+8). That is five hours, or 300 minutes. The same contracts also trade in an after-hours session (夜盤) from 15:00 until 05:00 the next morning. Between 13:45 and 15:00 there is no trading.
The day session sits around the Taiwan stock market. Cash stocks on the Taiwan Stock Exchange trade from 09:00 to 13:30. So futures open 15 minutes before the stocks and close 15 minutes after them. Most day-session behaviour you see in your bars comes from those two offsets.
| Time (Taiwan) | What happens |
|---|---|
| 08:30–08:45 | Futures orders are accepted for the opening auction; no trades yet |
| 08:45 | Futures day session opens with a call auction |
| 09:00 | Taiwan cash stock market opens |
| 13:25–13:30 | Cash market closing call auction |
| 13:30 | Cash market closes; on final settlement day the expiring futures contract also stops |
| 13:45 | Futures day session closes for all other contract months |
| 15:00 | After-hours (night) session opens |
Exchanges can change trading hours and contract rules. Check the TAIFEX contract specification page before you build a session template, or use the futures market hours tool to see the current sessions in your own time zone.
What happens at the open and the close of the day session?
The first and last parts of the day session behave differently from the middle, so a backtest must handle them on purpose. A call auction is a matching method where orders are collected for a short time and then filled together at one price. TAIEX futures open with a call auction at 08:45. All orders from 08:30 to 08:45 meet at one opening price.
That opening price carries everything that happened since 13:45 the day before. This includes the night session, the US market and any overnight news. In a day-only series, the result is a gap between yesterday's last bar and today's first bar. Three things follow for your backtest:
- Stops can be jumped. If a stop sits 30 points below yesterday's close and the market opens 80 points lower, a real stop fills near the open, not at the stop price. Your backtest should fill at the opening price when the open is already past the stop.
- The first bars are wide. Range and volume are often large at 08:45 and again at 09:00, when stocks open. A breakout rule that triggers in the first 15 minutes reacts to a different market than one that triggers at 11:00.
- Slippage is higher. Use a larger slippage value for entries in the first minutes than for the middle of the day.
At the other end, the TAIEX index itself stops moving when the cash market closes at 13:30. From 13:30 to 13:45, futures still trade, but the underlying index is fixed. Check the last 15 minutes separately in your own data. Look at range, volume and how your exits filled there.
How do you set the session boundaries in a day-only backtest?
Set the session to exactly 08:45–13:45, check how your data stamps its bars, and make sure no night bars leak in. A session boundary is the time where the backtest considers one trading day to end and the next to begin. If it is wrong, daily indicators, daily exits and daily results are all computed on the wrong bars.
- Pick the right data series. Use a day-session-only series, not an all-session series filtered by hand, unless you are sure the filter works. Data vendors name these series differently; 台指全 and all-session TAIEX futures data explains the common names.
- Check the bar timestamp. Most platforms stamp a bar with its end time. With 5-minute bars, the first bar (08:45–08:50) is stamped 08:50 and the last bar is stamped 13:45. Some data stamps the start time instead. Your time rules must match.
- Count the bars. Divide 300 minutes by the bar length. Five-minute bars give 60 bars per normal day. Fewer bars may mean missing data; more bars may mean night bars are mixed in.
- Do not use the stock-market template. A 09:00–13:30 template drops the first and last 15 minutes of futures trading.
- Handle short days. On final settlement day, the expiring month ends at 13:30. Check whether your continuous series still holds that month on that day. The TAIEX futures settlement dates tool lists the days.
- Mark holidays and the days around them. Market closures create longer gaps and can change behaviour on the reopening day.
| Setting | Correct for day-only | What goes wrong if it is off |
|---|---|---|
| Session start | 08:45 | 09:00 removes the opening auction bars |
| Session end | 13:45 | 13:30 removes the last 15 minutes and moves your exits |
| Bars per day (5-minute) | 60 | Extra bars mean night data is mixed in |
| Timestamp convention | Same as your time rules | Time exits fire one bar early or late |
How do you make a strategy flat before 13:45?
A flat-by-close rule only works if the exit order is sent while a bar is still left to fill it. A flat-by-close rule is a rule that closes every open position before the session ends, so no trade is held through the gap to the next session.
The detail that matters is execution timing. Next-bar execution is a backtest rule where a decision made at the close of one bar is filled at the open of the following bar. This is realistic, because you cannot trade at a price that was already final when you made the decision. But it means the last possible exit decision must happen one bar before the session ends.
Hypothetical example
A strategy trades 5-minute bars stamped with their end time. The last bar of the day runs 13:40–13:45. With next-bar execution, the strategy must decide to exit at the close of the bar stamped 13:40, so the exit fills at the open of the final bar, near 13:40. If the rule says "exit at the close of the 13:45 bar", there is no next bar in the day session. The trade stays open until 08:45 the next morning and takes the whole overnight gap. A typical setup is: no new entries after the bar stamped 13:15, exit decision at the bar stamped 13:40. On a 13:30 settlement day, move both times 15 minutes earlier.
After the run, count how many trades were open at 13:45. With a working flat-by-close rule, that number is zero on every day.
Day-only bars or combined bars: which should you test on?
Test on the bars you will actually trade, because day-only and combined bars produce different indicator values and different signals. Combined bars (also called all-session bars) are a series that joins the day session and the night session into one continuous series.
On combined bars, look-back indicators mix night and day trading, so generate and test on day-only bars if you trade only the day; night sessions in futures backtests explains the difference.
How do you compare day-only results with all-session results?
Run the same rules with the same costs over the same dates on both series, then compare per-trade and risk measures, not only the total profit. The total can be larger on all-session data simply because there are more hours to trade.
Hypothetical example
One breakout rule on TAIEX futures 15-minute bars, same parameters, same round-trip cost per trade. Day-only with flat-by-close: 600 trades, net NT$900,000, average trade NT$1,500, largest drawdown NT$300,000. All-session: 1,100 trades, net NT$1,100,000, average trade NT$1,000, largest drawdown NT$450,000. The all-session run earns more in total but less per trade and with a deeper drawdown. A small rise in slippage would hurt it first.
| Measure | Why it differs between the two runs | What to look for |
|---|---|---|
| Average trade after costs | Night trades often have a different size of move | Is it several times the round-trip cost in both runs? |
| Number of trades | More hours give more signals | Enough trades in each run to judge the result |
| Largest drawdown | Overnight holding adds gap risk | Can your account carry the deeper one? |
| Results by year | Night liquidity and behaviour change over time | Does one run depend on a few years? |
| Long vs short | Overnight moves can favour one side | Does one side carry the whole result? |
Decide which session you will trade before you compare, if you can. If you test both versions and keep the one that looks better, that choice is one more trial. Each extra trial makes the best result look better than it really is (Bailey, Borwein, López de Prado and Zhu, 2014). Use the comparison to understand where the strategy's trades come from, not only to pick a winner. If you do test both versions, the strategy validation in AlphaPrime (Valynox) holds each one to the same thresholds and walk-forward checks, so the comparison stays on equal terms.
AlphaPrime applies trading sessions, next-bar execution, fees and slippage to every candidate in its backtesting. Put the day-only and all-session runs side by side in the Performance Report and compare drawdown, periodic performance and the long and short analysis.
What this means if you use AlphaPrime: load your own day-session TAIEX futures bars, set the session and costs before the search starts, and check that no trade is open at 13:45 before you review any result.
Frequently asked questions
What are the 台指期日盤 (TAIEX futures day-session) hours?
The TAIEX futures day session runs from 08:45 to 13:45 Taiwan time on trading days. Orders for the opening auction are accepted from 08:30. On final settlement day, the expiring contract month stops at 13:30, while other months trade until 13:45.
Are TAIEX futures day-session hours the same as Taiwan stock market hours?
No. Taiwan cash stocks trade from 09:00 to 13:30, while TAIEX futures trade from 08:45 to 13:45. The futures open 15 minutes earlier and close 15 minutes later. A backtest that uses the stock-market session for futures drops those 30 minutes.
Should I backtest a 日盤策略 (day-session strategy) on day-only or all-session data?
Use the data that matches how you will trade. If you only trade during the day, build and test the strategy on day-only bars. Indicators computed on all-session bars include night trading and give different signals from the same rules on day-only bars.
Why is the first bar of the day session so different from the others?
The day session opens with a call auction at 08:45, and that price reflects everything since the previous day's close, including the night session. The first bar often has a gap and a wide range. The cash market opening at 09:00 often adds a second burst of movement.
How do I make sure a day-only backtest closes all trades?
Send the exit decision one bar before the session ends, so next-bar execution can still fill it on the last bar. With 5-minute bars stamped by end time, decide at the 13:40 bar. After the run, check that no trade was open at 13:45 on any day.
References
- Bailey, D. H., Borwein, J., López de Prado, M., & Zhu, Q. J. (2014). Pseudo-Mathematics and Financial Charlatanism: The Effects of Backtest Overfitting on Out-of-Sample Performance. Notices of the American Mathematical Society, 61(5), 458–471.

