Short rate follows dr = (θ(t) − a·r)·dt + σshort·dW — Hull-White 1-factor
with a deterministic shift α(t) fitted via Arrow-Debreu forward induction so that the model
reprices today's discount curve at every tree node to machine precision. Trinomial
discretization with monthly time-steps over the full swap maturity. A typical full solve —
base pricing + 5 calibration passes + 4 risk bumps — runs in 1–3 seconds in your browser
depending on the option's tenor.
Live USD SOFR ICVS (curve 490, date 04/27/2026) baked in as 32 bootstrapped discount-factor pillars from 1W to 30Y, copied directly from a Bloomberg ICVS screen and interpolated log-linearly (= piecewise-constant forward rates). Computed par swap rate matches Bloomberg's ATM strike to within 0.1 bp. The curve is fixed in this tool; Rijeka's production system bootstraps it live.
The vol slider takes normal swaption vol (σ_n) — the same input Bloomberg's vol cube uses. The HW1F tree internally needs a short-rate vol (σ_short), which is a different thing related to σ_n through the Andersen-Piterbarg variance integral. So on every slider move the tool runs a 22-iteration bisection that finds the σ_short producing a Bachelier-equivalent European NPV at σ_n. Plug 20 bp directly into σ_short and you mis-price by ~15%; calibrate first and the gap to Bloomberg drops to single digits. This is the same step Bloomberg's HW1F runs internally — the difference is they calibrate to the full surface, this tool calibrates to one point at the option's expiry.
BERMUDAN uses the full configured exercise schedule. EUROPEAN
collapses it to a single exercise at the first scheduled date — the option's natural
expiry — and prices the resulting forward-starting swap. Same model, same tree, same
curve; only the exercise rights change. Toggling lets you isolate exactly how much
value comes from the multi-date optionality, with the EE profile, exercise boundary,
Greeks and XVA all responding live.
Exercise at time tex enters into a swap that runs from tex to a fixed swap end date. Earlier exercise gives a longer-tail underlying. This is the standard market convention for Bermudan swaptions, callable bonds, and cancellable swaps. The early-exercise premium emerges precisely because each exercise date offers a different remaining swap, so the holder can wait for the most favorable rate environment before committing.
For each tree time step, the option's value at every reachable node weighted by the Arrow-Debreu density of paths that have not yet exercised. Pre-exercise this is the residual option value (continuation); at and after exercise dates it folds in the immediate-exercise value where exercise is optimal. The weighting matters: exercise dates remove probability mass from the surviving distribution, so the EE peaks and then decays as the option converts to cash. This is the EE that feeds CVA/FVA.
At each exercise date, there's a critical short rate r* where immediate
exercise equals continuation value. The boundary chart shows r* evolving
across the schedule — receiver swaptions exercise when rates fall below r*,
payers when rates rise above. The boundary's slope is the option's "delta to time" —
flatter boundaries mean more exercise indifference, steeper means more discrimination.
Vega is ±1 bp on σ_normal (with σ_short re-calibrated at each bump), so the number is
directly comparable to Bloomberg's vega(1bp). IR01 is ±1 bp parallel curve shift with σ_short
held fixed — matches Bloomberg's DV01 convention. Sign is the receiver-swap convention
(negative for long receiver = curve up loses value). Theta is analytical:
Bachelier-derived from the European leg, θ ≈ −Veur / (2·Tfirst) / 365.25.
A tree-based theta at monthly dt is unreliable — a 1-day shift doesn't move the exercise step
indices, so the result is dominated by α(t)-fitting noise. The analytical version gets the
right sign and order of magnitude; expect it to overstate |θ| by 30–50% on Bermudans because
early exercise reduces time-decay.
CVA = (1−R) · ∫ EE(t) · λcp · Scp(t) · D(t) dt with constant
hazard rates from CDS spreads. DVA mirrors with own credit. FVA from funding spread on
positive exposure; MVA from funding cost on initial margin. Closed-form Riemann sum on the
same time grid as the tree. Bermudan-specific subtlety: post-exercise the option becomes a
live swap with two-sided MTM — this tool uses the pre-exercise EE only, which is the
standard approximation for option-style XVA.
Stress-tested against a 1Y × 5Y Bermudan Long Receiver, $10MM USD SOFR, FLAT 20bp normal vol,
strike 3.695907%. Bloomberg's HW1F: NPV $43,297, Vega $2,460, DV01 $2,069, Theta −$33.
This tool at default settings (a = 0.05, σ_normal = 20 bp, annual schedule): NPV ~$41,500
(−4%), Vega ~$2,355 (−4%), IR01 ~$2,180 (+5%). Theta is analytical and overstates |θ| by ~40%.
The residual ~4–5% gaps on NPV and vega are normal cross-vendor HW1F variation —
Bloomberg calibrates σ to a full surface and may use time-dependent σ(t), where this tool
calibrates σ_short to one expiry/tenor point. Sweep a and the gaps trade against
each other (higher a closes the NPV gap but widens vega).
Single-point σ calibration, fixed curve as of one date, monthly tree resolution. Production
Rijeka uses live OIS bootstrapping, full vol-surface calibration with Jamshidian decomposition,
finer grids on the short end, and the calendar-rounding fix from Sprint 13B
(default delta_y = 1 day, not 1 hour — that one was a 30× bug). What you see
here is the same model and the same math, dimensioned for an interactive screen rather than
a CCP-margined desk.