描述一个粒子同时处于两个位置的同一数学原理,也可以描述一个投资组合同时处于两种状态。本文展示了如何将量子力学的结构转化为一个自主交易 Agent——同样重要的是,指出了这个类比在何处停止真实、开始成为营销。

1. 为什么是量子,以及为什么是现在
全球每一家对冲基金都在把同样的三个想法磨成灰:动量、均值回归,以及某种对订单流进行机器学习的方法。优势在持续缩小,因为大家共享的市场模型是相同的——一个经典模型,其中价格是单一数字,未来是单一噪声路径。
量子力学提供了一种不同的数据模型。量子系统从不处于单一状态。它同时处于所有可能状态的叠加态,每个状态都带有一个复杂的概率幅。这恰好是对你下注前的市场的一个惊人精确的描述:资产同时上涨、下跌和横盘,每个结果都有一个概率权重,直到你的订单迫使现实选择其中一个。
这是大多数文章跳过的地方,所以我先摆明。你不需要物理量子计算机来做任何这些,而且接下来大部分内容并非字面意义上的量子。 它是量子启发式的:借用量子力学数学结构——状态向量、复数幅度、哈密顿量、退火、干涉——的经典算法,运行在你已有的 GPU 上。价值在于结构,而非量子比特。诚实地区分这一点,才是区分可用框架和流行语的关键。
银行和量化机构——其中包括高盛、摩根大通、汇丰银行以及 Multiverse Computing 等专业公司——已经积极研究并发表了关于量子及量子启发式方法在衍生品定价、蒙特卡洛风险和投资组合优化方面的成果。理论是公开的。但几乎没有人写过如何将其接入一个自主 Agent——一个能够自主感知、决策、执行和学习的系统。这正是我们在这里要构建的。
2. 量子到市场的映射字典
在写任何代码之前,你需要映射关系。以下每个量子概念都有精确的交易类比。将本节视为后续所有内容的概念契约。
概率幅映射到信心——但带有相位。 经典概率只是非负数。量子幅度是复数:每个幅度都带有一个大小和一个相位角。相位是整个升级。它让两个看涨信号可以相消干涉并抵消,或者让两个微弱信号相长干涉变成一个强信号。一个平均正概率的经典集成无法物理上做到这一点——它最多只能稀释。相位让信号能够主动否决彼此。
纠缠映射到无法分解的关联。 当两个资产作为一个联动机制运行时——比如一个主流币及其带动流动性的模因币——你无法诚实地描述其中一个而不提另一个。Agent 将这种关联编码为一种不可分离的状态,这捕捉了机制联动的关系,而静态相关矩阵往往会低估这种关系,尤其是在尾部。
哈密顿量映射到你的风险/收益成本函数。 在物理学中,哈密顿量 H 编码了系统的能量。在交易中,你将你的目标——最大化预期收益、最小化方差、遵守仓位和预算限制——编码为一个能量景观。最优投资组合就是基态:H 的最低能量配置。投资组合构建变成了一个能量最小化问题,这是一个研究非常充分的问题。
测量与坍缩映射到执行。 在你发送订单的那一刻,叠加态坍缩到一个已实现的结果。Agent 真正的工作是选择何时以及测量什么,以便坍缩倾向于落在一个有利可图的配置上。甚至还有一个类似海森堡原则的固有风险原则:你不能同时以无限精度确定一个仓位的精确价格和精确动量。对其中一个要求更多确定性,就会在另一个上付出代价。这是一个类比,不是金融定律——但它是一个有用的类比,稍后会转化为一个具体的仓位大小规则。

3. 量子交易 Agent 的架构
Agent 是一个由六个模块组成的闭环。附件中的架构图显示了完整周期;以下是每个阶段的作用。

1. 感知。 摄入原始市场数据——订单簿、OHLCV、资金费率、链上流量。将其归一化为特征向量 x。这是常规的量化管道;还没有量子部分。
3. 哈密顿量构建器。 将你的风险/收益目标加上约束转化为一个 QUBO / Ising 哈密顿量 H。预算限制、风险厌恶和预期收益在这里被烘焙成能量景观。
4. 量子启发式求解器。 通过模拟退火、模拟器上的 QAOA 电路或张量网络求解器找到 H 的基态——最优资产选择。这个模块就是你的投资组合优化器,并且它是故意可替换的。
5. 通过测量决策。 将状态坍缩为具体仓位和大小,并采用海森堡式规则在不确定性高时缩小敞口。
6. 执行与反馈。 路由订单,观察已实现盈亏,并更新幅度。测量结果成为明天的先验——一个让 Agent 能够适应而不是运行冻结策略的强化循环。
4. 代码:将市场编码为量子态
我们将使用 numpy 进行状态数学运算,并依赖 qiskit / pennylane 的惯例来处理量子启发式部分。这里不需要真正的量子硬件——它在笔记本电脑上运行。
干涉是全部意义,因此编码必须让信号在取概率之前作为复数相加。每个 alpha 模型为每个市场情景贡献一个复数幅度——幅度等于信心,相位等于时机或机制对齐。你跨模型求和贡献,然后才应用 Born 规则。
1import numpy as np23def combine_signals(contributions: np.ndarray) -> np.ndarray:4 """5 contributions: 复数矩阵,形状为 [n_signals, n_scenarios]。6 |value| = 模型对某个情景的信心,7 angle = 其相位(时机 / 机制对齐)。8 返回: 归一化状态 |psi>,覆盖所有情景。9 """10 amplitudes = contributions.sum(axis=0) # 信号在这里干涉11 return amplitudes / np.linalg.norm(amplitudes)1213# 情景:[上涨,下跌,横盘,突破]14# 两个动量模型都倾向 '上涨'——但它们的相位不同步,因此部分抵消。15signal_A = np.array([0.7+0j, 0.1+0j, 0.2+0j, 0.3+0j]) # 看涨,相位 016signal_B = np.array([0.6*np.exp(1j*2.7), 0.15, 0.2, 0.25]) # 看涨但 ~反相位1718psi = combine_signals(np.vstack([signal_A, signal_B]))1920# 每个情景的概率 = |amplitude|^2 (Born 规则)21probs = np.abs(psi) ** 222print(probs.round(3)) # -> [0.147 0.102 0.26 0.491]
关键行是 Born 规则:概率等于幅度的平方大小。因为两个看涨信号在平方之前作为复数求和,它们的异相分量抵消,拥挤的"上涨"情景从天真的 0.76 被抑制到 0.147。Agent 自动淡化了过度相关的共识押注。这是这个方法和普通概率平均集成之间的具体、可测量的区别,附件中的干涉图并排显示了相同的数字。

5. 没人展示给你的难点:相位从何而来?
每个向你兜售"量子交易"的文章都悄悄硬编码了相位,并希望你不要注意。在上面的片段中,我手动写了 np.exp(1j\2.7)。在真实系统中,发明相位是整个研究问题*,假装不是这样是欺骗自己的最快方法。
所以将相位视为一等建模目标,而不是装饰。一些基于实际的方法来推导它,而不是猜测:
时机 / 周期相位。 对每个信号运行希尔伯特变换或小波分解,并读取主导周期的瞬时相位。两个在同一方向但不同周期相位上触发的动量模型确实应该部分抵消——这正是你想要检测的拥挤。
领先-滞后相位。 估计信号与未来收益之间的互相关滞后。将该滞后转换为一个角度。领先价格的信号获得一个相位;滞后的、实际上是追涨的滞后信号获得另一个相位,因此它们与领先者相消干涉,而不是重复计算。
机制相位。 将机制分类器(趋势 vs 震荡,高波动 vs 低波动)映射到一个角度,使得信号的贡献随着机制的旋转而旋转。一个突破模型和一个均值回归模型然后自然地位于相对的相位附近。
纪律很简单:如果你不能解释为什么一个信号有它现在的相位,你就不能使用相位。 将所有内容回退到相位 0,你就回到了一个经典集成——这很好,也很诚实。相位之所以强大,正是因为它来之不易。
6. 代码:作为基态搜索的投资组合
约束下的投资组合选择是组合优化——在预算和风险限制下选择最佳资产子集。这正是退火所解决的问题形状。我们将"持有哪些资产"编码为 QUBO(二次无约束二元优化),Ising 哈密顿量的经典孪生体。
1import numpy as np23def build_portfolio_hamiltonian(expected_returns, cov, risk_aversion=1.0,4 budget=3, penalty=5.0):5 """6 构建一个 QUBO 矩阵 Q,使得最小化 x^T Q x (x in {0,1}^n)7 选择最佳的 'budget' 个资产:最大化收益,最小化风险,8 并软惩罚违反预算约束的行为。9 """10 n = len(expected_returns)11 Q = np.zeros((n, n))1213 # 收益(取负,因为我们最小化)加上来自协方差的风险项14 for i in range(n):15 Q[i, i] += -expected_returns[i] + risk_aversion * cov[i, i]16 for j in range(i + 1, n):17 Q[i, j] += 2 * risk_aversion * cov[i, j]1819 # 预算约束 (sum x_i - budget)^2 作为软惩罚20 for i in range(n):21 Q[i, i] += penalty * (1 - 2 * budget)22 for j in range(i + 1, n):23 Q[i, j] += 2 * penalty24 return Q2526def simulated_anneal(Q, steps=20000, T0=5.0):27 """量子启发式退火:缓慢冷却系统到其基态。"""28 n = Q.shape[0]29 x = np.random.randint(0, 2, n)30 def energy(x): return x @ Q @ x31 e = energy(x)32 for t in range(steps):33 T = T0 * (1 - t / steps) # 线性温度调度34 i = np.random.randint(n)35 x_new = x.copy(); x_new[i] ^= 1 # 翻转一个资产进出36 e_new = energy(x_new)37 # 总是接受改进,有时接受更差的移动(这就是它如何逃离局部最小值)38 if e_new < e or np.random.rand() < np.exp(-(e_new - e) / max(T, 1e-9)):39 x, e = x_new, e_new40 return x, e4142returns = np.array([0.12, 0.09, 0.15, 0.04, 0.11])43cov = np.array([44 [0.10, 0.02, 0.01, 0.00, 0.03],45 [0.02, 0.08, 0.02, 0.01, 0.01],46 [0.01, 0.02, 0.18, 0.00, 0.02],47 [0.00, 0.01, 0.00, 0.03, 0.00],48 [0.03, 0.01, 0.02, 0.00, 0.09],49])50Q = build_portfolio_hamiltonian(returns, cov, risk_aversion=2.0, budget=2)51selection, ground_energy = simulated_anneal(Q)52print("持有资产:", np.where(selection == 1)[0], "| 能量:", round(ground_energy, 3))
关于规模的一个诚实说明。对于五个资产,你不需要退火——你可以暴力破解所有 32 种组合。退火在数百个资产加上硬约束时发挥价值,此时搜索空间爆炸,精确求解器窒息。在小型规模下这样写的原因是接口永远不会改变:将 simulated_anneal 替换为真正的后端——D-Wave 的退火器、Qiskit 模拟器上的 QAOA 电路,或者 Multiverse 提供的张量网络求解器——Agent 中的其他任何东西都不动。求解器是一个插件。
7. 代码:Agent 循环(从感知到坍缩到执行)
现在将它们连接起来。这是一个自主 Agent 的骨架——与 LLM Agent 使用的相同感知/决策/行动控制循环,但其世界模型是量子风格的状态而不是文本。
1class QuantumTradingAgent:2 def __init__(self, universe, risk_aversion=2.0, budget=2, gross_leverage=1.0):3 self.universe = universe4 self.risk_aversion = risk_aversion5 self.budget = budget6 self.gross_leverage = gross_leverage7 self.memory = [] # 反馈 / RL 缓冲区89 def perceive(self, market):10 contributions = self.model_conviction(market) # 你的 alpha 模型 -> 复数矩阵11 return combine_signals(contributions) # -> 状态 |psi> 覆盖情景1213 def deliberate(self, market):14 Q = build_portfolio_hamiltonian(15 market["expected_returns"], market["cov"],16 self.risk_aversion, self.budget)17 selection, _ = simulated_anneal(Q)18 return selection1920 def measure(self, psi, selection, market):21 """22 坍缩为订单。这里发生两件事:23 1) 来自情景状态的全局信心门(方向性 + 海森堡波动率缩减)24 2) 每个资产的权重,使得所选资产根据其自身预期收益进行大小调整25 """26 scenario_probs = np.abs(psi) ** 227 directional = scenario_probs[0] + scenario_probs[3] # P(上涨) + P(突破)28 vol = market["volatility"]29 gate = directional / (1.0 + self.risk_aversion * vol) # 在高波动 / 低信心时缩减3031 idx = np.where(selection == 1)[0]32 if len(idx) == 0:33 return {}34 edge = np.clip(market["expected_returns"][idx], 0, None) # 只做多正预期收益的名称35 weights = edge / edge.sum() if edge.sum() > 0 else np.ones(len(idx)) / len(idx)3637 sizes = self.gross_leverage * gate * weights38 return {int(a): round(float(s), 4) for a, s in zip(idx, sizes)}3940 def act(self, market):41 psi = self.perceive(market)42 selection = self.deliberate(market)43 orders = self.measure(psi, selection, market)44 # execute(orders) <- 路由到交易所 / 经纪商45 self.memory.append((market, orders))46 return orders
仔细看 measure(),因为早期天真的版本有一个真正的缺陷:它对每个选中的资产应用相同的大小,忽略了每个资产实际有多好。这个版本用两个阶段修复了它。一个全局门读取情景状态——方向性信心,即 P(上涨) + P(突破),除以波动率项。这个除法是海森堡式的风险管理规则:市场越抵抗精确定价,即波动率越高,Agent 的总承诺就越小。然后一个每个资产权重将该预算按比例分配到所选名称上,比例基于它们自身的预期优势,并拒绝做多任何预期收益为负的资产。信心设定你下注多少;每个资产的优势设定它去哪里。
8. 华尔街的现实检验
这在哪些地方真正赚钱,又在哪些地方只是一个漂亮的演示?在这里具体说明,才能让其余部分更可信。
当今在经典硬件上的真正优势:
大规模投资组合优化。 对于数百个资产和硬约束,退火器和张量网络方法比朴素的均值方差求解器更优雅地处理组合数学和约束,并且通常更快。这是最成熟、最不炒作的应用。
通过量子幅度估计进行风险估计。 理论上,这对于 VaR 和 CVaR 提供了相对于经典蒙特卡洛的二次加速。它仍然是大银行最活跃的研究方向之一,因为风险运行既昂贵又持续。注意警告:标题中的加速是一个理论渐近结果,今天的硬件在产量规模上尚未实现它。
通过干涉进行信号组合。 用相位对信心建模,使得拥挤、过度相关的交易抵消,这是一个真正有用的重构,并且它今天就可以在你现有的 GPU 上运行。这是本文中最直接实用的想法——前提是你诚实地解决了第 5 节的相位问题。
仍然主要是研究:
在真正的量子硬件上进行端到端衍生品定价。 原则上很有前景,但噪声和量子比特数量今天限制了它。
"量子 ML" 价格预测。 严重被过度炒作。将经典市场数据加载到量子态的成本通常会吃掉你希望获得的任何加速。对任何兜售这个的人要非常怀疑。
诚实的底线:量子启发式 Agent 现在就可以构建和回测, 因为每个模块都在经典硬件上运行。你捕捉到了结构性的想法——假设的叠加态、对抗拥挤的相消干涉、基于哈密顿量的优化——而无需等待容错量子计算机。当硬件成熟时,你替换模块 4,保留其余部分。

9. 什么会在生产中真正杀死它
每一个策略在遇到市场之前看起来都很棒。在你投入一美元之前,内化那四件会悄悄摧毁量子启发式 Agent 的事情。
交易成本和滑点。 干涉层每次新数据到来时都会重新洗牌信心,这会诱使 Agent 频繁换手。费用和滑点不在乎你的状态向量多么优雅。直接在哈密顿量中添加一个换手惩罚并重新运行——许多"优势"在收取现实成本后就蒸发了。
过度拟合相位。 相位给了你一整组额外的自由参数,而自由参数就是回测撒谎的方式。将相位调优到去年赚钱而明年流血是极其容易的。在你看收益之前,先从理论(第 5 节)固定相位规则,绝不要让回测为你选择它们。
跨循环的数据窥探。 因为这是一个闭合反馈循环,泄漏会复合。如果你的信心模型、你的协方差估计或你的机制标签哪怕稍微窥探到未来,整个 Agent 就会继承这个谎言。对整个循环进行向前走测试,而不仅仅是孤立的信号。
协方差的机制脆弱性。 QUBO 依赖于协方差矩阵,而协方差恰好在你最需要它们的时候崩溃——在崩盘时,相关性趋近于一。在受冲击的协方差下对基态选择进行压力测试,而不仅仅是在平静市场下,否则优化器会愉快地交给你一个只在纸面上多元化的投资组合。
10. 你的构建清单
如果你真的想实现这个,这里是操作顺序。
从量子启发式求解器开始——纯 numpy 加模拟退火。没有硬件,没有账户,没有依赖。
将手动调整的幅度替换为喂给 combine_signals 的学习到的信心模型,并从理论中推导相位,而不是拟合它们。
对整个循环进行回测,包括成本,而不仅仅是信号。收取现实费用和滑点,添加换手惩罚,并向前走测试。干涉和大小逻辑既是优势也是自欺欺人的地方。
只有在抽象在模拟中证明了自己之后,才应该去接触真正的后端——先 Qiskit 或 PennyLane 模拟器,然后 D-Wave,然后硬件。替换模块 4 在设计上是一行代码的改变。
市场一直是一个概率波。几乎所有人仍然像处理一个单一数字一样交易它——而这两种观点之间的差距就是全部机会。
如果这篇文章重新塑造了你对市场的看法,请转发顶部内容并关注。完整的开源 Agent 仓库即将发布。 ⚛️
免责声明。 不是财务建议,也不是收益承诺。量子启发式并不意味着量子保证——使这工作的大多是穿着量子外衣的纪律严明的经典建模。用真实成本回测所有内容;无论你是否准备好,市场都会坍缩你的波函数。





