Skip to main content

black76

Function black76 

pub fn black76<R: Scalar>(
    forward: R,
    strike: f64,
    vol: R,
    expiry: f64,
    kind: OptionKind,
) -> Result<R, ModelError>
Expand description

The Black-76 forward-lognormal price, undiscounted.

omega·[F·N(omega·d1) − K·N(omega·d2)] with omega the option’s sign, which is why there is one body rather than a call formula and a put formula that have to be kept in step.

A non-positive variance is a degenerate case with an obvious answer — no optionality left means intrinsic value — and that is returned. So is a zero strike, the limit of the formula: a call is worth the forward and a put nothing (a 0% floor). A non-positive forward or a negative strike is not: see ModelError::NotLognormal.

§Errors

ModelError::NotLognormal if the forward is not strictly positive or the strike is negative.