Skip to content

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

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(...);
}

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

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