Skip to content
All library documents

Choosing FX Volatility Data for Backtests

Article Quant Q&A · Author: Volwiz

Summary

The discussion compares Bloomberg’s BGN and CMPN sources for EUR/USD FX option volatility quotes, especially butterfly quotes used in strategies that trade convexity. The answer describes BGN as a generic daily close and CMPN as a composite of contributor quotes, with differences arising from aggregation and quote-quality handling. It cautions that historical BGN data may fall back to CMPN for periods before BGN was available, which can create a change in data characteristics within a long backtest.

For strategy research, the answer recommends checking the source and quote conventions rather than assuming two feeds are interchangeable. It also points to volatility-surface data or a pricing engine for obtaining strike and expiry volatilities, and mentions a built-in backtester for supported products. These are platform-specific suggestions, not independent evidence that one feed produces more accurate backtests. The comparison offers personal experience and practical guidance but no systematic data study; researchers should verify timestamps, conventions, historical coverage, and executable pricing assumptions for their own use case.

Key ideas

  • BGN and CMPN can report different FX option volatility quotes because their aggregation methods differ.
  • The answer characterizes CMPN as a contributor composite and BGN as a later generic source with quality controls.
  • Long historical series may include CMPN values from periods before BGN existed.
  • Backtests should account for quote source, timestamps, volatility-surface conventions, and historical coverage.
  • A volatility surface can provide strike and expiry inputs when basic ATM, risk-reversal, and butterfly quotes are insufficient.

Tags

Full text
# Data source for FX options


# Data source for FX options












I have daily quotes for the new york and london fixings of fx options on EURUSD. On Bloomberg I can choose between two sources: BGN and CMPN. Apparently these are based on slightly different methods of aggregating the OTC quotes. I found that there are some pretty significant differences even though these two sources are meant to capture the same thing. Especially when looking at the BF25 quotes, BGN is slightly higher than CMPN on most days. This makes quite a significant difference when backtesting strategies that are exploiting convexity in some way, e.g. selling the convexity premium. Also in general BGN looks a bit less noisy than CMPN.

Does anyone know what people usually use for backtesting strategies? Is there a reason for the deviations?

## Answer by AKdemy (score 4)

https://quant.stackexchange.com/a/68095

If you think of New York and London as cutoff, that doesn't exist as a market quote (white instead of amber in OVDV as it is interpolated).

BGN and BGNL stands for New York and London daily close according to the times shown on XDF.

Never use CMPN, that is composite and just a hard coded list of contributors without any quality check (timeliness, spikes etc). BGN was developed afterwards. QFX "explains" the details and differences between the composite (CMPN) and generic (BGN). If you use long history, you will realize BGN falls back to CMPN (before BGN existed).

There is also BVOL, from Bloomberg's financial engineering team. That is premium data though. Main difference ist what fly is used. OVDV shows details in settings - conventions. For FX, the difference between BGN and BVOL is negligible in my experience, but it is a big thing in equity (LIVE vs BVOL) and interest rate options.

Bottom line, never use CMPN unless nothing else is available. The help desk would answer this swiftly by the way.

For backtesting, I guess simply using the market quotes (ATM DNS, RR and BF for various deltas) will not be sufficient. If you don't want the hassle of building a surface yourself, you can use SPVOl_SURF_MID (or something like that, just check FLDS for correct syntax). There is a neat trick to get call and put vol for strikes directly; set the delta override to 0 and also override strike. That way you can get any strike and expiry vol directly via the BBG pricing engine (also sided pricing if needed).

OVML has a backtester by the way. It doesn't support a lot of products but if your product is supported, it will do it all automatically for you.

Shown in full with attribution under the source's licence. Licence: CC BY-SA 4.0 (Stack Exchange)

This summary was written by Stratmill's research agent from the original; it is not a copy of the source.