The finance developer workbenchSearch the reference Development · 0.1.4 · unpublished

Public API / @insiderfinance/totalfinance

@insiderfinance/totalfinance/volatility/essvi

import from '@insiderfinance/totalfinance/volatility/essvi'

Every public export in this entry point, including type-only declarations. Search by name or concept.

Jump to an export (10)

ESSVIArbitrage · ESSVICalibration · ESSVICalibrationInput · ESSVICalibrationOptions · ESSVIParameters · ESSVISliceInput · calibrateEssvi · essviArbitrageFree · essviTotalVariance · essviVolatility

interface

ESSVIArbitrage

No-arbitrage diagnosis of an eSSVI surface.

/** No-arbitrage diagnosis of an eSSVI surface. */
export interface ESSVIArbitrage {
    /** No calendar-spread arbitrage — `w(k, t)` non-decreasing in `t` at every grid `k` (the definition). */
    calendarArbitrageFree: boolean;
    /** No butterfly arbitrage — the exact Gatheral `g ≥ 0` density test at every grid maturity. */
    butterflyArbitrageFree: boolean;
    /** The minimum Gatheral `g(k)` over the grid and maturities (`≥ 0` ⇔ butterfly-free). */
    minButterflyG: number;
    /** Minimum `Δw` between adjacent maturities over the grid (`≥ 0` ⇔ calendar-free). */
    minCalendarSlope: number;
}
Fields, parameters & returned members (4)
Name / typeMeaning & unitOptional / default
butterflyArbitrageFree
boolean
No butterfly arbitrage — the exact Gatheral `g ≥ 0` density test at every grid maturity.
unitless by name
Required / declared member
No @default declared; consult the signature and description.
calendarArbitrageFree
boolean
No calendar-spread arbitrage — `w(k, t)` non-decreasing in `t` at every grid `k` (the definition).
unitless by name
Required / declared member
No @default declared; consult the signature and description.
minButterflyG
number
The minimum Gatheral `g(k)` over the grid and maturities (`≥ 0` ⇔ butterfly-free).
unitless by name
Required / declared member
No @default declared; consult the signature and description.
minCalendarSlope
number
Minimum `Δw` between adjacent maturities over the grid (`≥ 0` ⇔ calendar-free).
unitless by name
Required / declared member
No @default declared; consult the signature and description.
Stability, warnings & conventions
stable-by-law (pre-1.0; not a 1.0 stability guarantee)

Declared field units are shown above. “Unitless by name” means the name alone does not establish a unit, not that a financial quantity has none. Check source descriptions, conventions, and the returned diagnostics. Errors and warnings are part of the result contract.

interface

ESSVICalibration

Result of {@link calibrateEssvi}.

/** Result of {@link calibrateEssvi}. */
export interface ESSVICalibration {
    parameters: ESSVIParameters;
    /** Root-mean-square total-variance error across all points. */
    rmse: number;
    perSliceRmse: Array<{
        timeToExpiryYears: number;
        rmse: number;
    }>;
    /** The fitted skew term structure — the payoff of eSSVI over global-ρ SSVI. */
    rhoTerm: Array<{
        timeToExpiryYears: number;
        rho: number;
    }>;
    arbitrage: ESSVIArbitrage;
    converged: boolean;
    assumptions: {
        conventionsVersion: string;
        phi: 'power-law' | 'heston';
        skew: 'per-maturity';
        weight: 'uniform' | 'vega';
        /** Whether the search began from a caller-supplied start or the internal global-SSVI warm start. */
        initialParameters: 'supplied' | 'ssvi-warm-start';
    };
    diagnostics: Diagnostics;
}
Fields, parameters & returned members (40)
Name / typeMeaning & unitOptional / default
arbitrage
ESSVIArbitrage

unitless by name
Required / declared member
No @default declared; consult the signature and description.
arbitrage.butterflyArbitrageFree
boolean
No butterfly arbitrage — the exact Gatheral `g ≥ 0` density test at every grid maturity.
unitless by name
Required / declared member
No @default declared; consult the signature and description.
arbitrage.calendarArbitrageFree
boolean
No calendar-spread arbitrage — `w(k, t)` non-decreasing in `t` at every grid `k` (the definition).
unitless by name
Required / declared member
No @default declared; consult the signature and description.
arbitrage.minButterflyG
number
The minimum Gatheral `g(k)` over the grid and maturities (`≥ 0` ⇔ butterfly-free).
unitless by name
Required / declared member
No @default declared; consult the signature and description.
arbitrage.minCalendarSlope
number
Minimum `Δw` between adjacent maturities over the grid (`≥ 0` ⇔ calendar-free).
unitless by name
Required / declared member
No @default declared; consult the signature and description.
assumptions
{ conventionsVersion: string; initialParameters: 'supplied' | 'ssvi-warm-start'; phi: 'power-law' | 'heston'; skew: 'per-maturity'; weight: 'uniform' | 'vega'; }

unitless by name
Required / declared member
No @default declared; consult the signature and description.
assumptions.conventionsVersion
string

unitless by name
Required / declared member
No @default declared; consult the signature and description.
assumptions.initialParameters
'supplied' | 'ssvi-warm-start'
Whether the search began from a caller-supplied start or the internal global-SSVI warm start.
unitless by name
Required / declared member
No @default declared; consult the signature and description.
assumptions.phi
'power-law' | 'heston'

unitless by name
Required / declared member
No @default declared; consult the signature and description.
assumptions.skew
'per-maturity'

unitless by name
Required / declared member
No @default declared; consult the signature and description.
assumptions.weight
'vega' | 'uniform'

unitless by name
Required / declared member
No @default declared; consult the signature and description.
converged
boolean

unitless by name
Required / declared member
No @default declared; consult the signature and description.
diagnostics
Diagnostics

unitless by name
Required / declared member
No @default declared; consult the signature and description.
diagnostics.autoReason
string
When a meta-engine (e.g. `engines.auto()`) selected a delegate, this is a one-sentence, human-readable explanation of WHY that delegate was chosen (`engine` then names the delegate). Absent when no auto-selection took place.
unitless by name
Optional
No @default declared; consult the signature and description.
diagnostics.converged
boolean
Whether an iterative procedure converged. `false` means the value is not trustworthy.
unitless by name
Optional
No @default declared; consult the signature and description.
diagnostics.decomposition
Record<string, number>
Named intermediate quantities the value decomposes into — a par spread's protection leg and risky annuity, a forward variance's near/far legs. The H-series explain paths disclose their arithmetic here so a caller can audit the ratio, not just receive it (3B.3).
unitless by name
Optional
No @default declared; consult the signature and description.
diagnostics.engine
string
Pricing/solver engine name, e.g. `black-scholes-merton`.
unitless by name
Optional
No @default declared; consult the signature and description.
diagnostics.finiteDifferenceBumps
Record<string, number>
Finite-difference engines: the ACTUAL bump sizes used for FD Greeks (spec P2.3) — adaptive near the vol/time boundaries, so the caller can see exactly what was differenced. Keys: `spotStep`, `volatilityStep`, `timeStepYears`, `rateStep`, and — extended Greeks only — `dividendYieldStep`. Each is the actual step differenced, in the unit of the coordinate it bumps. (This doc named the retired `hS`/`hSig`/`hT`/`hR`/`hQ` keys for one release after the emit sites had moved to the semantic names, so a caller following it read `undefined`.)
unitless by name
Optional
No @default declared; consult the signature and description.
diagnostics.iterations
number
Iteration count for iterative methods.
unitless by name
Optional
No @default declared; consult the signature and description.
diagnostics.method
string
Numerical method, e.g. `closed-form`, `brent`, `finite-difference`.
unitless by name
Optional
No @default declared; consult the signature and description.
diagnostics.selection
import('@insiderfinance/totalfinance/core/pricing').SelectionReport
The structured engine-selection report (Gate C, `@insiderfinance/totalfinance/core/pricing`): who was selected, why, and — for automatic selection — every candidate considered with its verdict. This is the machine-readable superset of `engine` + `autoReason` (which remain for compatibility); `selected.name` always agrees with `engine` when both are present.
unitless by name
Optional
No @default declared; consult the signature and description.
diagnostics.selection.candidates
readonly import('@insiderfinance/totalfinance/core/pricing').SelectionCandidate[]
Candidates an automatic selection considered; absent for explicit mode.
unitless by name
Optional
No @default declared; consult the signature and description.
diagnostics.selection.mode
'explicit' | 'automatic'

unitless by name
Required / declared member
No @default declared; consult the signature and description.
diagnostics.selection.reason
string
Why the selected engine answers this request.
unitless by name
Required / declared member
No @default declared; consult the signature and description.
diagnostics.selection.selected
{ name: string; version?: string; }

unitless by name
Required / declared member
No @default declared; consult the signature and description.
diagnostics.selection.selected.name
string

unitless by name
Required / declared member
No @default declared; consult the signature and description.
diagnostics.selection.selected.version
string

unitless by name
Optional
No @default declared; consult the signature and description.
diagnostics.timingMs
number
Wall-clock timing in milliseconds, when measured.
milliseconds
Optional
No @default declared; consult the signature and description.
diagnostics.warmup
number
Series facades: number of leading output slots that are warmup sentinels (null/NaN) while the computation seeds. Equals the input length when the indicator never emitted.
unitless by name
Optional
No @default declared; consult the signature and description.
diagnostics.warnings
QuantWarning[]
Structured warnings; always present (possibly empty).
unitless by name
Required / declared member
No @default declared; consult the signature and description.
parameters
ESSVIParameters

unitless by name
Required / declared member
No @default declared; consult the signature and description.
parameters.phi
SSVIPhi
Curvature function (global), same family as SSVI.
unitless by name
Required / declared member
No @default declared; consult the signature and description.
parameters.phi.eta
number

unitless by name
Required / declared member
No @default declared; consult the signature and description.
parameters.phi.gamma
number

unitless by name
Required / declared member
No @default declared; consult the signature and description.
parameters.phi.kind
('heston') | ('power-law')

unitless by name
Required / declared member
No @default declared; consult the signature and description.
parameters.phi.lambda
number

unitless by name
Required / declared member
No @default declared; consult the signature and description.
parameters.thetaTerm
{ timeToExpiryYears: number; theta: number; rho: number; }[]
Per-knot `(t, θ, ρ)`: θ strictly increasing (calendar backbone), ρ ∈ (−1, 1) per maturity.
unitless by name
Required / declared member
No @default declared; consult the signature and description.
perSliceRmse
{ timeToExpiryYears: number; rmse: number; }[]

unitless by name
Required / declared member
No @default declared; consult the signature and description.
rhoTerm
{ timeToExpiryYears: number; rho: number; }[]
The fitted skew term structure — the payoff of eSSVI over global-ρ SSVI.
unitless by name
Required / declared member
No @default declared; consult the signature and description.
rmse
number
Root-mean-square total-variance error across all points.
unitless by name
Required / declared member
No @default declared; consult the signature and description.
Stability, warnings & conventions
stable-by-law (pre-1.0; not a 1.0 stability guarantee)

Declared field units are shown above. “Unitless by name” means the name alone does not establish a unit, not that a financial quantity has none. Check source descriptions, conventions, and the returned diagnostics. Errors and warnings are part of the result contract.

interface

ESSVICalibrationInput

Input for {@link calibrateEssvi}.

/** Input for {@link calibrateEssvi}. */
export interface ESSVICalibrationInput {
    slices: ESSVISliceInput[];
}
Fields, parameters & returned members (1)
Name / typeMeaning & unitOptional / default
slices
SSVISliceInput[]

unitless by name
Required / declared member
No @default declared; consult the signature and description.
Stability, warnings & conventions
stable-by-law (pre-1.0; not a 1.0 stability guarantee)

Declared field units are shown above. “Unitless by name” means the name alone does not establish a unit, not that a financial quantity has none. Check source descriptions, conventions, and the returned diagnostics. Errors and warnings are part of the result contract.

interface

ESSVICalibrationOptions

Options for {@link calibrateEssvi}.

/** Options for {@link calibrateEssvi}. */
export interface ESSVICalibrationOptions {
    /** Curvature family; default `'power-law'`. */
    phi?: 'power-law' | 'heston';
    /**
     * Least-squares weighting of the total-variance residuals: `'uniform'` (default) or `'vega'` — weight each
     * point by its Black vega `∝ φ(d₁)·√t`, so liquid ATM/near-the-money strikes dominate the fit. Threaded
     * through the SSVI warm-start too.
     */
    weight?: 'uniform' | 'vega';
    /** Outer-search iteration budget (default 2,000, maximum 10,000). */
    maximumIterations?: number;
    /** Outer-search tolerance (default 1e-12). */
    tolerance?: number;
    /**
     * Warm start (Stage 4.5): a scalar `rho` broadcasts to every maturity knot, an array must match
     * the slice count; `phi.kind` must equal the calibration's `phi` family. A supplied start REPLACES
     * the internal SSVI warm start (echoed in `assumptions.initialParameters`).
     */
    initialParameters?: {
        rho: number | number[];
        phi: SSVIPhi;
    };
}
Fields, parameters & returned members (11)
Name / typeMeaning & unitOptional / default
initialParameters
{ phi: SSVIPhi; rho: number | number[]; }
Warm start (Stage 4.5): a scalar `rho` broadcasts to every maturity knot, an array must match the slice count; `phi.kind` must equal the calibration's `phi` family. A supplied start REPLACES the internal SSVI warm start (echoed in `assumptions.initialParameters`).
unitless by name
Optional
No @default declared; consult the signature and description.
initialParameters.phi
SSVIPhi

unitless by name
Required / declared member
No @default declared; consult the signature and description.
initialParameters.phi.eta
number

unitless by name
Required / declared member
No @default declared; consult the signature and description.
initialParameters.phi.gamma
number

unitless by name
Required / declared member
No @default declared; consult the signature and description.
initialParameters.phi.kind
('heston') | ('power-law')

unitless by name
Required / declared member
No @default declared; consult the signature and description.
initialParameters.phi.lambda
number

unitless by name
Required / declared member
No @default declared; consult the signature and description.
initialParameters.rho
number | number[]

unitless by name
Required / declared member
No @default declared; consult the signature and description.
maximumIterations
number
Outer-search iteration budget (default 2,000, maximum 10,000).
unitless by name
Optional
No @default declared; consult the signature and description.
phi
'power-law' | 'heston'
Curvature family; default `'power-law'`.
unitless by name
Optional
No @default declared; consult the signature and description.
tolerance
number
Outer-search tolerance (default 1e-12).
unitless by name
Optional
No @default declared; consult the signature and description.
weight
'vega' | 'uniform'
Least-squares weighting of the total-variance residuals: `'uniform'` (default) or `'vega'` — weight each point by its Black vega `∝ φ(d₁)·√t`, so liquid ATM/near-the-money strikes dominate the fit. Threaded through the SSVI warm-start too.
unitless by name
Optional
No @default declared; consult the signature and description.
Stability, warnings & conventions
stable-by-law (pre-1.0; not a 1.0 stability guarantee)

Declared field units are shown above. “Unitless by name” means the name alone does not establish a unit, not that a financial quantity has none. Check source descriptions, conventions, and the returned diagnostics. Errors and warnings are part of the result contract.

interface

ESSVIParameters

Calibrated eSSVI surface parameters — SSVI with a per-maturity skew.

/** Calibrated eSSVI surface parameters — SSVI with a per-maturity skew. */
export interface ESSVIParameters {
    /** Curvature function (global), same family as SSVI. */
    phi: SSVIPhi;
    /** Per-knot `(t, θ, ρ)`: θ strictly increasing (calendar backbone), ρ ∈ (−1, 1) per maturity. */
    thetaTerm: Array<{
        timeToExpiryYears: number;
        theta: number;
        rho: number;
    }>;
}
Fields, parameters & returned members (6)
Name / typeMeaning & unitOptional / default
phi
SSVIPhi
Curvature function (global), same family as SSVI.
unitless by name
Required / declared member
No @default declared; consult the signature and description.
phi.eta
number

unitless by name
Required / declared member
No @default declared; consult the signature and description.
phi.gamma
number

unitless by name
Required / declared member
No @default declared; consult the signature and description.
phi.kind
('heston') | ('power-law')

unitless by name
Required / declared member
No @default declared; consult the signature and description.
phi.lambda
number

unitless by name
Required / declared member
No @default declared; consult the signature and description.
thetaTerm
{ timeToExpiryYears: number; theta: number; rho: number; }[]
Per-knot `(t, θ, ρ)`: θ strictly increasing (calendar backbone), ρ ∈ (−1, 1) per maturity.
unitless by name
Required / declared member
No @default declared; consult the signature and description.
Stability, warnings & conventions
stable-by-law (pre-1.0; not a 1.0 stability guarantee)

Declared field units are shown above. “Unitless by name” means the name alone does not establish a unit, not that a financial quantity has none. Check source descriptions, conventions, and the returned diagnostics. Errors and warnings are part of the result contract.

type

ESSVISliceInput

One maturity slice of the market surface (same shape as SSVI's).

/** One maturity slice of the market surface (same shape as SSVI's). */
export type ESSVISliceInput = SSVISliceInput;
Fields, parameters & returned members (4)
Name / typeMeaning & unitOptional / default
impliedVolatility
number[]
Implied volatilities aligned to `k` (converted to `w = iv²·t`). Provide this or `w`.
unitless by name
Optional
No @default declared; consult the signature and description.
k
number[]
Log-moneyness `ln(K/F)` per observation.
unitless by name
Required / declared member
No @default declared; consult the signature and description.
timeToExpiryYears
number
Maturity in years.
years (decimal)
Required / declared member
No @default declared; consult the signature and description.
w
number[]
Total variance `σ²·t` aligned to `k`. Provide this or `iv`.
unitless by name
Optional
No @default declared; consult the signature and description.
Stability, warnings & conventions
stable-by-law (pre-1.0; not a 1.0 stability guarantee)

Declared field units are shown above. “Unitless by name” means the name alone does not establish a unit, not that a financial quantity has none. Check source descriptions, conventions, and the returned diagnostics. Errors and warnings are part of the result contract.

function

calibrateEssvi

Fit a calendar-arbitrage-free eSSVI surface: θ knots from each slice's ATM variance (made monotone), then per-maturity `ρᵢ` and a global `φ` by least squares — warm-started from a global SSVI fit, so eSSVI begins at the best single-`ρ` surface and can only improve, with a calendar-crossing penalty keeping the fit arbitrage-free between maturities. See the spec.

export declare function calibrateEssvi(surface: ESSVICalibrationInput, options?: ESSVICalibrationOptions): ESSVICalibration;
Fields, parameters & returned members (23)
Name / typeMeaning & unitOptional / default
(options)
ESSVICalibrationOptions

unitless by name
Optional
No @default declared; consult the signature and description.
(options).initialParameters
{ phi: SSVIPhi; rho: number | number[]; }
Warm start (Stage 4.5): a scalar `rho` broadcasts to every maturity knot, an array must match the slice count; `phi.kind` must equal the calibration's `phi` family. A supplied start REPLACES the internal SSVI warm start (echoed in `assumptions.initialParameters`).
unitless by name
Optional
No @default declared; consult the signature and description.
(options).initialParameters.phi
SSVIPhi

unitless by name
Required / declared member
No @default declared; consult the signature and description.
(options).initialParameters.rho
number | number[]

unitless by name
Required / declared member
No @default declared; consult the signature and description.
(options).maximumIterations
number
Outer-search iteration budget (default 2,000, maximum 10,000).
unitless by name
Optional
No @default declared; consult the signature and description.
(options).phi
'power-law' | 'heston'
Curvature family; default `'power-law'`.
unitless by name
Optional
No @default declared; consult the signature and description.
(options).tolerance
number
Outer-search tolerance (default 1e-12).
unitless by name
Optional
No @default declared; consult the signature and description.
(options).weight
'vega' | 'uniform'
Least-squares weighting of the total-variance residuals: `'uniform'` (default) or `'vega'` — weight each point by its Black vega `∝ φ(d₁)·√t`, so liquid ATM/near-the-money strikes dominate the fit. Threaded through the SSVI warm-start too.
unitless by name
Optional
No @default declared; consult the signature and description.
(surface)
ESSVICalibrationInput

unitless by name
Required / declared member
No @default declared; consult the signature and description.
(surface).slices
SSVISliceInput[]

unitless by name
Required / declared member
No @default declared; consult the signature and description.
return.arbitrage
ESSVIArbitrage

unitless by name
Required / declared member
No @default declared; consult the signature and description.
return.assumptions
{ conventionsVersion: string; initialParameters: 'supplied' | 'ssvi-warm-start'; phi: 'power-law' | 'heston'; skew: 'per-maturity'; weight: 'uniform' | 'vega'; }

unitless by name
Required / declared member
No @default declared; consult the signature and description.
return.assumptions.conventionsVersion
string

unitless by name
Required / declared member
No @default declared; consult the signature and description.
return.assumptions.initialParameters
'supplied' | 'ssvi-warm-start'
Whether the search began from a caller-supplied start or the internal global-SSVI warm start.
unitless by name
Required / declared member
No @default declared; consult the signature and description.
return.assumptions.phi
'power-law' | 'heston'

unitless by name
Required / declared member
No @default declared; consult the signature and description.
return.assumptions.skew
'per-maturity'

unitless by name
Required / declared member
No @default declared; consult the signature and description.
return.assumptions.weight
'vega' | 'uniform'

unitless by name
Required / declared member
No @default declared; consult the signature and description.
return.converged
boolean

unitless by name
Required / declared member
No @default declared; consult the signature and description.
return.diagnostics
Diagnostics

unitless by name
Required / declared member
No @default declared; consult the signature and description.
return.parameters
ESSVIParameters

unitless by name
Required / declared member
No @default declared; consult the signature and description.
return.perSliceRmse
{ timeToExpiryYears: number; rmse: number; }[]

unitless by name
Required / declared member
No @default declared; consult the signature and description.
return.rhoTerm
{ timeToExpiryYears: number; rho: number; }[]
The fitted skew term structure — the payoff of eSSVI over global-ρ SSVI.
unitless by name
Required / declared member
No @default declared; consult the signature and description.
return.rmse
number
Root-mean-square total-variance error across all points.
unitless by name
Required / declared member
No @default declared; consult the signature and description.
Stability, warnings & conventions
stable-by-law (pre-1.0; not a 1.0 stability guarantee)

Declared field units are shown above. “Unitless by name” means the name alone does not establish a unit, not that a financial quantity has none. Check source descriptions, conventions, and the returned diagnostics. Errors and warnings are part of the result contract.

function

essviArbitrageFree

Diagnose the no-arbitrage status of an eSSVI surface: butterfly (exact Gatheral `g ≥ 0` at each grid maturity, reducing the slice to raw SVI) and calendar (`w(k, t)` non-decreasing in `t` at every grid `k`, scanned directly because θ-monotonicity is not sufficient once `ρ` varies). See the spec.

export declare function essviArbitrageFree(parameters: ESSVIParameters, options?: { grid?: number[]; maturityGrid?: number[]; }): ESSVIArbitrage;
Fields, parameters & returned members (10)
Name / typeMeaning & unitOptional / default
(options)
{ grid?: number[]; maturityGrid?: number[]; }

unitless by name
Optional
No @default declared; consult the signature and description.
(options).grid
number[]

unitless by name
Optional
No @default declared; consult the signature and description.
(options).maturityGrid
number[]

unitless by name
Optional
No @default declared; consult the signature and description.
(parameters)
ESSVIParameters

unitless by name
Required / declared member
No @default declared; consult the signature and description.
(parameters).phi
SSVIPhi
Curvature function (global), same family as SSVI.
unitless by name
Required / declared member
No @default declared; consult the signature and description.
(parameters).thetaTerm
{ timeToExpiryYears: number; theta: number; rho: number; }[]
Per-knot `(t, θ, ρ)`: θ strictly increasing (calendar backbone), ρ ∈ (−1, 1) per maturity.
unitless by name
Required / declared member
No @default declared; consult the signature and description.
return.butterflyArbitrageFree
boolean
No butterfly arbitrage — the exact Gatheral `g ≥ 0` density test at every grid maturity.
unitless by name
Required / declared member
No @default declared; consult the signature and description.
return.calendarArbitrageFree
boolean
No calendar-spread arbitrage — `w(k, t)` non-decreasing in `t` at every grid `k` (the definition).
unitless by name
Required / declared member
No @default declared; consult the signature and description.
return.minButterflyG
number
The minimum Gatheral `g(k)` over the grid and maturities (`≥ 0` ⇔ butterfly-free).
unitless by name
Required / declared member
No @default declared; consult the signature and description.
return.minCalendarSlope
number
Minimum `Δw` between adjacent maturities over the grid (`≥ 0` ⇔ calendar-free).
unitless by name
Required / declared member
No @default declared; consult the signature and description.
Stability, warnings & conventions
stable-by-law (pre-1.0; not a 1.0 stability guarantee)

Declared field units are shown above. “Unitless by name” means the name alone does not establish a unit, not that a financial quantity has none. Check source descriptions, conventions, and the returned diagnostics. Errors and warnings are part of the result contract.

function

essviTotalVariance

Total implied variance `w(k, t)` on a calibrated eSSVI surface.

export declare function essviTotalVariance(parameters: ESSVIParameters, k: number, timeToExpiryYears: number): number;
Fields, parameters & returned members (5)
Name / typeMeaning & unitOptional / default
(k)
number

unitless by name
Required / declared member
No @default declared; consult the signature and description.
(parameters)
ESSVIParameters

unitless by name
Required / declared member
No @default declared; consult the signature and description.
(parameters).phi
SSVIPhi
Curvature function (global), same family as SSVI.
unitless by name
Required / declared member
No @default declared; consult the signature and description.
(parameters).thetaTerm
{ timeToExpiryYears: number; theta: number; rho: number; }[]
Per-knot `(t, θ, ρ)`: θ strictly increasing (calendar backbone), ρ ∈ (−1, 1) per maturity.
unitless by name
Required / declared member
No @default declared; consult the signature and description.
(timeToExpiryYears)
number

unitless by name
Required / declared member
No @default declared; consult the signature and description.
Stability, warnings & conventions
stable-by-law (pre-1.0; not a 1.0 stability guarantee)

Declared field units are shown above. “Unitless by name” means the name alone does not establish a unit, not that a financial quantity has none. Check source descriptions, conventions, and the returned diagnostics. Errors and warnings are part of the result contract.

function

essviVolatility

Implied volatility `√(w/t)` on a calibrated eSSVI surface.

export declare function essviVolatility(parameters: ESSVIParameters, k: number, timeToExpiryYears: number): number;
Fields, parameters & returned members (5)
Name / typeMeaning & unitOptional / default
(k)
number

unitless by name
Required / declared member
No @default declared; consult the signature and description.
(parameters)
ESSVIParameters

unitless by name
Required / declared member
No @default declared; consult the signature and description.
(parameters).phi
SSVIPhi
Curvature function (global), same family as SSVI.
unitless by name
Required / declared member
No @default declared; consult the signature and description.
(parameters).thetaTerm
{ timeToExpiryYears: number; theta: number; rho: number; }[]
Per-knot `(t, θ, ρ)`: θ strictly increasing (calendar backbone), ρ ∈ (−1, 1) per maturity.
unitless by name
Required / declared member
No @default declared; consult the signature and description.
(timeToExpiryYears)
number

unitless by name
Required / declared member
No @default declared; consult the signature and description.
Stability, warnings & conventions
stable-by-law (pre-1.0; not a 1.0 stability guarantee)

Declared field units are shown above. “Unitless by name” means the name alone does not establish a unit, not that a financial quantity has none. Check source descriptions, conventions, and the returned diagnostics. Errors and warnings are part of the result contract.