Skip to main content

Python client for the FXMacroData API, providing forex macroeconomic data for traders, quants, and analysts.

Project description

FXMacroData Python SDK ๐Ÿ๐Ÿ“Š

PyPI Version Python Versions License Build

The FXMacroData Python SDK provides a simple and efficient interface for fetching macroeconomic indicators, forex prices, release calendars, COT positioning, and commodity prices from FXMacroData.

It includes both synchronous and asynchronous clients and supports free USD macro endpoints.


๐ŸŒŸ Features

  • Fetch:
    • Macroeconomic indicators โ€” policy rates, inflation, GDP, unemployment, bond yields, and 100+ more
    • FX spot rates with optional technical indicators (SMA, RSI, MACD, Bollinger Bands)
    • Release calendars โ€” upcoming economic data release dates
    • Data catalogue โ€” discover available indicators per currency
    • COT data โ€” CFTC Commitment of Traders positioning
    • Commodity prices โ€” gold, silver, platinum
  • Free access to USD macro data.
  • FX spot-rate history through get_fx_price.
  • API key required for protected datasets, including non-USD indicators, FX spot-rate history, COT, and commodities.
  • Full support for:
    • Synchronous client
    • Asynchronous client
  • Lightweight: depends only on requests and aiohttp.

๐Ÿ“ฆ Installation

Install from PyPI:

pip install fxmacrodata

Or install the latest version from GitHub:

pip install git+https://github.com/fxmacrodata/fxmacrodata.git

๐Ÿ”ง Usage

Synchronous

from fxmacrodata import Client

client = Client(api_key="YOUR_API_KEY")

# Fetch macroeconomic indicators
data = client.get_indicator(
    "aud", "policy_rate",
    start_date="2023-01-01",
    end_date="2023-11-01"
)
print(data)

# Forex price endpoint
fx = client.get_fx_price("usd", "gbp", start_date="2025-01-01")
print(fx)

# Forex with technical indicators
fx = client.get_fx_price("eur", "usd", indicators="sma_20,rsi_14,macd")
print(fx)

# Release calendar
calendar = client.get_calendar("usd")
print(calendar)

# Data catalogue โ€” discover available indicators
catalogue = client.get_data_catalogue("usd")
print(catalogue)

# COT positioning data
cot = client.get_cot("eur", start_date="2025-01-01")
print(cot)

# Commodity prices
gold = client.get_commodities("gold", start_date="2026-01-01")
print(gold)

Asynchronous

import asyncio
from fxmacrodata import AsyncClient

async def main():
    async with AsyncClient(api_key="YOUR_API_KEY") as client:
        # Fetch macroeconomic indicators
        data = await client.get_indicator("eur", "inflation")
        print(data)

        # Forex price endpoint
        fx = await client.get_fx_price("usd", "jpy")
        print(fx)

        # Release calendar
        calendar = await client.get_calendar("usd")
        print(calendar)

        # Data catalogue
        catalogue = await client.get_data_catalogue("usd")
        print(catalogue)

        # COT positioning
        cot = await client.get_cot("jpy")
        print(cot)

        # Commodity prices
        gold = await client.get_commodities("gold")
        print(gold)

asyncio.run(main())

OpenBB Integration

FXMacroData supports all practical OpenBB integration paths from this package:

  • OpenBB Python: installable provider/router extension for obb.fxmacrodata.*.
  • OpenBB REST API: /api/v1/fxmacrodata/* routes through openbb-api.
  • OpenBB Workspace, generated: widgets generated by openbb-api from inline metadata.
  • OpenBB Workspace, custom: standalone backend serving widgets.json, apps.json, and data endpoints.
  • OpenBB MCP: tools exposed through openbb-mcp.
  • OpenBB CLI: commands available after openbb-build.

OpenBB packages require Python 3.10+. Install the OpenBB Python extra:

pip install "fxmacrodata[openbb]"
openbb-build

Then use FXMacroData from the OpenBB Python interface:

from openbb import obb

obb.user.credentials.fxmacrodata_api_key = "YOUR_API_KEY"

catalogue = obb.fxmacrodata.data_catalogue(
    currency="USD",
    provider="fxmacrodata",
).to_df()

inflation = obb.fxmacrodata.macro_indicators(
    currency="USD",
    indicator="inflation",
    start_date="2020-01-01",
    provider="fxmacrodata",
).to_df()

eurusd = obb.fxmacrodata.fx_historical(
    base="EUR",
    quote="USD",
    start_date="2024-01-01",
    provider="fxmacrodata",
).to_df()

Run the OpenBB REST API and generated Workspace backend:

pip install "fxmacrodata[openbb-api]"
openbb-build
fxmacrodata-openbb-api --host 127.0.0.1 --port 6900

Workspace can be connected to http://127.0.0.1:6900. The generated /widgets.json uses FXMacroData's inline OpenBB widget metadata.

Run the OpenBB Workspace custom backend:

pip install "fxmacrodata[workspace]"
fxmacrodata-openbb-backend

Default backend URL:

http://127.0.0.1:7779

Workspace exposes /widgets.json, /apps.json, /catalogue, /release_calendar, /macro_indicator, /forex, /cot, and /commodity. Swagger/OpenAPI docs are disabled by default for this backend. For local debugging only, set FXMACRODATA_OPENBB_ENABLE_DOCS=1 before starting it.

Run OpenBB MCP:

pip install "fxmacrodata[mcp]"
openbb-build
fxmacrodata-openbb-mcp --default-categories fxmacrodata --host 127.0.0.1 --port 8001

Run OpenBB CLI:

pip install "fxmacrodata[openbb-cli]"
openbb-build
openbb

See docs/openbb-integration.md for the full integration matrix and the separate upstream OpenBB repository contribution path.


๐Ÿ“˜ API Overview

get_indicator(currency, indicator, start_date=None, end_date=None)

Fetches macroeconomic indicator time series data.

  • currency: "usd", "aud", "eur", "gbp", "cad", "nok", "nzd", "jpy", "brl", "cny", "dkk", "pln", "sek", "sgd", etc.
  • indicator: "policy_rate", "inflation", "gdp", "unemployment", "trade_balance", "current_account_balance", "gov_bond_10y", etc.
  • API key required for non-USD.

get_fx_price(base, quote, start_date=None, end_date=None, indicators=None)

Fetches daily FX spot rates between two currencies.

  • indicators: Optional comma-separated technical indicators โ€” "sma_20", "sma_50", "sma_200", "rsi_14", "macd", "ema_12", "ema_26", "bollinger_bands", or "all".
  • API key required.

get_calendar(currency, indicator=None)

Fetches upcoming economic data release dates for a currency.

  • indicator: Optional filter to a specific indicator slug.
  • Returns announcement_datetime (Unix timestamp) and release (indicator slug).

get_data_catalogue(currency, include_capabilities=False, include_coverage=False, indicator=None)

Discovers available macroeconomic indicators for a given currency.

  • Returns a dict keyed by indicator slug with name, unit, frequency, and has_official_forecast.
  • API key required for non-USD.

get_cot(currency, start_date=None, end_date=None)

Fetches CFTC Commitment of Traders (COT) positioning data.

  • Supported currencies: AUD, CAD, CHF, EUR, GBP, JPY, NZD, USD.
  • API key required for non-USD.

get_commodities(indicator, start_date=None, end_date=None)

Fetches commodity price time series.

  • indicator: "gold", "silver", or "platinum".
  • API key required.

๐Ÿ’น Supported Currencies & Indicators

18 currencies supported: USD, EUR, GBP, JPY, AUD, CAD, CHF, NZD, HKD, SGD, NOK, PLN, SEK, DKK, BRL, CNY, KRW, MXN.

The table below shows a sample of indicator coverage across four major currencies. Use get_data_catalogue() to discover the full list for any currency.

Category Metric USD EUR AUD GBP
Economy GDP Growth โœ“ โœ“ โœ“ โœ“
Inflation Rate โœ“ โœ“ โœ“ โœ“
Trade Balance โœ“ โœ“ โœ“ โœ“
Current Account Balance โœ“ โœ“ โœ“ โœ“
Retail Sales โœ“ โœ“ โœ“ โœ“
Industrial Production โœ“ โ€” โ€” โ€”
Labor Market Unemployment Rate โœ“ โœ“ โœ“ โœ“
Employment Level โœ“ โœ“ โœ“ โœ“
Full-Time Employment โœ“ โœ“ โœ“ โ€”
Part-Time Employment โœ“ โœ“ โœ“ โœ“
Participation Rate โœ“ โœ“ โœ“ โœ“
Non-Farm Payrolls โœ“ โ€” โ€” โ€”
Monetary Policy Policy Rate โœ“ โœ“ โœ“ โœ“
Risk-Free Rate โœ“ โœ“ โœ“ โœ“
Central Bank Assets โœ“ โ€” โœ“ โ€”
Government Bond Yields 2-Year Govt Bond โœ“ โœ“ โœ“ โœ“
5-Year Govt Bond โœ“ โœ“ โœ“ โœ“
10-Year Govt Bond โœ“ โœ“ โœ“ โœ“
Inflation-Linked Bond โœ“ โœ“ โœ“ โœ“

๐Ÿ“„ License

MIT License ยฉ FXMacroData


๐ŸŒ Links

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

fxmacrodata-1.2.0.tar.gz (27.8 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

fxmacrodata-1.2.0-py3-none-any.whl (28.8 kB view details)

Uploaded Python 3

File details

Details for the file fxmacrodata-1.2.0.tar.gz.

File metadata

  • Download URL: fxmacrodata-1.2.0.tar.gz
  • Upload date:
  • Size: 27.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.11.15

File hashes

Hashes for fxmacrodata-1.2.0.tar.gz
Algorithm Hash digest
SHA256 29240775dc1687186636460dfe48846696899bcf59935f81d4a404392a75d539
MD5 372bb9f50d5dcc5ee9d432a9ca571e83
BLAKE2b-256 48c5758b115a7de4b0d16b83ace9bd02eadcbf107a00279baa91098133cbea1d

See more details on using hashes here.

File details

Details for the file fxmacrodata-1.2.0-py3-none-any.whl.

File metadata

  • Download URL: fxmacrodata-1.2.0-py3-none-any.whl
  • Upload date:
  • Size: 28.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.11.15

File hashes

Hashes for fxmacrodata-1.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 bceb7193e22f76fdac4b20d57028dfdac99d56260d472515ca4da4f4529ba7ab
MD5 a73df727abd1a05b0d0215fc4f9fba8e
BLAKE2b-256 dd062377c9d9e10c0a41018bab991416f3389464f544f4601678831043f643f2

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page