fx_volatility
Get realized FX volatility for a currency pair, and size the FX risk on an exposure held to a future date.
Computes 30-day and 90-day annualized volatility from historical ECB reference rates (standard deviation of daily log returns, annualized by sqrt(252)). Returns a qualitative bucket: LOW (<5%), MEDIUM (5-15%), HIGH (15-25%), VERY_HIGH (>25%), PEGGED (currency peg — near-zero volatility, e.g., USD/AED, USD/HKD).
Also returns practical daily/weekly movement estimates and a settlement_risk_note explaining what the volatility means over a typical T+2 settlement period — use these to advise users on FX risk for their specific payment.
PASS horizon_days WHENEVER THE USER'S EXPOSURE RUNS PAST SETTLEMENT.
It returns a horizon block: the volatility scaled to that horizon as an
actual rate band at 1 and 2 sigma, which end of the band hurts a payer
versus a receiver, and what the band does and does not tell them about
hedging. Use it for questions shaped like:
"should I hedge / lock in / take a forward for ?"
"how far could move by ?"
"what rate should I budget for next year?"
"I have invoices in through 2027 — what is my risk?"
any exposure not settling within a few days. Count the calendar days from today to the date the exposure ends and pass that. Rough is fine — the band moves with the square root of time, so a month either way barely changes it.
Read sample_depth before quoting any figure: this is REALISED volatility
from a short history, not implied volatility, and the sample may be shorter
than the horizon asked about (horizon.beyond_sample). Say so.
IMPORTANT — the band is the range of FUTURE SPOT. It is not a rate anyone
can transact at, and the width of the band is NOT the cost of a hedge. A
forward is priced off the interest-rate differential between the two
currencies, which we do not hold and must not guess or recall from memory.
Relay horizon.hedge_cost_note rather than inventing forward points, a
carry figure, or a "typical" hedging cost. Never state a forward rate.
Args: base: Base currency (ISO 4217, e.g., "EUR") target: Target currency (ISO 4217, e.g., "TRY") horizon_days: Optional. Calendar days from today to the end of the exposure (1-1825). Omit for spot/settlement risk only.
Examples: fx_volatility("EUR", "USD") fx_volatility("USD", "TRY") fx_volatility("GBP", "JPY", 506) # exposure running to end-2027 fx_volatility("EUR", "PLN", 90) # invoice settling in a quarter
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| base | Yes | ||
| target | Yes | ||
| horizon_days | No |
Output Schema
| Name | Required | Description | Default |
|---|---|---|---|
No arguments | |||