Module 3 — General Headline & Geopolitical Risk Engine

Normative specification. Module 3 is deterministic (no LLM in the scoring path). It verifies breaking geopolitical/security headlines, measures their direct economic impact, and produces affected-scope trading restrictions and one market-wide headline risk adjustment. It does not select a sector, industry or stock, generate an entry/stop/target/order, or close an existing position — those belong to the specialist macro modules, Output 2, the Risk Management / Emergency Exit modules, and the trading bot.

Implementation target: routes/module3.pysnapshots/module3.json (+ a stateful event store .data/module3_events.db), surfaced in a "Module 3" navbar view.

Implementation note (v1, headline-first). The scoring below is pure arithmetic, but its inputs (entity extraction, event category, ownership routing, verification tier) require NLP the spec assumes upstream — realistically an LLM/rule extraction pass (or the existing geopolitical_risk agent) produces the structured event record, then Module 3 scores it with zero model calls. v1 implements the generic impact path (§4.12–4.14) and defers most event-specific rules (§4.15–4.27) and every item in Part 15 as named ceilings. Cross-module handoffs (§10, §2.3) are placeholders until sibling modules exist; only the "→ Module 2" route is live today.


Module type & boundaries

Primary outputs

HEADLINE_VERIFICATION_OUTCOME, EVENT_STATUS, EVENT_IMPACT_SCOPE, EVENT_GEOGRAPHIC_SCOPE, EVENT_SEVERITY_SCORE, EVENT_DIRECTION_OUTCOME, EVENT_CONFIDENCE, HEADLINE_RISK_ADJUSTMENT, POLITICAL_NOISE_LEVEL, SECTOR_IMPACT_LIST, INDUSTRY_IMPACT_LIST, COMPANY_IMPACT_LIST, COMPANY_HEADLINE_RISK_LIST, PRICE_REACTION_CONFIRMATION, HEADLINE_HARD_WARNING, NEW_ENTRY_STATUS, HEADLINE_POSITION_SIZE_CAP_PERCENT, MAXIMUM_POSITION_COUNT_ADJUSTMENT, MAXIMUM_POSITION_COUNT_CAP, EVENT_EXPIRY_TIME, NEXT_RECALCULATION_TIME, SPECIALIST_MODULE_HANDOFFS.


Part 1 — Master calculation dependency

Each engine lists required inputs, what it calculates, what it produces, and what runs next.

1.1 Headline-feed & source validation

Inputs: Module 1 data-quality output; main headline provider; official government/military/international sources; official company/exchange/airline/port/ pipeline/infrastructure sources; approved major-news-source list; current + provider timestamps. → MODULE_DATA_STATUS, HEADLINE_FEED_STATUS, SOURCE_IDENTIFICATION_STATUS. Next: normalisation & ownership routing.

1.2 Headline normalisation & ownership routing

Inputs: raw headline, timestamp, actors, countries, organisations, locations, policy/event category, primary source. → EVENT_CATEGORY, MODULE_OWNER, MODULE_3_ELIGIBLE, ROUTING_REASON. Next: event identity & duplicate detection.

1.3 Event identity & duplicate detection

Inputs: category, primary actors/countries/location, root cause, initial timestamp, active-event database. → EVENT_ID, EVENT_VERSION, IS_NEW_EVENT, IS_DUPLICATE_REPORT, IS_MATERIAL_EVENT_UPDATE, DUPLICATE_GROUP. Next: verification.

1.4 Headline verification

Inputs: original source, independent source count, named officials/documents cited, official proposal/action status, operational confirmation. → verification level 0–3, maximum permitted severity, whether directional points are permitted → HEADLINE_VERIFICATION_LEVEL, HEADLINE_VERIFICATION_OUTCOME, VERIFICATION_SOURCE_LIST, DIRECTIONAL_SCORING_PERMISSION. Next: event status.

1.5 Event-status & lifecycle

Inputs: first valid report time, latest verified update, verification level, operational-effect status, cancellation/reversal/restoration info, current time. → NEW / DEVELOPING / CONFIRMED / REVERSED / CANCELLED / EXPIRED, active contribution → EVENT_STATUS, EVENT_ACTIVE, EVENT_EFFECTIVE_TIME, EVENT_EXPIRY_TIME. Next: scope & severity.

1.6 Event-scope

Inputs: affected companies/industries/sectors/infrastructure/countries/regions, direct operational consequences. → EVENT_IMPACT_SCOPE, EVENT_GEOGRAPHIC_SCOPE, DIRECTLY_AFFECTED_SECTOR_COUNT, DIRECTLY_AFFECTED_REGION_COUNT. Next: affected share.

1.7 Direct affected-share

Inputs: affected revenue/production/route/shipping/energy/customer/sector/ infrastructure amounts and their relevant bases. → directly-affected % per measure, highest valid % → DIRECT_AFFECTED_SHARE_RECORDS, DIRECT_AFFECTED_SHARE_PERCENT, DIRECT_AFFECTED_SHARE_BASIS. Next: severity; sector/industry/company exposure.

1.8 Event-severity

Inputs: verification level, affected %, expected duration, closure/prohibition/ sanction/critical-dependency status, operational-effect status. → severity 0–5 → EVENT_SEVERITY_SCORE, EVENT_SEVERITY_REASON. Next: direct impact; company risk; market-wide adjustment.

1.9 Direct sector/industry/company impact

Inputs: category, verification, severity, affected %, critical dependency, event-specific rules, positive-beneficiary eligibility. → impact −2…+2 per sector/industry/company, mixed status → EVENT_SECTOR_IMPACT_RECORDS, EVENT_INDUSTRY_IMPACT_RECORDS, EVENT_COMPANY_IMPACT_RECORDS, EVENT_DIRECTION_OUTCOME. Next: company exposure/risk; price confirmation; aggregation.

1.10 Company-exposure

Inputs: geographic revenue %, government-contract revenue %, critical manufacturing locations, critical suppliers/customers, export-licence & government-approval dependence, replacement availability, latest filings. → relevant direct exposure, critical-dependency status, exposure score 0–3 → COMPANY_RELEVANT_REVENUE_PERCENT, COMPANY_CRITICAL_DEPENDENCY, COMPANY_EXPOSURE_SCORE, COMPANY_EXPOSURE_DATA_STATUS. Next: company headline risk.

1.11 Company headline-risk

Inputs: severity, exposure score, direct-sanction/prohibition status, revenue threatened, licence/operating-region status. → risk 0–15; Low/Moderate/High/Extreme; strategy & size restrictions → COMPANY_HEADLINE_RISK, COMPANY_HEADLINE_RISK_CLASSIFICATION, COMPANY_POSITION_SIZE_CAP_PERCENT, MOMENTUM_ENTRY_PERMISSION, BREAKOUT_PERMISSION, RETEST_PERMISSION, OVERNIGHT_PERMISSION, MAXIMUM_HOLDING_PERIOD_SESSIONS. Next: new-entry decision; trading-bot handoff.

1.12 Rumour-driven price-shock

Inputs: Level-0 headline, pre-headline price, 30-min price path, event-window volume, comparable historical volume, 5-min candles after shock. → whether an unverified rumour caused a qualifying shock, minimum restriction period, stabilisation conditions → RUMOUR_PRICE_SHOCK, RUMOUR_SHOCK_PAUSE_START, RUMOUR_SHOCK_MINIMUM_PAUSE_END, RUMOUR_SHOCK_RESUMPTION_STATUS. Next: company new-entry permission; hard warning.

1.13 Price-reaction confirmation

Inputs: pre-headline reference price; prices at 15/30/60 min; VWAP; event-window volume; same-time historical volume; assigned direction. → positive/negative/ contradictory/unavailable → IMPACT_PRICE_REACTION_CONFIRMATION, PRICE_REACTION_CONFIRMATION, EVENT_RVOL, PRICE_CHANGE_PERCENT, PRICE_VS_VWAP. Next: confidence; political noise.

1.14 Defence relative-strength confirmation

Inputs: daily adjusted closes for CACI, LMT, RTX, NOC, GD, SPY; daily closes for ITA, XAR; daily 20-EMA; 10-session returns. → whether defence relative strength confirms the event → DEFENCE_RELATIVE_STRENGTH_CONFIRMATION. Next: confidence.

1.15 Event-confidence

Inputs: verification level, price confirmation, defence confirmation (when applicable), event direction, data validity. → UNUSABLE / LOW / MEDIUM / HIGH → EVENT_CONFIDENCE, EVENT_CONFIDENCE_REASON. Next: headline risk adjustment; Output 1.

1.16 Active-event aggregation

Inputs: all active Module 3 events, relationships, sector/industry/company impact records. → unrelated events, strongest active impact per sector/industry/company, mixed equal-strength impact, active counts → AGGREGATED_SECTOR_IMPACT_LIST, AGGREGATED_INDUSTRY_IMPACT_LIST, AGGREGATED_COMPANY_IMPACT_LIST, UNRELATED_ACTIVE_EVENT_COUNT. Next: headline risk adjustment; political noise.

1.17 Market-wide headline risk adjustment

Inputs: active market-wide events, severities, relationships, SEVERE_MARKET_INSTABILITY from the Volatility Module. → adjustment 0…−5 → HEADLINE_RISK_ADJUSTMENT, HEADLINE_RISK_ADJUSTMENT_REASON. Next: Output 2 handoff; new-entry status.

1.18 Political-noise

Inputs: active unrelated events, verification levels, affected-sector confirmations, Volatility Module risk regime. → NORMAL / HIGH / EXTREME; position-size cap; max-position adjustment → POLITICAL_NOISE_LEVEL, HEADLINE_POSITION_SIZE_CAP_PERCENT, MAXIMUM_POSITION_COUNT_ADJUSTMENT, MAXIMUM_POSITION_COUNT_CAP. Next: new-entry status; Output 2 handoff.

1.19 De-escalation, expiry & re-escalation

Inputs: official withdrawal, ceasefire time, route reopening, supply/transport restoration, new escalation info, current event version. → whether prior impact must be removed, whether a new version is required, new active duration → DE_ESCALATION_STATUS, EVENT_ACTIVE_POINT_RESET, NEW_EVENT_VERSION_REQUIRED, UPDATED_EVENT_EXPIRY_TIME. Next: aggregation; Output 1.

1.20 Permission & restriction

Inputs: inherited pauses, module data status, company headline risk, rumour price shock, political noise, active hard warnings, strategy restrictions. → Allowed / Allowed-with-caution / Restricted-scope / Paused-scope / Inherited-pause / Data-invalid → NEW_ENTRY_STATUS, RESTRICTION_SCOPE_LIST, HEADLINE_HARD_WARNING, HARD_WARNING_SCOPE. Next: Output 1; Output 2; trading bot.

1.21 Module 3 Output 1

Inputs: all Module 3 calculations. → complete Output 1 packet. Next: Output 2; Sector & Industry Selection Engine; Future Stock Risk Engine; trading bot; specialist macro modules.


Part 2 — Direct input parameters

2.1 Fixed system parameters

2.2 Permitted Module 3 event categories

ARMED_CONFLICT, MILITARY_ESCALATION, NATO_ESCALATION, CHINA_TAIWAN_ESCALATION, RUSSIA_UKRAINE_ESCALATION, MIDDLE_EAST_ESCALATION, GEOPOLITICAL_SANCTIONS, TERRORISM, CYBERATTACK, ENERGY_INFRASTRUCTURE_DISRUPTION, TRANSPORT_INFRASTRUCTURE_DISRUPTION, SHIPPING_ROUTE_DISRUPTION, AIRSPACE_OR_ROUTE_CLOSURE, SEMICONDUCTOR_SUPPLY_DISRUPTION, GEOPOLITICAL_PRODUCTION_DISRUPTION, EMERGENCY_OPEC_OR_SPR_SHOCK, CEASEFIRE_OR_DE_ESCALATION, OTHER_VERIFIED_GEOPOLITICAL_SHOCK.

2.3 Excluded categories & required owners

2.4 Common headline fields

Every raw headline record: RAW_HEADLINE_ID, RAW_HEADLINE_TEXT, FIRST_RECEIVED_TIMESTAMP_UTC, FIRST_RECEIVED_TIMESTAMP_NY, PROVIDER_TIMESTAMP_UTC, ORIGINAL_PUBLICATION_TIMESTAMP_UTC, SOURCE_NAME, SOURCE_ID, SOURCE_TYPE, SOURCE_URL_OR_DOCUMENT_ID (when available), NAMED_ACTORS, COUNTRIES, LOCATIONS, COMPANIES, INDUSTRIES, SECTORS, COMMODITIES, POLICY_OR_OPERATIONAL_ACTION, PROPOSED_EFFECTIVE_DATE, CONFIRMED_EFFECTIVE_DATE, HEADLINE_LANGUAGE, PROVIDER_LAST_UPDATE_UTC.

2.5 Verification fields

OFFICIAL_SOURCE_AVAILABLE, PRIMARY_OPERATOR_SOURCE_AVAILABLE, APPROVED_NEWS_SOURCE_COUNT, INDEPENDENT_APPROVED_SOURCE_COUNT, NAMED_OFFICIAL_CITED, NAMED_DOCUMENT_CITED, OFFICIAL_PROPOSAL_PUBLISHED, FORMAL_INVESTIGATION_ANNOUNCED, OFFICIAL_ACTION_ENACTED, SANCTION_EFFECTIVE, MILITARY_ACTION_CONFIRMED, OPERATIONAL_DISRUPTION_CONFIRMED, ROUTE_CLOSURE_CONFIRMED, SUPPLY_INTERRUPTION_CONFIRMED, PRODUCTION_INTERRUPTION_CONFIRMED, CANCELLATION_CONFIRMED, DE_ESCALATION_CONFIRMED.

2.6 Event identity fields

EVENT_ID, EVENT_VERSION, EVENT_CATEGORY, ROOT_CAUSE, PRIMARY_ACTORS, PRIMARY_COUNTRIES, PRIMARY_LOCATION, INITIAL_EVENT_TIMESTAMP, LATEST_EVENT_UPDATE_TIMESTAMP, PRIOR_EVENT_VERSION, RELATED_EVENT_IDS, DUPLICATE_SOURCE_IDS.

2.7 Event scope fields

AFFECTED_COMPANY_LIST, AFFECTED_INDUSTRY_LIST, AFFECTED_SECTOR_LIST, AFFECTED_COUNTRY_LIST, AFFECTED_REGION_LIST, CRITICAL_INFRASTRUCTURE_TYPE, DIRECTLY_AFFECTED_SECTOR_COUNT, DIRECTLY_AFFECTED_INDUSTRY_COUNT, DIRECTLY_AFFECTED_REGION_COUNT, MARKET_INFRASTRUCTURE_AFFECTED, ENERGY_INFRASTRUCTURE_AFFECTED, TRANSPORT_INFRASTRUCTURE_AFFECTED, COMMUNICATION_INFRASTRUCTURE_AFFECTED, FINANCIAL_INFRASTRUCTURE_AFFECTED.

2.8 Direct affected-share fields

Per measure: AFFECTED_MEASURE_TYPE, AFFECTED_AMOUNT, RELEVANT_BASE_AMOUNT, AFFECTED_SHARE_PERCENT, MEASUREMENT_UNIT, OBSERVATION_PERIOD, SOURCE_ID, SOURCE_TIMESTAMP, DATA_STATUS. Permitted bases: EXPECTED_ANNUAL_REVENUE, PRODUCTION_CAPACITY, ROUTE_CAPACITY, SHIPPING_VOLUME, ENERGY_SUPPLY, CUSTOMER_VOLUME, SECTOR_PRODUCTION, CRITICAL_INFRASTRUCTURE_AVAILABILITY, GOVERNMENT_PROCUREMENT, HOTEL_REGIONAL_REVENUE, AIRLINE_ROUTE_CAPACITY, CRUISE_AFFECTED_ITINERARIES.

2.9 Expected duration fields

EXPECTED_DISRUPTION_DURATION_HOURS, EXPECTED_DISRUPTION_DURATION_TRADING_SESSIONS, ACTUAL_DISRUPTION_START, ACTUAL_DISRUPTION_END, DURATION_SOURCE, DURATION_STATUS, OPERATIONAL_DISRUPTION_CONTINUES.

2.10 Company-exposure fields

Per directly-named/exposed company: COMPANY_ID, COMPANY_NAME, COMPANY_TICKER, CHINA_REVENUE_PERCENT, EUROPE_REVENUE_PERCENT, MIDDLE_EAST_REVENUE_PERCENT, RUSSIA_REVENUE_PERCENT, TAIWAN_REVENUE_PERCENT (when disclosed), FOREIGN_REVENUE_PERCENT, GOVERNMENT_CONTRACT_REVENUE_PERCENT, AFFECTED_PRODUCT_REVENUE_PERCENT, AFFECTED_ROUTE_REVENUE_PERCENT, AFFECTED_CUSTOMER_REVENUE_PERCENT, CRITICAL_MANUFACTURING_LOCATIONS, CRITICAL_SUPPLIER_LOCATIONS, CRITICAL_CUSTOMER_LOCATIONS, EXPORT_LICENCE_DEPENDENCE, GOVERNMENT_APPROVAL_DEPENDENCE, OPERATING_LICENCE_DEPENDENCE, SOLE_SOURCE_DEPENDENCE, REPLACEMENT_AVAILABLE_WITHIN_12_MONTHS, COMPANY_RELEVANT_REVENUE_PERCENT, COMPANY_EXPOSURE_SOURCE, COMPANY_EXPOSURE_SOURCE_DATE, LATEST_APPLICABLE_FILING_DATE, COMPANY_EXPOSURE_DATA_STATUS.

2.11 Market-reaction fields

Per affected stock/industry ETF/sector ETF: REACTION_INSTRUMENT_ID, REACTION_INSTRUMENT_TYPE, REACTION_DIRECTION_EXPECTED, PRE_HEADLINE_REFERENCE_PRICE, PRE_HEADLINE_REFERENCE_TIMESTAMP, PRICE_15_MINUTES, PRICE_30_MINUTES, PRICE_60_MINUTES, VWAP_15_MINUTES, VWAP_30_MINUTES, VWAP_60_MINUTES, EVENT_WINDOW_VOLUME_{15,30,60}_MINUTES, COMPARABLE_MEDIAN_VOLUME_{15,30,60}_MINUTES, VALID_COMPARISON_SESSION_COUNT, MARKET_DATA_TIMESTAMP, MARKET_DATA_STATUS.

2.12 Defence-confirmation fields

CACI, LMT, RTX, NOC, GD: DAILY_ADJUSTED_CLOSE, DAILY_EMA_20, STOCK_10_SESSION_RETURN_PERCENT, SPY_10_SESSION_RETURN_PERCENT, STOCK_RELATIVE_RETURN_VS_SPY_PERCENTAGE_POINTS, ABOVE_DAILY_EMA_20, OUTPERFORMS_SPY_BY_AT_LEAST_2_PERCENTAGE_POINTS. ITA, XAR: DAILY_ADJUSTED_CLOSE, DAILY_EMA_20, ABOVE_DAILY_EMA_20.

2.13 External specialist-module inputs

MODULE_2_ACTIVE_EVENT_RESTRICTION, MODULE_4_TRUMP_HEADLINE_STATUS, MODULE_5_POLICY_HEADLINE_STATUS, MODULE_8_SHIPPING_AND_SUPPLY_CHAIN_STATUS, MODULE_19_CENTRAL_BANK_STATUS, MODULE_20_TREASURY_YIELD_STATUS, MODULE_21_YIELD_CURVE_STATUS, MODULE_24_CURRENCY_STATUS, MODULE_25_OIL_STATUS, MODULE_26_GOLD_STATUS, MODULE_27_COPPER_STATUS, VOLATILITY_MODULE_RISK_REGIME, SEVERE_MARKET_INSTABILITY. Pass-through/confirmation only unless a Module 3 rule uses them explicitly.


Part 3 — Data definitions & validation

3.1 Source responsibility

Module 1 supplies the approved provider + major-news-source list. Officials control official actions; operators control operational confirmations; the market-data provider controls prices/VWAP/volume; company filings control exposure data. Module 3 must not silently substitute another provider.

3.2 Verification source hierarchy (check in order)

  1. Primary government/military/regulatory/international-org publication.
  2. Primary company/exchange/port/airline/pipeline/infrastructure-operator announcement.
  3. One approved major news org citing named officials or a named document.
  4. Two independent approved major news orgs reporting the same event.
  5. Other media, commentary, anonymous reports, social media. A lower-priority source cannot override a higher-priority official source.

3.3 Verification levels

LEVEL_0_UNVERIFIED, LEVEL_1_CREDIBLE_REPORT, LEVEL_2_CONFIRMED_PROPOSAL, LEVEL_3_CONFIRMED_ACTION.

3.4 Event status values

NEW, DEVELOPING, CONFIRMED, REVERSED, CANCELLED, EXPIRED.

3.5 Impact-scope values

COMPANY_SPECIFIC, INDUSTRY_SPECIFIC, SECTOR_SPECIFIC, MARKET_WIDE.

3.6 Geographic-scope values

REGIONAL, GLOBAL. Impact scope and geographic scope are stored separately.

3.7 Data-status values

VALID, DEGRADED, INVALID, NOT_APPLICABLE. Produce separate statuses for MODULE_DATA_STATUS, EVENT_DATA_STATUS, COMPANY_EXPOSURE_DATA_STATUS, PRICE_REACTION_DATA_STATUS.

3.8 Headline-feed validity

HEADLINE_FEED_STATUS = VALID only when: feed available; latest provider update ≤60 s old during active monitoring; original source identifiers available; timestamps timezone-aware; duplicate detection operational; ownership routing operational.

3.9 Event-record validity

EVENT_DATA_STATUS = VALID only when: timestamp available; source identified; category valid; verification level calculable; status determinable; not an unresolved duplicate; proposal vs enacted-action not confused; no expired event still contributing.

3.10 Company-exposure source priority

Latest 10-K/20-F → newer 10-Q/6-K → newer quantitatively-specific investor presentation → official announcement. Newer filing overrides older; a presentation updates a filing only with a clear quantitative exposure. Do not infer exposure from HQ location or infer missing geographic revenue. Data are stale when a newer applicable filing exists but is unprocessed.

3.11 Critical company-exposure validity

COMPANY_EXPOSURE_DATA_STATUS = VALID only when: relevant exposure % available (or officially stated immaterial); relevant critical dependencies evaluated; source date not older than latest processed filing; exposure uses the relevant event geography/ product/route/supplier/customer/approval.

3.12 Market-reaction validity

PRICE_REACTION_DATA_STATUS = VALID only when: pre-headline ref is the final valid observation in the 60 s before the headline; reaction prices occur after the headline; market data ≤60 s old; VWAP uses the same provider/session; event-window volume uses the same provider; ≥12 valid same-time comparison sessions for RVOL; the instrument correctly represents the affected company/industry/sector.

3.13 Missing-data treatment

Do not estimate a missing timestamp/source; do not infer exposure from HQ; do not substitute one country's revenue for another; do not assume a critical dependency is replaceable; do not estimate missing revenue exposure; do not use pre-headline prices as a reaction; do not carry an expired event forward; do not count an event twice; do not convert a proposal into an enacted action; do not infer verification from price.

3.14 Company-specific missing data

When one company's exposure is missing: COMPANY_EXPOSURE_DATA_STATUS = INVALID; COMPANY_EXPOSURE_SCORE = NOT_CALCULABLE; COMPANY_HEADLINE_RISK = NOT_CALCULABLE; COMPANY_IMPACT_POINT = 0; that company's NEW_ENTRY_STATUS = PAUSED_AFFECTED_SCOPE. Other companies/industries/sectors/market calculations continue; MODULE_DATA_STATUS does not automatically become INVALID.

3.15 Invalid event-verification data

EVENT_DIRECTIONAL_POINTS = 0; EVENT_SEVERITY_SCORE ≤ 1; HEADLINE_CONTRIBUTION_STATUS = LIMITED; event cannot enter HEADLINE_RISK_ADJUSTMENT; may remain visible as a warning; do not use for positive-beneficiary calculation.

3.16 Invalid price-reaction data

Preserve the verified event and its direct impact; PRICE_REACTION_CONFIRMATION = UNAVAILABLE; do not raise confidence; do not remove/reverse the impact; do not treat the affected sector as price-confirmed for Political Noise.

3.17 Systemic module invalidity

MODULE_DATA_STATUS = INVALID when: feed unavailable/stale; source identification fails systemically; duplicate detection fails systemically; active vs expired events indistinguishable; cannot determine whether a market-wide event is active; ownership routing fails and creates double-counting risk; a systemic provider conflict prevents reliable calculation.

3.18 Failure output

When MODULE_DATA_STATUS = INVALID: HEADLINE_HARD_WARNING = TRUE; HARD_WARNING_SCOPE = DATA_SYSTEM; HEADLINE_CONTRIBUTION_STATUS = BLOCKED_INVALID; HEADLINE_RISK_ADJUSTMENT = NOT_CALCULABLE; NEW_ENTRY_STATUS = DATA_INVALID; REQUEST_OUTPUT_2_MARKET_WIDE_REVIEW = TRUE. Module 3 does not place a market-wide pause; existing positions unchanged.

3.19 Duplicate-data treatment

Match official identifiers first; else match category + primary countries + actors + location + root cause + initial event time. Combine duplicates into one EVENT_ID; retain every source id; use the highest verified level and latest confirmed severity; only the current active EVENT_VERSION contributes points.

3.20 Data revalidation

Developing events rechecked ≥ every 5 min; active events revalidated ≥ once per regular session; a new verified fact recalculated within 60 s; company exposure revalidated when a new applicable filing is processed; defence confirmation uses the latest completed regular-session close.


Part 4 — Deterministic calculations

4.1 Ownership routing (first match wins)

Scheduled economic/Fed calendar → Module 2. Trump-specific/executive action → Module 4. Ordinary tariff/trade/export-control/investment/regulatory/pharma/antitrust/ government-contract policy → Module 5. Freight/delivery/shipping-capacity/supply-chain → Module 8. Central-bank meaning → Module 19. Yield → 20/21. Currency → 24. Oil or Energy-sector effect → 25. Gold → 26. Copper → 27. Otherwise, if it matches a permitted Module 3 category → Module 3. Otherwise → OTHER_OR_NOT_DEFINED. Module 3 assigns 0 points to information owned by another module.

4.2 Trump-specific separation

When the primary actor is Trump/his administration/an executive action owned by Module 4: MODULE_3_HEADLINE_POINTS = 0; pass to Module 4. If the headline separately confirms an actual military attack/route closure/operational disruption, Module 3 may score only that verified operational event. Do not score the political statement and the operational event as two separate Module 3 events.

4.3 New-event test

IS_NEW_EVENT = TRUE only when the headline introduces at least one of: new official action; new country/military actor; new affected route/facility/region; new effective sanction; new operational restriction; new measurable affected capacity/revenue; higher severity; new confirmed operational disruption; confirmed de-escalation. Rewording, additional coverage with no new fact, commentary, repeated statements, or price-movement articles do not create a new event.

4.4 Material-update test

IS_MATERIAL_EVENT_UPDATE = TRUE when: verification increases; severity increases; a new direct sector/industry/company becomes affected; affected share crosses 10% or 20%; an operational disruption begins/ends; status changes; an official de-escalation occurs. A material update creates a new EVENT_VERSION under the same EVENT_ID.

4.5 Verification-level calculation (first match wins)

Officially enacted action / effective sanction / confirmed military action / confirmed route closure / confirmed production interruption / confirmed operational disruption → LEVEL_3. Official proposal / consultation / formal investigation / announced planned restriction / scheduled decision → LEVEL_2. One approved major news org citing named officials or a named document → LEVEL_1. Two independent approved orgs on the same event → LEVEL_1. Otherwise → LEVEL_0.

4.6 Verification-level outputs

4.7 Event-status calculation (first match wins)

Official cancellation before effectiveness → CANCELLED. Official withdrawal / effective ceasefire / route reopening / operational restoration → REVERSED. Fixed active period ended with no continuing verified effect → EXPIRED. Level 3 with known operational effect → CONFIRMED. New verified facts arriving, final effect unknown → DEVELOPING. First valid report within previous 60 min → NEW. Otherwise, while active/unresolved → DEVELOPING. Only NEW/DEVELOPING/CONFIRMED contribute active points.

4.8 Impact-scope calculation (first match wins)

≥3 of the 11 US sectors, or critical national/global financial/energy/transport/ communications/market infrastructure → MARKET_WIDE. ≥2 industries within one sector, or a sector-wide input → SECTOR_SPECIFIC. One industry within one sector → INDUSTRY_SPECIFIC. One+ named companies without material wider effect → COMPANY_SPECIFIC. Otherwise → COMPANY_SPECIFIC with EVENT_SCOPE_CONFIDENCE = LOW. Price movement alone cannot convert a company event into market-wide.

4.9 Geographic-scope calculation

GLOBAL when direct consequences affect ≥3 configured major economic regions; REGIONAL otherwise.

4.10 Direct affected-share calculation

AFFECTED_SHARE_PERCENT = AFFECTED_AMOUNT / RELEVANT_BASE_AMOUNT × 100. Base must match the measure; compute unrounded, round only for display. With several measures, DIRECT_AFFECTED_SHARE_PERCENT = highest valid %. Retain every measure; do not add overlapping measures; use a combined figure only if an official non-overlapping combined figure exists.

4.11 Event-severity calculation (first match wins)

Level 0 → 0. Level 1 → 1. Level 2 → 2. Level 3 + (confirmed prohibition / complete closure / critical single-source interruption / direct sanction blocking operations / affected share ≥20%) → 5. Level 3 + affected share 10–19.99% → 4. Level 3 + expected disruption 1–5 sessions → 4. Level 3 + affected share <10% → 3. Level 3 + localised disruption <1 session → 3. Level 3 with no valid affected-share/duration → 3.

4.12 Generic negative impact (first match wins)

Level 0/1 → 0. Level 2 + direct exposure ≥10% or an officially proposed direct operational restriction → −1. Level 2 + exposure <10% and no critical dependency → 0. Level 3 + (exposure ≥20% / critical dependency / prohibition / closure / operational block) → −2. Level 3 + exposure 10–19.99% → −1. Level 3 + exposure <10% and no critical dependency → 0.

4.13 Generic positive impact (first match wins)

Level 0/1 → 0. Indirect/customary/unquantified/speculative → 0. Level 2 or 3 + confirmed measurable direct benefit <20% of base → +1. Level 3 + confirmed measurable benefit ≥20% or direct material procurement/contract increase → +2. No contradictory direct cost may exceed the claimed benefit.

4.14 Positive-beneficiary eligibility

POSITIVE_BENEFICIARY_ELIGIBLE = TRUE only when: verification 2/3; benefit directly connected; measurable; company/industry/sector confirmed eligible; no larger contradictory cost. Do not qualify by themselves: defence/gold/oil rally, domestic status, competitor restriction, political rhetoric, expectation of future contracts.

4.15 China–Taiwan eligibility

CHINA_TAIWAN_ESCALATION_CONFIRMED = TRUE only with ≥1 of: official military restriction on commercial transport; confirmed shipping disruption; confirmed airspace disruption; confirmed sanction; confirmed semiconductor-export interruption from the escalation; confirmed semiconductor-production interruption; confirmed manufacturing interruption. Rhetoric without operational/policy change → 0.

4.16 China–Taiwan direct impacts

When confirmed: TSMC-dependent semiconductor company with critical manufacturing dependency → −2; electronics company with critical Taiwan manufacturing → −2; company with combined China/Taiwan revenue ≥20% → −1 (unless a stronger critical-dependency rule applies); Defence sector → +1; Energy → 0 (→ Module 25); general domestic-semiconductor beneficiary → 0 unless a separate measurable direct benefit exists.

4.17 Russia–Ukraine eligibility

RUSSIA_UKRAINE_ESCALATION_CONFIRMED = TRUE only with ≥1 of: new effective sanction; confirmed energy-supply interruption; confirmed pipeline interruption; confirmed transport restriction; material military expansion affecting economic infrastructure.

4.18 Russia–Ukraine & European exposure impacts

European revenue <10% → 0; 10–19.99% → −1 only when operations directly affected; 20–39.99% → −1 when directly affected; ≥40% + direct operational exposure → −2. European autos/industrials get −1/−2 only when energy/sanctions/transport/regional demand directly affect them. Do not penalise every European-exposed company on tension alone. European energy prices → Module 25; wheat/agri → relevant Commodity module.

4.19 Middle East eligibility

MIDDLE_EAST_ESCALATION_CONFIRMED = TRUE only with ≥1 of: airspace closure; route cancellation; shipping-lane disruption; oil-production disruption; official travel restriction; confirmed attack on energy infrastructure; confirmed attack on transport infrastructure.

4.20 Middle East direct impacts

Airline affected-route exposure <10% → 0; 10–19.99% → −1; ≥20% → −2. Cruise affected itineraries ≥10% → −1. Hotel regional revenue ≥20% → −1. Defence → +1. Energy → 0 (→ Module 25). Oil price/supply not scored again in Module 3.

4.21 Airspace/route closure impact

Affected capacity <10% → 0; 10–19.99% → −1; ≥20% → −2. Airline fuel → Module 25; freight-rate → Module 8.

4.22 Semiconductor supply-disruption impact

Critical single-source manufacturing dependency → −2; direct affected supply/revenue ≥20% → −2; 10–19.99% → −1; <10% and no critical dependency → 0. Do not auto-award positive points to domestic semiconductor companies.

4.23 Direct geopolitical sanction impact

Company directly prohibited from operating/selling/receiving critical inputs → −2; required export/operating licence cancelled → −2; direct sanction affects ≥20% of expected annual revenue → −2; 10–19.99% → −1. Company Headline Risk critical override may separately apply. General trade-policy sanctions not tied to active conflict → Module 5.

4.24 Defence-sector impact (first match wins)

Confirmed measurable defence procurement increase → +2; confirmed limited geopolitical escalation → +1; rhetoric without verified action → 0. Defence relative-strength confirmation does not add another point.

4.25 Cyberattack & terrorism impact

Direct operational exposure <10% and no critical dependency → 0; 10–19.99% → −1; ≥20% or critical/single-source infrastructure unavailable → −2. Cybersecurity/defence/security beneficiaries → +1 only after a confirmed measurable contract/procurement/revenue benefit; no +2 without a quantified benefit ≥20% of base or a material procurement increase. A market-wide attack on critical infrastructure may also qualify for a market-wide Headline Risk Adjustment.

4.26 Emergency OPEC/SPR shock

Routine announcement → entirely to Module 25. Confirmed emergency geopolitical supply threat → Module 3 calculates verification/severity/scope/market-wide risk; Energy-sector impact 0; WTI/Brent-WTI/OVX/Energy → Module 25; use generic affected-supply and severity calculations.

4.27 Shipping-route disruption

Module 3 verifies the attack/blockade/closure/military threat and calculates severity/scope/direct company/airline/travel exposure. Freight-rate/shipping-capacity/ delivery-delay → Module 8. Do not score the same supply-chain effect twice.

4.28 Event direction outcome

POSITIVE_IMPACT_EXISTS = any direct impact >0. NEGATIVE_IMPACT_EXISTS = any direct impact <0, or a market-wide severity-3/4/5 event. First match wins: Level 0 → UNCONFIRMED; status REVERSED/CANCELLED/EXPIRED → NEUTRAL; positive & negative → MIXED; negative only → NEGATIVE; positive only → POSITIVE; neither → NEUTRAL. A positive beneficiary does not cancel a separate market-wide negative risk.

4.29 Critical-dependency calculation

COMPANY_CRITICAL_DEPENDENCY = TRUE with ≥1 of: loss threatens ≥20% of annual revenue; ≥20% of production capacity; sole-source; no qualified replacement within 12 months; required export licence threatened; required operating approval threatened; required government approval threatened; company states it as material/critical in an official filing.

4.30 Company relevant exposure

Use official directly-relevant revenue/production/route/customer/product exposure. Do not add overlapping disclosed exposures; official non-overlapping exposures may be added and capped at 100%; when overlap is unresolved, use the highest directly-relevant disclosed %. Do not estimate undisclosed combined exposure.

4.31 Company exposure score (first match wins; use highest applicable)

≥40% → 3. Critical single-source dependency → 3. Required export licence/government approval directly threatened → 3. 20–39.99% → 2. 10–19.99% and replacement not confirmed within 12 months → 2. Material supplier/customer/manufacturing dependency → 2. 10–19.99% and replacement within 12 months confirmed → 1. <10% and no critical dependency → 0. Missing required data → NOT_CALCULABLE.

4.32 Company headline-risk

COMPANY_HEADLINE_RISK = EVENT_SEVERITY_SCORE × COMPANY_EXPOSURE_SCORE, range 0–15. Do not calculate when exposure score is unavailable.

4.33 Company headline-risk critical override

Set risk = 15 with ≥1 of: directly sanctioned; principal affected product prohibited; required export licence cancelled; primary operating region inaccessible; confirmed action threatens ≥20% of expected annual revenue.

4.34 Company headline-risk classification (first match wins)

8–15 → EXTREME; 5–7 → HIGH; 3–4 → MODERATE; 1–2 → LOW; 0 → NO_DIRECT_EXPOSURE; not calculable → INVALID.

4.35 Company-risk actions

4.36 Company direction vs risk separation

COMPANY_IMPACT_POINT (−2…+2, directional) and COMPANY_HEADLINE_RISK (0–15, trade/position risk) are separate. Do not add them; pass both.

4.37 Rumour price-shock reference

Use the final valid stock price during the 60 s before the first unverified headline timestamp. Measure the highest absolute move over the following 30 min and event-window volume over the same period; compare with median volume for the same clock-time window across the previous 20 valid sessions.

4.38 Rumour price-shock calculation

RUMOUR_PRICE_SHOCK = YES only when all: verification LEVEL_0; absolute move ≥3.00% within 30 min; EVENT_RVOL ≥2.00; ≥12 valid comparison sessions. Actions: pause new entries in the affected company; cancel unfilled exposure-increasing orders; directional points 0; min pause 60 min from when both price and RVOL conditions first hold.

4.39 Rumour-shock resumption

If verified: end the rumour rule, apply the verified-event rule, do not auto-resume trading. If still unverified after 60 min, resume only when: three consecutive 5-min candles close inside the original 30-min shock high-low range AND current event-window RVOL <2.00. Otherwise remain paused until regular-session close.

4.40 Event-window RVOL

EVENT_RVOL = EVENT_WINDOW_VOLUME / MEDIAN_COMPARABLE_WINDOW_VOLUME per horizon. Same instrument, same clock-time interval, previous 20 comparable sessions, ≥12 valid; thresholds use unrounded values.

4.41 Price change

PRICE_CHANGE_PERCENT = current_reaction_price / pre_headline_reference_price − 1 × 100, computed separately at 15/30/60 min.

4.42 Positive price confirmation

YES at the first valid horizon when all: assigned impact positive; move ≥+2.00%; price above VWAP; EVENT_RVOL ≥1.50.

4.43 Negative price confirmation

YES at the first valid horizon when all: assigned impact negative; move ≤−2.00%; price below VWAP; EVENT_RVOL ≥1.50.

4.44 Contradictory price reaction

CONTRADICTORY when: impact positive but price falls ≥2.00%, below VWAP, RVOL ≥1.50; or impact negative but price rises ≥2.00%, above VWAP, RVOL ≥1.50. It does not reverse the event, change verification, or raise confidence; it is passed to Output 2 and the bot.

4.45 Outside-regular-session reaction

Extended-hours/futures reaction is PROVISIONAL; final confirmation is evaluated after the first 30 min of the next regular session. If valid extended-hours VWAP/RVOL are unavailable, do not assign final confirmation before the regular session.

4.46 Primary reaction instrument

Select in order: MARKET_WIDE → SPY (or configured broad instrument); SECTOR_SPECIFIC → affected sector ETF with greatest absolute impact; INDUSTRY_SPECIFIC → affected industry ETF with greatest absolute impact; COMPANY_SPECIFIC → affected stock with greatest absolute impact. For MIXED events, compute positive- and negative-side confirmations separately; do not cancel one with the other; overall confidence rises only if all primary sides with valid data confirm their assigned directions.

4.47 Daily 20-EMA

Smoothing = 2/21; use completed regular-session adjusted daily closes; current EMA uses the latest completed daily close; intraday prices do not qualify.

4.48 Ten-session relative return

STOCK_10_SESSION_RETURN_PERCENT = latest_close / close_10_sessions_earlier − 1 × 100; SPY identically; RELATIVE_RETURN_VS_SPY = stock − SPY.

4.49 Defence relative-strength confirmation

YES only when all: ≥4 of CACI/LMT/RTX/NOC/GD close above their daily 20-EMA; ≥4 of the same 5 outperform SPY by ≥2.00 pp over 10 completed sessions; ITA or XAR above its daily 20-EMA. Effect: raise applicable event confidence by one level; do not add another Defence point; does not independently prove escalation.

4.50 Base event confidence

Level 0 → UNUSABLE; Level 1 → LOW; Level 2 → MEDIUM; Level 3 → HIGH.

4.51 Confidence upgrade mapping

UNUSABLE stays; LOW→MEDIUM; MEDIUM→HIGH; HIGH stays. Apply one upgrade for qualifying price confirmation and one for Defence relative-strength (when Defence is an affected beneficiary); final ≤ HIGH; contradictory reaction produces no upgrade.

4.52 Multiple events, same sector

Preserve every active impact separately; do not add across events; select the greatest absolute value. Equal-strength opposite impacts → SECTOR_IMPACT_STATUS = MIXED, SECTOR_MODULE_IMPACT_POINT = 0, retain both. Same method for industries and companies.

4.53 Unrelated-event test

Unrelated only when all: different EVENT_ID; different root causes; different primary countries/actors; different primary operational disruptions. Different stages of the same conflict are related.

4.54 Severe market instability input

Received from the Volatility Module; Module 3 does not calculate it; used only for the Headline Risk Adjustment and Political Noise rules; contributes 0 directional points.

4.55 Headline risk adjustment (first match wins)

≥1 active market-wide severity-5 event AND SEVERE_MARKET_INSTABILITY = TRUE → −5. ≥1 active market-wide severity-5 → −4. ≥2 unrelated active market-wide events severity ≥4 → −3. Exactly one active market-wide severity-4 and no higher → −2. ≥1 active market-wide severity-3 and no higher → −1. No active verified market-wide severity-3/4/5 → 0. Range [−5, 0]. Severity 1/2 create warnings only; company-specific and sector-specific events do not reduce the whole-market score unless the MARKET_WIDE test passes.

4.56 Abnormal affected-sector reaction

A sector qualifies only when its sector ETF satisfies Positive (for positive impact) or Negative (for negative impact) Price Confirmation. Ordinary movement without VWAP+RVOL does not qualify.

4.57 Political noise level (first match wins)

≥3 unrelated active Level-3 events AND Volatility regime HIGH/EXTREME → EXTREME. ≥2 unrelated active Level-2/3 events AND ≥2 affected sectors with abnormal confirmed reactions → HIGH. Otherwise → NORMAL.

4.58 Political noise actions

4.59 Effective Module 3 company size cap

EFFECTIVE_MODULE_3_COMPANY_SIZE_CAP_PERCENT = lower of COMPANY_POSITION_SIZE_CAP_PERCENT and HEADLINE_POSITION_SIZE_CAP_PERCENT. Output 2 may reduce further, not increase.

4.60 Headline hard warning

TRUE with ≥1 of: active market-wide severity-4; active market-wide severity-5; POLITICAL_NOISE_LEVEL = EXTREME; active EXTREME company risk for a held/considered company; active Rumour Price Shock; MODULE_DATA_STATUS = INVALID. HARD_WARNING_SCOPE ∈ {MARKET_WIDE, SECTOR, INDUSTRY, COMPANY, DATA_SYSTEM}. A hard warning does not auto-close a position.

4.61 New-entry status (first match wins)

Valid inherited pause → INHERITED_PAUSE. MODULE_DATA_STATUS = INVALID → DATA_INVALID. Extreme company risk or active Rumour Price Shock → PAUSED_AFFECTED_SCOPE. Political noise EXTREME + company risk HIGH/EXTREME → PAUSED_AFFECTED_SCOPE. Moderate/High company risk → RESTRICTED_AFFECTED_SCOPE. Political noise HIGH/EXTREME → RESTRICTED_AFFECTED_SCOPE. Active verified event / active warning / HEADLINE_RISK_ADJUSTMENT <0 → ALLOWED_WITH_CAUTION. Otherwise → ALLOWED. Return every affected scope separately. Module 3 does not return a market-wide PAUSED_ALL_NEW_TRADES.

4.62 Fixed event active duration

Level 1 credible report → max 1 session. Level 2 proposal → max 3 sessions. Level 3 confirmed action without continuing disruption → max 5 sessions. Confirmed operational disruption → active while it continues.

4.63 Trading-session duration counting

Detected before 16:00 NY on a trading day → that session is Day 1. At/after 16:00 → next session is Day 1. Weekend/holiday → next session is Day 1. Fixed-duration event expires at 16:00 NY on its final active session.

4.64 Operational-disruption expiry

Active until one is verified: route/airspace reopening; infrastructure restoration; supply restoration; production restoration; sanction/prohibition removal; effective ceasefire/agreement; official confirmation operations are no longer affected. Revalidate ≥ once per session.

4.65 De-escalation

DE_ESCALATION_STATUS = CONFIRMED only when: restriction formally removed; ceasefire/ agreement effective; route/airspace reopens; supply/transport restored; proposal formally withdrawn. Actions: remove previous impact at the effective timestamp; set prior active points to 0; do not reverse −2 into +2; initial de-escalation impact 0; other modules measure any positive reaction; existing pauses from other events remain.

4.66 Re-escalation

A new verified escalation after a confirmed de-escalation → create a new EVENT_VERSION; recalculate verification/severity/scope/impacts; start a new active-duration period; do not restore the old score automatically.

4.67 Next recalculation time

NEXT_RECALCULATION_TIME = earliest applicable future time among: next developing-event verification check; 15/30/60-min reaction checks; regular-session open/close; event-expiry time; rumour-shock minimum pause end; next active-event revalidation; scheduled restoration/reopening. Recalculate immediately on: new headline; verification change; severity change; official action effective; de-escalation confirmed; reversal; expiry; new company exposure data.


Part 5 — Descriptive bands


Part 6 — Helper conditions


Part 7 — Regime & decision order

7.1 Event processing (first match wins)

Belongs to another module → route, points 0. Duplicate with no new fact → update source list only. Invalid source/timestamp → LIMITED or BLOCKED_INVALID. Level 0 → UNVERIFIED, severity 0, points 0. Level 1 → CREDIBLE REPORT, severity 1, warning only. Level 2 → CONFIRMED PROPOSAL, severity 2, max impact magnitude 1. Level 3 → severity 3/4/5. Then: scope → direct impacts → company exposure & risk → price confirmation → confidence → expiry/reversal/de-escalation → add to aggregate.

7.2 Aggregate market decision order

Validate active-event DB → remove expired/reversed/cancelled → group related versions → sector/industry/company aggregates → Headline Risk Adjustment → Political Noise → Module 3 size cap → hard warning → new-entry status → preserve inherited pauses → produce Output 1.

7.3 New-entry decision priority (first match wins)

Inherited pause → INHERITED_PAUSE. Systemic data invalid → DATA_INVALID. Extreme company risk or Rumour Price Shock → PAUSED_AFFECTED_SCOPE. Extreme Political Noise + High/Extreme company risk → PAUSED_AFFECTED_SCOPE. Moderate/High company risk → RESTRICTED_AFFECTED_SCOPE. High/Extreme Political Noise → RESTRICTED_AFFECTED_SCOPE. Active verified event or non-zero Headline Risk Adjustment → ALLOWED_WITH_CAUTION. Otherwise → ALLOWED.


Part 8 — Short-term, event & market overlays


Part 9 — Score, impact & outcome ranges


Part 10 — Handoffs & double-counting controls


Part 11 — Hard overrides


Part 12 — Execution order

1 read UTC + NY time · 2 read Module 1 provider/data-quality · 3 validate live feed · 4 read inherited pauses · 5 collect new headlines · 6 identify original source/timestamp · 7 normalise actors/countries/locations/category · 8 route Trump/scheduled/policy/tariff/specialist info to owner · 9 determine Module 3 eligibility · 10 match to existing EVENT_ID · 11 remove duplicate reports · 12 create new EVENT_VERSION on material update · 13 verification level · 14 event status · 15 impact + geographic scope · 16 affected-share records · 17 severity · 18 identify affected sectors/industries/companies · 19 event-specific impact rules · 20 generic direct-impact rules where no specific rule exists · 21 validate company exposure · 22 exposure score · 23 company headline risk · 24 critical overrides · 25 company strategy/size restrictions · 26 rumour price-shock test · 27 capture pre-headline references · 28 15/30/60-min reactions · 29 VWAP + RVOL confirmation · 30 Defence relative-strength (when applicable) · 31 event confidence · 32 remove inactive/reversed/cancelled/expired contributions · 33 aggregate impacts without adding events · 34 Headline Risk Adjustment · 35 Political Noise · 36 size cap + position-count restriction · 37 hard warning · 38 new-entry status per scope · 39 specialist handoffs · 40 event expiry time · 41 next recalculation time · 42 produce Output 1 · 43 save the complete audit record.


Part 13 — Non-calculative constraints


Part 14 — Required outputs


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

  1. 15.1 Headline/news providers — approved provider names + major-news-source list not defined in Module 3; Verification Level 1 needs them. Module 1 must supply provider ids + source list; without them the event stays unverified/limited. Classification: controlled by Module 1.
  2. 15.2 Sector/industry instrument mapping — exact ETF/index per affected sector/industry not supplied; price confirmation needs one valid instrument. Use the 11 US sector ETFs + an approved industry-ETF map; no valid industry instrument → Industry Price Confirmation UNAVAILABLE. Not defined.
  3. 15.3 Major economic region list — "three major regions" accepted but taxonomy not finalised; global scope needs a fixed list. Use a configurable list; until finalised keep country-level data and default geographic scope REGIONAL unless three configured regions are confirmed. Not defined.
  4. 15.4 Confirmed disruption >5 sessions without a severity-5 condition — duration alone does not produce >4. Keep severity 4 unless affected share ≥20%, a complete closure, a critical single-source dependency, or another explicit severity-5 condition holds. Proposed resolution.
  5. 15.5 Extended-hours rumour RVOL — rumour rule assumes regular-session volume; extended-hours liquidity differs. Do not assign a final Rumour Price Shock outside regular hours without an approved extended-hours RVOL model; preserve the warning and evaluate after the open. Not defined.
  6. 15.6 Final market-wide trading pause — Module 3 may warn but not pause every trade. Set REQUEST_OUTPUT_2_MARKET_WIDE_REVIEW = TRUE; Output 2 / Emergency Risk decides. Controlled by Output 2 / Emergency Risk.
  7. 15.7 Base maximum number of positions — Political Noise HIGH reduces the max by one, but the base is not defined here. Output MAXIMUM_POSITION_COUNT_ADJUSTMENT = −1; Output 2 applies it. Controlled by Output 2.
  8. 15.8 Complete company-exposure database — no full stock-level exposure DB yet. Calculate risk only for named/directly-affected companies with valid exposure; pause the affected company when exposure is missing; do not search/rank other stocks. Controlled by the Future Stock Risk Engine.
  9. 15.9 Final trade entry/exit rules — technical entry/stop/target/order-flow/options/execution are outside Module 3. TRADE_APPROVED = FALSE, ORDER_GENERATED = FALSE. Controlled by the trading bot.