← 返回文章列表
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最優執行(風險預算/λ\lambdaQ識別),其中λ\lambdaKEEP17XQ2角色的角色。

這裡沒有重新推導這些內容,因為有趣的舉動是不同的。這些文章使用保護作為激發模型的「隱喻」。 HNN 將守恆轉變為“架構約束”,即使資料要求模型遵守該約束,模型也不能違反該約束。這種差異——軟類比與硬結構——是接下來的全部內容,它是雙向的:資料不滿足的限制不是先驗,而是錯誤。


HNN 架構:結構化守恆與懲罰守恆

結構感知哈密頓神經架構

The general physics-informed mechanism — take autograd derivatives of the network output with respect to its inputs, form a physics residual, minimise it — is already demonstrated in the Navier-Stokes PINN, whose physics_loss builds u_t, u_x, u_xx via autograd.grad and squares the residual. The HNN uses that same mechanism with one change, and the change is the whole point.

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\| 直接量化了偏離。

兩者都恢復了表示吸引子的能力,但代價是激勵該架構的有界誤差保證。簡單來說,這就是交易:你可以擁有劉維爾,也可以擁有耗散,市場似乎想要第二種。

Related open problems: financial Hamiltonians are non-separable (requiring implicit or higher-order symplectic steps, or SympNets learning symplectic maps directly), and markets operate on multiple time scales that a single HH is unlikely to capture — hierarchical Hamiltonians for fast and slow dynamics, or an adiabatic treatment of slow variables as parameters of a fast-scale 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 交易見解、市場分析和平台更新。

我們尊重您的隱私。您可以隨時退訂。