Skip to content

Add fallback global SVI calibration when sequential slice calibration is infeasible #2

@asancdec

Description

@asancdec

Add fallback global SVI calibration when sequential slice calibration is infeasible

Motivation

The current SVI calibration is sequential / slice-by-slice. Each maturity is calibrated against the previous slice with calendar constraints.

This can fail in realistic cases because the calibration is path-dependent:

  • maturity i is constrained by maturity i - 1
  • if maturity i - 1 is calibrated too high or in an awkward shape, maturity i may become infeasible
  • the next slice is then forced upward by calendar constraints
  • this can cascade and cause later maturities to blow up or fail

In other words, local feasibility slice-by-slice does not always imply a good globally feasible surface.

Goal

Add a global SVI calibration path that can be used as a fallback when sequential slice calibration fails.

The global calibration should optimize all maturities together, allowing the optimizer to distribute fit error across the whole surface instead of forcing each slice to fit independently.

Proposed Behavior

Keep the existing slice-by-slice calibration as the default fast path.

If sequential calibration fails due to infeasible constraints or poor convergence, retry using global calibration:

try
{
    return calibrateSequential(...);
}
catch (const errors::UnifiedVolError&)
{
    return calibrateGlobal(...);
}

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't workingenhancementNew feature or requesthelp wantedExtra attention is needed

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions