Module 6 — Global Economic Growth and Overseas Markets

Normative specification. Module 6 is deterministic (no LLM). It scores whether economies and markets outside the United States are a tailwind or headwind for US equities, on a −2…+2 scale, and maps that onto US sectors/industries/sub-industries and foreign-exposed companies. It aggregates regional growth (Eurozone, UK, Japan, emerging-markets-ex-China, other developed markets), pulls China in once as a finished handoff from Module 7, adds a global-activity leg (trade volume + industrial production), overlays an economic-surprise adjustment, and confirms with markets using both a plain industry ETF and an ETF/SPY relative-strength ratio. It emits company geographic-exposure alerts and foreign-company→industry spillovers. It does not decide the final risk/currency/yield regime, select a stock, set entry/stop/target, or place an order — those belong to the specialist modules, Output 2, and the trading bot. The US is excluded from the scored regional aggregate.

Implementation target (not yet built): routes/module6.pysnapshots/module6.json (+ a stateful store .data/module6_events.db for spillover overlays), surfaced in a "Module 6" navbar view. It is the overseas-growth counterpart to the sibling deterministic modules and depends on Module 7 (China) upstream.

Implementation note (v1 ceilings). The Part 4 scoring is pure arithmetic; its numeric inputs (GDP/PMI/IP/trade) are data-feed lookups, and only the foreign-company spillover classification (Calc 13) needs NLP. The intended split is the same as Module 5: an LLM extraction pass (agents/skills/module6_extract.md) only for the spillover/company-event front-end, then a deterministic scorer for everything else, with zero model calls on the numeric hot path. Regional-macro ingestion (Eurostat, ONS, Japan Cabinet Office/METI, S&P Global PMI, CPB World Trade Monitor, IMF weights, a licensed consensus/surprise feed) is not integrated today — we have FRED + Polygon/Massive, which cover the market-confirmation leg but not the official regional releases; v1 caps DATA_COVERAGE low until those feeds exist. Module 7 does not exist yet, so v1 runs PARTIAL_EXCLUDING_CHINA (confidence capped below HIGH per Part 11.3). Two numeric decisions are proposed, not sourced (Part 15.3 ±2% ratio threshold, Part 15.4 confidence weights). Cross-module handoffs (Part 10) and Output 2 are placeholders until those modules exist.


Section One — Deterministic specification

Part 1 — Master calculation dependency (14 calcs)

  1. Data Validation → DATA_STATUS, MISSING/STALE/CONFLICT lists, REGIONAL_WEIGHT_COVERAGE_PCT, PARTIAL_OUTPUT_STATUS, FAILURE_REASON.
  2. Regional Universe and Weights → per-region PPP-GDP weight %, VALID coverage % (uses China weight + Module 7 output).
  3. Regional Economic Growth Engine → GDP/PMI/IP scores → REGION_RAW_GROWTH_SCORE → REGION_FINAL_GROWTH_POINT, REGION_GROWTH_STATUS.
  4. Overseas Production and Trade Engine → overseas IP point + trade-volume point → GLOBAL_ACTIVITY_POINT, DESCRIPTIVE_ONLY_FLAG.
  5. Base Module 6 Economic Score → weighted regional growth + China + global activity → BASE_MODULE_6_DIRECTION_POINT.
  6. Economic-Surprise Overlay → standardised surprise → SURPRISE_ADJUSTED_DIRECTION_POINT.
  7. Overseas Equity and Relative-Strength Engine → regional + industry absolute/relative status, LOCAL_CURRENCY_USD_CONFLICT_FLAG.
  8. Overseas Bond and Currency Conditions → per-region bond/currency condition, funding-stress & recession-concern region counts.
  9. Overseas Risk Confirmation → 6-vote total → OVERSEAS_RISK_STATUS, HARD_STRESS_CONFIRMATION.
  10. Market Confirmation Adjustment → FINAL_MODULE_6_DIRECTION_POINT.
  11. Sector/Industry/Sub-Industry Impact → final impact lists + REGIONAL_CONTRIBUTION + MIXED_IMPACT flags.
  12. Company Geographic-Exposure Alerts.
  13. Overseas Company-to-Industry Spillover.
  14. Confidence and Final Output → MODULE_6_CONFIDENCE/RISK/PERMISSION, OUTPUT_1.

Part 2 — Direct input parameters

Part 3 — Data definitions and validation

Part 4 — Deterministic calculations

Part 5 — Descriptive bands

Part 6 — Helper conditions

VALID_CHINA_HANDOFF; VALID_REGIONAL_COVERAGE (≥80%); PMI_EXPANDING (≥50.5) / PMI_CONTRACTING (<49.5); ABSOLUTE_INDUSTRY_UP/DOWN; INDUSTRY_RELATIVE_STRENGTH/WEAKNESS; CONFIRMED_INDUSTRY_ BULLISH/BEARISH; MARKET_CONTRADICTS_ECONOMY; MEASURABLE_REGIONAL_EXPOSURE (≥10%); COMPANY_ALERT_EXPOSURE (≥20%); VERIFIED_COMPANY_SPILLOVER (all 4.25 pass); MIXED_REGIONAL_EFFECT; EXISTING_PAUSE_ACTIVE; ETF_MAP_VALID; MARKET_CONFIRMATION_UNAVAILABLE.

Part 7 — Regime decision order (stop at first match)

1 critical data invalid → 2 coverage <80% → 3 strong negative growth + risk-off → 4 strong positive growth + risk-on → 5 moderate negative → 6 moderate positive → 7 econ vs markets contradict → 8 +/− regional effects coexist → 9 neutral. Final: STRONG_OVERSEAS_TAILWIND | OVERSEAS_TAILWIND | MIXED_OVERSEAS_CONDITIONS | OVERSEAS_HEADWIND | STRONG_OVERSEAS_HEADWIND | INVALID.

Part 8 — Short-term / event overlays

Part 9 — Score/impact rules (summary)

Region = 40% composite PMI + 30% GDP + 30% IP. Base = 70% weighted regional growth + 30% global activity. China contributes exactly once via Module 7. Surprise may adjust ±1; contradiction may move ±1 toward zero. Industry economic exposure is separate from market confirmation; plain ETF and ratio never substitute for each other; no confirmation point is added to the macro score; all final points capped −2…+2.

Part 10 — Handoffs and double-counting controls

Part 11 — Hard overrides

  1. Existing pause — preserve; M6 may not cancel/weaken.
  2. Critical data failure — affected point 0, confidence INVALID, valid unaffected outputs remain, no trade approved.
  3. Missing China handoff — China contribution 0, PARTIAL_EXCLUDING_CHINA, confidence not HIGH, other regions continue.
  4. ≥2 funding-stress regions — risk-on prohibited, market confirmation can't raise confidence, no automatic bearish reversal.
  5. Invalid industry map — primary→backup→peer group→UNAVAILABLE (economic exposure stays visible, no confirmation adjustment).

Part 12 — Execution order

Read run-control → preserve pauses → validate economic/forecast/market/IMF/ETF/exposure/Module-7 data → build scored universe → GDP → composite PMI → mfg/services → IP → regional raw growth → EM-ex-China → overseas IP → trade → global activity → weighted regional growth (China once) → base score → surprise overlay → regional absolute/relative equity → industry plain-ETF → ratio → combined confirmation → bond → currency → overseas risk → market confirmation/contradiction → sector/industry geo-exposure → mark mixed → company alerts → spillovers → confidence → hard overrides → handoffs → Output 1 → trade approved FALSE → order generated FALSE.

Part 13 — Non-calculative constraints

M6 must not: recalculate China; re-score a Module-5 policy; produce the final global-risk/currency/ yield regime or final sector-RS ranking; treat a rising ratio as proof the ETF is up (or vice versa); select a stock; generate a long/short trade; set entry/stop/target; place/close/reverse a position; change a price-based stop; cancel another module's pause; make the final sector selection.

Part 14 — Required Output 1

Structured output: identification (module no/name, version, UTC+ET, run type, provider list); reliability (DATA_STATUS, valid coverage %, China-handoff status, industry-map status, missing/stale/conflict lists, partial status, failure reason, next recalc); per-region results (name, weight, GDP value/score, composite/mfg/services PMI value+condition, IP change/score, raw growth, final point, status, initial/revised); China contribution (final point, weight, weighted contribution, growth/equity status, confidence, data status, sector/industry handoff); global activity (overseas IP change/point, trade change/point, raw score, point, descriptive-only flag); surprise (actual, consensus, raw/standardised, status, overlay point/expiry); overseas market confirmation (per-region absolute/relative status, bond & currency condition lists, risk vote total, risk status, market-confirmation status); per-industry confirmation (id, primary/backup, plain-ETF price/EMA/return/status, ratio value/EMA/return/ status, combined confirmation, peer status, map validity); final outcome (base raw/point, surprise-adjusted, final point/status, confidence %/level, risk level, permission); sector/industry/company effects (helped/harmed, final impact lists, regional contribution list, mixed flags, company geo-exposure alerts, spillover alerts); handoffs (per destination: raw/calculated fields, status, fields-not-scored, double-counting control); trading-bot status (final decision NOT_PRODUCED_BY_MODULE_6, trade approved FALSE, order generated FALSE, stock selected FALSE, final sector selected FALSE); audit (formula/threshold/regional-weight lists, industry-map version + revision history, provider list, excluded data, revision + overlay history, next recalc).

Part 15 — Items not fully defined in the source (named ceilings)

  1. Provider names — not selected. Treatment: use field definitions + source hierarchy + freshness + consistency rules. (IMPLEMENTATION CONFIG — NOT A CALC GAP.)
  2. ETF/peer maintenance — future closures/mandate changes unknowable. Treatment: quarterly + event-triggered map review; primary → backup → peers. (SOURCE-MAINTENANCE RULE.)
  3. Relative-strength ratio thresholds — not in source. Proposed: ±2.00% over 5 sessions + 20-session ratio EMA for strong RS/RW. (PROPOSED DETERMINISTIC RESOLUTION.)
  4. Confidence weights — not in source. Proposed: 35% coverage, 30% indicator agreement, 20% global-activity agreement, 15% market confirmation. (PROPOSED DETERMINISTIC RESOLUTION.)

Section Two — Implementation options and concerns

(Beyond Markets engineering analysis, not part of the normative spec.)

How it relates to our system

Module 6 is the overseas-growth member of the same deterministic auto-trading family as Modules 2–5 — a paradigm distinct from the current LLM report pipeline. It is the quantitative sibling of what our macro_outlook / market_brief reports and the dashboard's macro/liquidity snapshot already do qualitatively.

Module 6 concept Beyond Markets today Fit
Method: deterministic rules + fixed thresholds 11 LLM agents, prose reports opposite paradigm
Output: −2…+2 + handoff packets human-read markdown no scoring layer
Regional GDP/PMI/IP scoring FRED partial; no Eurostat/ONS/METI/S&P-PMI ingestion partial data gap
Global trade/IP (CPB World Trade Monitor) not integrated data gap
Consensus + economic-surprise index not integrated (licensed) data gap
Industry ETF + ETF/SPY ratio confirmation Polygon/Massive aggregates present buildable today
Company regional revenue exposure SEC filings + FMP (coarse) partial
China handoff (Module 7) doesn't exist hard dependency
Consumer: auto-trader + Output 2 swing pipeline → Alpaca; no aggregator adjacent, not wired

Deterministic vs LLM — the decision

Same split as Module 5, but M6 is more deterministic: almost every input is already a number (GDP/PMI/IP/trade/prices), so the LLM's only real job is the foreign-company spillover front-end (Calc 13: "is this event official? do ≥3 peers react?"). Everything else is arithmetic and must stay deterministic — reproducible, auditable (Part 14 FORMULA/ THRESHOLD lists + revision history), and cheap on the 2-minute market-hours hot path. A model never emits the final score. Intended boundary: agents/skills/module6_extract.md for spillover extraction only → deterministic scorer for Parts 4/9/11.

Better data fit than Module 5, but not zero-gap

M5 needed ~9 government-legal feeds we have none of. M6's hardest inputs are macro data, and we already own the market-confirmation half (Polygon/Massive) plus some macro (FRED). Still missing: the official regional releases (Eurostat, UK ONS, Japan Cabinet Office/METI), S&P Global PMI, CPB World Trade Monitor, IMF PPP weights, and a licensed consensus/surprise feed. Part 2.2/15.1 deliberately treat provider selection as implementation config — so the spec is complete without vendor names, but real regional points can't flow until those feeds exist.

Concerns

Two build paths

Recommendation: LLM extraction (spillover only) → deterministic scoring. Start with Path A (the ETF/ratio slice), lock the Part 15.3/15.4 numbers, and keep every regional-macro feed and the Module 7 handoff as named ceilings until they exist.