Function gaussian_bond_call
fn gaussian_bond_call<R: Scalar>(
params: &HullWhiteParameters<R>,
curve: &dyn YieldCurve<R>,
t: f64,
t_date: NaiveDate,
flows: &[(NaiveDate, R)],
strike: R,
mean: R,
var: R,
) -> Result<(R, R), PricingError>Expand description
(E[g], E[g′]) for the call g(x) = (Σ c_j·P(t,u_j|x) − K)⁺ on a Gaussian
factor x ~ N(mean, var), undiscounted at t.
The critical state x* solving Σ c_j P(t,u_j|x*) = K is found passively
and reattached by one Newton step in the mode, so E[g′] — whose value
moves with x* — carries its derivative too. A claim bond not decreasing
in the factor over the distribution’s support is refused: Jamshidian’s
decomposition needs one exercise boundary.