Overview

Conventions

Pricing-library bugs hide in unit conventions. FerroRisk names every one on the surface so a reader of the call site can reproduce the math without reading the source.

Input units

InputDescription
time_to_expiryExpressed in years. A 30-day expiry is 30.0 / 365.0. There is no implicit calendar conversion at any pricing entry point.
rateContinuously compounded risk-free rate, as a decimal (0.05 = 5%).
dividend_yieldContinuously compounded dividend yield. For Black-76, set this to 0.0 — the model uses the risk-free rate as the effective carry term.
spotThe spot for equity-style models. For Black76, Bachelier, and DisplacedBlack it is the forward / futures reference, and dividend_yield is ignored.
volatilityAnnualized. Its meaning is model-specific: lognormal vol for the Black family, normal (price-unit) vol for Bachelier, sqrt(v0) for Heston, diffusive σ for jump-diffusion.

Greek units

GreekDescription
theta · charm · veta · colorReported per calendar day (the /365 convention), not per year — matching how a desk reads time-decay on a daily P&L.
vegaReported as raw dV/dσ, not per one volatility point. Divide by 100 at the surface for a per-vol-point figure.
rhoReported as raw dV/dr, not per basis point.
delta · gamma · vanna · volgaStandard spot sensitivities; vanna is d²V/(dS dσ) and volga (vomma) is d²V/dσ².
Note

Convert vega and rho to per-point / per-bp at the surface, not inside the engine. Keeping the engine on raw derivatives means the same numbers compose cleanly when you aggregate across a book.

Intrinsic at expiry

At exact expiry, every model returns the model-independent intrinsic value. Heston and jump-diffusion contracts at exact expiry return raw intrinsic.