2 min readfrom Machine Learning

Your GNN is probably just an overcomplicated MLP (Tabular Leakage). We built SynthFin-AML to enforce strict causal boundaries. [P]

We noticed our anti-money laundering models were performing suspiciously well. After digging into standard baselines on dynamic graphs, we found widespread temporal leakage in message-passing. If you train a GNN on a static snapshot of a dynamic graph, your model is likely cheating by seeing future edges during training.

We got sick of reviewing papers with broken evals, so we released SynthFin-AML v10.0 (100k nodes, 1.2M edges) to force strict causal boundaries.

The Temporal Leakage Trap Standard transductive random splits fundamentally fail on financial transaction networks because they violate the arrow of time. If Node A sends funds to B on Day 2, and B to C on Day 10, a standard 2-hop GNN will pull the Day 10 edge into the loss calculation for Day 2. The model literally looks into the future to compute embeddings.

The Fix: 3-Snapshot Architecture To stop the model from cheating by looking ahead at the transaction graph, we enforced a strict 3-snapshot point-in-time split:

  • Train Graph (Edges ≤≤ Day 7)
  • Val Graph (Edges ≤≤ Day 8)
  • Test Graph (Edges ≤≤ Day 10)

By physically disjointing the temporal windows, we bound the receptive field of the GNN to the true causal horizon.

Graph vs Tabular Reality Check Most synthetic datasets suffer from distribution leakage, where fraud transaction amounts are statistically separable from normal retail traffic. We killed the "amount split cheat" by ensuring fraud and retail transaction amounts share the exact same lognormal distribution (μ=8.517,σ=0.8μ=8.517,σ=0.8).

With tabular leakage fixed, we benchmarked a tuned LightGBM against GraphSAGE to see if the GNN overhead actually pays off for AML. We engineered 11 point-in-time graph features (Weighted PageRank, neighbor volume aggregates) for the tree model.

Results (PR-AUC on strict temporal split):

  • LightGBM (11 features): 0.848
  • GraphSAGE (Inductive): 0.881

Spoiler: GraphSAGE barely beats trees here unless your edge features are incredibly dense. The gap isn't astronomical, but it’s a real, mathematically sound leap—not a leakage artifact.

To establish this as a stricter evaluation standard for dynamic graphs, we’ve submitted the benchmark upstream to PyTorch Geometric.

Curious if anyone else is getting GNNs to scale on tabular financial data without OOMing or if you have seen similar temporal leakage issues in other graph domains.

Repo: https://github.com/valiyevoktay-cmd/synthfin-aml-
PyTorch Geometric PR: #10774

submitted by /u/Glabmayt2075
[link] [comments]

Want to read more?

Check out the full article on the original site

View original article

Tagged with

#financial modeling
#GNN
#Temporal Leakage
#Dynamic Graphs
#Anti-Money Laundering (AML)
#Message-Passing
#Causal Boundaries
#SynthFin-AML
#3-Snapshot Architecture
#Point-in-Time Split
#Financial Transaction Networks
#GraphSAGE
#LightGBM
#Tabular Leakage
#Edge Features
#Weighted PageRank
#Node Embeddings
#PR-AUC
#Receptive Field
#PyTorch Geometric