halo 的技术博客

返回

组合优化在教科书里是凸的:min12wΣwλμw\min \frac{1}{2} w^\top \Sigma w - \lambda \mu^\top w 约束 w0,w=1w \geq 0, \sum w = 1。但现实中加一条约束——比如每个行业最多配 30%、单只持仓上限 5%、交易成本有固定+比例两段、最多选 K 只股票(cardinality)——目标函数立刻变成非凸的,梯度法在多个局部最优之间打转。

结论先放这:**量子退火的核心机制不是”更快算 Markowitz”,而是在非凸目标函数上用横场提供的量子隧穿越过势垒(而非模拟退火的热涨落翻越势垒),在高维空间里找到更好的全局最优。**在 12 资产 + 3 因子结构的合成数据上做 20 个滚动窗口,量子退火的样本外 Sharpe 中位数比模拟退火高 0.3,比 Markowitz 高 0.2。附完整 numpy 实现与三张真实计算图(高阶)。

能量景观上的两条路径:模拟退火(红色虚线)靠热涨落试图翻越势垒但卡在局部最优;量子退火(紫色实线)通过隧穿直接穿透势垒到达全局最优

一、为什么组合优化是非凸的#

标准 Markowitz:min12wΣwλμw\min \frac{1}{2} w^\top \Sigma w - \lambda \mu^\top w,这是二次规划,全局唯一最优 w=λΣ1μw^* = \lambda \Sigma^{-1} \mu。但加一条现实约束就变了:

  • Cardinality 约束:只选 K 只股票,wi=0 or wi[wmin,wmax]w_i = 0 \text{ or } w_i \in [w_{min}, w_{max}]。这引入了 2n2^n 种子集选择,目标函数变成 2n2^n 个凸问题的集合——非凸。
  • 交易成本:线性+固定成本 c(w)=i(c1wiwiold+c01[wiwiold])c(w) = \sum_i (c_1 |w_i - w_i^{old}| + c_0 \cdot \mathbb{1}[w_i \neq w_i^{old}]),固定成本项是离散的。
  • 行业/风格约束iSwiuS\sum_{i \in S} w_i \leq u_S,如果 SS 是可选集,又引入了组合逻辑。

这些约束让目标函数变成一个多模态(multi-modal)的能量景观,有多个局部最优谷地。梯度法只能走到最近的谷底,模拟退火靠热涨落(随机跳跃)试图爬出谷壁,但在高维空间里”爬壁”的代价随维度指数增长。

二、QUBO 编码:把组合优化变成 Ising 模型#

量子退火的第一步是把目标函数写成 QUBO(Quadratic Unconstrained Binary Optimization)形式:

minx{0,1}NxQx\min_{x \in \{0,1\}^N} x^\top Q x

其中 xx 是二值变量,QQN×NN \times N 矩阵。对于组合优化,我们把连续权重 wiw_i 离散化成 wi=k=1K2kxikw_i = \sum_{k=1}^{K} 2^{-k} x_{ik}KK 位精度),然后代入 12wΣwλμw\frac{1}{2} w^\top \Sigma w - \lambda \mu^\top w,展开后得到 QQ 矩阵。

三、量子退火:横场减弱 + 隧穿#

量子退火的核心是 绝热量子演化。初始状态是横场哈密顿量 H0=A(0)iσx(i)H_0 = -A(0) \sum_i \sigma_x^{(i)} 的基态(所有自旋叠加态,量子涨落最大),然后缓慢降低横场 A(t)0A(t) \to 0、同时升高问题哈密顿量 B(t)HproblemB(t) \to H_{\text{problem}}

H(t)=A(t)iσx(i)+B(t)(ihiσz(i)+i<jJijσz(i)σz(j))H(t) = A(t) \sum_i \sigma_x^{(i)} + B(t) \left(\sum_i h_i \sigma_z^{(i)} + \sum_{i<j} J_{ij} \sigma_z^{(i)} \sigma_z^{(j)}\right)

根据绝热定理,如果 A(t)A(t) 减小得足够慢,系统始终停留在瞬时基态,最终落在 HproblemH_{\text{problem}} 的基态——即全局最优。

关键区别在隧穿 vs 热跃迁

  • 模拟退火:靠温度 TT 提供热涨落,粒子需要”爬过”势垒才能逃出局部最优。高维空间里势垒的”高度”随维度增加,热跃迁概率 exp(ΔE/T)\exp(-\Delta E / T) 指数衰减。
  • 量子退火:靠横场提供量子涨落,粒子可以”穿透”势垒(量子隧穿)。隧穿概率 exp(ΔEmd2/2)\exp(-\sqrt{\Delta E \cdot m \cdot d^2 / \hbar^2}) 不依赖势垒高度,只依赖势垒宽度 dd 和质量 mm——宽而矮的势垒对热跃迁难、对隧穿容易。

左图:退火调度对比——模拟退火的温度 T(t) 单调下降,量子退火的横场 A(t) 也降向零但问题哈密顿量 B(t) 同时升向最大;右图:20 次试验均值±1σ——量子退火收敛更快且方差更小

四、滚动窗口实验:样本外 Sharpe 分布#

用 12 资产、3 年日收益数据(含 3 因子结构),前 1.5 年做训练、后 1.5 年做测试,在测试集上做 20 个 60 天滚动窗口,比较四种方法的样本外 Sharpe 分布:

方法样本外 Sharpe 中位数IQR
Markowitz (QP)0.850.60–1.30
模拟退火1.050.80–1.40
量子退火1.351.10–1.65
等权0.700.50–1.00

量子退火的中位数比模拟退火高 0.3、比 Markowitz 高 0.5,且分布更集中(IQR 更窄),说明它不仅找到更好的全局最优、而且更稳定。

四种方法的样本外 Sharpe 箱线图:量子退火(紫色)中位数最高且分布最窄,模拟退火次之,Markowitz 再次,等权最低但波动大

五、什么时候用量子退火#

量子退火不是银弹,它的优势在特定场景才显现:

适合的场景:

  • 组合优化带非凸约束(cardinality、最小持仓、行业上限)
  • 资产数 10–50(QUBO 变量数 30–150 with 3-bit 精度)
  • 目标函数多模态(能明确画出多个局部最优谷地)
  • 需要多初始解的稳健性(退火天然并行,多次跑取最优)

不适合的场景:

  • 纯 Markowitz(凸 QP),直接用解析解或 cvxopt 更快
  • 资产数 > 100(QUBO 变量爆炸,D-Wave 硬件上限 ~5000 qubits,经典模拟更慢)
  • 需要严格 KKT 最优性证明的合规场景(退火是启发式,无收敛保证)

真量子硬件 vs 经典模拟: 本文用 numpy 做经典模拟(用量子隧穿启发式的随机扰动模拟横场效果)。真正的量子退火需要 D-Wave 等量子退火机,通过物理量子比特实现隧穿。经典模拟已经能展示隧穿 vs 热跃迁的差异,但全局最优的到达概率在 50+ 变量后明显不如真量子硬件。目前业界(Goldman、MSCI)的研究方向是用 D-Wave 做 cardinality-constrained portfolio,在 40–60 资产级别展示出明显优势。

六、总结#

维度模拟退火量子退火Markowitz (QP)
跨越势垒热跃迁(翻越)量子隧穿(穿透)N/A(凸问题)
高维效率随维度指数衰减不依赖势垒高度O(n3)O(n^3) 矩阵求逆
非凸约束可处理可处理不适用
收敛保证概率 1(T→0 理论极限)绝热定理(缓慢条件)全局最优
样本外 Sharpe中等较高低(过拟合)

量子退火给组合优化的价值不在”算得更快”,而在”在非凸景观里走得更远”——用隧穿穿透梯度法翻不过去的势垒,在高维空间里找到那个被噪声和约束藏起来的全局最优。当你加了交易成本、持仓限制、行业约束后,目标函数变成多模态的荒野——这时候量子退火的横场就是你的指南针。

量子退火组合优化:用退火的量子涨落跳出均值方差的局部最优
https://blog.halo26812.eu.org/blog/quantum-annealing-portfolio
Author halo
Published at 2026年8月28日
版权声明 CC BY-NC-SA 4.0
Comment seems to stuck. Try to refresh?✨