← Voltar aos artigos
August 8, 2026
5 min read

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

Existem duas perguntas que você pode fazer sobre Redes Neurais Hamiltonianas, e apenas uma delas é interessante.

A pergunta chata é "os HNNs são estáveis?" A resposta é sim, e é um teorema, não um experimento. Codifique as equações de Hamilton na arquitetura, integre-as a um esquema simplético e a análise de erros retroativa entrega erros de energia limitados em horizontes exponencialmente longos. Nada sobre finanças está envolvido. Você não precisa de um backtest para acreditar.

A questão interessante é aquela que o resultado da estabilidade pressupõe discretamente: um vetor de estado financeiro admite alguma quantidade conservada? Um HNN não descobre se HH existe. Ele assume HH existe e encontra o melhor sob essa suposição. Se os mercados não tiverem conservado HH para as coordenadas escolhidas, a rede ainda convergirá, ainda produzirá um escalar suave, ainda se integrará sem explodir – e a coisa toda será um modelo muito estável do nada.

Este posto constrói o maquinário e depois passa a metade de trás tentando quebrá-lo. A afirmação sob teste é estreita e falsificável: que um escolhido (q,p)(q, p) par - digamos, log-preço e EMA de retornos - é canonicamente conjugado, o que significa dq/dt=H/pdq/dt = \partial H/\partial p na verdade vale para alguns HH. Esta é uma afirmação empírica, e a própria secção teórica do projecto não dá razão para acreditar nela.


Mecânica hamiltoniana: o que realmente há de novo aqui

Órbita espaço-fase hamiltoniana

Espaço de fase, sistemas dinâmicos, trajetórias e órbitas já são vocabulário neste blog — veja atratores em algotrading para as definições e variedades complexas para reconstrução do espaço de fase via incorporação de Takens. O que se segue os pressupõe.

A parte nova é a estrutura simplética. A mecânica clássica tem duas formulações equivalentes. Newton dá F=maF = ma. Hamilton fornece uma função escalar H(q,p)H(q, p) do qual decorrem todas as dinâmicas:

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

Três consequências são importantes e nenhuma delas está disponível para um modelo dinâmico genérico:

  1. HH é conservado ao longo das trajetórias. O sistema está confinado a uma superfície de energia constante - uma variedade de dimensão inferior dentro do espaço de fase. Esta é uma forte restrição sobre onde o Estado pode ir, não uma tendência.
  2. A forma 2 simplética ω=dqdp\omega = dq \wedge dp é preservado. O volume do espaço de fase é conservado exatamente (teorema de Liouville). As trajetórias não podem convergir para um atrator; o fluxo é incompressível.
  3. A dinâmica é reversível no tempo. Execute o fluxo para trás e você recuperará exatamente o estado inicial.

Vale a pena fazer uma pausa no ponto 2, porque é a tensão mais acentuada com todo o resto deste blog. O teorema de Liouville diz que um sistema hamiltoniano não tem atratores. Os fluxos que preservam o volume não podem se contrair em nada. Se você acredita que os mercados têm uma estrutura de atração – e o artigo sobre os atratores argumenta que sim – então você já está comprometido com o fato de os mercados não serem hamiltonianos no sentido estrito. Este é um conflito real, não um detalhe técnico, e é a razão pela qual as extensões dissipativas abaixo não são uma reflexão tardia.

Por que o integrador é importante

Simule um sistema hamiltoniano com um integrador ingênuo (Euler, RK4) e a trajetória calculada se afasta lentamente da superfície de energia constante. O erro de truncamento local é pequeno; o erro geométrico é sistemático. Em horizontes longos, a simulação torna-se qualitativamente errada: órbitas que deveriam fechar-se começam a espiralar.

As redes neurais padrão têm o mesmo defeito por um motivo mais profundo. Um estado de mapeamento MLP para derivativos não possui mecanismo para preservar nada. Aprende adequadamente a dinâmica local e acumula erros que se agravam.


A reivindicação de conservação, resumidamente

Energia conservada em um sistema dinâmico

Este blog já argumentou que os mercados obedecem a princípios de conservação - Navier-Stokes para algotrading, parte 2 apresenta o caso detalhadamente, desde a liquidez como massa até a gestão de risco hidrodinâmico, e fornece o enquadramento econofísico adequadamente. A otimização de média-variância também já é um sistema Lagrangiano neste blog: consulte Teoria do portfólio de Markowitz para a forma quadrática restrita e Execução ideal de Almgren-Chriss para o orçamento de risco/λ\lambda identificação, onde λ\lambda desempenha exatamente o papel de um momento conjugado.

Nada disso é derivado aqui, porque o movimento interessante é diferente. Esses artigos usam a conservação como uma metáfora que motiva um modelo. Uma HNN transforma a conservação em uma restrição arquitetônica que o modelo não pode violar, mesmo que os dados implorem. Essa diferença – analogia suave versus estrutura rígida – é todo o conteúdo do que se segue e vale para os dois lados: uma restrição que os dados não satisfazem não é uma restrição anterior, é um bug.


Arquitetura HNN: Conservação Estrutural vs. Conservação Penalizada

Arquitetura neural hamiltoniana com reconhecimento de estrutura

O mecanismo geral informado pela física - obter derivadas automáticas da saída da rede em relação às suas entradas, formar um resíduo físico, minimizá-lo - já está demonstrado no PNN de Navier-Stokes, cujo physics_loss constrói u_t, u_x, u_xx através de autograd.grad e eleva ao quadrado o resíduo. O HNN usa o mesmo mecanismo com uma mudança, e a mudança é o ponto principal.

Um PINN penaliza violações de uma lei física. O residual é um termo de perda com peso; o otimizador compensa o ajuste dos dados. Reduza o peso ou entregue dados conflitantes e a rede violará a lei com prazer. A conservação é uma preferência.

Um HNN torna a conservação estrutural. Não aprende o campo vetorial (q˙,p˙)=fθ(q,p)(\dot{q}, \dot{p}) = f_\theta(q, p), que é irrestrito e não conserva nada. Ele aprende um escalar Hθ(q,p)H_\theta(q, p) e deriva ambos os componentes do campo vetorial de um único gradiente:

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

Como ambas as derivadas vêm de um potencial escalar, o campo resultante é gradiente simplético por construção. 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, de forma idêntica, para cada configuração de parâmetro θ\theta - incluindo uma rede inicializada aleatoriamente e completamente não treinada. Não há peso para afinar. A conservação é uma identidade algébrica da parametrização, não um termo no objetivo.

Esta é uma garantia muito mais forte do que a oferecida por um PINN e vem com um modo de falha muito mais acentuado. A perda compara os derivados derivados com os dados observados:

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

Se o observado (q˙,p˙)(\dot{q}, \dot{p}) campo não é um gradiente simplético de nada — se tiver curl a parametrização não pode representar — a perda simplesmente não pode chegar a zero. O piso residual não é uma falha de otimização. É uma medida de quão longe os dados estão de admitir um hamiltoniano. Esse número é o resultado mais útil de toda essa arquitetura e é o número em torno do qual o resto desta postagem está organizado.

A rede em si não tem nada de notável: um MLP de (q,p)R2n(q, p) \in \mathbb{R}^{2n} através de duas camadas tanh de largura 200 para uma saída escalar.

Coordenadas

Para aplicações financeiras, qq é uma posição generalizada (log-preços, pesos da carteira, exposições a factores) e pp um momentum generalizado (taxas de variação, indicadores de momentum, variáveis ​​de fluxo). Hθ(q,p)H_\theta(q, p) é então qualquer invariante que a rede possa encontrar — possivelmente a capitalização total do mercado, possivelmente uma medida de risco, possivelmente uma quantidade abstrata sem leitura económica, possivelmente nada.

A escolha do emparelhamento não é inocente, e esta é a lacuna na apresentação padrão. Nada sobre "qq = preço logarítmico, pp = EMA de retornos" estabelece que estes são conjugados. A conjugação é uma relação estrutural específica - pp deve ser o momento canonicamente emparelhado com qq, tal que dq/dt=H/pdq/dt = \partial H/\partial p vale para alguns HH. Afirmá-lo e testá-lo são atividades diferentes, e a literatura que adapta as HNNs ao financiamento faz principalmente a primeira.

qq (posições) pp (momento)
Preços logísticos EMA de retornos
Pesos do portfólio Taxas de variação de peso

Integradores Simpléticos

Etapas geométricas de um integrador simplético

Aprendizagem HθH_\theta é metade do problema. A geração de trajetórias requer a integração das equações de Hamilton, e o integrador pode destruir o que a arquitetura garante.

Integradores simpléticos preservar ω=dqdp\omega = dq \wedge dp exatamente. O volume do espaço de fase é conservado, HH oscila em torno de seu valor verdadeiro com erro limitado, em vez de flutuar secularmente, e as órbitas permanecem qualitativamente corretas. RK4 oferece erros menores por etapa e nenhuma dessas propriedades.

O esquema simplético mais simples é Stormer-Verlet (salto):

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})

Para separável H(q,p)=T(p)+V(q)H(q, p) = T(p) + V(q) estas são atualizações explícitas. Os hamiltonianos financeiros são geralmente inseparáveis ​​— a dinâmica do momentum depende dos preços e vice-versa — portanto, o caso geral precisa de etapas implícitas, métodos de ordem superior (Yoshida, Forest-Ruth) ou a rota SympNets abaixo.

Tong et al. (2020) mostraram que a composição de etapas de salto como camadas de rede produz arquiteturas que são simpléticas por construção: cada camada é uma etapa de integração, a profundidade é igual à contagem de etapas e o mapa aprendido (qn,pn)(qn+1,pn+1)(q_n, p_n) \mapsto (q_{n+1}, p_{n+1}) preserva exatamente a estrutura simplética.


Garantias de estabilidade: reais e irrelevantes

Órbita estável ao lado do movimento turbulento do mercado

As propriedades de estabilidade decorrem de teoremas, e é precisamente por isso que não provam nada sobre os mercados.

Análise de erro retroativa. Um integrador simplético aplicado a HH resolve exatamente um hamiltoniano próximo H~=H+O(Δtk)\tilde{H} = H + O(\Delta t^k). A trajetória calculada é a trajetória exata de um sistema ligeiramente perturbado, e a teoria KAM limita o erro de energia em tempos exponencialmente longos.

Estabilidade de Lyapunov. Se HθH_\theta tem um mínimo em equilíbrio, HθH_\theta é em si uma função de Lyapunov que prova que o equilíbrio é estável. Nenhuma análise separada é necessária.

Ambos os resultados estão condicionados HθH_\theta sendo o objeto certo. Eles dizem que a simulação do sistema aprendido é fiel; eles não dizem nada sobre se o sistema aprendido é o mercado. Um perfeitamente conservado HθH_\theta ajustado a um piso residual de 0,9 é uma simulação estável de um artefato.

Propriedade Padrão NN + RK4 HNN + simplético
Deriva de energia em mais de 1000 passos secular, acumula limitado, oscilatório
Reversibilidade temporal não sim
Volume do espaço de fase não preservado exatamente preservado
Atratores representáveis ​​ sim não (Liouville)
Invariante interpretável nenhum HθH_\theta

Implementação

Fluxo de implementação do modelo Hamiltoniano

Módulo Núcleo 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

Integrador Simplético Leapfrog

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)

Coordenadas Fase-Espaço

Preços logarítmicos, retornos diferenciados, impulso da EMA e volatilidade contínua são construção padrão neste blog - o pipeline do modelo de difusão e variedades complexas ambos o enviam. As únicas duas linhas que importam aqui são aquelas que definem o par conjugado:

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

Tudo a jusante - diferença finita q˙\dot{q}, p˙\dot{p}, alinhamento de comprimento, o loop de treinamento que combina as derivadas derivadas com as observadas com Adam - é mecânico.

Verificação de Conservação

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]),
    }

Observe o que esta função não testa. Mede se o integrador preserva HθH_\theta - o que acontecerá, por teorema, quer ou não HθH_\theta significa qualquer coisa. A conservação na amostra de um hamiltoniano aprendido não é evidência. O teste que importa é diferente.


O teste de falsificação

Trajetória passando em teste de falsificação

O experimento honesto tem três partes e é planejado de forma que um resultado negativo seja informativo e não constrangedor.

1. Piso residual. Ajuste HθH_\theta em dados reais e relatar a perda convergente, não a conservação. Uma parametrização de gradiente simplético não pode representar um campo vetorial com curvatura; o piso mede o componente não hamiltoniano da dinâmica observada. Ajuste um MLP irrestrito nos dados idênticos aos de referência - ele não tem restrição estrutural, então a lacuna entre os dois andares é o custo da suposição hamiltoniana, declarado nas unidades de perda do problema.

**2. Conservação fora da amostra. ** Ajuste em uma janela e avalie HθH_\theta ao longo da trajetória fora da amostra observada — a trajetória real do preço, não uma trajetória integrada. Se (q,p)(q, p) é genuinamente canônico, HθH_\theta permanece aproximadamente constante ao longo dos dados que nunca viu. Se HθH_\theta sai da amostra, a quantidade conservada era um artefato da amostra e a garantia da arquitetura não funciona.

3. Ablação coordenada. Esta é a parte que a seção teórica exige e nenhuma apresentação de HNNs financeiras parece funcionar. Nada estabelece que o preço logarítmico e a EMA de retornos sejam conjugados; é afirmado. Portanto, teste os pares entre si - (preço logarítmico, retornos EMA), (preço logarítmico, retornos brutos), (pesos do portfólio, taxas de mudança de peso) - e classifique-os por fora da amostra HH estabilidade. Contra um substituto de retornos embaralhados como controle: destruir a estrutura temporal, manter a distribuição marginal, reajustar. Se o substituto produzir resultados comparáveis HH estabilidade, a “quantidade conservada” é uma propriedade da parametrização e não do mercado.

Meu anterior, declarado antes do fato para que possa ser verificado em relação ao resultado: isso falha. O raciocínio está na cartilha acima - o teorema de Liouville proíbe atratores, os mercados parecem ter uma estrutura de atração e ambas as saídas de escape abaixo são admissões de que a suposição hamiltoniana estrita não é válida. Se o piso residual for alto e fora da amostra HH é instável em todos os pares, ou seja, um negativo medido limpo em um anterior informado pela física, e este blog já os publicou antes (o negativo honesto, Sharpe deflacionado). Um negativo medido em uma teoria elegante vale mais do que um tutorial não testado.


Se a conservação falhar: extensões dissipativas

Dissipando energia em torno de uma órbita estruturada

Vazamento dos mercados reais. Os custos de transação, o deslizamento e a decadência da informação removem a energia do sistema, e uma energia estritamente conservada HH não pode representar isso. Existem duas flexibilizações de princípios, e ambas devem ser lidas como concessões de que a suposição era muito forte, e não como refinamentos:

  1. Hamiltoniano Conforme: modelo H˙=γH\dot{H} = -\gamma H com uma taxa de dissipação aprendida γ\gamma. A magnitude do montado γ\gamma é em si uma medida – quão longe o sistema está do conservador.
  2. Porto-Hamiltoniano: x˙=(JR)H+Bu\dot{x} = (J - R)\nabla H + Bu, com JJ a matriz simplética, R0R \succeq 0 a matriz de dissipação, e BuBu forçamento externo (notícias, fluxos). Aqui R\|R\| em relação a J\|J\| quantifica a partida diretamente.

Ambos restauram a capacidade de representar atratores, ao custo da garantia de erro limitado que motivou a arquitetura. Esse é o negócio, dito claramente: pode-se ter Liouville ou pode-se ter dissipação, e os mercados parecem querer a segunda opção.

Problemas abertos relacionados: Hamiltonianos financeiros são inseparáveis ​​(exigindo etapas simpléticas implícitas ou de ordem superior, ou SympNets aprendendo mapas simpléticos diretamente), e os mercados operam em múltiplas escalas de tempo que um único HH é improvável que capte - hamiltonianos hierárquicos para dinâmicas rápidas e lentas, ou um tratamento adiabático de variáveis ​​lentas como parâmetros de uma escala rápida HH.


Conclusão

Dinâmica neural e estrutura conservada

A maquinaria funciona. Aprenda um escalar HθH_\theta, derive o campo vetorial de seu gradiente, integre simpleticamente e você obterá conservação como uma identidade algébrica, erro limitado ao longo de milhares de etapas, reversibilidade exata no tempo e uma função de Lyapunov gratuitamente. Cada uma dessas afirmações é um teorema e nenhuma delas requer validação.

O que requer validação é a premissa. HNNs não testam se existe uma quantidade conservada - eles a assumem e otimizam sob a suposição, convergindo para um modelo suave, estável e bem comportado de qualquer maneira. O piso residual e fora da amostra HH estabilidade são os únicos dois números que distinguem “o mercado conserva alguma coisa” de “a parametrização sempre produz alguma coisa”.

Portanto, a questão com a qual este post termina não é se as HNNs são estáveis. A questão é se a elegância sobreviverá ao contato com o BTCUSDT – e até que esses números estejam na página, a postura correta em relação a todas as afirmações de conservação no aprendizado de máquina financeira, incluindo esta, é que ela não foi testada.


Referências

  1. Greydanus, S., Dzamba, M., & Sprague, J. (2019). Redes Neurais Hamiltonianas. NeuroIPS 2019.
  2. Tong, Y., Xiong, S., He, X., Pan, G., & Zhu, B. (2020). Redes hamiltonianas profundas baseadas em integradores simpléticos. Pré-impressão arXiv.
  3. Baaquie, BE (2000). Hamiltoniano nos Mercados Financeiros. Pré-impressão arXiv.
  4. Cotler, J. & Rezchikov, S. (2023). Simulação Hamiltoniana Eficiente para Resolver Dinâmica de Preços de Opções. Pesquisa de revisão física.
  5. Gonon, P. & Ortega, J.-P. (2009). Mercado de ações e dinâmica quântica. Pré-impressão arXiv.
  6. Greydanus, S. (2019). Redes Neurais Hamiltonianas – Postagem no Blog.
  7. Santos, C. e outros. (2022). Redes Neurais de Momento Simplético. PMLR.
blog.disclaimer

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

Fique à frente do mercado

Assine nossa newsletter para insights exclusivos sobre trading com IA, análises de mercado e atualizações da plataforma.

Respeitamos sua privacidade. Cancele a inscrição a qualquer momento.