📌 Project Overview
| Field |
Description |
| Project Name |
OptiQ-Flow |
| Tagline |
Quantum Portfolio Optimization with Error Mitigation |
| Domain |
Quantum Computing · Finance |
| License |
MIT |
| Python Version |
3.10+ |
| Quantum SDK |
Qiskit 1.x |
| UI |
Streamlit |
| Hardware |
IBM Quantum (NISQ devices) |
🚀 Overview
| Topic |
Details |
| Core Idea |
Solve portfolio optimization using quantum algorithms |
| Theory Used |
Markowitz Mean–Variance Optimization |
| Quantum Algorithm |
QAOA (Quantum Approximate Optimization Algorithm) |
| Key Challenge |
Noise on NISQ quantum hardware |
| Solution |
Dual-run QAOA with and without error mitigation |
| Output |
Quantified improvement using financial metrics |
🎯 Problem Statement
| Issue |
Explanation |
| Scaling |
Markowitz optimization scales poorly with asset count |
| Classical Limitation |
Classical solvers struggle with large constrained portfolios |
| Quantum Limitation |
Noise degrades QAOA accuracy on real hardware |
| Research Gap |
Most demos ignore hardware noise |
| OptiQ-Flow Goal |
Measure and mitigate quantum noise impact |
💡 Key Contributions
| Contribution |
Description |
| QUBO Mapping |
Converts Markowitz problem to QUBO / Ising Hamiltonian |
| Real Hardware |
Executes QAOA on IBM Quantum devices |
| Dual Execution |
Runs QAOA with and without error mitigation |
| Error Mitigation |
Readout calibration and Zero-Noise Extrapolation |
| Evaluation |
Compares against classical cvxpy baseline |
| Visualization |
Interactive Streamlit dashboard |
🧠 Solution Architecture
| Stage |
Component |
Description |
| 1 |
Market Data |
Historical or synthetic prices from Yahoo Finance |
| 2 |
Returns |
Asset return computation |
| 3 |
Covariance |
Covariance matrix estimation |
| 4 |
QUBO Model |
Mean–variance mapped to QUBO |
| 5 |
Ising Model |
QUBO converted to Ising Hamiltonian |
| 6 |
QAOA (Raw) |
Noisy execution without mitigation |
| 7 |
QAOA (Mitigated) |
Readout + ZNE applied |
| 8 |
Comparison |
Classical vs quantum results |
| 9 |
Metrics |
Sharpe ratio, accuracy, convergence |
| 10 |
Visualization |
Streamlit charts and heatmaps |
🔑 Key Takeaways
| Aspect |
Outcome |
| Architecture |
Dual-run quantum pipeline |
| Hardware |
Real NISQ execution |
| Impact |
Error mitigation improves accuracy |
| Evaluation |
Quantitative financial metrics |
| Usability |
Visual and interactive analysis |
🛠 Technology Stack
| Layer |
Tools |
Purpose |
| Quantum SDK |
Qiskit 1.x, IBM Runtime |
Circuit execution |
| Simulator |
Qiskit Aer |
Noisy & noiseless testing |
| Optimizers |
COBYLA, SLSQP |
QAOA parameter tuning |
| Classical Solver |
cvxpy |
Markowitz baseline |
| Data |
yfinance, pandas, NumPy |
Market data handling |
| Visualization |
Plotly, Matplotlib |
Graphs and heatmaps |
| Dashboard |
Streamlit |
User interface |
| Error Mitigation |
Readout calibration, ZNE |
Noise reduction |
📦 Installation
| Step |
Command |
| Clone Repo |
git clone https://github.com/your-org/optiq-flow.git |
| Enter Directory |
cd optiq-flow |
| Create Venv |
python -m venv .venv |
| Activate (Windows) |
.venv\Scripts\activate |
| Activate (macOS/Linux) |
source .venv/bin/activate |
| Install Dependencies |
pip install -r requirements.txt |
🔑 IBM Quantum Access
⚡ Quick Start (Python API)
| Step |
Description |
| 1 |
Fetch stock price data |
| 2 |
Compute returns and covariance |
| 3 |
Solve classical Markowitz |
| 4 |
Initialize QAOA optimizer |
| 5 |
Enable error mitigation |
| 6 |
Run quantum optimization |
| 7 |
Compare results |
📊 Results
| Method |
Sharpe Ratio |
Accuracy (%) |
Runtime (s) |
| Classical (cvxpy) |
1.45 |
100.0 |
0.5 |
| QAOA (No Mitigation) |
1.12 |
73.2 |
45.3 |
| QAOA (With Mitigation) |
1.38 |
94.1 |
52.7 |
🧩 Project Structure
| Path |
Description |
| README.md |
Documentation |
| requirements.txt |
Dependencies |
| config.py |
Global config |
| src/portfolio_data.py |
Data pipeline |
| src/qubo_formulation.py |
QUBO construction |
| src/qaoa_optimizer.py |
QAOA execution |
| src/error_mitigation.py |
Noise mitigation |
| src/classical_baseline.py |
Classical solver |
| src/visualization.py |
Plot utilities |
| app.py |
Streamlit app |
| notebooks/analysis.ipynb |
Experiments |
| tests/test_qaoa.py |
Unit tests |
▶️ How to Run OptiQ-Flow
| Option |
Action |
| A |
Double-click run_optiq.bat |
| B |
cd optiq_flow && streamlit run app.py |
| App Entry |
app.py |
| Platform |
Streamlit |
🔮 Future Extensions
| Area |
Extension |
| Strategy |
Dynamic rebalancing |
| Scale |
1000+ qubit devices (IBM Condor) |
| Algorithms |
VQE, ADAPT-QAOA |
| Constraints |
Transaction costs |
| Objectives |
ESG + risk-return |
📚 References
| Reference |
Description |
| Farhi et al. |
QAOA (arXiv:1411.4028) |
| Markowitz (1952) |
Portfolio Selection |
| Temme et al. (2017) |
Error Mitigation |
| IBM Qiskit Docs |
Quantum SDK reference |