Skill: Economic Calendar | Domain: trading | Category: data | Level: beginner
Tags: trading, data, calendar, news, high-impact, avoidance
Economic Calendar
High-Impact Events by Currency
| Event |
Currency |
Frequency |
Typical Impact |
| NFP (Non-Farm Payrolls) |
USD |
Monthly (1st Fri) |
50–150 pips |
| FOMC Rate Decision |
USD |
8x/year |
50–200 pips |
| CPI (Inflation) |
USD/EUR/GBP |
Monthly |
30–100 pips |
| GDP |
USD/EUR/GBP |
Quarterly |
20–80 pips |
| PMI (Mfg/Services) |
Multi |
Monthly |
20–60 pips |
| BoE/ECB/BoJ Decision |
GBP/EUR/JPY |
8x/year |
50–150 pips |
| EIA Oil Inventory |
OIL |
Weekly (Wed 14:30 UTC) |
$0.50–2.00 |
News Avoidance Windows
from datetime import datetime, timedelta
def is_news_blackout(event_time: datetime, current_time: datetime,
impact: str = "HIGH") -> bool:
"""Should we avoid trading near this news event?"""
windows = {"HIGH": (30, 15), "MEDIUM": (15, 5), "LOW": (5, 0)} # (before_min, after_min)
before, after = windows.get(impact, (30, 15))
start = event_time - timedelta(minutes=before)
end = event_time + timedelta(minutes=after)
return start <= current_time <= end
def news_risk_level(minutes_to_event: float) -> str:
if minutes_to_event < 5: return "EXTREME — do not trade"
if minutes_to_event < 15: return "HIGH — reduce size 50%"
if minutes_to_event < 30: return "ELEVATED — tight stops"
return "NORMAL"
Fetch Calendar (Investing.com scrape)
import requests
from bs4 import BeautifulSoup
def get_todays_events(min_impact: str = "high") -> list:
"""Scrape Investing.com economic calendar for today's events."""
# Note: Use WebSearch tool to get current day's events
# WebSearch query: f"site:investing.com economic calendar today {min_impact} impact"
pass
# Alternative: use Brave Search via WebSearch tool
CALENDAR_QUERY = "economic calendar high impact events today forex"
Pre-Event Volatility Strategy
- 30 min before high-impact: Spreads widen, stops get hunted — close scalps
- Straddle setup: Place buy stop + sell stop at current price ±(avg_range/3) before NFP
- Post-event fade: If spike > 2× ATR, fade back within 5–15 min (70% fill rate)
Key UTC Times (Daily Schedule)
DAILY_EVENTS = {
"00:30": "AUD data (RBA related)",
"07:00": "EUR data + London open",
"09:30": "GBP data",
"12:30": "USD major data (CPI, NFP, retail)",
"13:30": "NYSE open — US equity data",
"14:30": "EIA oil inventory (Wednesday only)",
"18:00": "FOMC (when scheduled)",
"22:00": "NZD/AUD data + NY close",
}
Related Skills
1---2name: economic-calendar3description: Economic calendar data: high-impact event detection, news avoidance windows, pre-event volatility expansion, post-event fade, event-driven trade setup. USE FOR: economic calendar, economic events, news events, NFP, CPI, FOMC, GDP, PMI, retail sales, high impact news, news avoidance, pre-news, post-news, event risk, news trading, data release, central bank, interest rate decision.4---5> **Skill:** Economic Calendar | **Domain:** trading | **Category:** data | **Level:** beginner6> **Tags:** `trading`, `data`, `calendar`, `news`, `high-impact`, `avoidance`789# Economic Calendar1011## High-Impact Events by Currency12| Event | Currency | Frequency | Typical Impact |13|-------|----------|-----------|----------------|14| NFP (Non-Farm Payrolls) | USD | Monthly (1st Fri) | 50–150 pips |15| FOMC Rate Decision | USD | 8x/year | 50–200 pips |16| CPI (Inflation) | USD/EUR/GBP | Monthly | 30–100 pips |17| GDP | USD/EUR/GBP | Quarterly | 20–80 pips |18| PMI (Mfg/Services) | Multi | Monthly | 20–60 pips |19| BoE/ECB/BoJ Decision | GBP/EUR/JPY | 8x/year | 50–150 pips |20| EIA Oil Inventory | OIL | Weekly (Wed 14:30 UTC) | $0.50–2.00 |2122## News Avoidance Windows23```python24from datetime import datetime, timedelta2526def is_news_blackout(event_time: datetime, current_time: datetime,27 impact: str = "HIGH") -> bool:28 """Should we avoid trading near this news event?"""29 windows = {"HIGH": (30, 15), "MEDIUM": (15, 5), "LOW": (5, 0)} # (before_min, after_min)30 before, after = windows.get(impact, (30, 15))31 start = event_time - timedelta(minutes=before)32 end = event_time + timedelta(minutes=after)33 return start <= current_time <= end3435def news_risk_level(minutes_to_event: float) -> str:36 if minutes_to_event < 5: return "EXTREME — do not trade"37 if minutes_to_event < 15: return "HIGH — reduce size 50%"38 if minutes_to_event < 30: return "ELEVATED — tight stops"39 return "NORMAL"40```4142## Fetch Calendar (Investing.com scrape)43```python44import requests45from bs4 import BeautifulSoup4647def get_todays_events(min_impact: str = "high") -> list:48 """Scrape Investing.com economic calendar for today's events."""49 # Note: Use WebSearch tool to get current day's events50 # WebSearch query: f"site:investing.com economic calendar today {min_impact} impact"51 pass5253# Alternative: use Brave Search via WebSearch tool54CALENDAR_QUERY = "economic calendar high impact events today forex"55```5657## Pre-Event Volatility Strategy58- **30 min before high-impact**: Spreads widen, stops get hunted — close scalps59- **Straddle setup**: Place buy stop + sell stop at current price ±(avg_range/3) before NFP60- **Post-event fade**: If spike > 2× ATR, fade back within 5–15 min (70% fill rate)6162## Key UTC Times (Daily Schedule)63```python64DAILY_EVENTS = {65 "00:30": "AUD data (RBA related)",66 "07:00": "EUR data + London open",67 "09:30": "GBP data",68 "12:30": "USD major data (CPI, NFP, retail)",69 "13:30": "NYSE open — US equity data",70 "14:30": "EIA oil inventory (Wednesday only)",71 "18:00": "FOMC (when scheduled)",72 "22:00": "NZD/AUD data + NY close",73}74```7576---7778## Related Skills7980- [Market Intelligence](../market-intelligence.md)81- [News Data Stream](../news-intelligence.md)82- [Strategy Selection](../strategy-selection.md)