quactuary.pricing module

Pricing module for actuarial loss models.

This module provides classes to price excess loss and compute risk measures for insurance portfolios, using classical simulation methods (Monte Carlo, FFT) with optional quantum acceleration via Qiskit.

Notes

Classical methods include Monte Carlo and FFT via external libraries. Quantum acceleration uses Qiskit backends managed by BackendManager.

Examples

>>> from quactuary.pricing import ExcessLossModel, RiskMeasureModel
>>> model = ExcessLossModel(inforce, deductible=1000.0, limit=10000.0)
>>> result = model.compute_excess_loss()
class quactuary.pricing.ActuarialModel(inforce, deductible=None, limit=None, backend=None, **kw)

Bases: QuantumModelMixin

Base class for actuarial pricing models with optional quantum support.

Provides common interface for portfolio-based loss models using classical or quantum backends.

Parameters:
  • inforce (Inforce or Portfolio) – Policy inforce data.

  • deductible (Optional[float]) – Layer deductible.

  • limit (Optional[float]) – Layer limit.

  • backend (Optional[BackendManager]) – Execution backend override.

  • **kw – Additional model-specific settings.

portfolio

Wrapped inforce portfolio.

Type:

Portfolio

layer_deductible

Deductible for the layer.

Type:

Optional[float]

layer_limit

Limit for the layer.

Type:

Optional[float]

backend

Backend manager for execution.

Type:

BackendManager

__init__(inforce, deductible=None, limit=None, backend=None, **kw)

Initialize an ActuarialModel.

Parameters:
  • inforce (Inforce or Portfolio) – Policy inforce data.

  • deductible (Optional[float]) – Layer deductible.

  • limit (Optional[float]) – Layer limit.

  • backend (Optional[BackendManager]) – Execution backend.

  • **kw – Additional settings (ignored).

Raises:

TypeError – If inforce is not an Inforce or Portfolio.

class quactuary.pricing.ExcessLossModel(inforce, deductible=None, limit=None, **kw)

Bases: ActuarialModel

Pricing model for aggregate excess loss.

Computes the loss exceeding a deductible up to a layer limit for an insurance portfolio.

Parameters:
  • inforce (Inforce or Portfolio) – Portfolio data.

  • deductible (Optional[float]) – Layer deductible.

  • limit (Optional[float]) – Layer limit.

  • **kw – Additional settings.

Examples

>>> model = ExcessLossModel(inforce, deductible=1000, limit=10000)
>>> losses = model.compute_excess_loss()
compute_excess_loss(backend=None)

Compute aggregate excess loss for the portfolio.

Parameters:

backend (Optional[BackendManager]) – Execution backend override.

Returns:

Excess loss result (e.g., numeric array or DataFrame).

Return type:

Any

Raises:

NotImplementedError – Method not yet implemented.

class quactuary.pricing.RiskMeasureModel(inforce, deductible=None, limit=None, **kw)

Bases: ActuarialModel

Pricing model for risk measures (VaR, TVaR).

Computes quantile-based risk metrics for insurance portfolios, with optional quantum acceleration.

Parameters:
  • inforce (Inforce or Portfolio) – Portfolio data.

  • deductible (Optional[float]) – Layer deductible.

  • limit (Optional[float]) – Layer limit.

  • **kw – Additional settings.

Examples

>>> rm = RiskMeasureModel(inforce)
>>> var = rm.value_at_risk(alpha=0.99)
tail_value_at_risk(alpha=0.95, backend=None)

Compute the Tail Value at Risk (TVaR) at the given confidence level.

Parameters:
  • alpha (float, optional) – Confidence level (0 < alpha < 1). Defaults to 0.95.

  • backend (Optional[BackendManager]) – Execution backend override.

Returns:

Estimated TVaR value.

Return type:

float

Raises:

NotImplementedError – Method not yet implemented.

value_at_risk(alpha=0.95, backend=None)

Compute the Value at Risk (VaR) at the given confidence level.

Parameters:
  • alpha (float, optional) – Confidence level (0 < alpha < 1). Defaults to 0.95.

  • backend (Optional[BackendManager]) – Execution backend override.

Returns:

Estimated VaR value.

Return type:

float

Raises:

NotImplementedError – Method not yet implemented.