← 返回文章列表
August 8, 2026
5 分钟阅读

Hamiltonian Neural Networks: Does a Financial System Conserve Anything?

Hamiltonian Neural Networks: Does a Financial System Conserve Anything?
#deep-learning
#Hamiltonian
#physics-informed
#dynamics
#conservation

关于哈密顿神经网络,您可以问两个问题,其中只有一个是有趣的。

无聊的问题是“HNN 稳定吗?”答案是肯定的,而且这是一个定理,而不是一个实验。将汉密尔顿方程编码到架构中,与辛格式集成,后向误差分析可以让您在指数长的范围内得到有限的能量误差。没有涉及任何金融方面的内容。你不需要回测就能相信它。

有趣的问题是稳定性结果悄悄预设的问题:金融状态向量是否承认保守量? HNN 不会发现 HH 是否存在。它假设 HH 存在并在该假设下找到最好的一个。如果市场对于您选择的坐标没有守恒的 HH,网络仍然会收敛,仍然会产生平滑的标量,仍然会积分而不会崩溃 - 整个事情将是一个非常稳定的虚无模型。

这篇文章构建了机器,然后用后半部分试图打破它。所测试的声明是狭隘且可证伪的:所选的 (q,p)(q, p) 对(例如对数价格和收益 EMA)是规范共轭,这意味着 dq/dt=H/pdq/dt = \partial H/\partial p 实际上适用于某些 HH。这是一个经验主义的主张,草案本身的理论部分没有给出相信它的理由。


哈密顿力学:这里实际上有什么新内容

哈密尔顿相空间轨道

相空间、动力系统、轨迹和轨道已经是本博客中的词汇 - 请参阅 algotrading 中的吸引子 了解定义,以及 复流形 通过 Takens 嵌入进行相空间重建。以下内容假设它们。

新的部分是辛结构。经典力学有两个等效的公式。牛顿给出F=maF = ma。 Hamilton 给出了一个标量函数 H(q,p)H(q, p),所有动力学都遵循该函数:

dqdt=Hp,dpdt=Hq\frac{dq}{dt} = \frac{\partial H}{\partial p}, \qquad \frac{dp}{dt} = -\frac{\partial H}{\partial q}

三个结果很重要,但它们都不适用于通用动力学模型:

  1. HH 沿轨迹守恒。 该系统被限制在一个恒定能量表面——相空间内的一个低维流形。这是对国家发展方向的严格限制,而不是一种趋势。
  2. 辛2-型ω=dqdp\omega = dq \wedge dp 被保留。 相空间体积完全守恒(刘维尔定理)。轨迹不能收敛到吸引子上;流动是不可压缩的。
  3. 动力学是时间可逆的。 向后运行流程即可准确恢复初始状态。

第 2 点值得暂停,因为它是本博客中与其他所有内容最尖锐的矛盾点。刘维尔定理说哈密顿系统“没有吸引子”。体积保持流不能收缩到任何东西上。如果你相信市场具有吸引结构(吸引子文章认为确实如此),那么你就已经致力于市场不是严格意义上的哈密尔顿式的。这是真正的冲突,而不是技术问题,这就是下面的耗散扩展不是事后才想到的原因。

为什么积分器很重要

使用朴素积分器(Euler,RK4)模拟哈密顿系统,计算出的轨迹慢慢地偏离恒定能量表面。局部截断误差小; 几何误差是系统性的。从长远来看,模拟在质量上会变得错误:本应闭合的轨道开始螺旋上升。

由于更深层次的原因,标准神经网络也存在同样的缺陷。将状态映射到导数的 MLP 没有保存任何内容的机制。它充分学习局部动态并积累复合的错误。


守恒声明简介

动态系统中的能量守恒

该博客已经论证了市场遵循类似守恒的原则——Navier-Stokes for algotrading,第 2 部分详细阐述了案例,从流动性质量到流体动力学风险管理,并提供了正确的经济物理学框架。均值方差优化同样已经是本博客上的拉格朗日系统:请参阅马科维茨投资组合理论(约束二次形式)和Almgren-Chriss最优执行(风险预算/λ\lambda识别),其中λ\lambda恰好扮演共轭动量的角色。

这里没有重新推导这些内容,因为有趣的举动是不同的。这些文章使用保护作为激发模型的“隐喻”。 HNN 将守恒转变为“架构约束”,即使数据要求模型遵守该约束,模型也不能违反该约束。这种差异——软类比与硬结构——是接下来的全部内容,它是双向的:数据不满足的约束不是先验,而是一个错误。


HNN 架构:结构化守恒与惩罚守恒

结构感知哈密顿神经架构

一般的物理信息机制——对网络输出相对于其输入进行自动求导,形成物理残差,将其最小化——已经在N​​avier-Stokes PINN中进行了演示,其physics_loss通过autograd.grad构建u_tu_xu_xx并对残差进行平方。 HNN 使用相同的机制,但做了一个更改,而更改就是重点。

PINN 惩罚违反物理定律的行为。残差是一个带有权重的损失项;优化器将其与数据拟合进行权衡。降低权重,或者传递有冲突的数据,网络就会很乐意违反法律。保护是一种偏好。

HNN 使保护成为结构性。它不学习矢量场 (q˙,p˙)=fθ(q,p)(\dot{q}, \dot{p}) = f_\theta(q, p),该矢量场不受约束且不守恒。它学习标量 Hθ(q,p)H_\theta(q, p) 并从单个梯度导出向量场的两个分量:

q˙=Hθp,p˙=Hθq\dot{q} = \frac{\partial H_\theta}{\partial p}, \qquad \dot{p} = -\frac{\partial H_\theta}{\partial q}

由于两种导数都来自一个标量势,因此所得到的场在构造上是辛梯度的。 dHθ/dt=qHq˙+pHp˙=qHpHpHqH=0dH_\theta/dt = \partial_q H \cdot \dot{q} + \partial_p H \cdot \dot{p} = \partial_q H \cdot \partial_p H - \partial_p H \cdot \partial_q H = 0,同样适用于每个参数设置 θ\theta — 包括随机初始化、完全未经训练的网络。没有重量可以调低。守恒是参数化的代数恒等式,而不是目标中的术语。

这是比 PINN 提供的更强有力的保证,并且它具有更尖锐的故障模式。损失将导出的导数与观察到的数据进行比较:

L=Hθpq˙data2+Hθq+p˙data2\mathcal{L} = \left\| \frac{\partial H_\theta}{\partial p} - \dot{q}_{\text{data}} \right\|^2 + \left\| \frac{\partial H_\theta}{\partial q} + \dot{p}_{\text{data}} \right\|^2

如果观察到的 (q˙,p˙)(\dot{q}, \dot{p}) 场不是任何东西的辛梯度 - 如果它具有参数化无法表示的旋度 - 损失根本无法达到零。剩余楼层并不是优化失败。 它是对数据距离承认哈密顿量有多远的测量。 该数字是整个架构中最有用的输出,也是本文其余部分组织的数字。

网络本身并不引人注目:从 (q,p)R2n(q, p) \in \mathbb{R}^{2n} 到两个宽度为 200 的 tanh 层的 MLP 到标量输出。

坐标

对于金融应用,qq 是广义头寸(对数价格、投资组合权重、因子暴露),pp 是广义动量(变化率、动量指标、流量变量)。 Hθ(q,p)H_\theta(q, p) 就是网络可以找到的任何不变量——可能是总市值,可能是风险度量,可能是没有经济读数的抽象量,也可能什么都没有。

配对的选择并不无辜,这就是标准呈现的差距。 “qq = 对数价格,pp = 收益 EMA”没有任何内容表明它们是共轭。共轭是一种特定的结构关系 - pp 必须是与 qq 规范配对的动量,使得 dq/dt=H/pdq/dt = \partial H/\partial p 对于某些 HH 成立。断言它和测试它是不同的活动,而将 HNN 应用于金融的文献主要是前者。

qq(位置) pp(动量)
对数价格 EMA 回报
投资组合权重 体重变化率

辛积分器

辛积分器的几何步长

学习HθH_\theta,问题就解决了一半。生成轨迹需要对哈密尔顿方程进行积分,而积分器可能会破坏架构所保证的功能。

辛积分器 完全保留ω=dqdp\omega = dq \wedge dp。相空间体积守恒,HH 围绕其真实值振荡,误差有限,而不是长期漂移,并且轨道在质量上保持正确。 RK4 为您提供更小的每步误差,并且没有这些属性。

最简单的辛方案是 Stormer-Verlet (leapfrog):

pn+1/2=pnΔt2Hq(qn,pn+1/2)p_{n+1/2} = p_n - \frac{\Delta t}{2} \frac{\partial H}{\partial q}(q_n, p_{n+1/2}) qn+1=qn+ΔtHp(qn+1,pn+1/2)q_{n+1} = q_n + \Delta t \frac{\partial H}{\partial p}(q_{n+1}, p_{n+1/2}) pn+1=pn+1/2Δt2Hq(qn+1,pn+1/2)p_{n+1} = p_{n+1/2} - \frac{\Delta t}{2} \frac{\partial H}{\partial q}(q_{n+1}, p_{n+1/2})

对于可分离的 H(q,p)=T(p)+V(q)H(q, p) = T(p) + V(q),这些是显式更新。金融哈密顿量通常是不可分离的——动量动态取决于价格,反之亦然——因此一般情况需要隐式步骤、高阶方法(Yoshida、Forest-Ruth)或下面的 SympNets 路线。

童等人。 (2020) 表明,将蛙跳步骤组合为网络层会产生通过构造辛的架构:每一层都是一个积分步骤,深度等于步数,并且学习的映射 (qn,pn)(qn+1,pn+1)(q_n, p_n) \mapsto (q_{n+1}, p_{n+1}) 准确地保留了辛结构。


稳定性保证:真实的,但不是重点

动荡的市场运动中稳定的轨道

稳定性属性来自定理,这正是它们无法证明市场的原因。

后向误差分析。 应用于 HH 的辛积分器精确求解附近的哈密顿量 H~=H+O(Δtk)\tilde{H} = H + O(\Delta t^k)。计算出的轨迹是轻微扰动系统的精确轨迹,KAM 理论限制了指数长时间内的能量误差。

李雅普诺夫稳定性。 如果 HθH_\theta 在平衡时具有最小值,则 HθH_\theta 本身就是证明平衡稳定的李雅普诺夫函数。无需单独分析。

这两个结果都以 HθH_\theta 是正确的对象为条件。他们告诉你所学系统的模拟是忠实的;他们没有提及学习系统是否是市场。完美保存的 HθH_\theta 适合 0.9 的残差基底,是对工件的稳定模拟。

物业 标准NN+RK4 HNN + 辛
能量漂移超过 1000 步 世俗,积累 有界,振荡
时间可逆 没有 是的
相空间体积 未保存 完好保存
可代表的吸引子 是的 没有(刘维尔)
可解释的不变量 HθH_\theta

实现

哈密顿模型实现流程

核心 HNN 模块

import torch
import torch.nn as nn

class HamiltonianNN(nn.Module):
    """Learns a scalar H(q, p); derives dynamics via Hamilton's equations."""
    def __init__(self, input_dim: int, hidden_dim: int = 200):
        super().__init__()
        self.net = nn.Sequential(
            nn.Linear(input_dim, hidden_dim), nn.Tanh(),
            nn.Linear(hidden_dim, hidden_dim), nn.Tanh(),
            nn.Linear(hidden_dim, 1),
        )

    def hamiltonian(self, q: torch.Tensor, p: torch.Tensor) -> torch.Tensor:
        return self.net(torch.cat([q, p], dim=-1))

    def time_derivative(self, q: torch.Tensor, p: torch.Tensor):
        q = q.requires_grad_(True)
        p = p.requires_grad_(True)
        H = self.hamiltonian(q, p)
        dH_dq, dH_dp = torch.autograd.grad(H.sum(), [q, p], create_graph=True)
        return dH_dp, -dH_dq          # dq/dt, dp/dt

辛蛙跳积分器

class LeapfrogIntegrator:
    """Stormer-Verlet integrator. Preserves the symplectic structure."""
    def __init__(self, hnn: HamiltonianNN, dt: float = 0.01):
        self.hnn, self.dt = hnn, dt

    def step(self, q: torch.Tensor, p: torch.Tensor):
        _, dp_dt = self.hnn.time_derivative(q, p)
        p_half = p + 0.5 * self.dt * dp_dt

        dq_dt, _ = self.hnn.time_derivative(q, p_half)
        q_new = q + self.dt * dq_dt

        _, dp_dt = self.hnn.time_derivative(q_new, p_half)
        return q_new, p_half + 0.5 * self.dt * dp_dt

    def integrate(self, q0, p0, n_steps: int):
        traj_q, traj_p, q, p = [q0], [p0], q0, p0
        for _ in range(n_steps):
            q, p = self.step(q, p)
            traj_q.append(q); traj_p.append(p)
        return torch.stack(traj_q), torch.stack(traj_p)

相空间坐标

对数价格、差异收益、EMA动量和滚动波动性是本博客的标准结构——扩散模型管道复杂流形]都提供了它。这里唯一重要的两行是定义共轭对的行:

q = np.log(prices)[w:-1]                          # generalised position
p = ewma(np.diff(np.log(prices), axis=0), w)[w-1:-1]   # generalised momentum

下游的一切——有限差分 q˙\dot{q}p˙\dot{p}、长度对齐、将派生导数与 Adam 观察到的导数进行匹配的训练循环——都是机械的。

守恒检查

def measure_conservation(hnn, integrator, q0, p0, n_steps=1000):
    """Energy drift along an integrated trajectory."""
    with torch.no_grad():
        traj_q, traj_p = integrator.integrate(q0, p0, n_steps)
        energies = torch.stack([
            hnn.hamiltonian(traj_q[i], traj_p[i]) for i in range(n_steps + 1)
        ]).squeeze().numpy()

    return {
        "H_initial": energies[0],
        "H_final": energies[-1],
        "drift": energies[-1] - energies[0],
        "oscillation": energies.std(),
        "relative_error": abs(energies[-1] - energies[0]) / abs(energies[0]),
    }

请注意此函数测试什么。它测量积分器是否保留 HθH_\theta——根据定理,无论 HθH_\theta 是否意味着什么,它都会保留 HθH_\theta。学习的哈密顿量的样本内守恒并不是证据。重要的测试是不同的。


证伪测试

通过证伪测试的轨迹

诚实的实验分为三个部分,其设计目的是让负面结果提供信息而不是令人尴尬。

1.残差下限。 在实际数据上拟合 HθH_\theta 并报告收敛损失,而不是守恒。辛梯度参数化不能表示具有旋度的向量场;下限测量观察到的动力学的非哈密顿分量。在相同的数据上拟合无约束 MLP 作为参考 - 它没有结构限制,因此两层之间的差距 * 是 * 哈密顿假设的成本,以问题的损失单位表示。

2.样本外守恒。 适合一个窗口,然后沿着观察到的样本外轨迹评估 HθH_\theta - 真实价格路径,而不是综合路径。如果 (q,p)(q, p) 确实是规范的,那么 HθH_\theta 沿着它从未见过的数据保持大致恒定。如果 HθH_\theta 偏离样本,则守恒量是样本内的产物,并且架构的保证不起作用。

3.协调消融。 这是理论部分要求的部分,似乎没有金融 HNN 的演示。没有任何证据表明对数价格和 EMA 收益是共轭的;据断言。因此,相互测试配对 —(对数价格、EMA 收益)、(对数价格、原始收益)、(投资组合权重、权重变化率) — 并根据样本外 HH 稳定性对它们进行排名。反对以洗牌回报替代作为控制:破坏时间结构,保持边际分布,重新调整。如果替代项产生可比的 HH 稳定性,则“守恒量”是参数化的属性,而不是市场的属性。

我的先验,在事实之前陈述,以便可以根据结果进行检查:这失败了。推理在上面的初级读物中——刘维尔定理禁止吸引子,市场似乎具有吸引结构,并且下面的两个逃生舱口都承认严格的哈密顿假设不成立。如果剩余下限很高,并且样本外 HH 在每次配对中都不稳定,那么这在物理知识先验中是一个干净的测量负值,并且该博客之前已经发布过这些内容(诚实的负值 泄气的 Sharpe])。对一个优雅的理论进行衡量的否定比未经测试的教程更有价值。


如果守恒失败:耗散扩展

围绕结构化轨道耗散能量

真实市场泄漏。交易成本、滑点和信息衰减会消除系统的能量,严格守恒的 HH 无法代表这一点。存在两种原则上的放宽,两者都应被理解为对假设太强的让步,而不是改进:

  1. 保形哈密顿量:具有学习耗散率 γ\gamma 的模型 H˙=γH\dot{H} = -\gamma H。所安装的 γ\gamma 的大小本身就是一种测量——系统离保守值有多远。
  2. 哈密尔顿港x˙=(JR)H+Bu\dot{x} = (J - R)\nabla H + Bu,其中 JJ 为辛矩阵,R0R \succeq 0 为耗散矩阵,BuBu 为外强迫(新闻、流量)。这里 R\|R\| 相对于 J\|J\| 直接量化了偏离。

两者都恢复了表示吸引子的能力,但代价是激励该架构的有界误差保证。简单地说,这就是交易:你可以拥有刘维尔,也可以拥有耗散,而市场似乎想要第二种。

相关的开放问题:金融哈密顿量是不可分离的(需要隐式或高阶辛步骤,或者SympNets直接学习辛映射),并且市场在单个HH不太可能捕获的多个时间尺度上运行——用于快速和慢速动态的分层哈密顿量,或者将慢变量作为快速尺度HH的参数的绝热处理。


## 结论

神经动力学与守恒结构

机器运转起来。学习标量 HθH_\theta,从其梯度导出向量场,辛积分,您就可以免费获得代数恒等式守恒、数千步的有界误差、精确的时间可逆性和李亚普诺夫函数。这些主张中的每一个都是一个定理,并且都不需要验证。

需要验证的是前提。 HNN 不会测试保守量是否存在——它们会假设它并在假设下进行优化,无论如何都会收敛到一个平滑、稳定、表现良好的模型。剩余下限和样本外 HH 稳定性是区分“市场保留某些东西”和“参数化总是产生某些东西”的唯一两个数字。

所以这篇文章结束的问题不是 HNN 是否稳定。问题在于这种优雅是否能经受住与 BTCUSDT 的接触——在这些数字出现在页面上之前,对待金融机器学习中的每一项保护主张(包括这一主张)的正确态度是,它还没有经过测试。


## 参考

1.Greydanus, S.、Dzamba, M. 和 Sprague, J. (2019)。 哈密尔顿神经网络。 NeurIPS 2019。 2. 童Y.、熊S.、何X.、潘G.、朱B. (2020)。 基于辛积分器的深度哈密顿网络。 arXiv 预印本。 3.Baaquie, B.E. (2000)。 金融市场中的哈密尔顿。 arXiv 预印本。 4. Cotler, J. 和 Rezchikov, S. (2023)。 求解期权价格动态的高效哈密顿模拟。物理评论研究。 5. Gonon, P. 和 Ortega, J.-P。 (2009)。 股票市场和量子动力学。 arXiv 预印本。 6.Greydanus, S. (2019)。 哈密尔顿神经网络 - 博客文章。 7.桑托斯,C.等人。 (2022)。 辛动量神经网络。 PMLR。

免责声明:本文提供的信息仅用于教育和参考目的,不构成财务、投资或交易建议。加密货币交易涉及重大损失风险。

Authors

Eugen Soloviov
Eugen Soloviov

Trading-systems engineer

Trading-systems engineer building bots since 2017: cross-exchange arbitrage (connected up to 30 venues), cointegration-based pairs arbitrage across spot and futures, scalping, news and sentiment-driven strategies, trend algorithms, and portfolio management and balancing algorithms. Also builds sub-millisecond order execution, big-data warehouses, backtesting engines, AI agents, and trading interfaces (incl. open-source profitmaker.cc). Stack: JS/TS, Python, Rust/Zig/Go, DevOps, backend, frontend, architecture.

Newsletter

紧跟市场步伐

订阅我们的时事通讯,获取独家 AI 交易见解、市场分析和平台更新。

我们尊重您的隐私。您可以随时退订。