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!

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

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