Currency Volatility API
The Currency Volatility API measures how much a currency pair's exchange rate fluctuates over time. It provides realized (historical) volatility, EWMA (RiskMetrics, λ=0.94) and GARCH(1,1) volatility forecasts, volatility cones, and percentile/HV-rank context.
Volatility is computed from daily closing rates using the industry-standard method: the sample standard deviation of daily logarithmic returns, annualized by the square root of 252 trading days.
From 8,006 users
Applications using this API
API Status
API Response Times
Average | P50 | P75 | P90 | P95 |
|---|---|---|---|---|
| 322ms | 343ms | 391ms | 598ms | 1180ms |
Similar APIs
Didn't find what you were looking for? Suggest an improvement
/v1/currencyvolatility GETPremium Only
https://api.api-ninjas.com/v1/currencyvolatility
Returns the latest realized (or EWMA) volatility for a currency pair over a lookback window, together with a volatility cone across standard window lengths and HV rank / percentile context.
Parameters
pairrequiredCurrency pair to query, in the form
currency1_currency2(e.g.EUR_USD).windowoptionalLookback window for the headline realized volatility, in trading days. Defaults to
30. Must be between 2 and 1000.methodoptionalVolatility method:
close_to_close(default) orewma.day_countoptionalAnnualization factor:
252trading days (default) or365calendar days.annualizedoptionalWhether to treat the annualized figure as the headline value. Defaults to
true.
Headers
X-Api-KeyrequiredAPI Key associated with your account.
Response
A JSON object with the following fields or an error if the request is unsuccessful.
pairThe queried currency pair.
as_of_dateDate of the most recent return used (YYYY-MM-DD).
annualized_volatilityAnnualized volatility as a decimal (e.g.
0.0785= 7.85%).annualized_volatility_pctgives the same value as a percentage.daily_volatilityDaily volatility as a decimal.
daily_volatility_pctgives the percentage form.n_observationsNumber of returns used for the headline figure.
outliers_filteredNumber of extreme returns (over 30%) excluded as data artifacts or regime breaks.
percentile_contextObject with the HV rank and percentile of the current volatility within its trailing one-year distribution (
current_percentile,hv_rank,min,median,max,lookback_years).coneVolatility cone: an array with one entry per window length (10, 21, 63, 126, 252 trading days), each giving the historical
min,p25,median,p75,maxof rolling realized volatility plus thecurrentreading and itscurrent_percentile.method,window_days,day_count,annualizedEcho of the request configuration.
Sample Request Live Demo!
Try our APIs in the API playground
Sign up for a free API key to get started — no credit card required.
https://api.api-ninjas.com/v1/currencyvolatility?pair=EUR_USD&window=30Headers
X-Api-KeyLog in or sign up to get your API KeySample Response
Code Examples
1
2
curl -X GET "https://api.api-ninjas.com/v1/currencyvolatility?pair=EUR_USD&window=30" \
-H "X-Api-Key: YOUR_API_KEY"/v1/currencyvolatilityhistorical GETPremium Only
https://api.api-ninjas.com/v1/currencyvolatilityhistorical
Returns a daily time series of trailing rolling volatility for a currency pair over a date range, with each point tagged by its percentile rank, plus a volatility cone snapshot as of the end date.
Parameters
pairrequiredCurrency pair to query, in the form
currency1_currency2(e.g.EUR_USD).windowoptionalRolling window for volatility, in trading days. Defaults to
30.methodoptionalVolatility method:
close_to_close(default) orewma.daysoptionalLength of the trailing date range in calendar days, ending today. Defaults to
90. Maximum 1825. Mutually exclusive withstart_date/end_date.start_date,end_dateoptionalExplicit date range in
YYYY-MM-DDform. Provide both together instead ofdays. The range cannot exceed 1825 days.day_count,annualizedoptionalAnnualization factor (
252default or365) and headline-value toggle, as in the/v1/currencyvolatilityendpoint.
Headers
X-Api-KeyrequiredAPI Key associated with your account.
Response
A JSON object with the following fields or an error if the request is unsuccessful.
seriesArray of daily points, each with a
date,annualized_volatility,daily_volatility, andpercentile(rank of that day's volatility within its trailing one-year distribution).coneVolatility cone as of the end date — same structure as in the
/v1/currencyvolatilityendpoint.n_points,outliers_filteredNumber of series points returned and the count of extreme returns excluded.
pair,method,window_days,day_count,annualized,start_date,end_dateEcho of the request configuration and resolved date range.
Sample Request Live Demo!
Try our APIs in the API playground
Sign up for a free API key to get started — no credit card required.
https://api.api-ninjas.com/v1/currencyvolatilityhistorical?pair=EUR_USD&window=30&days=90Headers
X-Api-KeyLog in or sign up to get your API KeySample Response
Code Examples
1
2
curl -X GET "https://api.api-ninjas.com/v1/currencyvolatilityhistorical?pair=EUR_USD&window=30&days=90" \
-H "X-Api-Key: YOUR_API_KEY"/v1/currencyvolatilityforecast GETPremium Only
https://api.api-ninjas.com/v1/currencyvolatilityforecast
Returns forward-looking volatility estimates for a currency pair using EWMA (RiskMetrics) or GARCH(1,1). GARCH adds mean reversion toward a long-run volatility level; if the GARCH fit does not converge the response falls back to EWMA. These are model-based estimates, not predictions.
Parameters
pairrequiredCurrency pair to query, in the form
currency1_currency2(e.g.GBP_JPY).methodoptionalForecast method:
garch_11(default) orewma.lambdaoptionalEWMA decay factor, used only when
method=ewma. Defaults to0.94(RiskMetrics). Must be between 0.80 and 0.99.horizonoptionalComma-separated list of forecast horizons in trading days (e.g.
1,5,21,63). Defaults to1,5,21,63.day_countoptionalAnnualization factor:
252trading days (default) or365calendar days.
Headers
X-Api-KeyrequiredAPI Key associated with your account.
Response
A JSON object with the following fields or an error if the request is unsuccessful.
current_conditional_vol_annualizedThe model's current one-step-ahead annualized volatility.
forecastArray of forecasts, each with a
horizon_days,vol_annualized, andvol_daily.parametersFitted model parameters. For
garch_11:omega,alpha,beta,persistence,long_run_var,long_run_vol_annualized, andfitted_on. Forewma:lambdaandfitted_on.fallbacktruewhen a requested GARCH fit did not converge and an EWMA estimate was returned instead.pair,as_of_date,method,day_count,outliers_filteredEcho of the request and the date of the most recent return used.
Sample Request Live Demo!
Try our APIs in the API playground
Sign up for a free API key to get started — no credit card required.
https://api.api-ninjas.com/v1/currencyvolatilityforecast?pair=GBP_JPY&method=garch_11&horizon=1%2C5%2C21%2C63Headers
X-Api-KeyLog in or sign up to get your API KeySample Response
Code Examples
1
2
curl -X GET "https://api.api-ninjas.com/v1/currencyvolatilityforecast?pair=GBP_JPY&method=garch_11" \
-H "X-Api-Key: YOUR_API_KEY"If your programming language is not listed in the Code Examples above, you can still make API calls by using a HTTP request library written in your programming language and following the above documentation.
Frequently Asked Questions
Can I use the Currency Volatility API for commercial purposes?
Yes, but you must have a premium subscription. Commercial use of the Currency Volatility API is not permitted on the free tier. See our pricing page to choose a plan that fits your needs.How do I get an API key and start using the Currency Volatility API?
Sign up for a free account to instantly get your API key, then pass it in theX-Api-Keyheader on every request. The documentation above includes ready-to-run examples in cURL, Python, JavaScript, Node.js, and more.What happens if I exceed my quota for the month?
Your API requests will simply be denied once you hit your monthly quota — you will never be charged more than the plan you signed up for. To increase your quota, you can upgrade your plan any time on our pricing page.What happens if a request to the Currency Volatility API fails?
The API responds with a standard HTTP status code and a JSON error message describing the problem. See our error codes reference for the full list of codes and how to resolve each one, or contact support if you need help.What are some use cases for the Currency Volatility API?
It is built for FX risk and trading analytics: sizing positions and setting stops by realized volatility, gauging whether current volatility is high or low via theconeandhv_rank, and producing forward-looking risk estimates with EWMA or GARCH(1,1) forecasts. It pairs naturally with the Exchange Rate API for live rates and the Convert Currency API for conversions.What currency pairs are supported and how is the volatility calculated?
Volatility is available for over 150 fiat currency pairs (the same set as the Convert Currency API, excludingZWG,BTC, andXAG), specified with thepairparameter incurrency1_currency2form such asEUR_USD. It is computed as the sample standard deviation of daily logarithmic returns from closing rates, annualized by the square root of 252 trading days; see the full API docs for details.What is the difference between the three endpoints?
/v1/currencyvolatilityreturns the latest realized (or EWMA) volatility over awindowplus a volatilityconeand percentile context;/v1/currencyvolatilityhistoricalreturns a dailyseriesof trailing rolling volatility over adaysrange (max 1825); and/v1/currencyvolatilityforecastreturns forward-looking EWMA orgarch_11estimates across thehorizondays you request. All three are premium endpoints, listed on the pricing page.How do I get a volatility forecast, and what does the response include?
Call/v1/currencyvolatilityforecastwith apairand choosemethod=garch_11(default, with mean reversion) ormethod=ewma; the response includescurrent_conditional_vol_annualized, aforecastarray (each withhorizon_days,vol_annualized,vol_daily), fittedparameters, and afallbackflag set totruewhen a GARCH fit fails to converge and EWMA is returned instead. These are model-based estimates rather than predictions; unsuccessful requests return an error.