Class SviSurface

java.lang.Object
com.quantfinlib.pricing.SviSurface
All Implemented Interfaces:
TotalVarianceSurface

public final class SviSurface extends Object implements TotalVarianceSurface
A surface of raw SVI slices (SviSlice), one per pillar expiry, interpolated linearly in total variance at fixed log-moneyness k = ln(K/F(t)).

Between pillars, w(t, k) = (1−u)·w₁(k) + u·w₂(k) with u = (t − t₁)/(t₂ − t₁). If the pillar slices do not cross (w₂(k) ≥ w₁(k) for all k) every interpolated w is non-decreasing in t, so the surface has no calendar arbitrage (Gatheral and Jacquier 2014, section 2, lemma 2.1 on total variance). Before the first pillar w = w₁(k)·t/t₁; after the last, w = w_n(k)·t/t_n (constant implied vol per k). Slice independence means crossing slices are possible: check with TotalVarianceSurface.calendarViolations(double[], double, double, int) or prefer SsviSurface, which is calendar-free by construction. Linear interpolation of two butterfly-free slices need not be butterfly-free; TotalVarianceSurface.minDensityFactor(double, double, double, int) checks it.

  • Constructor Details

    • SviSurface

      public SviSurface(double[] expiries, SviSlice[] slices, double spot, double rate, double carry)
  • Method Details

    • calibrate

      public static SviSurface calibrate(double spot, double rate, double carry, double[] expiries, double[][] strikes, double[][] vols, double[][] weights)
      Fits one SVI slice per expiry (SviSlice.calibrate(double[], double[], double[]), butterfly penalty on) to implied vol quotes.
      Parameters:
      weights - residual weights per quote, or null for equal weights
    • expiryLength

      public int expiryLength()
    • expiry

      public double expiry(int i)
    • slice

      public SviSlice slice(int i)
    • spot

      public double spot()
      Description copied from interface: TotalVarianceSurface
      Spot price.
      Specified by:
      spot in interface TotalVarianceSurface
    • rate

      public double rate()
      Description copied from interface: TotalVarianceSurface
      Continuously compounded risk-free rate.
      Specified by:
      rate in interface TotalVarianceSurface
    • carry

      public double carry()
      Description copied from interface: TotalVarianceSurface
      Continuous carry yield (dividend yield, or foreign rate for FX).
      Specified by:
      carry in interface TotalVarianceSurface
    • totalVariance

      public double totalVariance(double t, double k)
      Description copied from interface: TotalVarianceSurface
      Total implied variance at expiry t (years, > 0) and log-moneyness k.
      Specified by:
      totalVariance in interface TotalVarianceSurface