μ Array Language · Reference Documentation JUN 2026

μ

optimization library

Optimization library

Optimization routines for curve fitting and parameter estimation from stdlib/optim.mu.

namedefinitiondescription
gd{[loss_fn; grad_fn; params; lr; steps]Gradient descent — simple iterative optimizer gd[loss_fn; grad_fn; initial_params; lr; steps] → optimized params loss_fn: function that takes params and returns scalar loss grad_fn: function that takes params and returns gradient vector initial_params: starting parameter vector lr: learning rate (step size) steps: number of iterations Returns: final parameter vector after optimization Example: minimize (x-3)² + (y-5)² starting from 0 0 loss:{[p] ((p@0)-3)*((p@0)-3) + ((p@1)-5)*((p@1)-5)} grad:{[p] (2*((p@0)-3)) (2*((p@1)-5))} optimal:(gd[loss; grad; 0 0; 0.1; 100]) → ~3 5
numgrad{[f; params; h]Numerical gradient — approximate gradient via finite differences numgrad[f; params; eps] → gradient vector f: function to differentiate params: point at which to compute gradient eps: finite difference step (default: 1e-6) Useful when analytical gradient is unavailable.
svi_w{[params;k]SVI raw parametrization — Stochastic Volatility Inspired svi_w[params; k] → implied variance at log-moneyness k params: [a; b; ρ; m; σ] — SVI parameters k: log-moneyness (log strike / forward) Formula: w(k) = a + b·(ρ·(k-m) + √((k-m)² + σ²)) Example: svi_w[0.02,0.1,(-0.5),0.0,0.1; 0.0] → short ATM variance
svi_loss{[params;ks;ws]SVI loss — sum of squared errors for vol surface fitting svi_loss[params; ks; market_ws] → scalar loss params: SVI parameters [a; b; ρ; m; σ] ks: vector of log-moneyness points market_ws: vector of market implied variances at those points Use with gd[] to calibrate SVI to market data.
svi_grad{[params;ks;ws;h]SVI gradient — numerical gradient for SVI loss svi_grad[params; ks; market_ws; eps] → gradient vector Convenience wrapper around numgrad for SVI calibration.
svi_clamp{[p]SVI parameter constraints — project to valid region svi_clamp[params] → constrained params Enforces: a≥0, b≥0, |ρ|<1, σ>0.01 (small floor to avoid degeneracy) Used after each gradient step to keep params in valid region.
svi_penalty{[p]SVI constraint penalty — barrier function for constraint violations svi_penalty[params] → penalty value Large penalty when constraints violated, zero when satisfied. Used with svi_loss_constrained to discourage invalid params.
svi_loss_constrained{[p;ks;ws;lam]SVI constrained loss — loss plus constraint penalty svi_loss_constrained[params; ks; ws; lambda] → scalar loss lambda: penalty weight (default 1.0, increase for stricter enforcement)
svi_grad_constrained{[p;ks;ws;h;lam]SVI gradient with constraints svi_grad_constrained[params; ks; ws; eps; lambda] → gradient vector
svi_fit{[ks;ws;init;lr;steps;h]SVI calibration — fit parameters to market data svi_fit[ks; ws; initial; lr; steps; eps] → fitted_params Full pipeline: optimize SVI params with constraint enforcement. Returns final parameters (already clamped to valid region). Example: svi_fit[(-0.5),(-0.2),0.0,0.2,0.5; 0.04,0.03,0.02,0.03,0.05; 0.01,0.1,0.0,0.0,0.1; 0.01; 500; 0.001]
svi_fit_auto{[ks;ws]SVI auto-fit — calibrate with automatic initialization svi_fit_auto[ks; ws] → fitted_params Auto-initializes: a=mean(ws)/2, b=0.1, ρ=0, m=mean(ks), σ=0.1 Uses sensible defaults: lr=0.01, steps=1000, eps=0.001
svi_fitted{[p;ks] {svi_w[p;x]}' ks}SVI fitted values — evaluate SVI at given log-moneyness points svi_fitted[params; ks] → implied variances at ks
svi_residuals{[p;ks;ws] ws - (svi_fitted[p;ks])}SVI residuals — market minus fitted svi_residuals[params; ks; ws] → residual vector