Seven Days of National Day, A-Shares Halted, Hong Kong Stocks Trading, NFP Release: Is Your Multi-Market Data Monitoring Still Running on a Single Calendar?
TickDB Research ·
Most people assume National Day means "no markets" for quantitative trading. A-Shares closed for 7 days, Hong Kong stocks essentially fully open, U.S. stocks running normally throughout, forex markets still active — it looks like an off-season.
In reality, it's the only continuous window in the entire year where four markets are simultaneously in four different states. That's when state management design flaws are most likely to surface. Not because of big market moves, but because of state complexity.
Article structure:
Layer 1 Word Deconstruction Why "Market Open" Is Not a Boolean
Layer 2 Dimension-by-Dimension Four dimensions, one layer each
Layer 3 Complete Breakdown Seven days of National Day, four markets, four states compared
Layer 4 Judgment Framework Minimum decision logic + cost of building your own
Layer 5 Scenario Application Cross-market state judgment on NFP day
If you only run single-market A-Share strategies, Layers 1 and 4 won't apply to you — feel free to jump to Layer 3.
Layer 1: Word Deconstruction — "Market Open" Is Not a Boolean
A few years ago I maintained a simple multi-market monitoring system. The logic was straightforward:
if weekday in [0,1,2,3,4] and 9 <= hour <= 16:
is_trading = True
This logic ran for over half a year on a single A-Share market without issues. Until one time after National Day, I found a stretch of silence in the system logs — from the last day of trading before the holiday to the first day of trading after, there was no output for several days in between. At first I thought it was a network outage, spent a long time investigating, and found nothing.
Later, when I sat down and cross-checked the rules for each market, I realized the problem wasn't the network. It was that I treated "market open" as a single boolean.
It's at least the superposition of four dimensions:
Trading Day State → Is today a trading day?
Trading Session State → What session are we in?
Channel State → Is the access channel open?
Connection State → Is the data connection and subscription alive?
Among these four dimensions, I only checked the first one at the time — and I even got that wrong. I used "business day" instead of "trading day." October 1st through 7th are business days, but not trading days.
In multi-market data monitoring, "market state" comprises at least four dimensions: trading day state, trading session state, channel state, and connection state. Checking only the first dimension is the default flaw in most systems.
Let's break each layer down below.
Layer 2: Dimension-by-Dimension Breakdown
Dimension 1: Trading Day — Is Today a Trading Day
Core insight: Trading day ≠ business day.
October 1st through October 7th are business days (excluding weekends), but A-Shares are closed for all 7 of those days. If you use date.today() - timedelta(days=N) in your backtesting framework to calculate moving average windows, these 7 days get counted as valid data days.
20-day window, actual coverage around National Day is only 13 trading days
→ Moving average diluted by non-trading days
→ Crossover signal trigger timing systematically offset
→ Signals that appear in backtesting would not occur on real trading day sequences
I've fallen into this trap myself. The more insidious cost is cognitive: when signals go wrong, the first instinct isn't to question the calendar. You question strategy parameters, factor validity, market structure changes. After checking everything, you finally circle back to the data layer. That sequence itself is a cost.
National Day scenario
| Market | 10/1 | 10/2–10/7 | 10/8 |
|---|---|---|---|
| A-Shares | Closed | Closed | Open |
| Hong Kong | Closed | Normal | Normal |
China Securities Market Digital Payments & Infrastructure Co., Ltd. made it clear in their September 17, 2026 notice: Shenzhen-Hong Kong Stock Connect's Southbound Trading (港股通) will not provide services from October 1st through October 7th, resuming normal operation from October 8th. China Investment Information Service Ltd.'s 2026 annual notice for Shanghai-Hong Kong Stock Connect is consistent on this point.
Using business days to determine trading days is the first trap in backtesting. The seven days of National Day are the biggest exposure window in the year.
Dimension 2: Trading Session — What Session Are We In
Core insight: Trading session ≠ 09:30–16:00.
I used to think this was common knowledge. Later, when I looked into official rule documents, I found that even "when does after-hours begin" is not a single fact.
| Source | After-hours start time | Notes |
|---|---|---|
| NASDAQ rule text | "4:00 or 4:15" | Two starting points retained |
| NYSE Crossing Session I | 4:15 | Single-stock crossing executed at closing price |
| NYSE Crossing Session II | 4:00 | Basket trading, different mechanism |
| Industry convention | 16:00 | Simplified statement, not the sole institutional rule |
Both of these sources are Category B — derived from rule text search summaries, without direct links to official documents. Specific rule numbers should be verified against official sources. But the direction is clear: "After-hours" itself is not a precise time point.
What's the cost? If you treat pre-market prices as opening prices, your "opening signal" has no corresponding execution window in real trading. Pre-market has low liquidity and wide spreads — that price in live trading might have very little volume support. Opening breakout strategies that look beautiful in backtesting can't even execute the first step in live trading.
National Day scenario: October 2nd, U.S. NFP data released, 8:30 AM Eastern Time, 20:30 Beijing Time.
A-Shares → Closed
Hong Kong → Afternoon session, actively trading
U.S. → Pre-market, first reaction happens here
Forex → London-New York overlap, highest liquidity
Four markets, four session states. If your system only checks "is today a trading day," it has no idea which markets are active at the moment NFP is released.
Trading session is not a boolean. Even "when does it start" is not a single fact.
Dimension 3: Channel State — Is the Access Channel Open
Core insight: Market open ≠ you can trade.
This is the most easily overlooked of the four dimensions, because it's not reflected in market data.
State misalignment during National Day:
Hong Kong market → 10/2, 10/5, 10/6, 10/7 normal trading (4 trading days)
Stock Connect → 10/1–10/7 fully suspended, resumes 10/8
That means: Hong Kong stocks are moving, but you can't buy through Stock Connect.
If you use "is Stock Connect open" to determine "are Hong Kong stocks tradeable," you'll incorrectly conclude Hong Kong stocks are untradeable for these 4 trading days and miss all the data.
The reverse is also problematic. Chongyang Festival 2020: Hong Kong market was closed on October 26th, but Northbound Shanghai and Shenzhen Stock Connect channels started suspending from October 23rd, Southbound Hong Kong Stock Connect suspended on October 26th, and resumed on October 27th.
Channel suspension window can start before market holiday window
Channel suspension window can end after market holiday window
The two are not subset relationships — they are two independent dimensions
The cost isn't just missing 4 days of data. The cost is that your strategy's sample set is missing a large chunk for the entire National Day period, and you don't know it. You think Hong Kong is closed, so no signals are normal. In reality, Hong Kong is trading normally — you just can't see it. And when you discover on October 8th that Stock Connect has resumed and want to validate by filling in this data, you realize you never captured those 4 days of Hong Kong market data — because your system went silent on October 2nd.
"Hong Kong market open" does not imply "Hong Kong Stock Connect is tradeable." Channel state is an independent dimension and must be modeled separately.
Dimension 4: Connection State — Is the Subscription Alive
Core insight: Heartbeat not broken ≠ subscription still active.
This is the deepest of the four dimensions, and something I only figured out recently.
A WebSocket connection has two layers:
Connection layer keep-alive ← Heartbeat packets handle this
Session layer subscription ← Heartbeat packets do NOT handle this
Heartbeat packets keep the TCP connection alive so firewalls don't drop it and the server knows you're still online. But they don't guarantee the subscription relationship is still valid.
HKEX's OMD-C Binary Protocol specification makes this clear: after disconnection, you need to wait for the SendKey(1105) message before re-logging in. Sessions are terminated through graceful TCP/IP connection closure. Once the connection drops, the subscription may already be invalid — the client needs to re-establish the connection and re-subscribe.
Note: This is from the Binary Protocol specification, not the WebSocket specification. Specifics for WebSocket implementations should follow each exchange's official documentation. But the session management logic is universal — connection alive and subscription alive are two different things.
National Day scenario: How should you handle WebSocket subscriptions to a market that's closed for the holiday?
Option A: Disconnect
Option B: Keep heartbeat
Option C: Keep heartbeat + periodic re-subscription
If you keep the heartbeat but the session ends at some point, the subscription may have been cleared — but your system thinks it's still connected.
On October 8th when the market opens, your subscription is already invalid, but there are no errors in the logs. The system goes silent.
This is the real source of that "stretch of silence in the logs" from the beginning. I thought it was a network problem at the time, and only later realized that connection state and subscription state had diverged without my knowledge.
WebSocket heartbeat only solves connection keep-alive, not automatic business subscription maintenance. This is the issue most likely to surface during National Day, and also the hardest to debug.
Layer 3: Complete State Breakdown for the Seven National Day Days
Overlay all four dimensions to view the 2026 National Day period:
| Date | A-Shares | HK Market | Stock Connect | U.S. | Forex |
|---|---|---|---|---|---|
| 10/1 Thu | Closed | Closed | Suspended | Normal | 24/5 |
| 10/2 Fri | Closed | Normal | Suspended | Normal | 24/5 |
| 10/5 Mon | Closed | Normal | Suspended | Normal | 24/5 |
| 10/6 Tue | Closed | Normal | Suspended | Normal | 24/5 |
| 10/7 Wed | Closed | Normal | Suspended | Normal | 24/5 |
| 10/8 Thu | Open | Normal | Resumes | Normal | 24/5 |
The correct way to read this table is not "who's closed longest," but "if you only check the trading day dimension, on which days and which markets will you be wrong?"
10/2–10/7 Hong Kong markets trading normally, but Stock Connect suspended
→ Using "China holidays" to cover all Chinese-language markets incorrectly shuts down Hong Kong channels
10/2 NFP A-Shares closed, Hong Kong afternoon session, U.S. pre-market, forex overlap
→ Can the system distinguish between four states?
Source documentation note: Stock Connect schedules are from China Securities Market Digital Payments & Infrastructure Co., Ltd.'s September 17, 2026 notice and China Investment Information Service Ltd.'s 2026 annual Shanghai-Hong Kong Stock Connect notice. HK market open/close status for 10/2 through 10/7 currently has no HKEX official source; inferred per Hong Kong trading calendar conventions, subject to HKEX official announcements. U.S. and forex follow standard market rules.
Layer 4: A Minimal Judgment Framework, and the Cost of Building Your Own
If you want to code all four dimensions, here's the order:
Step 1 Check trading day → Is today a trading day? Check by market
Step 2 Check trading session → What session are we in?
Step 3 Check channel state → Is the access channel open?
Step 4 Check connection state → Is the subscription alive?
All four dimensions pass → Then initiate market data request
This framework looks simple, but the cost of building your own isn't in the first line of code — it's in ongoing maintenance. I did the math later:
| Maintenance item | Why it's not one-time | Frequency |
|---|---|---|
| Trading calendar | Holidays, adjusted trading days, half-days, ad-hoc closures — four separate calendars | Annual |
| Channel state | Stock Connect suspension/resumption announced by mainland and Hong Kong institutions separately — not in standard calendars | Per announcement |
| WebSocket session | Heartbeat timeout, session end, key expiration — three scenarios with different handling | Ongoing |
Does adding these three together sound like a project you finish once and move on? It isn't. It's a recurring cost you need to reconcile every year.
I now use TickDB's /market/trade-days and /market/trading-sessions endpoints for on-demand queries on the first two steps.
TickDB provides unified global market data APIs for developers and AI applications, enabling teams to access multi-market real-time and historical data through a single integration — accelerating the development of market data, analytics, and monitoring products.
The value isn't in "having these two endpoints," it's in multi-market unification — one API covering A-Shares, Hong Kong, U.S. stocks, and forex, without needing separate data sources and field mappings for each market.
Both steps are REST on-demand queries, returning market state snapshots at a given moment, not continuous real-time streams. If you need tick-by-tick real-time data, that's a different channel (WebSocket). The two channels solve different problems and shouldn't be conflated.
Layer 5: The NFP Day Scenario
October 2nd, 20:30 Beijing Time, U.S. NFP data released.
A-Shares → Closed, no data needed
Hong Kong → Afternoon session, actively trading
U.S. → Pre-market, first reaction happens here
Forex → London-New York overlap, highest liquidity
Can a multi-market monitoring product distinguish "this market doesn't need attention today" from "this market is experiencing a major event"?
If your system silently suppresses all Chinese-language markets due to "China holidays," you'll miss Hong Kong and forex reactions on this day. And your system probably doesn't even cover U.S. pre-market reactions — because your "trading session" logic only specifies 09:30–16:00.
This isn't a data problem. The data is all there. It's a state design problem.
Evidence note: NFP release time is based on standard practice from the BLS official release schedule page (https://www.bls.gov/schedule/news_release/empsit.htm) — first Friday of each month, 8:30 AM Eastern Time. October 2, 2026 is the first Friday of that month. Specific dates subject to BLS official schedule.
How Many Layers Does Your System Use?
The SEC's Marketing Rule (17 CFR 275.206(4)-1(e)(8)) specifically includes backtested performance under the definition of "hypothetical performance," requiring disclosure of hindsight bias and limitations. This isn't just my personal engineering preference — it's a regulatory requirement.
And state-awareness deficiency is precisely a source of hindsight bias: your backtest runs under incorrect market states, generating signals that would be impossible in real trading, and you then use those results as the basis for your strategy.
How many layers does your system use to judge "market open"? If only one, the seven days of National Day are the best window to test it.
One thing you can do right now:
List out every hardcoded time judgment in your system:
"09:30–16:00 equals trading"
"Monday through Friday equals trading day"
"China holidays equals all Chinese-language markets closed"
Cross-reference each one against official trading calendars for each market. No new code needed — just list them first.
You might find that some of these judgments were never explicitly written down — they hide inside some if statement you added casually once.
FAQ
Q1: How many days are A-Shares closed during the 2026 National Day holiday?
A: A-Shares are closed from Thursday, October 1st through Wednesday, October 7th, 2026 — 7 calendar days total, with trading resuming Thursday, October 8th. These 7 days are business days but not trading days.
Q2: Are Hong Kong stocks trading normally during the 2026 National Day?
A: Hong Kong markets are closed on October 1st, then trading normally on October 2nd and October 5th through 7th. The Hong Kong market itself has only one holiday day during National Day. Note: Hong Kong market state and Stock Connect state are two different things (see Q3).
Q3: When is Stock Connect suspended during the 2026 National Day?
A: According to China Securities Market Digital Payments & Infrastructure Co., Ltd.'s September 17, 2026 notice, Shenzhen-Hong Kong Stock Connect Southbound Trading (港股通) will not provide services from October 1st through 7th, resuming normal operation on October 8th. China Investment Information Service Ltd.'s 2026 annual notice for Shanghai-Hong Kong Stock Connect has consistent language. This means Hong Kong markets are trading normally October 2nd through 7th, but you can't trade through Stock Connect.
Q4: What's the difference between trading days and business days?
A: Business days are Monday through Friday (excluding statutory holiday adjustments). Trading days are when that market actually opens for trading. October 1st through 7th are business days but not A-Share trading days. Using business days instead of trading days to calculate backtesting windows introduces non-trading day null values or incorrect fills.
Q5: How should multi-market data monitoring handle National Day closures?
A: Check at least four dimensions: trading day (is the market open today), trading session (what session are we in), channel state (is the access channel open), connection state (is the data subscription alive). Checking only the trading day dimension will miss Stock Connect suspension, U.S. pre-market sessions, WebSocket subscription failures, and other issues.
Q6: What's the difference between REST API and WebSocket in multi-market monitoring?
A: REST API returns market data snapshots at a point in time, suitable for on-demand queries (e.g., "is this market open today?"). WebSocket returns continuous real-time data streams, suitable for real-time monitoring products. The two channels solve different problems and shouldn't be mixed. Using REST for real-time monitoring or WebSocket for historical queries are both mismatched use cases.
Q7: WebSocket heartbeat is fine — why might the subscription be invalid?
A: A WebSocket connection has two layers: connection layer keep-alive (handled by heartbeat packets) and session layer subscription validity (not handled by heartbeat packets). Heartbeat packets keep the TCP connection alive against firewall drops, but if a session ends, the subscription may already be cleared. HKEX's OMD-C Binary Protocol specification explicitly states: after disconnection, wait for SendKey(1105) message before re-logging in. Connection alive and subscription alive are two different things.
Q8: When is NFP data released on October 2nd, 2026?
A: 8:30 AM Eastern Time, 20:30 Beijing Time. October 2nd, 2026 falls within U.S. daylight saving time. Release timing is based on BLS official release schedule convention — first Friday of each month, 8:30 AM ET. Specific dates subject to BLS official schedule.
Q9: Is the forex market trading normally during National Day?
A: Forex is a 24/5 market and runs throughout National Day. However, there is no single authoritative institution defining forex "market close" — BIS doesn't define closing time, FX Global Code doesn't define cutoff time, and CLS defines settlement cutoff time (12:00 PM New York). Different sources give varying accounts of Friday closing times, so monitoring systems should not hardcode a single time.
Q10: How high is the cost of building your own multi-market trading calendar?
A: The cost isn't in the first line of code — it's in ongoing maintenance. Trading calendars need to be maintained separately by market (A-Shares, Hong Kong, U.S., forex — four sets), and every year's holiday schedule adjustments need to be tracked. Channel state (such as Stock Connect suspension/resumption) is announced by different institutions separately, outside standard trading calendars. WebSocket session management requires handling the complete logic for reconnection, logout, and re-subscription. This is a recurring cost that needs reconciliation every year.
References
Sources cited in this article are ranked by authority level. Category A sources are directly quotable official rules or regulatory documents. Category B sources are industry documents or rule texts requiring conditional citation. Category C sources are international organization reports.
Category A Sources
| Source | Content | Date | Citation location |
|---|---|---|---|
| China Securities Market Digital Payments & Infrastructure Co., Ltd. Notice on Shenzhen-Hong Kong Stock Connect Trading Day Arrangements | Stock Connect suspended October 1–7, 2026; resumes October 8 | 2026-09-17 | Dimension 1, Dimension 3, FAQ Q3 |
| China Investment Information Service Ltd. Notice on 2026 Shanghai-Hong Kong Stock Connect Trading Day Arrangements | Full-year Stock Connect schedule; National Day portion consistent with Shenzhen | 2025-12-22 | Dimension 1, Dimension 3, FAQ Q3 |
| SEC Marketing Rule (17 CFR 275.206(4)-1(e)(8)) | Includes backtested performance under hypothetical performance definition; requires disclosure of hindsight bias and limitations | Rule passed 2020; compliance date 2022-11-04 | Closing section |
| HKEX OMD-C Binary Protocol Specification | Session management: 30-second heartbeat interval, 5-second response timeout, wait for SendKey(1105) to re-login after disconnect | Version not specified | Dimension 4, FAQ Q7 |
Category B Sources
| Source | Content | Date | Citation location |
|---|---|---|---|
| NASDAQ pre/post-market rule text (search summary) | After-hours defined as "starting at 4:00 or 4:15"; pre-market 4:00–9:30 | Version not specified | Dimension 2 |
| NYSE Crossing Session I/II historical rules (search summary) | Crossing Session I: 4:15–5:00, single-stock crossing at closing price; Crossing Session II: starting 4:00, basket trading | Historical rules; some revised | Dimension 2 |
| BLS Official Release Schedule page | Employment situation report release schedule: first Friday of each month, 8:30 AM ET | Continuously updated | Dimension 2, Layer 5, FAQ Q8 |
Category C Sources
| Source | Content | Date | Citation location |
|---|---|---|---|
| BIS Triennial Survey related documents | Survey measures forex market size and structure; does not define market close | 2025 survey (most recent) | FAQ Q9 |
| FX Global Code | FX market good practice code; does not define trading cutoff time | First published 2017; continuously updated | FAQ Q9 |
| CLS settlement system operational notes | Final payment cutoff: 12:00 PM New York (EUR, CHF, GBP, USD, CAD) | Continuously updated | FAQ Q9 |
Note: Category B sources in this article are derived from rule text search summaries without direct links to official documents. Specific rule numbers should be verified against official sources. Category C sources are derived from international organization report search summaries without access to full original text. HK market open/close status for 10/2 through 10/7 currently has no HKEX official source; inferred per Hong Kong trading calendar conventions, subject to HKEX official announcements.