PINE LIBRARY
ที่อัปเดต:

DistributionTest

18
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:
  • 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:
Pine Script®
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)
เอกสารเผยแพร่
v2

คำจำกัดสิทธิ์ความรับผิดชอบ

ข้อมูลและบทความไม่ได้มีวัตถุประสงค์เพื่อก่อให้เกิดกิจกรรมทางการเงิน, การลงทุน, การซื้อขาย, ข้อเสนอแนะ หรือคำแนะนำประเภทอื่น ๆ ที่ให้หรือรับรองโดย TradingView อ่านเพิ่มเติมที่ ข้อกำหนดการใช้งาน