• Finance

Standard Life Aberdeen: Quantum Monte Carlo for Actuarial Modelling

Standard Life Aberdeen (abrdn)

abrdn explored quantum amplitude estimation as an alternative to classical Monte Carlo for long-horizon actuarial liability modelling, targeting quadratic speedup in mortality and longevity risk quantification.

Key Outcome
Quantum amplitude estimation circuits demonstrated theoretically quadratic convergence for simple actuarial models on 20 qubits, with error bounds comparable to 10,000-sample classical Monte Carlo using 100 quantum samples.

The Challenge

Actuarial liability modelling underpins the financial management of life insurance and pension products. For a portfolio of policies, the insurer must estimate the present value of future benefit payments, accounting for uncertain future mortality rates, interest rate evolution, and policyholder behaviour such as lapses and annuity take-up. These estimates determine capital reserves held against liabilities under Solvency II regulations.

The central computational challenge is that the key quantities (best-estimate liabilities, solvency capital requirements) are expectations over high-dimensional stochastic processes. Mortality rates evolve stochastically under models such as the Lee-Carter or Cairns-Blake-Dowd frameworks. Interest rates follow their own stochastic dynamics. Policyholder behaviour adds further stochastic dimensions. Computing expectations over the joint distribution requires Monte Carlo simulation, typically with 10,000 to 100,000 scenarios to achieve sub-1% estimation error.

For abrdn’s pension and life assurance business, running full Monte Carlo liability valuations for all products takes several hours of compute time per quarterly valuation cycle. Regulatory stress testing (running valuations under hundreds of adverse scenarios to compute solvency capital) amplifies this cost further. abrdn’s quantitative research team investigated whether quantum amplitude estimation could provide a quadratic speedup in the number of simulation scenarios required, reducing the Monte Carlo sample count by an order of magnitude for the same estimation accuracy.

The Quantum Approach

Quantum amplitude estimation (QAE) computes expectations of the form E[f(X)]E[f(X)] where XX follows a known probability distribution. The quantum circuit encodes the distribution P(X)P(X) as a quantum state and the function f(X)f(X) as a controlled rotation, such that the amplitude of a target state equals E[f(X)]\sqrt{E[f(X)]}. Measuring this amplitude via quantum phase estimation achieves error O(1/N)O(1/N) in the number of circuit evaluations, versus O(1/N)O(1/\sqrt{N}) classically.

For the actuarial application, a simplified liability model was implemented: a single cohort of policyholders with stochastic mortality following a discretised Gompertz model and deterministic interest rates. The present value of future payments was the target expectation. Qiskit Finance’s AmplitudeEstimator was adapted for the actuarial setting.

import numpy as np
from qiskit.circuit import QuantumCircuit
from qiskit_algorithms import IterativeAmplitudeEstimation, EstimationProblem
from qiskit.primitives import Sampler

def build_mortality_distribution_circuit(
    age: int,
    n_years: int,
    n_qubits: int,
    gompertz_alpha: float = 0.0001,
    gompertz_beta: float = 0.09,
) -> QuantumCircuit:
    """
    Encode discretised survival probabilities into a quantum state.
    Each qubit string represents a possible death year.
    Returns a circuit preparing the mortality distribution state.
    """
    n_states = 2 ** n_qubits

    # Compute survival probability for each year
    survival_probs = []
    p_alive = 1.0
    for t in range(n_years):
        q_t = gompertz_alpha * np.exp(gompertz_beta * (age + t))
        q_t = min(q_t, 1.0)
        p_die_at_t = p_alive * q_t
        survival_probs.append(p_die_at_t)
        p_alive *= (1.0 - q_t)
    survival_probs.append(p_alive)  # survive to end of horizon

    # Normalise to n_states (truncate or pad)
    probs = np.array(survival_probs[:n_states])
    probs = probs / probs.sum()
    amplitudes = np.sqrt(probs)

    qc = QuantumCircuit(n_qubits)
    qc.initialize(amplitudes, list(range(n_qubits)))
    return qc

def build_pv_rotation_circuit(
    n_qubits: int,
    annual_benefit: float,
    discount_rate: float,
    n_years: int,
) -> QuantumCircuit:
    """
    Apply controlled Ry rotations encoding present value of payment
    conditional on death year encoded in the state register.
    """
    qc = QuantumCircuit(n_qubits + 1)  # ancilla for value encoding
    for t in range(min(n_years, 2 ** n_qubits)):
        pv = annual_benefit / ((1 + discount_rate) ** t)
        pv_normalised = pv / (annual_benefit * n_years)  # normalise to [0,1]
        theta = 2 * np.arcsin(np.sqrt(pv_normalised))
        # Controlled on |t> state - simplified as individual Ry for demonstration
        qc.ry(theta, n_qubits)
    return qc

# Parameters: 65-year-old cohort, 20-year horizon, 6 distribution qubits
AGE = 65
N_YEARS = 20
N_QUBITS = 6
ANNUAL_BENEFIT = 10000  # GBP
DISCOUNT_RATE = 0.04

distribution_circuit = build_mortality_distribution_circuit(
    age=AGE, n_years=N_YEARS, n_qubits=N_QUBITS
)

# Estimation problem: estimate E[PV of benefits] via amplitude estimation
problem = EstimationProblem(
    state_preparation=distribution_circuit,
    objective_qubits=list(range(N_QUBITS)),
)

# Iterative QAE: achieves O(1/epsilon) circuit evaluations vs O(1/epsilon^2) classical
sampler = Sampler()
iae = IterativeAmplitudeEstimation(
    epsilon_target=0.01,  # 1% estimation error target
    alpha=0.05,           # 95% confidence
    sampler=sampler,
)

result = iae.estimate(problem)
estimated_prob = result.estimation
print(f"Estimated survival-weighted PV factor: {estimated_prob:.4f}")
print(f"Circuit evaluations used: {result.num_oracle_queries}")
print(f"Classical MC equivalent would need: ~{int(1/(0.01**2))} samples")

The quantum QAE circuit was benchmarked against classical Monte Carlo on identical mortality models, comparing the number of model evaluations required to achieve 1% estimation error at 95% confidence.

Results and Implications

On the 20-qubit circuit, iterative QAE demonstrated convergence behaviour consistent with the theoretical O(1/ϵ)O(1/\epsilon) query complexity. To achieve 1% estimation error at 95% confidence, QAE used approximately 100 quantum circuit evaluations, while classical Monte Carlo required 10,000 samples for the same error and confidence level. This is a 100-fold reduction in model evaluations, matching the theoretical quadratic speedup.

The study established a clear proof-of-principle for actuarial applications, though abrdn’s team identified three conditions required for practical deployment. First, the mortality model must be discretised to fit quantum state preparation constraints, introducing approximation error that must be characterised for each product type. Second, current quantum hardware noise degrades the QAE convergence advantage; the 100x speedup was demonstrated in idealised simulation, with hardware noise on IBM Quantum reducing the effective speedup to approximately 8x on 20 qubits. Third, multi-dimensional models incorporating stochastic interest rates require additional qubits proportional to the interest rate discretisation, pushing hardware requirements to 50 to 80 logical qubits for commercially relevant liability models.

abrdn identified longevity swap valuation (a specific product where quantum speedup survives realistic hardware noise better than general liability models) as the most promising near-term application, and is collaborating with IBM to develop fault-tolerant implementations targeting a 10x wall-clock speedup for quarterly reserve calculations within this decade.