DistributionTest

Comprehensive statistical distribution library for quantitative finance and trading applications.
Provides complete statistical functions including PDF, CDF, quantile (inverse CDF), survival functions, random sampling, and moment calculations for essential probability distributions.
All code has been verified (using AI) against authoritative mathematical sources, including:
- Wikipedia: en.wikipedia.org
- Wolfram MathWorld: mathworld.wolfram.com
- All formulas have been cross-validated for mathematical accuracy.
See: Distributions.UTests [Kabua] for extensive unit tests covering all functions and edge cases.
Supported Distributions:
- Normal: Gaussian distribution with mean (μ) and standard deviation (σ) - Foundation of MPT, CAPM, and traditional risk models (assumptions often violated by fat tails)
- Uniform: Continuous uniform distribution over [min, max] interval - Essential for Monte Carlo simulations and random sampling in trading systems
- Triangular: Triangular distribution with min, max, and mode parameters - Expert judgment modeling with optimistic/pessimistic/most likely scenarios
- Beta: Beta distribution with shape parameters α and β over [0,1] interval - Bayesian finance, mean reversion modeling, and proportion parameters (hit rates, portfolio weights)
- Log-Normal: Log-normal distribution for positive values (stock prices, volatility) - Black-Scholes options pricing foundation, ensures non-negative asset prices
- Student's t: Heavy-tailed distribution with degrees of freedom parameter - Heavy-tail VaR calculations, superior for extreme risk at >98.5% confidence levels
- Laplace: Double exponential distribution with location and scale parameters - Volatility modeling with sharp peaks and heavy tails for market regime changes
- Exponential: Exponential distribution for time-to-event modeling - Time-to-event modeling for trade duration and market microstructure analysis
- Gamma: Gamma distribution for extreme values and waiting times - Operational risk, aggregate loss modeling, and flexible skewed phenomena
Core Statistical Functions:
- PDF: Probability density function - likelihood of specific values
- CDF: Cumulative distribution function - probability of values ≤ x
- Quantile: Inverse CDF - critical for Value-at-Risk (VaR) calculations
- Survival: Tail probability function - probability of values > x
- Sample: Random number generation for Monte Carlo simulations
- Moments: Mean, variance, skewness, kurtosis for distribution characterization
Object-Oriented Interface:
Trading Applications by Use Case:
- Options Pricing: Log-Normal (Black-Scholes foundation)
- Risk Management: Student's t (VaR), Normal (traditional), Laplace (regime changes)
- Monte Carlo Simulation: Uniform (random generation), Normal (baseline scenarios)
- Uncertainty Modeling: Triangular (expert judgment), Beta (Bayesian priors)
- Market Microstructure: Exponential (trade timing), Gamma (event clustering)
- Portfolio Theory: Normal (MPT), Beta (mean reversion), Log-Normal (growth)
Distribution Selection Guide:
- Need non-negative values? → Log-Normal, Exponential, Gamma
- Modeling extreme events? → Student's t, Laplace, Gamma
- Expert judgment with bounds? → Triangular, Beta
- Traditional finance models? → Normal (with caveats)
- Random sampling/simulation? → Uniform (foundation)
- Time-to-event modeling? → Exponential, Gamma
- Bayesian analysis? → Beta, Normal (conjugate priors)
Important Limitations:
- Normal Distribution: Severely underestimates tail risk, assumes symmetric returns
- Log-Normal: Cannot model negative returns, assumes constant volatility
- Student's t: Symmetric (no skewness), infinite variance for low df
- Uniform: Unrealistic for actual return modeling, simulation foundation only
- Beta: Bounded to [0,1], may need scaling for real-world applications
- Triangular: Limited flexibility, requires expert bounds estimation
- Laplace: Sharp peak assumption may not fit all return distributions
- Exponential: Memoryless property may not reflect market clustering
- Gamma: Complex parameterization, may require calibration
createNormal(mu, sigma)
Create Normal distribution N(μ, σ²)
Parameters:
mu (float): Mean parameter (location)
sigma (float): Standard deviation parameter (scale > 0)
Returns: Distribution Normal distribution instance
createUniform(min, max)
Create Uniform distribution U(min, max)
Parameters:
min (float): Minimum value (lower bound)
max (float): Maximum value (upper bound > min)
Returns: Distribution Uniform distribution instance
createTriangular(min, max, mode)
Create Triangular distribution
Parameters:
min (float): Minimum value (lower bound)
max (float): Maximum value (upper bound > min)
mode (float): Mode value (min ≤ mode ≤ max)
Returns: Distribution Triangular distribution instance
createBeta(alpha, beta)
Create Beta distribution Beta(α, β)
Parameters:
alpha (float): First shape parameter (α > 0)
beta (float): Second shape parameter (β > 0)
Returns: Distribution Beta distribution instance
createLogNormal(mu, sigma)
Create Log-Normal distribution
Parameters:
mu (float): Mean of underlying normal distribution (location)
sigma (float): Standard deviation of underlying normal distribution (scale > 0)
Returns: Distribution Log-Normal distribution instance
createStudentT(nu)
Create Student's t-distribution
Parameters:
nu (float): Degrees of freedom (ν > 0)
Returns: Distribution Student's t-distribution instance
createLaplace(mu, b)
Create Laplace distribution (Double Exponential)
Parameters:
mu (float): Location parameter (mean)
b (float): Scale parameter (b > 0)
Returns: Distribution Laplace distribution instance
createExponential(lambda)
Create Exponential distribution
Parameters:
lambda (float): Rate parameter (λ > 0)
Returns: Distribution Exponential distribution instance
createGamma(alpha, beta)
Create Gamma distribution
Parameters:
alpha (float): Shape parameter (α > 0)
beta (float): Scale parameter (β > 0)
Returns: Distribution Gamma distribution instance
method pdf(this, x)
Probability density function (polymorphic dispatch)
Namespace types: Distribution
Parameters:
this (Distribution): Distribution instance
x (float): Value to evaluate
Returns: float PDF value f(x)
method cdf(this, x)
Cumulative distribution function (polymorphic dispatch)
Namespace types: Distribution
Parameters:
this (Distribution): Distribution instance
x (float): Value to evaluate
Returns: float CDF value P(X ≤ x)
method quantile(this, p)
Quantile function - inverse CDF (polymorphic dispatch)
Namespace types: Distribution
Parameters:
this (Distribution): Distribution instance
p (float): Probability (0 < p < 1)
Returns: float Quantile value x such that P(X ≤ x) = p
method survival(this, x)
Survival function (polymorphic dispatch)
Namespace types: Distribution
Parameters:
this (Distribution): Distribution instance
x (float): Value to evaluate
Returns: float Survival value P(X > x) = 1 - F(x)
method sample(this, seed)
Random sampling (polymorphic dispatch)
Namespace types: Distribution
Parameters:
this (Distribution): Distribution instance
seed (int): Random seed for deterministic output
Returns: float Random sample from distribution
method mean(this)
Distribution mean (polymorphic dispatch)
Namespace types: Distribution
Parameters:
this (Distribution): Distribution instance
Returns: float Expected value E[X]
method variance(this)
Distribution variance (polymorphic dispatch)
Namespace types: Distribution
Parameters:
this (Distribution): Distribution instance
Returns: float Variance Var[X]
method stddev(this)
Distribution standard deviation (polymorphic dispatch)
Namespace types: Distribution
Parameters:
this (Distribution): Distribution instance
Returns: float Standard deviation σ = √Var[X]
method skewness(this)
Distribution skewness (polymorphic dispatch)
Namespace types: Distribution
Parameters:
this (Distribution): Distribution instance
Returns: float Skewness coefficient
method kurtosis(this)
Distribution kurtosis (polymorphic dispatch)
Namespace types: Distribution
Parameters:
this (Distribution): Distribution instance
Returns: float Kurtosis coefficient
method testProperties(this, numSamples, seed)
Test statistical properties of a distribution
Namespace types: Distribution
Parameters:
this (Distribution): Distribution instance
numSamples (int): Number of samples to generate (default: 1000)
seed (int): Random seed for reproducible tests (default: 9999)
Returns: string Statistical summary for validation
Distribution
Distribution Core statistical distribution with polymorphic interface
Fields:
distributionType (series DistributionType): Type of statistical distribution
param1 (series float): First parameter (μ for Normal/LogNormal, min for Uniform/Triangular, α for Beta, ν for StudentT, μ for Laplace, λ for Exponential, α for Gamma)
param2 (series float): Second parameter (σ for Normal/LogNormal, max for Uniform/Triangular, β for Beta/Gamma, b for Laplace, unused for StudentT/Exponential)
param3 (series float): Third parameter (mode for Triangular, unused for others)
Perpustakaan Pine
Dalam semangat sebenar TradingView, penulis telah menerbitkan kod Pine ini sebagai perpustakaan sumber terbuka supaya pengaturcara Pine lain dari komuniti kami boleh menggunakannya semula. Sorakan kepada penulis! Anda juga boleh menggunakan perpustakaan ini secara peribadi atau dalam penerbitan sumber terbuka lain, tetapi penggunaan semula kod ini dalam penerbitan adalah tertakluk kepada Peraturan Dalaman.
Penafian
Perpustakaan Pine
Dalam semangat sebenar TradingView, penulis telah menerbitkan kod Pine ini sebagai perpustakaan sumber terbuka supaya pengaturcara Pine lain dari komuniti kami boleh menggunakannya semula. Sorakan kepada penulis! Anda juga boleh menggunakan perpustakaan ini secara peribadi atau dalam penerbitan sumber terbuka lain, tetapi penggunaan semula kod ini dalam penerbitan adalah tertakluk kepada Peraturan Dalaman.