FXMacroData now includes a precomputed monetary stance factor endpoint for major currencies. The endpoint turns stored policy rate, risk-free rate, 2-year yield, inflation, and unemployment observations into a model-ready score.
The endpoint is designed for the exact problem that comes up when traders try to score rates in isolation. A high real rate can be currency-supportive, while falling inflation can be a dovish impulse at the same time. Those are not contradictions. They are different parts of the same macro story, and the new factor separates them cleanly.
You can now request
https://api.fxmacrodata.com/v1/factors/{currency}/monetary_stance to retrieve a stored currency-level factor score, with optional component values and source observations when you need to explain or audit the score.
What Is a Monetary Stance Factor?
A monetary stance factor is a normalized macro feature for one currency. Positive scores mean the latest stored data is tighter or more rate-supportive. Negative scores mean the stance is easier or less rate-supportive. The score is not a standalone FX buy/sell signal, and it is not an inverted real-rate z-score. It is a structured input for a broader model.
Why It Matters for Traders
Real-rate analysis is useful, but it is easy to overfit one dimension of the rates story. If US inflation falls while the real policy-rate spread becomes positive, a simple inverted real-rate z-score can fight itself: lower inflation points toward less pressure for further Federal Reserve tightening, but the current real-rate level may still be restrictive.
The monetary stance factor treats those as separate model features. The level_score captures how restrictive the current real-rate backdrop is. The impulse_score captures whether the latest observed changes in rates, yields, inflation, and unemployment are becoming more hawkish or more dovish. That lets a model say "restrictive level, dovish impulse" instead of forcing one number to explain both.
| Field | What it measures | How traders can use it |
|---|---|---|
score |
Combined monetary stance factor for the currency. | Use as a normalized macro input in ranking, filtering, and model-building workflows. |
level_score |
Current real-rate tightness across policy rate, risk-free rate, and 2-year yield measures. | Identify whether the current rates backdrop is restrictive or accommodative. |
impulse_score |
Recent direction of rates, yields, inflation, and unemployment. | Separate current tightness from the latest hawkish or dovish data impulse. |
rate_repricing_score |
Recent changes in nominal rate and 2-year-yield observations. | Check whether front-end rates are moving in the same direction as the broader factor. |
macro_pressure_score |
Inflation and labour-market pressure. | Distinguish inflation relief and labour-market slack from nominal rate repricing. |
Practical Example: USD Monetary Stance
The USD factor is public for lightweight testing, and the same endpoint also accepts the standard X-API-Key header used across FXMacroData examples.
curl -H "X-API-Key: YOUR_API_KEY" "https://api.fxmacrodata.com/v1/factors/usd/monetary_stance?include_components=true&include_sources=true"
A trimmed live response on July 22, 2026 looked like this:
{
"currency": "USD",
"factor": "monetary_stance",
"as_of": "2026-07-17",
"score": 0.053,
"level_score": 0.1506,
"impulse_score": -0.1281,
"rate_repricing_score": -0.002,
"macro_pressure_score": -0.4223,
"label": "neutral",
"data": [
{
"date": "2026-07-17",
"score": 0.053,
"coverage_ratio": 1.0,
"component_count": 8,
"components": {
"real_policy_rate": {
"value": 0.25,
"score": 0.1244
},
"inflation_impulse": {
"value": -0.7,
"score": -0.7321
},
"real_2y_yield": {
"value": 0.68,
"score": 0.2655
}
},
"source_observations": {
"policy_rate": {
"date": "2026-06-17",
"val": 3.75
},
"inflation": {
"date": "2026-06-30",
"val": 3.5,
"change": -0.7
},
"gov_bond_2y": {
"date": "2026-07-17",
"val": 4.18,
"change": 0.02
}
}
}
]
}
The simple real-policy-rate spread in that response is 3.75 - 3.50 = +0.25 percentage points. That positive real-rate level is captured separately from the negative inflation impulse, where inflation fell by 0.7 percentage points. For a macro model, that distinction is the point: USD can still look restrictive in level terms while the newest inflation move is less hawkish.
Comparing EUR and USD
The endpoint is currency-level rather than pair-level. That keeps the API surface clean and avoids duplicating the same factor across every possible FX pair. To analyse EUR/USD, query EUR and USD separately, then compare the two currency scores inside your own model.
curl -H "X-API-Key: YOUR_API_KEY" "https://api.fxmacrodata.com/v1/factors/eur/monetary_stance?include_components=true"
curl -H "X-API-Key: YOUR_API_KEY" "https://api.fxmacrodata.com/v1/factors/usd/monetary_stance?include_components=true"
A live EUR response on July 22, 2026 returned:
{
"currency": "EUR",
"factor": "monetary_stance",
"as_of": "2026-07-16",
"score": -0.2145,
"level_score": -0.3645,
"impulse_score": 0.0642,
"rate_repricing_score": 0.0172,
"macro_pressure_score": 0.1737,
"label": "moderately_accommodative"
}
Using the two live snapshots above, a simple EUR/USD relative monetary stance feature would be:
EUR/USD monetary stance spread = EUR score - USD score
EUR/USD monetary stance spread = -0.2145 - 0.0530 = -0.2675
That does not mean EUR/USD must fall. It means the monetary-stance factor alone was less supportive for EUR than USD in that snapshot. A production trading model should still combine the factor with price behaviour, risk sentiment, event risk, positioning, execution costs, and its own validation rules.
When to Request Components
Most automated systems should use the top-level fields first: score, level_score, impulse_score, rate_repricing_score, macro_pressure_score, and label. Add include_components=true when you need the stored building blocks behind the score. Add include_sources=true when you want source endpoint URLs for traceability.
This is useful for research notebooks, model explainability, and customer-facing dashboards. It also keeps live requests efficient because the endpoint reads stored factor snapshots rather than recalculating multiple macro collections every time someone queries it.
Get Started
Start with the public USD factor route at https://api.fxmacrodata.com/v1/factors/usd/monetary_stance. Subscriber access for AUD, CAD, CHF, EUR, GBP, JPY, and NZD uses the same path shape with the relevant currency code and a paid API key.
For discovery, use the data catalogue or the API reference. The current OpenAPI schema advertises /v1/factors/{currency}/{factor} for AUD, CAD, CHF, EUR, GBP, JPY, NZD, and USD, with monetary_stance as the first supported factor slug.