Hamiltonian Neural Networks: Does a Financial System Conserve Anything?
Il y a deux questions que vous pouvez poser sur les réseaux de neurones hamiltoniens, et une seule d'entre elles est intéressante.
La question ennuyeuse est « les HNN sont-ils stables ? » La réponse est oui, et c’est un théorème et non une expérience. Encodez les équations de Hamilton dans l'architecture, intégrez-les à un schéma symplectique et l'analyse des erreurs en arrière vous transmet une erreur d'énergie limitée sur des horizons exponentiellement longs. Rien dans la finance n’est impliqué. Vous n’avez pas besoin d’un backtest pour le croire.
La question intéressante est celle que présuppose discrètement le résultat de stabilité : un vecteur d’état financier admet-il une quantité conservée ? Un HNN ne découvre pas si existe. Cela suppose existe et trouve le meilleur sous cette hypothèse. Si les marchés n'ont pas conservé pour les coordonnées que vous avez choisies, le réseau convergera toujours, produira toujours un scalaire fluide, s'intégrera toujours sans exploser - et le tout sera un modèle très stable de rien.
Ce poste construit la machinerie, puis passe la moitié arrière à essayer de la casser. L’affirmation testée est étroite et falsifiable : qu’un choix la paire - disons le log-prix et l'EMA des rendements - est canoniquement conjuguée, ce qui signifie ça vaut en fait pour certains . Il s’agit d’une affirmation empirique, et la section théorique du projet ne donne aucune raison de le croire.
Mécanique hamiltonienne : ce qui est réellement nouveau ici

L'espace des phases, les systèmes dynamiques, les trajectoires et les orbites sont déjà du vocabulaire sur ce blog — voir attractors in algotrading pour les définitions et complex manifolds pour la reconstruction de l'espace des phases via l'intégration de Takens. Ce qui suit les assume.
La partie nouvelle est la structure symplectique. La mécanique classique a deux formulations équivalentes. Newton donne . Hamilton donne une fonction scalaire d'où découlent toutes les dynamiques :
Trois conséquences comptent, et aucune d’entre elles n’est disponible pour un modèle dynamique générique :
- est conservé le long des trajectoires. Le système est confiné à une surface à énergie constante – une variété de dimension inférieure à l’intérieur de l’espace des phases. Il s’agit là d’une contrainte majeure quant à la direction que peut prendre l’État, et non d’une tendance.
- La 2-forme symplectique est préservé. Le volume dans l'espace des phases est exactement conservé (théorème de Liouville). Les trajectoires ne peuvent pas converger vers un attracteur ; le flux est incompressible.
- La dynamique est réversible dans le temps. Exécutez le flux vers l'arrière et vous récupérez exactement l'état initial.
Le point 2 mérite qu’on s’y arrête, car c’est la tension la plus vive avec tout le reste de ce blog. Le théorème de Liouville dit qu'un système hamiltonien n'a pas d'attracteurs. Les flux préservant le volume ne peuvent se contracter sur quoi que ce soit. Si vous pensez que les marchés ont une structure attractive – et l’article sur les attracteurs soutient que c’est le cas – alors vous êtes déjà déterminé à ce que les marchés ne soient pas hamiltoniens au sens strict. Il s’agit d’un véritable conflit, pas d’un détail technique, et c’est la raison pour laquelle les extensions dissipatives ci-dessous ne sont pas une réflexion après coup.
Pourquoi l'intégrateur est important
Simulez un système hamiltonien avec un intégrateur naïf (Euler, RK4) et la trajectoire calculée s'éloigne lentement de la surface à énergie constante. L'erreur de troncature locale est faible ; l'erreur géométrique est systématique. Sur de longs horizons, la simulation devient qualitativement erronée : les orbites qui devraient se fermer commencent à tourner en spirale.
Les réseaux de neurones standards présentent le même défaut pour une raison plus profonde. Un état de mappage MLP vers des dérivés n'a aucun mécanisme pour préserver quoi que ce soit. Il apprend de manière adéquate les dynamiques locales et accumule les erreurs qui s’aggravent.
La revendication de conservation, en bref

Ce blog a déjà soutenu que les marchés obéissent à des principes de conservation - Navier-Stokes pour algotrading, partie 2 expose longuement son argument, de la liquidité en tant que masse jusqu'à la gestion des risques hydrodynamiques, et fournit correctement le cadre éconophysique. L'optimisation de la variance moyenne est également déjà un système lagrangien sur ce blog : voir Théorie du portefeuille de Markowitz pour la forme quadratique contrainte et Exécution optimale d'Almgren-Chriss pour le budget-risque/ identification, où joue exactement le rôle d’un élan conjugué.
Rien de tout cela n’est reproduit ici, car le mouvement intéressant est différent. Ces articles utilisent la conservation comme une métaphore qui motive un modèle. Un HNN transforme la conservation en une contrainte architecturale que le modèle ne peut pas violer même si les données le demandent. Cette différence – analogie douce versus structure dure – constitue tout le contenu de ce qui suit, et elle va dans les deux sens : une contrainte que les données ne satisfont pas n’est pas un a priori, c’est un bug.
Architecture HNN : conservation structurelle ou conservation pénalisée

Le mécanisme général basé sur la physique — prendre les dérivées autogrades de la sortie du réseau par rapport à ses entrées, former un résidu physique, le minimiser — est déjà démontré dans le PINN Navier-Stokes, dont physics_loss construit u_t, u_x, u_xx via autograd.grad et met au carré le résidu. Le HNN utilise le même mécanisme avec un seul changement, et le changement est tout l’intérêt.
Un PINN pénalise les violations d'une loi physique. Le résidu est un terme de perte avec un poids ; l'optimiseur l'échange contre l'ajustement des données. Réduisez le poids ou transmettez-lui des données contradictoires, et le réseau violera volontiers la loi. La conservation est une préférence.
Un HNN rend la conservation structurelle. Il n'apprend pas le champ vectoriel , qui n'est pas contraint et ne conserve rien. Il apprend un scalaire et dérive les deux composantes du champ vectoriel à partir d'un seul gradient :
Parce que les deux dérivées proviennent d’un même potentiel scalaire, le champ résultant est par construction un gradient symplectique. , à l'identique, pour chaque paramétrage - y compris un réseau initialisé de manière aléatoire et totalement non formé. Il n’y a pas de poids à régler. La conservation est une identité algébrique du paramétrage, pas un terme dans l'objectif.
Il s’agit d’une garantie beaucoup plus solide que celle offerte par un PINN, et elle s’accompagne d’un mode de défaillance beaucoup plus précis. La perte compare les dérivés dérivés aux données observées :
Si l'observé le champ n'est pas un gradient symplectique de quoi que ce soit - s'il a une boucle, le paramétrage ne peut pas représenter - la perte ne peut tout simplement pas atteindre zéro. Le plancher résiduel n’est pas un échec d’optimisation. Il s'agit d'une mesure de la distance entre les données et l'admission d'un hamiltonien. Ce nombre est le résultat le plus utile de toute cette architecture, et c'est le nombre autour duquel le reste de cet article est organisé.
Le réseau lui-même est banal : un MLP de à travers deux couches tanh de largeur 200 vers une sortie scalaire.
Coordonnées
Pour les applications financières, est une position généralisée (log-prices, pondérations du portefeuille, expositions factorielles) et une dynamique généralisée (taux de changement, indicateurs de dynamique, variables de flux). C'est alors l'invariant que le réseau peut trouver – peut-être la capitalisation boursière totale, peut-être une mesure du risque, peut-être une quantité abstraite sans lecture économique, peut-être rien.
Le choix de l’accord n’est pas innocent, et c’est là la lacune de la présentation standard. Rien à propos de " = prix du journal, = EMA des rendements" établit qu'ils sont conjugués. La conjugaison est une relation structurelle spécifique - doit être l'élan canoniquement associé à , tel que vaut pour certains . L’affirmer et le tester sont des activités différentes, et la littérature adaptant les HNN à la finance fait principalement la première.
| (postes) | (impulsions) |
|---|---|
| Prix des grumes | EMA des retours |
| Pondérations du portefeuille | Taux de changement de poids |
Intégrateurs symplectiques

Apprentissage c'est la moitié du problème. Générer des trajectoires nécessite d'intégrer les équations de Hamilton, et l'intégrateur peut détruire ce que garantit l'architecture.
Intégrateurs symplectiques préserver exactement. Le volume de l'espace des phases est conservé, oscille autour de sa vraie valeur avec une erreur limitée plutôt que de dériver de manière séculaire, et les orbites restent qualitativement correctes. RK4 vous donne une erreur par étape plus petite et aucune de ces propriétés.
Le schéma symplectique le plus simple est Stormer-Verlet (saute-mouton) :
Pour séparable ce sont des mises à jour explicites. Les hamiltoniens financiers sont généralement non séparables – la dynamique de dynamique dépend des prix et vice versa – de sorte que le cas général nécessite des étapes implicites, des méthodes d'ordre supérieur (Yoshida, Forest-Ruth) ou la route SympNets ci-dessous.
Tong et coll. (2020) a montré que la composition d'étapes saute-mouton en couches de réseau produit des architectures symplectiques par construction : chaque couche est une étape d'intégration, la profondeur est égale au nombre d'étapes et la carte apprise préserve exactement la structure symplectique.
Garanties de stabilité : réelles et hors de propos

Les propriétés de stabilité découlent de théorèmes, c’est précisément pourquoi elles ne prouvent rien sur les marchés.
Analyse des erreurs rétroactives. Un intégrateur symplectique appliqué à résout exactement un hamiltonien à proximité . La trajectoire calculée est la trajectoire exacte d'un système légèrement perturbé, et la théorie KAM limite l'erreur énergétique sur des temps exponentiellement longs.
Stabilité de Lyapunov. Si a un minimum à l'équilibre, est elle-même une fonction de Lyapunov prouvant que l'équilibre est stable. Aucune analyse séparée requise.
Les deux résultats sont conditionnés à être le bon objet. Ils vous disent que la simulation du système appris est fidèle ; ils ne disent rien sur la question de savoir si le système appris est le marché. Un parfaitement conservé ajusté à un plancher résiduel de 0,9 est une simulation stable d'un artefact.
| Propriété | Norme NN + RK4 | HNN + symplectique |
|---|---|---|
| Dérive d'énergie sur 1000 pas | laïque, accumule | limité, oscillatoire |
| Réversibilité temporelle | non | oui |
| Volume de l'espace des phases | non conservé | exactement conservé |
| Attracteurs représentables | oui | non (Liouville) |
| Invariant interprétable | aucun |
Implémentation

Module HNN de base
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
Intégrateur Symplectic 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)
Coordonnées de l'espace de phase
Les prix logarithmiques, les rendements différés, l'élan de l'EMA et la volatilité continue sont des constructions standard sur ce blog - le pipeline de modèle de diffusion et les collecteurs complexes les expédient tous deux. Les deux seules lignes qui comptent ici sont celles qui définissent la paire conjuguée :
q = np.log(prices)[w:-1] # generalised position
p = ewma(np.diff(np.log(prices), axis=0), w)[w-1:-1] # generalised momentum
Tout en aval - différence finie , , l'alignement des longueurs, la boucle d'entraînement faisant correspondre les dérivés dérivés avec ceux observés avec Adam - est mécanique.
Contrôle de conservation
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]),
}
Notez ce que cette fonction ne teste pas. Il mesure si l'intégrateur préserve - ce qui sera le cas, par théorème, que ce soit ou non veut dire n'importe quoi. La conservation dans l'échantillon d'un hamiltonien érudit ne constitue pas une preuve. Le test qui compte est différent.
Le test de falsification

L’expérience honnête comporte trois parties et est conçue de manière à ce qu’un résultat négatif soit informatif plutôt qu’embarrassant.
1. Plancher résiduel. sur des données réelles et signaler la perte convergée, pas la conservation. Un paramétrage de gradient symplectique ne peut pas représenter un champ vectoriel avec curl ; le plancher mesure la composante non hamiltonienne de la dynamique observée. Ajustez un MLP sans contrainte sur les mêmes données que la référence — il n'a aucune restriction structurelle, donc l'écart entre les deux étages est le coût de l'hypothèse hamiltonienne, exprimé dans les unités de perte du problème.
2. Conservation hors échantillon. Ajuster sur une fenêtre, puis évaluer le long de la trajectoire observée hors échantillon – la trajectoire des prix réelle, et non intégrée. Si est véritablement canonique, reste à peu près constant le long des données qu'il n'a jamais vues. Si s'éloigne de l'échantillon, la quantité conservée était un artefact dans l'échantillon et la garantie de l'architecture ne fait aucun travail.
3. Coordonner l'ablation. C'est la partie exigée par la section théorique et aucune présentation des HNN financiers ne semble fonctionner. Rien n'établit que le prix du journal et l'EMA des rendements soient conjugués ; on l'affirme. Testez donc les paires les unes par rapport aux autres — (log-prix, rendements EMA), (log-prix, rendements bruts) (pondérations du portefeuille, taux de variation de pondération) — et classez-les par hors échantillon. stabilité. Contre un substitut aux rendements mélangés comme contrôle : détruire la structure temporelle, conserver la distribution marginale, réaménager. Si le substitut donne des résultats comparables stabilité, la « quantité conservée » est une propriété du paramétrage plutôt que du marché.
Mon prieur, l'a déclaré avant le fait afin que cela puisse être vérifié par rapport au résultat : cela échoue. Le raisonnement se trouve dans l'introduction ci-dessus : le théorème de Liouville interdit les attracteurs, les marchés semblent avoir une structure attractive, et les deux issues de secours ci-dessous sont des aveux que l'hypothèse hamiltonienne stricte ne tient pas. Si le plancher résiduel est élevé et hors échantillon est instable dans chaque appariement, c'est-à-dire un négatif proprement mesuré sur un préalable informé par la physique, et ce blog les a déjà publiés (le négatif honnête, deflated Sharpe). Un résultat négatif mesuré sur une théorie élégante vaut plus qu’un tutoriel non testé.
Si la conservation échoue : extensions dissipatives

Les marchés réels fuient. Les coûts de transaction, les dérapages et la dégradation de l'information retirent de l'énergie au système et une énergie strictement conservée. ne peut pas représenter cela. Il existe deux assouplissements de principe, et tous deux doivent être lus comme des concessions selon lesquelles l'hypothèse était trop forte, et non comme des raffinements :
- Hamiltonien conforme : modèle avec un taux de dissipation appris . L'ampleur de l'ajustement est en soi une mesure : à quel point le système est loin d'être conservateur.
- Port-Hamiltonien : , avec la matrice symplectique, la matrice de dissipation, et forçage externe (actualités, flux). Ici par rapport à quantifie directement le départ.
Les deux restaurent la capacité de représenter les attracteurs, au prix de la garantie d’erreur limitée qui a motivé l’architecture. Tel est le principe du commerce, clairement exprimé : vous pouvez avoir Liouville ou vous pouvez avoir une dissipation, et les marchés semblent vouloir la seconde.
Problèmes ouverts associés : les hamiltoniens financiers sont non séparables (nécessitant des étapes symplectiques implicites ou d'ordre supérieur, ou SympNets apprenant directement les cartes symplectiques), et les marchés fonctionnent sur plusieurs échelles de temps qu'un seul Il est peu probable qu'il capture - les hamiltoniens hiérarchiques pour les dynamiques rapides et lentes, ou un traitement adiabatique des variables lentes comme paramètres d'une échelle rapide .
Conclusion

La machinerie fonctionne. Apprendre un scalaire , dérivez le champ vectoriel de son gradient, intégrez symplectiquement et vous obtenez gratuitement la conservation en tant qu'identité algébrique, une erreur limitée sur des milliers d'étapes, une réversibilité temporelle exacte et une fonction de Lyapunov. Chacune de ces affirmations est un théorème et aucune d’entre elles ne nécessite de validation.
Ce qui nécessite une validation, c'est la prémisse. Les HNN ne testent pas si une quantité conservée existe - ils la supposent et l'optimisent sous cette hypothèse, convergeant malgré tout vers un modèle fluide, stable et qui se comporte bien. Le plancher résiduel et hors échantillon la stabilité sont les deux seuls chiffres qui distinguent « le marché conserve quelque chose » et « le paramétrage produit toujours quelque chose ».
La question sur laquelle se termine cet article n’est donc pas de savoir si les HNN sont stables. Il s’agit de savoir si l’élégance survivra au contact avec BTCUSDT – et jusqu’à ce que ces chiffres soient sur la page, la position correcte envers chaque affirmation de conservation dans l’apprentissage automatique financier, y compris celle-ci, est qu’elle n’a pas été testée.
Références
- Greydanus, S., Dzamba, M. et Sprague, J. (2019). Réseaux de neurones hamiltoniens. NeurIPS 2019.
- Tong, Y., Xiong, S., He, X., Pan, G. et Zhu, B. (2020). Réseaux hamiltoniens profonds basés sur des intégrateurs symplectiques. Préimpression arXiv.
- Baaquie, BE (2000). Hamiltonien sur les marchés financiers. Préimpression arXiv.
- Cotler, J. et Rezchikov, S. (2023). Simulation hamiltonienne efficace pour résoudre la dynamique des prix des options. Recherche sur l'examen physique.
- Gonon, P. & Ortega, J.-P. (2009). Marchés boursiers et dynamique quantique. Préimpression arXiv.
- Greydanus, S. (2019). Réseaux de neurones hamiltoniens — Article de blog.
- Santos, C. et coll. (2022). Réseaux de neurones à impulsion symplectique. PMLR.
Authors
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.