Answer
On 1 June 2015 the Taiwan Stock Exchange (TWSE) and the Taipei Exchange (TPEx) widened the daily price limit for listed stocks from ±7% to ±10%. That one date splits Taiwan's price history into two regimes: before it a stock could move at most 7% in a day, after it 10%. Any backtest, factor or risk model that runs across that boundary and assumes a single fixed limit will mislabel limit-hit days on the wrong side of the change.
For years the daily price limit on Taiwan-listed common stocks was ±7% of the previous close. On 1 June 2015 the regulator widened it to ±10%, the level still in force today. The change was market-wide and took effect on a specific trading day, so it is a clean cut-over, not a gradual drift — the same stock that could gap at most 7% on 29 May 2015 could gap 10% the very next trading session. Because the boundary is a single date rather than a moving threshold, it is easy to handle correctly once you know it is there, and easy to get silently wrong if you don't.
Daily price limits are a circuit-breaker-style mechanism: they slow disorderly moves, give investors an overnight cooling-off period, and reduce the risk of a single-day cascade. Taiwan, Korea and several other Asian markets have used them for decades, which is why Taiwan price series behave differently from an uncapped market like the US. The trade-off is exactly the data problem below — a limit protects the market but truncates the very returns a quant model is trying to measure. The 2015 widening from 7% to 10% was a deliberate loosening of that trade-off: give prices more room to find their level intraday, at the cost of larger permitted single-day swings.
A price limit is a hard cap on the daily return. When a stock hits limit-up or limit-down, the printed close is the capped price, not a free-market clearing price — buyers or sellers are queued at the limit and cannot trade through it. That has two consequences for data: the observed return is truncated (you never see the 12% day the stock 'wanted' to make), and volume on a locked limit day is thin and non-representative because most of the queued interest never executes. Widening the cap from 7% to 10% moves where that truncation happens, so the shape of the daily-return distribution is not stationary across 2015-06-01.
On a locked limit-up day you typically see the open, high, low and close all pinned at (or very near) the limit price, a large bid queue that never clears, and thin realized volume relative to the interest. The next session often gaps again in the same direction as the backlog unwinds. If your pipeline treats those pinned prints as ordinary observations — feeding them into a volatility estimate, a mean-reversion signal, or a fill assumption in a backtest — you will over-trust prices that were never tradable. The practical fix is to flag limit-hit days explicitly (close at or beyond the applicable limit) and decide, per strategy, whether to skip, cap, or specially handle them.
The break sits at 2015-06-01. A momentum or reversal factor built on daily returns sees a different return distribution before and after: the tails are wider post-2015, and the frequency of limit-locked days drops because moves that would have hit the old 7% cap now have room to run to 10%. If you hardcode ±10% across all history, every pre-2015 day that closed between 7% and 10% is impossible in reality — a sign your limit logic is wrong for that era.
Rather than hardcode a limit, read the per-day price-limit context from the stock-price-limit-daily dataset. It gives the limit-up and limit-down price for each stock each trading day, so you can tag whether a close hit the limit and normalize the move against the limit that was actually in force — which automatically handles the 2015 change and any per-instrument exceptions.
curl "https://api.twmarketdata.com/v2/datasets/stock-price-limit-daily?symbol=2330" \
-H "X-API-Key: sk_live_..."The 2015 price-limit widening is the cleanest structural break because it is a single, well-documented date. But a Taiwan backtest that spans a decade or more also crosses other microstructure changes. Where the exact date is well-established we state it; where it is still being confirmed against the official announcement we say so rather than invent a date — a wrong date is worse than an acknowledged 'approximately'.
Related