Launch the interactive walkthrough to discover each component, including the 3D Q-Sphere Lab & Python in Colab.
Master combinatorial and continuous quantum optimization algorithms including QAOA and Quantum Annealing for AI training.
Interactive 3D state vector exploration, unitary transformation gates, and Born rule collapse for Topic 9.3
| Symbol / Term | Meaning | Beginner Interpretation |
|---|---|---|
| Problem Cost Hamiltonian | Diagonal Ising operator encoding the combinatorial cost to be minimized | |
| Transverse Mixer Hamiltonian | Sum of Pauli-X operators driving quantum tunneling transitions between states | |
| Variational angle parameters | Parameters tuned by classical optimizer to minimize energy expectation | |
| QAOA circuit depth / layers | Number of alternating cost-mixer layers; higher approaches optimal solution |
Solving a 2-node Max-Cut problem with cost Hamiltonian H_C = 0.5*(I - Z0 Z1) using p = 1 QAOA layer with gamma = pi/4 and beta = pi/8:
Result: QAOA achieves an 85.4% approximation ratio for the optimal cut in just 1 layer, favoring solutions and .
Encode constraints and objective functions (e.g. feature selection penalties) into matrix Q or Ising coefficients.
Apply Hadamard gates across all qubits to initialize the search state uniformly.
Apply cost Hamiltonian $e^{-i\gamma H_C}$ to encode phase penalties, followed by mixer Hamiltonian $e^{-i\beta H_M}$ to induce quantum transitions.
Measure bitstrings, compute energy expectation, and update angles $(\gamma, \beta)$ using classical gradient-free optimizers.
Problem: Selecting the best 20 features out of 500 financial indicators involves $10^{35}$ combinations.
Solution: Formulating correlation maximization and multicollinearity penalties as a QUBO solved on quantum hardware in seconds.
Problem: Traveling Salesperson and Vehicle Routing problems scale factorially with delivery destinations.
Solution: Quantum annealing schedules find near-optimal delivery paths avoiding urban congestion bottlenecks.
Interactive activity component
Formulate a 4-asset portfolio selection problem as a Quadratic Program and solve for optimal asset allocation using SamplingVQE and TwoLocal ansatz.
For Google Colab or Jupyter notebooks, run this shell command to install the required dependencies:
!pip install qiskit qiskit-finance qiskit-optimization qiskit-algorithms numpy pandas matplotlib1 import numpy as np 2 import pandas as pd 3 import matplotlib.pyplot as plt 4 from datetime import datetime 5 from qiskit_finance.data_providers import RandomDataProvider 6 from qiskit_finance.applications.optimization import PortfolioOptimization 7 from qiskit_optimization.algorithms import MinimumEigenOptimizer 8 from qiskit.primitives import Sampler 9 from qiskit.circuit.library import TwoLocal 10 from qiskit_algorithms import SamplingVQE 11 from qiskit_algorithms.optimizers import COBYLA
import numpy as np β NumPy array processing
import pandas as pd β Pandas dataframes
import matplotlib.pyplot as plt β Matplotlib for visualization
from datetime import datetime β Date time helper
from qiskit_finance.data_providers import RandomDataProvider β Financial market data provider
from qiskit_finance.applications.optimization import PortfolioOptimization β Portfolio optimization problem generator
from qiskit_optimization.algorithms import MinimumEigenOptimizer β Optimization wrapper for eigensolvers
from qiskit.primitives import Sampler β Qiskit Sampler primitive
from qiskit.circuit.library import TwoLocal β Hardware-efficient TwoLocal ansatz
from qiskit_algorithms import SamplingVQE β Sampling Variational Quantum Eigensolver
from qiskit_algorithms.optimizers import COBYLA β COBYLA classical optimizer
1 # Step 1: Generate Synthetic Financial Market Data for 4 Assets 2 num_assets = 4 3 start = datetime(2022, 1, 1) 4 end = datetime(2023, 1, 1) 5 data_provider = RandomDataProvider(tickers=['AAPL', 'GOOGL', 'MSFT', 'TSLA'], start=start, end=end, seed=42) 6 data_provider.run() 7 stock_data = data_provider.get_covariance_matrix() 8 expected_returns = np.mean(stock_data, axis=0) 9 10 # Step 2: Define Portfolio Optimization Problem (Budget = 2 assets) 11 risk_factor = 0.5 # Risk tolerance trade-off 12 budget = 2 # Select best 2 out of 4 assets 13 portfolio = PortfolioOptimization(expected_returns=expected_returns, covariances=stock_data, risk_factor=risk_factor, budget=budget) 14 quadratic_program = portfolio.to_quadratic_program() 15 16 # Step 3: Solve Using SamplingVQE and TwoLocal Ansatz 17 ansatz = TwoLocal(rotation_blocks=['ry', 'rz'], entanglement_blocks='cz') 18 optimizer = COBYLA(maxiter=100) 19 sampler = Sampler() 20 sampling_vqe = SamplingVQE(sampler=sampler, ansatz=ansatz, optimizer=optimizer) 21 qaoa = MinimumEigenOptimizer(sampling_vqe) 22 result = qaoa.solve(quadratic_program) 23 24 # Step 4: Interpret Results 25 optimal_portfolio = portfolio.interpret(result) 26 selected_assets = np.where(np.atleast_1d(optimal_portfolio) == 1)[0] 27 tickers = ['AAPL', 'GOOGL', 'MSFT', 'TSLA'] 28 selected_tickers = [tickers[i] for i in selected_assets] 29 print("Optimal Portfolio Allocation:", selected_tickers)
# Step 1: Generate Synthetic Financial Market Data for 4 Assets
Data generation
num_assets = 4
4 stock assets
start = datetime(2022, 1, 1)
Start date
end = datetime(2023, 1, 1)
End date
data_provider = RandomDataProvider(tickers=['AAPL', 'GOOGL', 'MSFT', 'TSLA'], start=start, end=end, seed=42)
Data provider
data_provider.run()
Run simulation
stock_data = data_provider.get_covariance_matrix()
Covariance matrix
expected_returns = np.mean(stock_data, axis=0)
Mean expected returns
# Step 2: Define Portfolio Optimization Problem (Budget = 2 assets)
Problem definition
risk_factor = 0.5 # Risk tolerance trade-off
Risk penalty
budget = 2 # Select best 2 out of 4 assets
Asset budget
portfolio = PortfolioOptimization(expected_returns=expected_returns, covariances=stock_data, risk_factor=risk_factor, budget=budget)
Portfolio formulation
quadratic_program = portfolio.to_quadratic_program()
Convert to Quadratic Program
# Step 3: Solve Using SamplingVQE and TwoLocal Ansatz
Quantum optimization
ansatz = TwoLocal(rotation_blocks=['ry', 'rz'], entanglement_blocks='cz')
Variational ansatz
optimizer = COBYLA(maxiter=100)
Classical optimizer
sampler = Sampler()
Sampler primitive
sampling_vqe = SamplingVQE(sampler=sampler, ansatz=ansatz, optimizer=optimizer)
SamplingVQE
qaoa = MinimumEigenOptimizer(sampling_vqe)
MinimumEigenOptimizer
result = qaoa.solve(quadratic_program)
Solve problem
# Step 4: Interpret Results
Result interpretation
optimal_portfolio = portfolio.interpret(result)
Extract binary selection
selected_assets = np.where(np.atleast_1d(optimal_portfolio) == 1)[0]
Find selected asset indices
tickers = ['AAPL', 'GOOGL', 'MSFT', 'TSLA']
Stock names
selected_tickers = [tickers[i] for i in selected_assets]
Selected tickers
print("Optimal Portfolio Allocation:", selected_tickers)
Print selected stocks
Click "Copy for Colab", open Google Colab, paste into a single cell, and run.
1 # ========================================================= 2 # Quantum Portfolio Optimization with SamplingVQE in Qiskit Finance 3 # Prepared for Google Colab (Run with Shift + Enter) 4 # ========================================================= 5 6 # Step 1: Install required packages 7 !pip install qiskit qiskit-finance qiskit-optimization qiskit-algorithms numpy pandas matplotlib 8 9 # Step 2: Import libraries 10 import numpy as np 11 import pandas as pd 12 import matplotlib.pyplot as plt 13 from datetime import datetime 14 from qiskit_finance.data_providers import RandomDataProvider 15 from qiskit_finance.applications.optimization import PortfolioOptimization 16 from qiskit_optimization.algorithms import MinimumEigenOptimizer 17 from qiskit.primitives import Sampler 18 from qiskit.circuit.library import TwoLocal 19 from qiskit_algorithms import SamplingVQE 20 from qiskit_algorithms.optimizers import COBYLA 21 22 # Step 3: Run Demonstration 23 # Step 1: Generate Synthetic Financial Market Data for 4 Assets 24 num_assets = 4 25 start = datetime(2022, 1, 1) 26 end = datetime(2023, 1, 1) 27 data_provider = RandomDataProvider(tickers=['AAPL', 'GOOGL', 'MSFT', 'TSLA'], start=start, end=end, seed=42) 28 data_provider.run() 29 stock_data = data_provider.get_covariance_matrix() 30 expected_returns = np.mean(stock_data, axis=0) 31 32 # Step 2: Define Portfolio Optimization Problem (Budget = 2 assets) 33 risk_factor = 0.5 # Risk tolerance trade-off 34 budget = 2 # Select best 2 out of 4 assets 35 portfolio = PortfolioOptimization(expected_returns=expected_returns, covariances=stock_data, risk_factor=risk_factor, budget=budget) 36 quadratic_program = portfolio.to_quadratic_program() 37 38 # Step 3: Solve Using SamplingVQE and TwoLocal Ansatz 39 ansatz = TwoLocal(rotation_blocks=['ry', 'rz'], entanglement_blocks='cz') 40 optimizer = COBYLA(maxiter=100) 41 sampler = Sampler() 42 sampling_vqe = SamplingVQE(sampler=sampler, ansatz=ansatz, optimizer=optimizer) 43 qaoa = MinimumEigenOptimizer(sampling_vqe) 44 result = qaoa.solve(quadratic_program) 45 46 # Step 4: Interpret Results 47 optimal_portfolio = portfolio.interpret(result) 48 selected_assets = np.where(np.atleast_1d(optimal_portfolio) == 1)[0] 49 tickers = ['AAPL', 'GOOGL', 'MSFT', 'TSLA'] 50 selected_tickers = [tickers[i] for i in selected_assets] 51 print("Optimal Portfolio Allocation:", selected_tickers)
Generates asset price returns and covariance matrix across AAPL, GOOGL, MSFT, and TSLA.
Formulates Markowitz portfolio selection balancing expected return against risk covariance under a budget constraint of 2 assets.
Executes SamplingVQE with TwoLocal ansatz, measuring the minimum eigenvalue bitstring that identifies the optimal assets.
4 stocks (AAPL, GOOGL, MSFT, TSLA) with risk factor 0.5 and budget 2
Optimal Portfolio Allocation: ['AAPL', 'GOOGL']
The quantum eigensolver successfully identified the optimal portfolio combination that maximizes financial returns while minimizing risk variance under budget constraints.
Asset covariance matrices, Quadratic Programming, TwoLocal ansatz, and SamplingVQE portfolio optimization.
Test your understanding with these questions. Remember, this is for learning, not examination!