How to Use Margin Balance

Which column to read, how big is big, and whose 130% the 130% actually is.

Last updated 2026-09
Key Takeaways
  • Margin balance is the stock of margin positions not yet repaid, counted in lots rather than money: on 2026-09-15 the market-wide margin balance was 9,190,511 lots and the margin amount was 5,822 (100M TWD).
  • TWSE says so itself: "use the previous-day balance, and treat today's balance as supplementary reference." Across the 720 adjacent trading days from 2023-09-17 to 2026-09-15, on 670 of them (93.1%) today's "previous-day balance" does not match yesterday's "today's balance."
  • To compute the daily margin change, subtract within the same row — "today's balance − previous-day balance" — never across two adjacent rows. Most days differ by only a few lots (median 5), but the largest single gap is 524,851 lots.
  • The high correlation between the margin balance level and the index (2025-09-17 to 2026-09-15, r=+0.973) is a shared trend, not a signal: switch to the change and it drops to +0.595, and against the next day's return it is −0.069 (n=229).
  • 130% is the whole-account collateral maintenance ratio, not a per-stock one; below 130% you have 2 business days from delivery of the notice to top up, and only after that deadline is collateral disposed of, starting the next business day.

Put margin balance and the TAIEX on the same chart and the two lines almost coincide — over the year from 2025-09-17 to 2026-09-15 the correlation is +0.973. You think you have found an indicator. But stretch the sample to 5 years and the same correlation drops to +0.417. This article covers what margin balance actually is, which column to read, how big is big, and three misreadings that official wording and measured numbers take apart.

What is margin balance?

Margin balance is the market's stock of margin positions not yet repaid, counted in trading units (lots); the same report carries a separate "margin amount" column in thousands of TWD. It is reported by the credit-extending institutions (securities finance companies and brokers that run margin trading in-house), then compiled and published by TWSE.

Three terms that get mixed up constantly — let's separate them first:

TermWhat it isWho computes it
Margin balanceMargin positions not yet repaid, in lots; a separate margin amount column is in thousands of TWDReported by credit-extending institutions, compiled by TWSE
Margin limitThe rule is 25% of the stock's listed shares: TWSE's report footnotes state that "when the margin balance reaches 25% of that stock's listed shares, margin buying is suspended" and "when margin or short balances reach eight tenths of the limit, quota allocation takes place on the next business day"Computed from the rule; the report publishes a "next business day limit" every day
Margin maintenance ratioThe whole-account collateral maintenance ratio; formula in "Whose 130% is the 130%" belowComputed by the broker on the whole account, not per stock
Note: the term "margin utilisation rate" never appears in TWSE's reports. What the report gives is the "next business day limit"; utilisation is an industry ratio derived from that limit. If you publish that number, say which limit source you used.

What is the current margin ratio?

Six tenths (60%) for both listed and OTC stocks, with a minimum short-sale margin ratio of 130% — the source is FSC order Jin-Guan-Zheng-Tou-Zi No. 1140381639, effective 2025-04-07. Plenty of articles online still say the short-sale margin is 90%; that is the old order repealed on 111-10-01, and it is out of date.

How does a single day's table add up?

The columns of TWSE's margin trading statistics are: item | buy | sell | cash (stock) repayment | previous-day balance | today's balance. Within one day it is internally consistent — here it is checked against the market-wide margin figures for 2026-09-15 (in lots):

9,165,719(previous-day balance)
  + 226,366(buy)
  − 197,887(sell)
  −   3,687(cash repayment)
= 9,190,511(today's balance)

The margin amount for the same day (in thousands of TWD) checks out on the same equation: 583,877,609 + 16,290,924 − 17,615,398 − 312,670 = 582,240,465.

So the common claim that "cash repayments are buried in the previous-day balance" does not hold — cash repayment is its own column and has already been deducted from today's balance. The within-day columns are fine; the problem is across days.

The key point: today's "previous-day balance" is not yesterday's "today's balance"

TWSE puts it plainly in the report footnotes:

"Because each credit-extending institution continues to process book adjustments on the day after a margin trade is executed, this Corporation discloses the figures in full in the 'previous-day balance' column only after all institutions have finished their work and transmitted the final correct balances. Please therefore use the 'previous-day balance' as authoritative and treat 'today's balance' as supplementary reference."

This is not boilerplate. Reconciled against the data (Blave's margin data series, last 3 years, adjacent trading days only, excluding false gaps caused by holes in the data):

Window Trading days Previous-day balance (T) ≠ today's balance (T−1) Median gap p90 Max
Last 3 years (from 2023-09-17) 720 670 days (93.1%) 5 lots 124 lots 524,851 lots

Most days differ by a few lots, which is harmless; but occasionally the gap reaches six figures. The entry on 2024-12-11 adjusted 524,851 lots away overnight, roughly 5.7% of the market-wide balance — that one and the +99,692 lots on 2026-09-07 were both re-checked against the raw TWSE reports, confirming they are cross-day adjustments in the official data itself, not something introduced on Blave's side. As for the cause, TWSE gives only the general rule (next-day book adjustments, and adjustments to the previous-day balance when an OTC stock transfers to the listed market); we did not verify the cause of individual cases, so this article does not speculate.

Note: stringing "today's balance" into a time series means doing research on numbers that are not final. To compute the margin change, subtract within the same row — "today's balance − previous-day balance" — not across two adjacent rows.

When is it published, and does it get revised?

It does get revised, and the exchange says so. The report footnote, verbatim:

"The source of this Corporation's market margin and short balance data is each credit-extending institution (including securities finance companies and brokers that handle margin trading in-house). Once all institutions have finished their work and completed transmission, and this Corporation has compiled the data, it is published on this Corporation's website the same evening in real time."

This is the exact opposite of institutional net buy/sell, which is a snapshot "compiled from the day's original trade records and not restated for brokers' reported booking errors or account corrections" and is never revised after publication (see How to Use Institutional Net Buy/Sell). Both are flow-of-funds data, but one gets revised and the other does not, so research should not treat them the same way.

Also, TWSE's margin trading statistics cover the listed (TWSE main board) market; OTC margin and short data is published separately by TPEx. When someone says "market-wide margin balance," the default is the listed market.

How big is big? The range over 2025-09-17 to 2026-09-15

The level and the change of the market-wide margin balance (Blave's margin data series, listed market):

MetricValueWindow
Margin balance9,190,511 lots2026-09-15 (latest record)
Margin amount5,822 (100M TWD)Same as above
Balance range7,236,488 to 9,618,551 lots2025-09-17 to 2026-09-15, n=229
Margin amount per lot63,352 TWD (same window, 36,381 to 65,907)Same as above

Distribution of the daily change (today's balance − previous-day balance, in lots), same window, n=229:

p05p25 Median p75p95 Mean Days it increased
−129,474−29,967+16,379+45,366+110,320+7,36259.8%

In absolute terms: median change 40,316 lots, p90 115,104 lots, period max 442,947 lots. In other words a daily change around 40,000 lots is normal, and it takes more than 115,000 to reach the top 10% of this window. Note also that the balance increased on 59.8% of days — margin balance drifts upward by nature, so "margin rose again today" is not an event in itself.

Can margin balance tell you direction?

The high correlation of the level comes from a shared trend, and it changes with the sample period. Measured (Blave's margin data series, against the TAIEX):

Window n Level vs index close Daily change vs same-day return Daily change vs next-day return
12 months (2025-09-17 to 2026-09-15)229+0.973+0.595−0.069
5 years (from 2021-09-17)1,200+0.417+0.473−0.072

Three things at once. First, a level correlation of 0.973 looks like a holy grail, but the 5-year sample gives only 0.417 — same indicator, different sample period, and the conclusion falls from "almost perfect" to "moderate." That is trend resonance, not a stable relationship. Second, switch to the change and the same-day correlation drops to around +0.595. Third, against the next day's return both sample periods sit near −0.07, which is close to zero.

The pattern is the same as institutional net buy/sell: high correlation the same day, close to a coin flip the next. Flow-of-funds data tells you what just happened, not what comes next.

Whose 130% is the 130%?

It is the whole account's, not that one stock you hold. Under the Operating Rules for Securities Firms Handling Margin Purchases and Short Sales of Securities (115-01-09 version):

  • Article 53 gives the formula: (market value of margin collateral securities + short-sale collateral and deposits + market value of securities or other assets pledged as substitutes) ÷ (margin amount + market value of the securities sold short) ×100%. Both the numerator and the denominator are whole-account figures.
  • Article 54: if it falls below 130%, you must top up within 2 business days of delivery of the notice.
  • Article 55: if you do not top up, collateral is disposed of starting the next business day.

So "drop to 130% and you get liquidated" leaves out two things: the figure is computed on the whole account rather than per stock, and there is a top-up window in between.

A simplified worked example: buying on six-tenths margin, the maintenance ratio at the moment you open is 1 ÷ 0.6 = 166.7%; to fall to 130% the price has to drop 22% (130% × 60% = 78%). The example assumes a single position, no other collateral and nothing pledged as a substitute; in practice a whole account holds other positions and the numbers will differ.

How often does the market-wide ratio fall below 130%?

Rarely. Distribution of the market-wide margin maintenance ratio (2002-11-26 to 2026-08-13, n=5,815, unit: %):

p01p05p10p25 Median p75p90 Max
124.4135.8141.6153.4164.0170.6175.9210.4

Against the thresholds: trading days below 130% account for 2.39% (139 days across 23 years, concentrated in 2002–2004 and 2008), below 140% for 8.31%, and below 150% for 20.53%. The lowest since 2021 is 130.36% on 2025-04-09. Over the year ending 2026-08-13 (n=243) the range is 156.7 to 210.4, with 194.7 on that final day.

Note: the market-wide ratio is an aggregate average, and individual accounts sitting far below the average is normal — an average that never breaks 130% does not mean nobody got a margin call. That sentence is a logical inference, not a statistical result.

How to put it into a strategy

1. Fetching: one line gets "which column to read" right

from lib.data import fetch_twmarket_margin

m = fetch_twmarket_margin('2025-09-17', '2026-09-15', headers)
# fields: margin_balance / margin_balance_prev (lots), margin_balance_value (TWD),
#       short_balance / short_balance_prev (lots), from 2001-01-03

# right: subtract within the row — this is the report's own definition
m['margin_chg'] = m['margin_balance'] - m['margin_balance_prev']

# wrong: subtracting across rows mixes overnight book adjustments into the day's change
m['margin_chg_wrong'] = m['margin_balance'].diff()

Over 2023-09-17 to 2026-09-15, the two methods give different answers on 93.1% of days. Most of the time the gap is a few lots, but it only takes one day with a gap of 520,000 lots for your signal to be dragged around by that day's phantom move.

The per-stock layer goes through the API endpoint /studio/market/twstock/margin/<stock_id>, where the field names differ slightly: per stock they are margin_balance and margin_prev_balance (note that prev sits in a different position than in the market-wide set), and the unit is again lots.

2. Use it as a condition, not as a signal

# brackets from absolute daily change quantiles over 2025-09-17 to 2026-09-15: median 40,316 lots, p90 115,104 lots (n=229)
BIG = 115_000                 # lots; this is the data's bracket, not a backtested parameter

surge = m['margin_chg'] > BIG
signal = primary.copy()       # primary is your own main signal
signal[surge] = 0.0           # stay out on days margin jumps

Once more: this threshold answers "where does today's number rank historically," not "will this make money." Only a backtest answers the second, and you have to be careful about tuning parameters over and over on the same stretch of data (see How to Avoid Overfitting).

3. Where to see the maintenance ratio

The market-wide margin maintenance ratio is currently visible on Studio's TW-stock "Market | Margin & Short" page (market margin and short); Agent's data functions do not carry that series — so writing the maintenance ratio into a strategy is not possible today.

Choosing the parameters and the timeframe

Margin balance is daily data; what you can choose is which column to read, which layer to read, and over how many days.

ApproachGood forWatch out
Today's balance − previous-day balance (same row)Computing the day's margin change; the default for researchThis is the official definition; for brackets see the range table (median 40,316 lots, p90 115,104 lots)
Today's balance subtracted across rowsNot recommendedOn 93.1% of days it mixes in overnight book adjustments; the largest single gap is 524,851 lots
The margin balance levelDescribing how high or low market leverage sitsResonates strongly with the index (12 months r=+0.973, 5 years +0.417) and adds no directional information of its own
Per-stock margin balancePer-stock flow conditionsUnit is lots; the field is margin_prev_balance — don't confuse it with the market-wide spelling

The examples here use the market-wide same-row subtraction, because the range and correlation measurements were all made at that layer, so the thresholds line up; move to the per-stock layer and the brackets have to be recomputed from that stock's own distribution.

An honest reminder: margin balance is reference data, not a trading signal. Every number here is labelled with its window and sample size, and the samples are blunt: the correlation between the margin change and the next day's index return is −0.069 over 12 months and −0.072 over 5 years, close to zero. The +0.973 on the level is pretty, but it is just two lines going up at the same time. To build a strategy on it, use it as a condition, as a filter, and then backtest (for how to read a backtest report, see How to Read a Backtest).

Now that you know which column to read, the next step is turning it into a condition you can verify: ask Blave Agent to pull this data, compute the change with same-row subtraction, write it into a filter and backtest it for you — the data layer and the fields are already wired up. You can also see the charts directly in Studio: market margin and short, per-stock margin and short.