PINE LIBRARY
Zaktualizowano DistributionTest

Library "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:
Core Statistical Functions:
Object-Oriented Interface:
Pine Script®
Trading Applications by Use Case:
Distribution Selection Guide:
Important Limitations:
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)
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:
import Kabua/Distributions/1 as dist
// Risk Management Examples
normal = dist.createNormal(0.0, 0.02) // 2% daily vol for basic VaR
studentt = dist.createStudentT(5.0) // Heavy-tailed returns for stress testing
var_95 = studentt.quantile(0.05) // 5% Value-at-Risk threshold
tail_risk = studentt.survival(2.0) // P(X > 2.0) extreme event probability
// Options Pricing Examples
lognormal = dist.createLogNormal(0.05, 0.2) // Stock with 5% drift, 20% vol
stock_price = lognormal.sample(1234) // Simulate future stock price
call_prob = lognormal.survival(110.0) // P(Stock > Strike) for call option
// Monte Carlo Backtesting
uniform = dist.createUniform(0.0, 1.0) // Random number generation
random_sequence = uniform.sample(1234) // Randomize trade order
// Expert Judgment Modeling
triangular = dist.createTriangular(0.8, 1.2, 1.0) // Price target: pessimistic/optimistic/most likely
expected_target = triangular.mean() // Expected price target
// Bayesian Analysis
beta = dist.createBeta(8.0, 2.0) // Success rate prior (80% hit rate)
hit_rate_sample = beta.sample(1234) // Sample hit rate for strategy
// Market Microstructure
exponential = dist.createExponential(0.1) // Trade arrival rate (10 trades/minute)
time_to_next_trade = exponential.sample(1234) // Time until next trade
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)
Informacje o Wersji
v2Biblioteka Pine
W duchu TradingView autor opublikował ten kod Pine jako bibliotekę open-source, aby inni programiści Pine z naszej społeczności mogli go ponownie wykorzystać. Brawa dla autora! Możesz używać tej biblioteki prywatnie lub w innych publikacjach open-source, ale ponowne wykorzystanie tego kodu w publikacjach podlega Zasadom Społeczności.
Wyłączenie odpowiedzialności
Informacje i publikacje przygotowane przez TradingView lub jego użytkowników, prezentowane na tej stronie, nie stanowią rekomendacji ani porad handlowych, inwestycyjnych i finansowych i nie powinny być w ten sposób traktowane ani wykorzystywane. Więcej informacji na ten temat znajdziesz w naszym Regulaminie.
Biblioteka Pine
W duchu TradingView autor opublikował ten kod Pine jako bibliotekę open-source, aby inni programiści Pine z naszej społeczności mogli go ponownie wykorzystać. Brawa dla autora! Możesz używać tej biblioteki prywatnie lub w innych publikacjach open-source, ale ponowne wykorzystanie tego kodu w publikacjach podlega Zasadom Społeczności.
Wyłączenie odpowiedzialności
Informacje i publikacje przygotowane przez TradingView lub jego użytkowników, prezentowane na tej stronie, nie stanowią rekomendacji ani porad handlowych, inwestycyjnych i finansowych i nie powinny być w ten sposób traktowane ani wykorzystywane. Więcej informacji na ten temat znajdziesz w naszym Regulaminie.