Skip to main content

Start here

China publishes official activity figures on a schedule. Meanwhile, the physical world leaves its own traces: containers move, ports load, planes fly, copper changes price. This nowcast puts the two side by side and asks a single narrow question: Are the independent signals pointing the same way as the official release? That is all it claims. When both are strengthening, that is agreement. When the official number strengthens while freight, shipping, and commodity signals weaken, that is a divergence worth investigating — and the panel names which signals disagree and by how much.

What this is not

  • Not a replacement GDP estimate. It produces a direction, not a number to substitute for the official one.
  • Not a claim that any figure is wrong. A divergence is a question, not an accusation. Proxies have their own biases, seasonality, and coverage gaps.
  • Not a China risk score.
  • Not written by an AI. No language model participates in the numbers, input eligibility, direction, confidence, or state. Every step is deterministic and reproducible from the published inputs.

Point-in-time honesty

The comparison respects what was actually knowable at the time. Each evaluation may only use a data vintage that had already been retrieved by that moment, so a later revision cannot be quietly backfilled into an earlier reading. A historical evaluation shows what the nowcast would genuinely have said that day — not a flattering reconstruction with hindsight. This matters more than it sounds: without it, any nowcast can be made to look prescient after the fact.

The signals it watches

Six independent families — freight rates, port activity, aviation, energy demand, industrial metals, and trade-corridor breadth — each with a published rationale, transformation, and freshness budget. A signal past its freshness budget drops out rather than going stale in place. The live method version is china-activity-nowcast/v1.

Official comparison series

The first method version uses the revision-aware China macro contract and selects the newest eligible official activity observation at each evaluation time. An observation is eligible only when:
  • its observation period ends before publication;
  • publication precedes retrieval;
  • retrieval occurs no later than the evaluation time;
  • the exact vintage has valid source provenance;
  • the observation is available and not stale; and
  • its published directional comparison is strengthening, weakening, or unchanged.
The selected series, observation period, release time, retrieval time, and vintage ID remain visible in the API and panel. A historical evaluation can select only a vintage retrieved by that evaluation time. Later corrections cannot replace an earlier point-in-time value.

Reviewed proxy registry

Every family has a reviewed rationale, unit, transformation, frequency, lag, freshness budget, alignment rule, and source declaration in shared/china-activity-nowcast-registry.ts. The registry does not turn source coverage into activity. For example, an energy-spine payload that says JODI data is present does not establish demand direction. Likewise, a current CCFI level without a comparable prior is not a freight-rate change. Those inputs remain visibly excluded until the consumed contract publishes the required directional observation.

Alignment and missingness

The standalone evaluator defaults to a 90-day comparison window. The live API uses a 210-day window so the monthly energy series can honor its documented 210-day freshness budget after the demand period is dated truthfully; the individual freshness budget still applies to every family. The method selects the latest point-in-window observation for each registry entry after its documented lag has elapsed. Forward-filling and interpolation are disabled for every family. The method does not fall back to an older observation when the newest point is stale, structurally incomparable, unavailable, missing provenance, outside the window, or missing a required prior. Each such input has an exclusion reason; none becomes a neutral direction.

Directional states

At least three eligible proxy families and one non-unchanged official vintage are required. Eligible non-flat proxy contributions establish a direction only when at least two thirds point the same way. The method emits exactly one of five states:
  • agreement — proxy consensus and the official direction match;
  • proxy_leading_divergence — proxy consensus differs and its median aligned observation is later than the official observation period;
  • official_leading_divergence — proxy consensus differs but does not lead the official period;
  • mixed_signals — enough families are present, but no two-thirds consensus exists; or
  • insufficient_data — official or proxy-family coverage is below the method requirement.
Every included contribution keeps its transformed value, direction, time, source, and full registry metadata. The response deliberately has no aggregate activity score.

Confidence and sensitivity

Confidence is categorical (high, medium, low, or insufficient) and reports eligible-family coverage. The method also recomputes the state after removing each proxy family. The panel shows whether that leave-one-family-out test changes the conclusion, making family dominance inspectable.

Historical evaluation

backtestChinaActivityNowcast() evaluates an explicit sequence of historical times through the same point-in-time eligibility path. It reports:
  • attempted and evaluable rows;
  • coverage;
  • directional agreement among evaluable rows;
  • the official vintage used in each row; and
  • the comparison state and eligible-family count for each row.
No-lookahead filtering applies to official revisions and proxy release and retrieval times. The live cache currently contains current-only snapshots, not a bounded historical proxy ledger. The public response therefore says historical evaluation is unavailable instead of fabricating a backtest from current values. Historical coverage becomes publishable only when such a ledger is retained and reviewed.

Cache and API behavior

GET /api/economic/v1/get-china-activity-nowcast returns a small wrapper plus the canonical validated JSON payload. Healthy results use a 15-minute server cache. insufficient_data results are not positively cached, and the browser circuit breaker keeps no last-good copy that could hide a current outage or missing input. The wrapper’s upstream_unavailable flag is true only when no official vintage or proxy contribution is available; otherwise healthy but non-directional inputs remain methodological insufficiency, not an outage. Detailed nowcast evidence is a REST/UI surface. MCP has no dedicated activity-nowcast tool; Pro MCP receives only its bounded contribution through get_china_decision_signals. The endpoint composes:
  • the official China macro snapshot;
  • the China corridor control-tower response;
  • the canonical commodity seed and its seed-health timestamp; and
  • the Railway-owned China stock-index snapshot.
Dependency failures are isolated. The method can retain unaffected families, but total loss returns insufficient_data with all contributions excluded. Method-version changes require a new version string and new reproducibility fixtures rather than silently changing historical semantics.