Spectral XVA vs Nested Monte Carlo: A Three-Engine Benchmark
Abstract
We present a controlled benchmark comparing three computational engines for Credit Valuation Adjustment (CVA) on an identical 10-swap interest rate portfolio under Vasicek dynamics: (i) a spectral method based on the Fokker--Planck generator, implemented in Python; (ii) a simple Monte Carlo engine with analytical swap pricing, implemented in Rust; and (iii) a nested Monte Carlo (MC-on-MC) engine with inner-path simulation at each monitoring date, also in Rust with parallel execution via Rayon. On a \\(178M notional portfolio with 40 quarterly monitoring dates, the spectral engine produces CVA of \\)186,685 in 221ms, while the Rust simple MC (100K paths) produces \\(188,623 in 4.5s and the Rust nested MC (2K outer \)\times\( 200 inner) produces \\)121,194 in 29.2s. The spectral method is 132\(\times\) faster than nested MC-on-MC, produces zero sampling noise (vs \$638 inter-seed variance for nested MC), and enables instant credit stress testing (87ms vs 38s full resimulation). We project that for a realistic bank desk (5,000 counterparties, 20 regulatory stress scenarios), the spectral approach reduces the XVA overnight batch from 1,216 hours to 30 minutes. We further analyze the applicability envelope: instrument coverage, model dimensionality limits, and the path-dependent frontier where hybrid methods are required.