The AMLSim project is intended to provide a multi-agent based simulator that generates synthetic banking transaction data together with a set of known money laundering patterns - mainly for the purpose of testing machine learning models and graph algorithms. We welcome you to enhance this effort since the data set related to money laundering is critical to advance detection capabilities of money laundering activities.
395
stars
235
commits
Python
primary language
Sep 17, 2025
updated
Please cite our following papers if you use the data set for your publications.
BibTeX @misc{AMLSim, author = {Toyotaro Suzumura and Hiroki Kanezashi}, title = {{Anti-Money Laundering Datasets}: {InPlusLab} Anti-Money Laundering DataDatasets}, howpublished = {\url{http://github.com/IBM/AMLSim/}}, year = 2021 }
EvolveGCN: Evolving Graph Convolutional Networks for Dynamic Graphs https://arxiv.org/abs/1902.10191
Scalable Graph Learning for Anti-Money Laundering: A First Look https://arxiv.org/abs/1812.00076
Important: Please use the "master" branch for the practical use and testing. Other branches such as "new-schema" are outdated and unstable. Wiki pages are still under construction and some of them do not catch up with the latest implementations. Please refer this README.md instead.
This project aims at building a multi-agent simulator of anti-money laundering - namely AML, and sharing synthetically generated data so that researchers can design and implement their new algorithms over the unified data.
jars/ directory: See also jars/README.md)
pip3 install -r requirements.txt)
See Wiki page Directory Structure for details.
NOTE: (October 2021): bin/ folder has been renamed to target/classes/
See Wiki page Quick Introduction to AMLSim for details.
Before running the Python script, please check and edit configuration file conf.json.
{
//...
"input": {
"directory": "paramFiles/1K", // Parameter directory
"schema": "schema.json", // Configuration file of output CSV schema
"accounts": "accounts.csv", // Account list parameter file
"alert_patterns": "alertPatterns.csv", // Alert list parameter file
"degree": "degree.csv", // Degree sequence parameter file
"transaction_type": "transactionType.csv", // Transaction type list file
"is_aggregated_accounts": true // Whether the account list represents aggregated (true) or raw (false) accounts
},
//...
}
Then, please run transaction graph generator script.
cd /path/to/AMLSim
python3 scripts/transaction_graph_generator.py conf.json
Parameters for the simulator are defined at the "general" section of conf.json.
{
"general": {
"random_seed": 0, // Seed of random number
"simulation_name": "sample", // Simulation name (identifier)
"total_steps": 720, // Total simulation steps
"base_date": "2017-01-01" // The date corresponds to the step 0 (the beginning date of this simulation)
},
//...
}
Please compile Java files (if not yet) and launch the simulator.
sh scripts/build_AMLSim.sh
sh scripts/run_AMLSim.sh conf.json
On Mac: brew install maven
If you already have a java installed, you can run brew uninstall --ignore-dependencies openjdk because brew installs that along with maven as a dependency.
If you choose to use Maven, you only manually need to fetch and place 1 jar file (MASON) in your jars/ folder and then install it using the command shown below. If you do not use Maven, you will have to place all the dependency jar files listed above as dependencies in the jars/ folder.
If using Maven, use the following commands to install the MASON dependency to your local Maven repository.
mvn install:install-file \
-Dfile=jars/mason.20.jar \
-DgroupId=mason \
-DartifactId=mason \
-Dversion=20 \
-Dpackaging=jar \
-DgeneratePom=true
Please compile Java files (if not yet) (will detect and use Maven) and launch the simulator.
sh scripts/build_AMLSim.sh
sh scripts/run_AMLSim.sh conf.json
The file names of the output data are defined at the "output" section of conf.json.
{
//...
"output": {
"directory": "outputs", // Output directory
"accounts": "accounts.csv", // Account list CSV
"transactions": "transactions.csv", // All transaction list CSV
"cash_transactions": "cash_tx.csv", // Cash transaction list CSV
"alert_members": "alert_accounts.csv", // Alerted account list CSV
"alert_transactions": "alert_transactions.csv", // Alerted transaction list CSV
"sar_accounts": "sar_accounts.csv", // SAR account list CSV
"party_individuals": "individuals-bulkload.csv",
"party_organizations": "organizations-bulkload.csv",
"account_mapping": "accountMapping.csv",
"resolved_entities": "resolvedentities.csv",
"transaction_log": "tx_log.csv",
"counter_log": "tx_count.csv",
"diameter_log": "diameter.csv"
},
//...
}
python3 scripts/convert_logs.py conf.json
python3 scripts/visualize/plot_distributions.py conf.json
python3 scripts/validation/validate_alerts.py conf.json
outputs directory and a temporal directorysh scripts/clean_logs.sh
Python
62.5%
Java
31.9%
Groovy
4.5%
Shell
1.2%
The AMLSim project is intended to provide a multi-agent based simulator that generates synthetic banking transaction data together with a set of known money laundering patterns - mainly for the purpose of testing machine learning models and graph algorithms. We welcome you to enhance this effort since the data set related to money laundering is critical to advance detection capabilities of money laundering activities.
395
stars
235
commits
Python
primary language
Sep 17, 2025
updated
Please cite our following papers if you use the data set for your publications.
BibTeX @misc{AMLSim, author = {Toyotaro Suzumura and Hiroki Kanezashi}, title = {{Anti-Money Laundering Datasets}: {InPlusLab} Anti-Money Laundering DataDatasets}, howpublished = {\url{http://github.com/IBM/AMLSim/}}, year = 2021 }
EvolveGCN: Evolving Graph Convolutional Networks for Dynamic Graphs https://arxiv.org/abs/1902.10191
Scalable Graph Learning for Anti-Money Laundering: A First Look https://arxiv.org/abs/1812.00076
Important: Please use the "master" branch for the practical use and testing. Other branches such as "new-schema" are outdated and unstable. Wiki pages are still under construction and some of them do not catch up with the latest implementations. Please refer this README.md instead.
This project aims at building a multi-agent simulator of anti-money laundering - namely AML, and sharing synthetically generated data so that researchers can design and implement their new algorithms over the unified data.
jars/ directory: See also jars/README.md)
pip3 install -r requirements.txt)
See Wiki page Directory Structure for details.
NOTE: (October 2021): bin/ folder has been renamed to target/classes/
See Wiki page Quick Introduction to AMLSim for details.
Before running the Python script, please check and edit configuration file conf.json.
{
//...
"input": {
"directory": "paramFiles/1K", // Parameter directory
"schema": "schema.json", // Configuration file of output CSV schema
"accounts": "accounts.csv", // Account list parameter file
"alert_patterns": "alertPatterns.csv", // Alert list parameter file
"degree": "degree.csv", // Degree sequence parameter file
"transaction_type": "transactionType.csv", // Transaction type list file
"is_aggregated_accounts": true // Whether the account list represents aggregated (true) or raw (false) accounts
},
//...
}
Then, please run transaction graph generator script.
cd /path/to/AMLSim
python3 scripts/transaction_graph_generator.py conf.json
Parameters for the simulator are defined at the "general" section of conf.json.
{
"general": {
"random_seed": 0, // Seed of random number
"simulation_name": "sample", // Simulation name (identifier)
"total_steps": 720, // Total simulation steps
"base_date": "2017-01-01" // The date corresponds to the step 0 (the beginning date of this simulation)
},
//...
}
Please compile Java files (if not yet) and launch the simulator.
sh scripts/build_AMLSim.sh
sh scripts/run_AMLSim.sh conf.json
On Mac: brew install maven
If you already have a java installed, you can run brew uninstall --ignore-dependencies openjdk because brew installs that along with maven as a dependency.
If you choose to use Maven, you only manually need to fetch and place 1 jar file (MASON) in your jars/ folder and then install it using the command shown below. If you do not use Maven, you will have to place all the dependency jar files listed above as dependencies in the jars/ folder.
If using Maven, use the following commands to install the MASON dependency to your local Maven repository.
mvn install:install-file \
-Dfile=jars/mason.20.jar \
-DgroupId=mason \
-DartifactId=mason \
-Dversion=20 \
-Dpackaging=jar \
-DgeneratePom=true
Please compile Java files (if not yet) (will detect and use Maven) and launch the simulator.
sh scripts/build_AMLSim.sh
sh scripts/run_AMLSim.sh conf.json
The file names of the output data are defined at the "output" section of conf.json.
{
//...
"output": {
"directory": "outputs", // Output directory
"accounts": "accounts.csv", // Account list CSV
"transactions": "transactions.csv", // All transaction list CSV
"cash_transactions": "cash_tx.csv", // Cash transaction list CSV
"alert_members": "alert_accounts.csv", // Alerted account list CSV
"alert_transactions": "alert_transactions.csv", // Alerted transaction list CSV
"sar_accounts": "sar_accounts.csv", // SAR account list CSV
"party_individuals": "individuals-bulkload.csv",
"party_organizations": "organizations-bulkload.csv",
"account_mapping": "accountMapping.csv",
"resolved_entities": "resolvedentities.csv",
"transaction_log": "tx_log.csv",
"counter_log": "tx_count.csv",
"diameter_log": "diameter.csv"
},
//...
}
python3 scripts/convert_logs.py conf.json
python3 scripts/visualize/plot_distributions.py conf.json
python3 scripts/validation/validate_alerts.py conf.json
outputs directory and a temporal directorysh scripts/clean_logs.sh
Python
62.5%
Java
31.9%
Groovy
4.5%
Shell
1.2%