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.py → snapshots/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_riskagent) 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.
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.
Each engine lists required inputs, what it calculates, what it produces, and what runs next.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
DECISION_TIMEZONE = America/New_York; STORAGE_TIMEZONE = UTC.HEADLINE_FEED_MAXIMUM_AGE_SECONDS = 60; MARKET_PRICE_MAXIMUM_AGE_SECONDS = 60.DEVELOPING_EVENT_VERIFICATION_RECHECK_MINUTES = 5.ACTIVE_EVENT_SCORE_RECALCULATION_MAXIMUM_DELAY_SECONDS = 60.NEW_EVENT_STATUS_WINDOW_MINUTES = 60.PRE_HEADLINE_REFERENCE_WINDOW_SECONDS = 60.PRICE_REACTION_HORIZONS_MINUTES = 15, 30, 60.PRICE_CONFIRMATION_MINIMUM_MOVE_PERCENT = 2.00%; PRICE_CONFIRMATION_MINIMUM_RVOL = 1.50.RUMOUR_PRICE_SHOCK_MINIMUM_MOVE_PERCENT = 3.00%; window = 30 min; min RVOL = 2.00;
min pause = 60 min.RVOL_COMPARISON_LOOKBACK_SESSIONS = 20; RVOL_MINIMUM_VALID_COMPARISON_SESSIONS = 12.COMPANY_REPLACEMENT_PERIOD_MONTHS = 12.DEFENCE_EMA_PERIOD_SESSIONS = 20; DEFENCE_RELATIVE_STRENGTH_LOOKBACK_SESSIONS = 10;
min outperformance = 2.00 percentage points.MANUAL_OVERRIDE_ALLOWED = FALSE.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.
SCHEDULED_ECONOMIC_EVENT → Module 2.TRUMP_SPECIFIC_HEADLINE → Module 4.GENERAL_TARIFF_POLICY, GENERAL_EXPORT_CONTROL_POLICY, GENERAL_TRADE_RESTRICTION,
ENTITY_LIST_POLICY, TECHNOLOGY_TRANSFER_POLICY, INVESTMENT_RESTRICTION_POLICY,
DELISTING_POLICY, PHARMACEUTICAL_POLICY, ANTITRUST_POLICY,
GOVERNMENT_CONTRACT_POLICY, GENERAL_REGULATORY_INVESTIGATION → Module 5.ROUTINE_OPEC_PRODUCTION_ANNOUNCEMENT, ROUTINE_SPR_ANNOUNCEMENT → Module 25.FREIGHT_RATE_AND_SUPPLY_CHAIN_EFFECT → Module 8.FEDERAL_RESERVE_INTERPRETATION → Module 19.TREASURY_YIELD_DIRECTION → Modules 20/21. CURRENCY_DIRECTION → Module 24.OIL_DIRECTION → Module 25. GOLD_DIRECTION → Module 26. COPPER_DIRECTION → Module 27.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.
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.
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.
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.
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.
EXPECTED_DISRUPTION_DURATION_HOURS, EXPECTED_DISRUPTION_DURATION_TRADING_SESSIONS,
ACTUAL_DISRUPTION_START, ACTUAL_DISRUPTION_END, DURATION_SOURCE, DURATION_STATUS,
OPERATIONAL_DISRUPTION_CONTINUES.
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.
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.
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.
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.
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.
LEVEL_0_UNVERIFIED, LEVEL_1_CREDIBLE_REPORT, LEVEL_2_CONFIRMED_PROPOSAL,
LEVEL_3_CONFIRMED_ACTION.
NEW, DEVELOPING, CONFIRMED, REVERSED, CANCELLED, EXPIRED.
COMPANY_SPECIFIC, INDUSTRY_SPECIFIC, SECTOR_SPECIFIC, MARKET_WIDE.
REGIONAL, GLOBAL. Impact scope and geographic scope are stored separately.
VALID, DEGRADED, INVALID, NOT_APPLICABLE. Produce separate statuses for
MODULE_DATA_STATUS, EVENT_DATA_STATUS, COMPANY_EXPOSURE_DATA_STATUS,
PRICE_REACTION_DATA_STATUS.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
≥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.
GLOBAL when direct consequences affect ≥3 configured major economic regions; REGIONAL otherwise.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
Affected capacity <10% → 0; 10–19.99% → −1; ≥20% → −2. Airline fuel → Module 25; freight-rate → Module 8.
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.
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.
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.
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.
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.
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.
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.
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.
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.
≥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.
COMPANY_HEADLINE_RISK = EVENT_SEVERITY_SCORE × COMPANY_EXPOSURE_SCORE, range 0–15. Do
not calculate when exposure score is unavailable.
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.
8–15 → EXTREME; 5–7 → HIGH; 3–4 → MODERATE; 1–2 → LOW; 0 → NO_DIRECT_EXPOSURE; not calculable → INVALID.
COMPANY_IMPACT_POINT (−2…+2, directional) and COMPANY_HEADLINE_RISK (0–15,
trade/position risk) are separate. Do not add them; pass both.
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.
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.
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.
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.
PRICE_CHANGE_PERCENT = current_reaction_price / pre_headline_reference_price − 1 × 100,
computed separately at 15/30/60 min.
YES at the first valid horizon when all: assigned impact positive; move ≥+2.00%; price
above VWAP; EVENT_RVOL ≥1.50.
YES at the first valid horizon when all: assigned impact negative; move ≤−2.00%; price
below VWAP; EVENT_RVOL ≥1.50.
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.
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.
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.
Smoothing = 2/21; use completed regular-session adjusted daily closes; current EMA uses the latest completed daily close; intraday prices do not qualify.
STOCK_10_SESSION_RETURN_PERCENT = latest_close / close_10_sessions_earlier − 1 × 100;
SPY identically; RELATIVE_RETURN_VS_SPY = stock − SPY.
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.
Level 0 → UNUSABLE; Level 1 → LOW; Level 2 → MEDIUM; Level 3 → HIGH.
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.
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.
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.
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.
≥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.
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.
≥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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
SECTOR_MODULE_IMPACT_POINT;
equal-opposite → 0 and MIXED, retain records. 9.6/9.7: same for industries and
companies; company headline risk is not netted.GOLD_SAFE_HAVEN_CONFIRMATION/GLD/safe-haven; contribution 0.COPPER_GROWTH_CONFIRMATION/Silver-Gold Ratio; contribution 0.VOLATILITY_MODULE_RISK_REGIME/SEVERE_MARKET_INSTABILITY;
use only for Political Noise EXTREME and Headline Risk Adjustment −5; no separate directional
point.EVENT_ID; duplicate reports add no
points; price confirmation adds no directional point; Defence relative strength adds no Defence
point; oil/gold/yield/currency reactions are not added to the Headline Risk Adjustment;
volatility used only in accepted conditions; company impact and company headline risk not added;
multiple event impacts on one sector not summed.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.
MODULE_NUMBER=3, MODULE_NAME=GENERAL_HEADLINE_AND_GEOPOLITICAL_RISK,
OUTPUT_TYPE=OUTPUT_1, CALCULATION_VERSION, CALCULATION_TIMESTAMP_{UTC,NY},
MAIN_HEADLINE_PROVIDER_ID, MARKET_DATA_PROVIDER_ID.MODULE_DATA_STATUS, HEADLINE_FEED_STATUS,
SOURCE_IDENTIFICATION_STATUS, DUPLICATE_DETECTION_STATUS, EVENT_DATA_STATUS,
COMPANY_EXPOSURE_DATA_STATUS, PRICE_REACTION_DATA_STATUS, DATA_FAILURE_REASON_CODES,
PARTIAL_OUTPUT, LAST_PROVIDER_UPDATE_UTC.EVENT_ID, EVENT_VERSION, EVENT_CATEGORY,
EVENT_DESCRIPTION, EVENT_TIMESTAMP_{UTC,NY}, EVENT_EFFECTIVE_DATE, EVENT_EFFECTIVE_TIME,
EVENT_EXPIRY_TIME, EVENT_STATUS, EVENT_ACTIVE, PRIMARY_ACTORS, EVENT_COUNTRIES,
EVENT_LOCATIONS, EVENT_SOURCE, VERIFICATION_SOURCE_LIST, RELATED_EVENT_IDS,
DUPLICATE_SOURCE_IDS.HEADLINE_VERIFICATION_LEVEL, HEADLINE_VERIFICATION_OUTCOME,
VERIFICATION_REASON, DIRECTIONAL_SCORING_PERMISSION, HEADLINE_CONTRIBUTION_STATUS.EVENT_IMPACT_SCOPE, EVENT_GEOGRAPHIC_SCOPE,
DIRECTLY_AFFECTED_{SECTOR,INDUSTRY,REGION}_COUNT, DIRECT_AFFECTED_SHARE_PERCENT,
DIRECT_AFFECTED_SHARE_BASIS, EXPECTED_DISRUPTION_DURATION_SESSIONS, EVENT_SEVERITY_SCORE,
EVENT_SEVERITY_REASON.EVENT_DIRECTION_OUTCOME, POSITIVE_IMPACT_EXISTS,
NEGATIVE_IMPACT_EXISTS, EVENT_CONFIDENCE, EVENT_CONFIDENCE_REASON,
PRICE_REACTION_CONFIRMATION, DEFENCE_RELATIVE_STRENGTH_CONFIRMATION, DE_ESCALATION_STATUS.SECTOR_MODULE_IMPACT_POINT,
SECTOR_IMPACT_STATUS, ACTIVE_SECTOR_EVENT_COUNT, UNDERLYING_EVENT_IDS; required named
fields include GEOPOLITICAL_SECTOR_IMPACT_{DEFENCE,ENERGY,AIRLINES,TRAVEL,SEMICONDUCTORS,
CHINESE_ADRS,EUROPEAN_AUTOS,EUROPEAN_INDUSTRIALS,DOMESTIC_INDUSTRIALS}.INDUSTRY_IMPACT_LIST, INDUSTRY_MODULE_IMPACT_POINT,
INDUSTRY_IMPACT_STATUS.COMPANY_{CHINA,EUROPE,MIDDLE_EAST,RUSSIA,TAIWAN,
GOVERNMENT}_REVENUE_PERCENT, COMPANY_RELEVANT_REVENUE_PERCENT, COMPANY_CRITICAL_DEPENDENCY,
COMPANY_REPLACEMENT_AVAILABLE_WITHIN_12_MONTHS, COMPANY_EXPOSURE_SCORE, COMPANY_EXPOSURE_SOURCE,
COMPANY_EXPOSURE_SOURCE_DATE, COMPANY_EXPOSURE_DATA_STATUS.COMPANY_IMPACT_POINT, COMPANY_IMPACT_DIRECTION,
COMPANY_IMPACT_REASON, COMPANY_HEADLINE_RISK, COMPANY_HEADLINE_RISK_CLASSIFICATION,
CRITICAL_OVERRIDE_APPLIED, COMPANY_POSITION_SIZE_CAP_PERCENT,
EFFECTIVE_MODULE_3_COMPANY_SIZE_CAP_PERCENT, MOMENTUM_ENTRY_PERMISSION, BREAKOUT_PERMISSION,
RETEST_PERMISSION, OVERNIGHT_PERMISSION, MAXIMUM_HOLDING_PERIOD_SESSIONS,
COMPANY_NEW_ENTRY_STATUS, COMPANY_IMPACT_LIST, COMPANY_HEADLINE_RISK_LIST.RUMOUR_PRICE_SHOCK, RUMOUR_HEADLINE_TIMESTAMP,
PRE_RUMOUR_REFERENCE_PRICE, MAXIMUM_30_MINUTE_PRICE_MOVE_PERCENT, RUMOUR_EVENT_RVOL,
RUMOUR_SHOCK_PAUSE_START, RUMOUR_SHOCK_MINIMUM_PAUSE_END, THREE_CANDLE_STABILISATION_STATUS,
RUMOUR_SHOCK_RESUMPTION_STATUS.REACTION_INSTRUMENT_ID,
PRE_HEADLINE_REFERENCE_PRICE, PRE_HEADLINE_REFERENCE_TIMESTAMP, REACTION_HORIZON_MINUTES,
REACTION_PRICE, PRICE_CHANGE_PERCENT, VWAP, PRICE_VS_VWAP, EVENT_WINDOW_VOLUME,
COMPARABLE_MEDIAN_VOLUME, EVENT_RVOL, POSITIVE_PRICE_CONFIRMATION, NEGATIVE_PRICE_CONFIRMATION,
CONTRADICTORY_PRICE_REACTION, PRICE_REACTION_DATA_STATUS.DEFENCE_STOCKS_ABOVE_20_EMA_COUNT,
DEFENCE_STOCKS_OUTPERFORMING_SPY_COUNT, ITA_ABOVE_20_EMA, XAR_ABOVE_20_EMA,
DEFENCE_RELATIVE_STRENGTH_CONFIRMATION, DEFENCE_CONFIRMATION_CALCULATION_DATE.ACTIVE_EVENT_COUNT, ACTIVE_LEVEL_2_OR_LEVEL_3_EVENT_COUNT,
ACTIVE_LEVEL_3_EVENT_COUNT, ACTIVE_MARKET_WIDE_SEVERITY_{3,4,5}_COUNT,
UNRELATED_ACTIVE_EVENT_COUNT, HEADLINE_RISK_ADJUSTMENT, HEADLINE_RISK_ADJUSTMENT_REASON,
POLITICAL_NOISE_LEVEL, HEADLINE_POSITION_SIZE_CAP_PERCENT, MAXIMUM_POSITION_COUNT_ADJUSTMENT,
MAXIMUM_POSITION_COUNT_CAP, HEADLINE_HARD_WARNING, HARD_WARNING_SCOPE.NEW_ENTRY_STATUS, RESTRICTION_SCOPE_LIST, INHERITED_PAUSE_STATUS,
REQUEST_OUTPUT_2_MARKET_WIDE_REVIEW, EXISTING_POSITION_ACTION = NO_AUTOMATIC_CHANGE,
TRADE_APPROVED = FALSE, ORDER_GENERATED = FALSE.OIL_HANDOFF_STATUS, CURRENCY_HANDOFF_STATUS,
CENTRAL_BANK_HANDOFF_STATUS, YIELD_HANDOFF_STATUS, SHIPPING_HANDOFF_STATUS,
COMMODITY_HANDOFF_STATUS, GOLD_SAFE_HAVEN_CONFIRMATION_RECEIVED, SILVER_GOLD_RATIO_STATUS_RECEIVED,
COPPER_GROWTH_CONFIRMATION_RECEIVED, VOLATILITY_MODULE_RISK_REGIME_RECEIVED,
EXTERNAL_CONFIRMATION_MODULE_3_POINT_CONTRIBUTION = 0.OUTPUT_2_HANDOFF_STATUS, HEADLINE_RISK_ADJUSTMENT,
POLITICAL_NOISE_LEVEL, HEADLINE_POSITION_SIZE_CAP_PERCENT, MAXIMUM_POSITION_COUNT_ADJUSTMENT,
MAXIMUM_POSITION_COUNT_CAP, HEADLINE_HARD_WARNING, ACTIVE_RESTRICTIONS,
AGGREGATED_SECTOR_IMPACT_LIST, AGGREGATED_INDUSTRY_IMPACT_LIST, COMPANY_RISK_RESTRICTIONS,
NEXT_RECALCULATION_TIME.{EVENT_CLASSIFICATION,VERIFICATION,SEVERITY,IMPACT,COMPANY_EXPOSURE,COMPANY_RISK,
PRICE_CONFIRMATION,HEADLINE_RISK_ADJUSTMENT,POLITICAL_NOISE}_RULE_USED, SOURCE_IDS_USED,
DUPLICATE_RECORDS_MERGED, EVENT_VERSION_HISTORY, DE_ESCALATION_HISTORY, EXPIRY_HISTORY,
COMPANY_FILING_SOURCES_USED, CALCULATION_VERSION.REQUEST_OUTPUT_2_MARKET_WIDE_REVIEW = TRUE; Output 2 / Emergency Risk decides. Controlled by
Output 2 / Emergency Risk.MAXIMUM_POSITION_COUNT_ADJUSTMENT = −1; Output 2 applies it.
Controlled by Output 2.TRADE_APPROVED = FALSE, ORDER_GENERATED = FALSE. Controlled by the
trading bot.