Macro Risk
6 tools in this category.
Overview
Macro Risk includes 6 tools for this workflow area.
Available tools: get_economic_surprise, get_event_risk, get_event_sensitivity, get_holding_risk, get_risk_regime, manage_news_guard.
Use the parameter tables and examples below as the canonical request contract.
get_economic_surprise
Returns a rolling actual-vs-forecast surprise index for a currency's economic events, weighted by impact tier (high=3×, medium=1×, low ignored). Reports insufficient_history when fewer than 30 days of data exist. Uses the server-side calendar. Requires the analytics capability (Team+ tier).
Parameters
| Name | Type | Required | Default | Description |
|---|---|---|---|---|
currency | string | Yes | — | — |
days | integer | No | 90 | — |
Example Request
{
"tool": "get_economic_surprise",
"arguments": {
"currency": "currency_value"
}
}get_event_risk
Preflight check: returns a graded verdict (proceed/caution/block) for trading a symbol based on upcoming high-impact economic events within the horizon. Uses the server-side calendar — works with no terminal connected. Includes blackout windows, resume_after time, and per-event details. Unknown symbols default to caution (fail-safe). Requires the analytics capability (Team+ tier).
Parameters
| Name | Type | Required | Default | Description |
|---|---|---|---|---|
symbol | string | Yes | — | — |
horizon_hours | number | No | 4 | — |
high_before_min | integer | No | — | — |
high_after_min | integer | No | — | — |
medium_before_min | integer | No | — | — |
medium_after_min | integer | No | — | — |
Example Request
{
"tool": "get_event_risk",
"arguments": {
"symbol": "EURUSD"
}
}get_event_sensitivity
Reports, per calendar event type, how far a symbol has historically moved when that event landed — joining the persisted calendar against the symbol's own H1 price history. Move = high-to-low range spanning the event's bar and the following bar, in points and normalised by ATR at that time. H1 resolution overstates a short spike's duration; event types with fewer than 3 occurrences report insufficient_history and omit averages. Results are cached for at least one hour. Requires the analytics capability (Team+ tier).
Parameters
| Name | Type | Required | Default | Description |
|---|---|---|---|---|
symbol | string | Yes | — | — |
event_type | string | No | — | — |
lookback_days | integer | No | 90 | — |
Example Request
{
"tool": "get_event_sensitivity",
"arguments": {
"symbol": "EURUSD"
}
}get_holding_risk
Assesses risk for holding (or planning to hold) a position in a symbol for a specified duration. Reports events landing inside the hold window, weekend/market-closure gap exposure, and triple-swap day flags. Uses the server-side calendar — works with no terminal. Requires the analytics capability (Team+ tier).
Parameters
| Name | Type | Required | Default | Description |
|---|---|---|---|---|
symbol | string | Yes | — | — |
expected_hold_hours | number | No | 24 | — |
Example Request
{
"tool": "get_holding_risk",
"arguments": {
"symbol": "EURUSD"
}
}get_risk_regime
Returns a composite risk-on/risk-off score in [−1, 1] from z-scored market inputs (VIX, DXY, gold, 2s10s spread, equities). Pure scoring function with transparent per-input drivers, confidence, missing_inputs, and sizing_advice. Requires at least 3 available inputs or returns REGIME_UNAVAILABLE. Requires the analytics capability (Team+ tier).
Parameters
No parameters.
Example Request
{
"tool": "get_risk_regime",
"arguments": {}
}manage_news_guard
Manages a persistent server-side news monitor, dispatched by action. Requires the analytics capability. Notify-only: the guard never closes positions or blocks trades. action=set: configures the guard. When enabled, it polls news at the specified interval, classifies articles by severity and affected currencies, and triggers alerts (via manage_alerts action=poll) when articles meet the threshold. One guard per license — calling again replaces the config. Requires currencies. action=status: returns the current configuration, enabled state, last poll time, classifier mode (llm/heuristic), and count of alerts raised in the last 24h. Returns { status: 'none' } if no guard is configured. action=remove: removes the news guard for this license. The guard stops polling immediately. Returns { removed: true } on success.
Parameters
| Name | Type | Required | Default | Description |
|---|---|---|---|---|
action | string | Yes | — | (one of: set, status, remove) |
currencies | array | No | — | Required for action=set. |
keywords | array | No | [] | — |
min_severity | string | No | "high" | (one of: low, medium, high, critical) |
poll_interval_seconds | integer | No | 300 | — |
Example Request
{
"tool": "manage_news_guard",
"arguments": {
"action": "set"
}
}