Finance and trading
Portfolio optimisation: QAOA against the provable optimum
Choose exactly k assets from a universe of N to minimise risk against expected return. It is the Markowitz objective under a cardinality constraint, it is what a desk actually faces when a mandate caps the number of holdings, and unlike the unconstrained continuous version it is genuinely hard.
The problem
Minimise x'Sx - lambda*mu'x over binary x with exactly k assets selected, where S is the covariance matrix and mu the vector of expected excess returns. The binary selection is what makes this NP-hard in general: the continuous version has a closed-form solution and needs no quantum computer, or indeed any solver.
Instances come from a seeded single-factor market model, so every asset loads on a common factor plus idiosyncratic noise, which reproduces the correlation structure real equity covariance has rather than an unrealistic random matrix. Seed 20260902, lambda = 1.0.
The classical baseline
Exhaustive enumeration of every k-subset. This is deliberately the strongest possible baseline rather than a heuristic: it returns the provable optimum, so the quantum method is measured against the best answer that exists. It also yields the full distribution of feasible portfolios, which lets us score the quantum result on a scale that stays meaningful when the optimum sits near zero.
The quantum method
QAOA at depth p = 1, 2 and 3, with the cardinality constraint imposed as a quadratic penalty, run on our exact statevector engine at 512 shots. Variational parameters were optimised by COBYLA with three restarts of 150 iterations each. Every circuit evaluation inside that loop is counted below, because the optimiser is the real cost of a variational algorithm and a benchmark that reports only the final circuit understates it by two orders of magnitude.
Results
Measured 2 September 2026. norm is where the answer sits between the best and worst feasible portfolio, so 0.0000 is the optimum. beats is the percentage of all feasible portfolios it beats.
| N | k | p | Portfolios | Classical | Time | QAOA | Time | Evals | norm | beats |
|---|---|---|---|---|---|---|---|---|---|---|
| 10 | 3 | 1 | 120 | -0.174716 | 0.001 s | -0.122069 | 6.2 s | 50 | 0.0772 | 98.3% |
| 10 | 3 | 2 | 120 | -0.174716 | 0.002 s | -0.174716 | 15.5 s | 109 | 0.0000 | 99.2% |
| 10 | 3 | 3 | 120 | -0.174716 | 0.002 s | -0.174716 | 22.5 s | 141 | 0.0000 | 99.2% |
| 12 | 4 | 1 | 495 | 0.199796 | 0.006 s | 0.201031 | 11.2 s | 80 | 0.0017 | 99.6% |
| 12 | 4 | 2 | 495 | 0.199796 | 0.006 s | 0.199796 | 18.2 s | 113 | 0.0000 | 99.8% |
| 12 | 4 | 3 | 495 | 0.199796 | 0.011 s | 0.201031 | 26.5 s | 158 | 0.0017 | 99.6% |
| 14 | 4 | 1 | 1,001 | 0.000495 | 0.007 s | 0.000495 | 10.2 s | 78 | 0.0000 | 99.9% |
| 14 | 4 | 2 | 1,001 | 0.000495 | 0.007 s | 0.000495 | 16.5 s | 110 | 0.0000 | 99.9% |
| 14 | 4 | 3 | 1,001 | 0.000495 | 0.006 s | 0.038520 | 31.8 s | 157 | 0.0427 | 99.8% |
| 16 | 5 | 1 | 4,368 | -0.016267 | 0.056 s | 0.191132 | 15.4 s | 85 | 0.0995 | 99.7% |
| 16 | 5 | 2 | 4,368 | -0.016267 | 0.054 s | 0.191658 | 23.1 s | 106 | 0.0997 | 99.6% |
| 16 | 5 | 3 | 4,368 | -0.016267 | 0.062 s | -0.016267 | 38.1 s | 153 | 0.0000 | 100.0% |
What the numbers say
QAOA found the provable optimum in 6 of 12 runs, and in every single run it returned a portfolio in the top 2 percent of all feasible portfolios. As a heuristic it works.
It is also roughly a thousand times slower. At N = 16 exhaustive enumeration returns the proven optimum in 0.06 seconds. QAOA takes 15 to 38 seconds and between 85 and 153 circuit evaluations to reach an answer that is sometimes optimal and sometimes 10 percent of the way toward the worst portfolio available.
And it cannot prove anything. This is the distinction that matters most for a mandate. Enumeration returns the optimum and a proof that nothing better exists. QAOA returns a good portfolio with no certificate of optimality, so a risk committee asking "is this the best allocation available" gets an answer from one method and a shrug from the other.
Depth did not reliably help. Higher p contains lower p as a special case, so p = 3 scoring worse than p = 2 at N = 12 and N = 14 is the classical optimiser failing to converge in a larger parameter space, not a property of the algorithm. That fragility is itself a finding: QAOA quality here is governed by parameter optimisation rather than by circuit depth.
Where the classical method stops
The interesting question is not who wins at N = 16, because classical wins decisively. It is how far enumeration goes before it becomes impossible.
| Universe | Portfolios to check | Enumeration time |
|---|---|---|
| N = 30, k = 8 | 5,852,925 | 0.59 s |
| N = 40, k = 10 | 847,660,528 | 1.4 min |
| N = 50, k = 12 | 121,399,651,100 | 3.4 h |
| N = 60, k = 15 | 53,194,089,192,720 | 62 days |
| N = 80, k = 20 | 3.5 x 10^18 | 11,000 years |
Estimated at 10 million subset evaluations per second.
The honest caveat, and it is a large one
Enumeration dying around N = 50 does not mean quantum computing has an opening at N = 50. No desk enumerates. Production practice is mixed-integer quadratic programming with branch and bound, which prunes the search tree and handles universes in the hundreds or thousands routinely, returning either the optimum or a bound on how far from it you are.
We use enumeration here precisely because it proves optimality at sizes we can also run on a quantum engine, which makes the comparison exact. The real classical frontier sits far beyond it. Any argument that quantum computing is about to become useful for portfolio construction has to beat Gurobi or CPLEX at N in the hundreds, not enumeration at N = 50.
Meanwhile the quantum side has its own ceiling. QAOA at N = 50 needs 50 qubits, which is past exact statevector simulation, and hardware at that width today carries error rates that would swamp the objective differences we are resolving here at the fifth decimal place.
What would have to change
For this to become a real decision rather than an experiment, three things need to happen together: hardware wide enough for the universe you actually trade, error rates low enough that the objective function survives the circuit, and a parameter optimisation strategy that does not degrade as the problem grows. None of the three is close today, and the third is a software problem that could be solved before the hardware arrives.
The number to watch is not qubit count. It is two-qubit gate fidelity, because that is what determines whether a deep enough QAOA circuit returns signal or noise. On that measure the field has moved: the best reported two-qubit fidelity is now 99.99 percent, and 96 logical qubits have been demonstrated from 448 physical ones.
Even so, more qubits alone do not produce a win here, and this is the part worth being clear about. The 2029 roadmaps target hundreds of logical qubits, which would allow QAOA on a few hundred assets. A few hundred assets is a size mixed-integer solvers handle comfortably today. Unlike chemistry, where the classical cost grows exponentially and hardware progress eventually crosses it, portfolio optimisation has a classical method that scales with the problem. The quantum side has to overtake a moving target rather than a stationary one.
For context: where the hardware actually is
Gaps on this page are quoted against the devices ZKSF can run, which are Amazon Braket’s public processors. That is not the frontier. Quantinuum, IBM, QuEra and Atom Computing are not resellable through us, and their machines are considerably further along. As of September 2026:
Physical qubits built
| Infleqtion Sqale | 1,600 | Neutral atom |
| Atom Computing | 1,180 | Neutral atom, 1,225 sites |
| IBM Condor | 1,121 | Superconducting, 2023 |
| IBM Heron R2 | 156 | Superconducting, ~99.5% two-qubit fidelity |
| Rigetti Cepheus | 108 | The largest available through ZKSF |
Two-qubit gate fidelity
The number that actually governs what a circuit can do.
| IonQ | 99.99% | Trapped ion, first past four nines |
| Silicon Quantum Computing | 99.99% | Silicon spin |
| Quantinuum | 99.97% | Trapped ion, all-to-all |
| IQM | 99.91% | Superconducting, available through ZKSF |
Logical qubits demonstrated
Published results, not roadmap targets.
| QuEra | 96 logical / 448 physical | Neutral atom |
| Quantinuum | 48 logical / 98 physical | Trapped ion, iceberg code |
| Atom Computing | 24 logical | On the 1,180-qubit system |
| 1 logical / 105 physical | Surface code, below threshold |
Announced roadmap
Targets. Roadmaps slip, and these are not results.
| Quantinuum Sol, 2027 | 192 physical, ~100 logical | Iceberg code, distance 2. Error detection with postselection, not correction |
| IBM Starling, 2029 | ~200 logical | Bivariate bicycle qLDPC, 100 million gates |
| Quantinuum Apollo, 2029 | hundreds of logical | Thousands of physical, logical error 1e-6 or better |
Run this on your own universe.
Load the QAOA template into the console, replace the instance with your own covariance and returns, and export a certificate for your own run. The estimate is free and shows the cost before anything executes.
Related reading: QAOA explained, QAOA at 100 qubits, and what a quantum run actually costs.