Methodology Reference · Macro Dashboards
A weekly read on how loose or tight Chinese financial conditions are — built from eight market series, reported as two complementary indices. Unlike a rates-only gauge, it deliberately layers in property and a credit impulse, so it reflects the channels that actually drive China's cycle. Lower always means looser.
01
Both indices use the same eight components, the same signs, and the same category weights. They differ in one thing only: whether each series is standardized against a fixed historical base or a rolling window.
FCI — LEVEL
Weighted sum of component levels, standardized on the full 2018-present sample and anchored so the base-period average = 100. Preserves secular drift.
▸ "How loose/tight vs the post-2018 sample?"
FCI — MOMENTUM
Identical construction, but moments come from a trailing 52-week window. Detrended, centred near zero.
▸ "Have conditions tightened vs the last year?"
02
Eight series in five categories. The sign encodes a
growth-impulse convention: +1 means a higher value tightens
conditions (raises the index); −1 means a higher value loosens
them (lowers it).
| Series | Category | Cat wt | Sub wt | Sign | Higher value → |
|---|---|---|---|---|---|
| CFETS RMB Index | FX | 0.10 | 0.50 | +1 | stronger RMB → tighter |
| BIS broad REER | FX | 0.10 | 0.50 | +1 | stronger real RMB → tighter |
| SHCOMP trend gap (200d) | Equity | 0.20 | 0.50 | −1 | above trend → looser |
| SHCOMP realised vol (21d) | Equity | 0.20 | 0.50 | +1 | higher vol → tighter |
| 3M SHIBOR | Rates | 0.20 | 0.50 | +1 | higher → tighter |
| CGB 10Y yield | Rates | 0.20 | 0.50 | +1 | higher → tighter |
| 70-city 2nd-hand YoY | Property | 0.20 | 1.00 | −1 | faster → looser |
| TSF credit impulse | Credit | 0.30 | 1.00 | −1 | accelerating → looser |
Category weights sum to 1.00; sub-weights sum to 1.00 within each category. Equal-weight (0.20 each) is the validation benchmark; FX is cut to 0.10 (a managed float carries little information) and the freed weight routed to the credit impulse.
03
Each raw series is signed and standardized to zero mean, unit variance:
x_i,t = sign_i × ( X_i,t − μ_i ) / σ_i
The moments (μ, σ) are the only switch between the two indices —
the full 2018-present sample for the Level, a trailing 52-week window
for Momentum.
Multi-series categories (FX, Equity, Rates) are a plain weighted average of their component z-scores — with no second standardization. This keeps the index fully transparent: the Momentum ends up as exactly the weighted sum of the eight tile z-scores, so every number on the dashboard reconciles by hand (see §07).
fx = 0.5·x_cfets + 0.5·x_reer equity = 0.5·x_gap + 0.5·x_vol rates = 0.5·x_shibor + 0.5·x_cgb10y property, credit = their single z-score (already one series)
Trade-off: averaging correlated sub-series (FX most of all) slightly shrinks that category's variance, so its effective influence runs a touch below its nominal weight. We accept that in exchange for an index you can verify by hand from the tiles.
C_t = 0.10·FX + 0.20·Equity + 0.20·Rates + 0.20·Property + 0.30·Credit
Level : FCI = 100 + (1 / SD_base(C)) × C_t Momentum : FCI = C_t (rolling moments)
This anchoring is our own scaling choice: because the deviation
is divided by the composite's full-sample standard deviation, one index point
equals one base-period SD by construction — so 98 is ~2 SD
looser than the post-2018 average and 102 ~2 SD tighter. It is the
same SD scale the commentary uses when it cites, e.g., "−0.1 SD". Note this is not
how Goldman scales its headline index (see §06). Master frequency is
weekly (Friday); daily series are sampled last-obs, monthly
series (property, credit) forward-filled with no interpolation.
Because the Momentum is a weighted average of z-scores rather than a single standardized series, its absolute scale is compressed (it rarely reaches ±1). Its headline reading is therefore expressed as a percentile of its own history — the label ("tightening fast" etc.) keys off that percentile, not a fixed z-threshold.
04
Signs follow the logic that asset-price and credit strength is stimulative — broadly the framing Goldman uses. This is a deliberate choice; it makes the index a read on the growth impulse from conditions, not a froth/stress gauge.
05
06
The Level index is built on the methodology Goldman set out in Our New G10 Financial Conditions Indices (Goldman Sachs Global Economics, 2017): a weighted average of a short rate, a long-term yield, a credit measure, an equity-price variable and a trade-weighted exchange rate, with weights reflecting each variable's estimated effect on GDP growth over a one-year horizon.
This index departs from Goldman's daily China FCI in two deliberate ways. First, it adds a property channel and a TSF credit-impulse channel — together 50% of the weight — which the daily GS index omits. Second, the equity leg uses a trend gap plus a realised-vol overlay rather than a valuation (Shiller-style) input. The upshot: when the property/credit cycle is weak, this Level reads meaningfully less tight than a rates-dominated GSCNFCI, because half the index sits on the downturn channels that offset easy money.
CHBGFCI is higher = looser — the opposite convention to
each other.On units. Our Level expresses deviations in post-2018 standard deviations (1 point = 1 SD; see §03). Goldman's headline index is instead scaled to growth impact — a one-point move corresponds to roughly one percentage point of year-ahead GDP growth — so its "points" are not standard deviations. Standardized, SD-based presentations of the GS FCI do exist (the BIS, for example, publishes it as 100 = long-run average with each unit a one-SD move), and our scale matches that convention rather than the paper's native growth-impact units.
07
The rolling Momentum is simply the weighted sum of the eight component
z-scores on the dashboard tiles. Each tile shows both numbers you need: its
z-score (the coloured badge, e.g. +1.8σ) and its weight
(e.g. weight 30%). Multiply the two for every tile and add them up:
Momentum = Σ ( tile z-score × weight ) weight = sub-weight × category weight (fixed; sums to 100%)
Worked on a recent week's tiles (substitute whatever your tiles currently read):
| Component | z-score | weight | = contribution |
|---|---|---|---|
| FX · CFETS RMB Index | +2.3 | 5% | +0.115 |
| FX · BIS broad REER | +1.0 | 5% | +0.050 |
| Equity · SHCOMP trend gap | +1.7 | 10% | +0.170 |
| Equity · SHCOMP realised vol | +1.7 | 10% | +0.170 |
| Rates · 3M SHIBOR | −1.4 | 10% | −0.140 |
| Rates · CGB 10Y yield | −1.0 | 10% | −0.100 |
| Property · 70-city 2nd-hand | +0.1 | 20% | +0.020 |
| Credit · TSF impulse | +1.8 | 30% | +0.540 |
| Momentum | — | 100% | +0.83 |
Same thing read by category (averaging is order-independent): FX +0.17, Equity +0.34, Rates −0.24, Property +0.02, Credit +0.54 → +0.83.
Two things this makes clear. First, a component's pull depends on its z-score and its weight together: credit at +1.8σ moves the index far more than CFETS at +2.3σ, because credit carries 30% versus CFETS's 5%. Second, the headline (+0.83 here) is small in absolute terms precisely because it is an average of z-scores — so its standing is read as a percentile of the Momentum's own history (§03), which is how a modest +0.83 can sit near the 90th percentile: unusually tight for this cycle.
08
History is seeded once from a Bloomberg export; from then on every series updates from a free feed, so no weekly Bloomberg export is needed:
stock_zh_index_daily, dailyrate_interbank
and bond_zh_us_rate, dailyRBCNBIS (BIS broad, no key), monthlychinamoney.com.cn, dailyPublished weekly, Friday morning (06:00 SGT), to Discord with an auto-generated commentary.
09
10
Goldman Sachs Global Economics. Our New G10 Financial Conditions Indices, Global Economics Analyst, 20 April 2017. gspublishing.com
Bank for International Settlements. Effective exchange rate indices (REER, broad) and residential property price statistics.
People's Bank of China. Total Social Financing aggregates and SHIBOR; National Bureau of Statistics — 70-city residential price indices; ChinaBond — government-bond yield curve.