Skip to content
All library documents

Why Black Variance Surfaces Use Explicit Reference Dates

Article Quant Q&A · Author: user35980

Summary

The discussion explains a QuantLib design choice for Black variance surfaces. The constructor takes explicit dates, rather than tenors relative to a settlement date. Since the surface is tied to those dates, shifting its reference date while leaving them fixed would not preserve the intended future variance values. Automatically moving the dates would also require the surface to track the evaluation date used when it was created.

The answer notes that a constructor based on settlement days and tenors would be a reasonable alternative, but that interface was not implemented at the time of the discussion. This is useful context for evaluation-date shift scenarios: users may need workarounds when stress testing or repricing with shifted dates. The thread describes the rationale and a software limitation, but does not give a specific workaround or explain broader volatility-surface calibration methods.

Key ideas

  • The surface constructor accepts explicit dates rather than tenors tied to a settlement date.
  • Keeping input dates fixed while shifting the reference date may not preserve the intended future variance values.
  • Automatically shifting the dates would require the surface to know the evaluation date at construction.
  • A settlement-days-and-tenors constructor was identified as a possible interface but was not then available.

Tags

Full text
# BlackVarianceSurface in quantlib


# BlackVarianceSurface in quantlib












Is there any particular reason why the BlackVarianceSurface class only has a reference date constructor and no settlement days constructor (like most other term structures do in quantlib)? For evaluation date shift scenarios this requires workarounds.

## Answer by Luigi Ballabio (score 1, accepted)

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

That's because the structure is specified by passing a vector of explicit dates, not of tenors.

Keeping those dates fixed and moving the reference date around doesn't make a lot of sense, because when you change the reference date you don't expect the variance to stay the same at a given date in the future. Moving them is tricky too; to do so, the surface should know how much the evaluation date changed, requiring it to store the evaluation date at the time of creation; and it's also a weird thing to do when the input was an explicit vector of dates.

We should have a constructor taking a number of settlement days and a list of tenors, but as of now that's not implemented.

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.