Skip to content

Proposal: Liability-aware portfolio optimisation extension #731

Description

@wday0507

Hi, I’d like to check a potential extension before implementing it, to ensure it fits the library scope and would be of interest.

I’m interested in extending the current mean-variance framework to support optimisation relative to an external stochastic process, motivated by insurance / ALM-style portfolio construction.
The idea is to allow portfolio optimisation in terms of surplus dynamics relative to a liability process.

Inputs:
Consistent with the existing design, the user provides:
Assets:
returns: dataframe of asset returns / prices
Liabilities (new input)
liability_returns: dataframe of returns / prices
same time index as asset returns
represents changes in present value of liabilities over time
liabilities are treated as a stochastic return process, like a noninvestable benchmark series.

Define surplus: S(w) = w^T μ - L
where:
μ: asset returns
L: liability return process
w: portfolio weights

A mean variance formulation on surplus: max w^T μ- λ(w^T Σw-2w^T c)
where:
λ: risk aversion
Σ: asset covariance matrix
c: Cov(μ,L), asset-liability covariance matrix
This is mathematically equivalent to MVO on the surplus process itself.

Does this proposal align with the library’s scope, and would a PR of this form be of interest? I wanted to ask first before doing a deep dive into the best approach. Thanks!

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions