Skip to main content

VQE-based portfolio optimization with PennyLane

Project description

Portfolio Optimization via VQE

This package implements portfolio optimization using Variational Quantum Eigensolvers (VQE) as a clean, testable, and reusable Python library, with notebooks acting purely as clients.

Two complementary quantum formulations are provided:

  • Binary VQE — asset selection under a cardinality constraint (QUBO → Ising → VQE)
  • Fractional VQE — long-only allocation on the simplex using a constraint-preserving quantum parameterization

All core logic lives in src/vqe_portfolio/; notebooks and examples simply call the public API.


🚀 Implemented Methods

1️⃣ Binary VQE (Asset Selection)

Select exactly K assets by solving a constrained mean–variance problem:

$$ \min_{x \in {0,1}^n} ;\lambda, x^\top \Sigma x ;-;\mu^\top x ;+;\alpha(\mathbf{1}^\top x - K)^2 $$

Highlights

  • QUBO formulation mapped to an Ising Hamiltonian
  • Hardware-efficient RY + CZ ring ansatz
  • VQE minimizes ⟨H⟩ directly
  • Outputs include probabilities, samples, Top‑K projections, λ‑sweeps, and efficient frontiers

Notebook client:

  • notebooks/Binary.ipynb

2️⃣ Fractional VQE (Continuous Allocation)

Solve the long-only mean–variance problem on the simplex:

$$ \min_{w \in \Delta} ;-\mu^\top w + \lambda, w^\top \Sigma w \quad\text{with}\quad \Delta={w\ge0,\sum_i w_i=1} $$

Highlights

  • Simplex constraint enforced by construction
  • No penalty tuning required
  • Smooth λ‑sweeps with optional warm starts
  • Efficient frontier computed from allocations

Notebook clients:

  • notebooks/Fractional.ipynb
  • notebooks/examples/Real_Example.ipynb

📦 Installation

Base install (quantum algorithms only):

pip install vqe-portfolio

With real market data utilities:

pip install "vqe-portfolio[data]"

With classical Markowitz baseline:

pip install "vqe-portfolio[markowitz]"

For development:

pip install -e ".[dev]"

🗂 Repository Structure

src/
└── vqe_portfolio/
    ├── binary.py        # Binary VQE (QUBO / Ising formulation)
    ├── fractional.py    # Fractional VQE (simplex parameterization)
    ├── frontier.py      # Efficient frontier utilities
    ├── ansatz.py        # Shared circuit ansätze
    ├── optimize.py      # Optimizer loops
    ├── metrics.py       # Risk / return utilities
    ├── plotting.py      # Centralized plotting helpers
    ├── data.py          # Market data utilities
    └── types.py         # Dataclasses for configs & results

notebooks/
├── Binary.ipynb
├── Fractional.ipynb
├── examples/
│   └── Real_Example.ipynb
└── images/

📖 Usage

See USAGE.md for:

  • Minimal API examples
  • Synthetic-data quickstart
  • Real‑data workflows
  • λ‑sweeps and efficient frontiers

📚 Additional Documentation


🧠 Why This Matters

This project demonstrates:

  • Mapping financial optimization problems to quantum Hamiltonians
  • Clean constraint handling (cardinality vs simplex)
  • A strict separation between research code and experiment clients
  • Reproducible hybrid quantum–classical workflows
  • Production‑grade packaging and CI for quantum algorithms

🧾 References


Author: Sid Richards GitHub: @SidRichardsQuantum MIT License — see LICENSE

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

vqe_portfolio-0.1.0.tar.gz (16.9 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

vqe_portfolio-0.1.0-py3-none-any.whl (16.9 kB view details)

Uploaded Python 3

File details

Details for the file vqe_portfolio-0.1.0.tar.gz.

File metadata

  • Download URL: vqe_portfolio-0.1.0.tar.gz
  • Upload date:
  • Size: 16.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.1

File hashes

Hashes for vqe_portfolio-0.1.0.tar.gz
Algorithm Hash digest
SHA256 168456fa569550fb101143b2a09ad1564b5d5b8a39364caaee941f811a9b9dc9
MD5 6f90d4998ec3c71075242462fcbedea4
BLAKE2b-256 8b723e769d68095e95b301e8b8f96dfa80000d3da684f6a76f22885e50d1e9bb

See more details on using hashes here.

File details

Details for the file vqe_portfolio-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: vqe_portfolio-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 16.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.1

File hashes

Hashes for vqe_portfolio-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 df1c84311fd8c761fc6da7450e9338582b95eac49b5c657f659df79eced3b979
MD5 73ccfd29f11e5c7c5bacacb279d76e9d
BLAKE2b-256 50742834d2006972b886de978f39a69defe2b331a8086e0911ebb3aa23469c0e

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page