Skip to content

Repository files navigation

GARG-AML

Graph-based detection of smurfing patterns in transaction networks.

Smurfing moves money from one account to another through intermediate mules, so source and target never transact directly. In the second-order neighbourhood of such an account the adjacency matrix splits into blocks whose on-diagonal parts are empty and whose off-diagonal parts are dense. GARG-AML scores every account by exactly that contrast — one number in [-1, 1], computed from local structure alone, with no training and no labels.

PyPI Python License: MIT

Install

pip install garg-aml-smurfing

Installed as garg-aml-smurfing, imported as garg_aml. The shorter name was already taken on PyPI by an unrelated project.

Use

import garg_aml as ga

graph, labels = ga.smurfing_graph(n_nodes=100, n_patterns=2, seed=1)
scores = ga.score(graph)["GARGAML"]
scores.sort_values(ascending=False, kind="stable").head(10)

Eight of those ten accounts are in an injected pattern, out of 13 among 109 — with no training, no labels and no tuning.

Full documentation: https://verbekelab.github.io/garg-aml/

Citation

If you use this package, please cite the paper:

@article{deprez2025gargaml,
  title   = {{GARG-AML} against Smurfing: A Scalable and Interpretable
             Graph-Based Framework for Anti-Money Laundering},
  author  = {Deprez, Bruno and Baesens, Bart and Verdonck, Tim and
             Verbeke, Wouter},
  journal = {arXiv preprint arXiv:2506.04292},
  year    = {2025}
}

Links

Licence

MIT — see LICENSE.

About

No description, website, or topics provided.

Resources

Contributing

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages