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.
Install
pip install garg-aml-smurfing
Installed as
garg-aml-smurfing, imported asgarg_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
- Paper: arXiv:2506.04292
- Experiments and paper reproduction: B-Deprez/GARG-AML
- Contributing and release process: CONTRIBUTING.md
Licence
MIT — see LICENSE.
Metadata
Release files for garg-aml-smurfing 0.1.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| garg_aml_smurfing-0.1.0.tar.gz | 141.7 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| garg_aml_smurfing-0.1.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 164.2 kB
Release files / garg_aml_smurfing-0.1.0.tar.gz
| Download URL | garg_aml_smurfing-0.1.0.tar.gz |
|---|---|
| Size | 141.7 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
f840f628639fab9ba1f8c35e50cb9ac7619561a1f3511a33fbb972dbd5f0cf38
|
|
BLAKE2b-256 checksum How to use checksums |
256e937019a2ac604e7f325c2ba8ba789d59d8391911df31be7df191e206da96
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 18, 2026.
Transparency logRelease files / garg_aml_smurfing-0.1.0-py3-none-any.whl
| Download URL | garg_aml_smurfing-0.1.0-py3-none-any.whl |
|---|---|
| Size | 22.5 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
e490a0075655b6f3bc496ebb177bfa68e96fd7c9e2db7b6dde2a9073782af849
|
|
BLAKE2b-256 checksum How to use checksums |
7377db9099f041be4fb4620238dd9dd4fa19b9176d3b32fd03810797341c8855
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 18, 2026.
Transparency log