quant-pricer-cpp
Loading...
Searching...
No Matches
quant::bs Namespace Reference

Analytic Black–Scholes European option pricing and Greeks. More...

Classes

struct  Params
 

Functions

double call_price (const Params &p)
 
double call_price (double S, double K, double r, double q, double sigma, double T)
 Price a European call option under Black–Scholes (present value).
 
double d1 (double S, double K, double r, double q, double sigma, double T)
 
double d2 (double d1_value, double sigma, double T)
 
double delta_call (double S, double K, double r, double q, double sigma, double T)
 
double delta_put (double S, double K, double r, double q, double sigma, double T)
 
double gamma (double S, double K, double r, double q, double sigma, double T)
 
double implied_vol_call (double S, double K, double r, double q, double T, double price)
 
double implied_vol_put (double S, double K, double r, double q, double T, double price)
 
double normal_cdf (double x)
 
double normal_pdf (double x)
 
double put_price (const Params &p)
 
double put_price (double S, double K, double r, double q, double sigma, double T)
 Price a European put option under Black–Scholes (present value).
 
double reiner_rubinstein_price (OptionType opt, const BarrierSpec &barrier, double S, double K, double r, double q, double sigma, double T)
 
double rho_call (double S, double K, double r, double q, double sigma, double T)
 
double rho_put (double S, double K, double r, double q, double sigma, double T)
 
double theta_call (double S, double K, double r, double q, double sigma, double T)
 
double theta_put (double S, double K, double r, double q, double sigma, double T)
 
double vega (double S, double K, double r, double q, double sigma, double T)
 

Detailed Description

Analytic Black–Scholes European option pricing and Greeks.

Reiner–Rubinstein closed-form barrier option pricer.

Function Documentation

◆ call_price() [1/2]

double quant::bs::call_price ( const Params p)
inline

◆ call_price() [2/2]

double quant::bs::call_price ( double  S,
double  K,
double  r,
double  q,
double  sigma,
double  T 
)

Price a European call option under Black–Scholes (present value).

Parameters
Sspot price
Kstrike
rrisk-free rate (cont.)
qdividend yield (cont.)
sigmavolatility (per annum)
Ttime to expiry (years)
Returns
call option price

◆ d1()

double quant::bs::d1 ( double  S,
double  K,
double  r,
double  q,
double  sigma,
double  T 
)
inline

Helper: d1.

Parameters
Sspot price
Kstrike
rrisk-free rate (cont.)
qdividend yield (cont.)
sigmavolatility (per annum)
Ttime to expiry (years)

◆ d2()

double quant::bs::d2 ( double  d1_value,
double  sigma,
double  T 
)
inline

Helper: d2 = d1 - sigma * sqrt(T).

Parameters
d1_valuethe value of d1
sigmavolatility (per annum)
Ttime to expiry (years)

◆ delta_call()

double quant::bs::delta_call ( double  S,
double  K,
double  r,
double  q,
double  sigma,
double  T 
)

Greeks (per 1.0 change in inputs; vega per 1.0 vol unit). All Greeks returned are present-value sensitivities.

◆ delta_put()

double quant::bs::delta_put ( double  S,
double  K,
double  r,
double  q,
double  sigma,
double  T 
)

◆ gamma()

double quant::bs::gamma ( double  S,
double  K,
double  r,
double  q,
double  sigma,
double  T 
)

◆ implied_vol_call()

double quant::bs::implied_vol_call ( double  S,
double  K,
double  r,
double  q,
double  T,
double  price 
)

Implied volatility from price using a robust bracketed solver. Returns NaN if no solution is found within [1e-6, 5.0].

◆ implied_vol_put()

double quant::bs::implied_vol_put ( double  S,
double  K,
double  r,
double  q,
double  T,
double  price 
)

◆ normal_cdf()

double quant::bs::normal_cdf ( double  x)
inline

Standard normal CDF (via erfc for tail stability).

Parameters
xinput real value
Returns
$\Phi(x) = \int_{-\infty}^x \varphi(t)\,dt$.

◆ normal_pdf()

double quant::bs::normal_pdf ( double  x)
inline

Standard normal PDF.

Parameters
xinput real value
Returns
$\varphi(x) = \frac{1}{\sqrt{2\pi}} e^{-x^2/2}$.

◆ put_price() [1/2]

double quant::bs::put_price ( const Params p)
inline

◆ put_price() [2/2]

double quant::bs::put_price ( double  S,
double  K,
double  r,
double  q,
double  sigma,
double  T 
)

Price a European put option under Black–Scholes (present value).

Parameters
Sspot price
Kstrike
rrisk-free rate (cont.)
qdividend yield (cont.)
sigmavolatility (per annum)
Ttime to expiry (years)
Returns
put option price

◆ reiner_rubinstein_price()

double quant::bs::reiner_rubinstein_price ( OptionType  opt,
const BarrierSpec barrier,
double  S,
double  K,
double  r,
double  q,
double  sigma,
double  T 
)

◆ rho_call()

double quant::bs::rho_call ( double  S,
double  K,
double  r,
double  q,
double  sigma,
double  T 
)

◆ rho_put()

double quant::bs::rho_put ( double  S,
double  K,
double  r,
double  q,
double  sigma,
double  T 
)

◆ theta_call()

double quant::bs::theta_call ( double  S,
double  K,
double  r,
double  q,
double  sigma,
double  T 
)

◆ theta_put()

double quant::bs::theta_put ( double  S,
double  K,
double  r,
double  q,
double  sigma,
double  T 
)

◆ vega()

double quant::bs::vega ( double  S,
double  K,
double  r,
double  q,
double  sigma,
double  T 
)