Skip to content

Overview

Nautilus.Distributions provides 12 probability distribution families. It replaces scipy.stats for Chelis programs.

DistributionPDFCDFInverse CDFSample
Normalnormal_pdfnormal_cdfnormal_inv_cdfnormal_sample
LogNormallognormal_pdflognormal_cdflognormal_inv_cdflognormal_sample
Uniformuniform_pdfuniform_cdfuniform_inv_cdfuniform_sample
Exponentialexponential_pdfexponential_cdfexponential_inv_cdfexponential_sample
Gammagamma_pdfgamma_cdfgamma_inv_cdf
Chi-squaredchi_squared_pdfchi_squared_cdfchi_squared_inv_cdf
Student-tstudent_t_pdfstudent_t_cdf
Poissonpoisson_pmfpoisson_cdf
Binomialbinomial_pmfbinomial_cdf
Betabeta_pdfbeta_cdf
Ff_pdff_cdf
Weibullweibull_pdfweibull_cdfweibull_inv_cdf

Functions follow scipy's parameter naming:

  • Normal: (x, mean, std) not (x, mu, sigma)
  • Gamma: (x, shape, scale) not (x, shape, rate)
  • Exponential: (x, rate)
  • Chi-squared: (x, df) where df is degrees of freedom
  • Student-t: (x, df)
  • Poisson: (k, lambda) where k is the count
  • Binomial: (k, n, p) where n is trials and p is probability
  • Beta: (x, a, b) where a, b are shape parameters
  • F: (x, df1, df2)
  • Weibull: (x, shape, scale)

The four _sample functions carry the ! { Random } effect:

def normal_sample[n](template: tensor[n, f32], mean: f32, std: f32) -> tensor[n, f32] ! { Random }

The template tensor determines the output shape. The actual values in the template are ignored; only its shape is used. Sampling uses Box-Muller (Normal), inverse CDF (Exponential, LogNormal), or direct scaling (Uniform).

import Nautilus.Distributions (normal_pdf, normal_cdf, normal_inv_cdf)
import Nautilus.Distributions (gamma_cdf, student_t_cdf, chi_squared_cdf)
import Nautilus.Distributions (poisson_cdf, binomial_cdf, beta_cdf)

The most frequently used functions are normal_cdf and normal_inv_cdf, which appear in Black-Scholes pricing, Value-at-Risk computation, and hypothesis testing. gamma_cdf and student_t_cdf underpin chi-squared and t-test p-values through the Nautilus.Testing module.