pal.stats module

Statistical utilities for actuarial loss analysis.

Provides functions for generating loss summaries, percentile calculations, and statistical analysis of frequency-severity simulation results.

pal.stats.tvar(values, p)[source]

Calculate Tail Value at Risk (TVAR) for given percentiles.

TVAR represents the expected loss above a given percentile threshold. Also known as Conditional Value at Risk (CVaR) or Expected Shortfall.

Parameters:
  • values (TypeAliasType) – Array of loss values to analyze (accepts StochasticScalar via __array__)

  • p (Union[float, int, number, list[Union[float, int, number]]]) – Percentile(s) as number or list (e.g., 95 for 95th percentile)

Return type:

Union[float, int, number, list[Union[float, int, number]]]

Returns:

TVAR value(s) corresponding to the input percentile(s)

Example

>>> import numpy as np
>>> from pal.stats import tvar
>>> losses = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9, 10])
>>> tvar(losses, 80)  # Expected loss above 80th percentile
9.0
>>> tvar(losses, [80, 90])  # Multiple percentiles
[9.0, 9.5]
>>>
>>> # Works with StochasticScalar too
>>> from pal.variables import StochasticScalar
>>> ss = StochasticScalar([1, 2, 3, 4, 5, 6, 7, 8, 9, 10])
>>> tvar(ss, 80)  # Automatic conversion via __array__()
9.0
pal.stats.loss_summary(losses)[source]

Generate summary statistics for frequency-severity losses.

Parameters:

losses (FreqSevSims) – Frequency-severity simulation results to summarize.

Return type:

dict[str, ndarray[tuple[Any, ...], dtype[floating]]]

Returns:

Dictionary containing occurrence and aggregate loss percentiles.