network centrality

Anti-Money Laundering: Identifying Mules and Hubs

Scénario de test & Cas d'usage

Business Context

A financial institution wants to detect potential money laundering rings. They need to identify 'Hub' accounts (high transaction volume/degree) and 'Bridge' accounts (high betweenness) that connect otherwise unrelated groups of customers, which is a common pattern in layering funds.
Data Preparation

Creating a transaction graph representing fund transfers between accounts.

Copied!
1 
2DATA mycas.transactions;
3INPUT from_acc $ to_acc $ amount;
4DATALINES;
5Acc1 Acc2 1000 Acc1 Acc3 500 Acc2 Acc4 2000 Acc3 Acc4 150 Acc4 Acc5 3000 Acc5 Acc6 400 Acc6 Acc7 100 Acc5 Acc8 2000 ;
6 
7RUN;
8 
9DATA mycas.accounts;
10INPUT node $;
11DATALINES;
12Acc1 Acc2 Acc3 Acc4 Acc5 Acc6 Acc7 Acc8 ;
13 
14RUN;
15 

Étapes de réalisation

1
Load data and prepare the graph structure.
Copied!
1 
2PROC CAS;
3 
4TABLE.loadTable RESULT=r STATUS=s / caslib="casuser" path="transactions.sashdat";
5 
6RUN;
7 
2
Calculate Weighted Degree and Betweenness to find volume and bridges.
Copied!
1PROC CAS;
2 network.centrality /
3 links={name='transactions'}
4 nodes={name='accounts'}
5 degree='BOTH'
6 between='WEIGHT'
7 outNodes={name='aml_scores', replace=true};
8RUN;

Expected Result


The 'aml_scores' table should be generated containing 'cent_degree_out' (money sent), 'cent_degree_in' (money received), and 'cent_between_wt'. Accounts like Acc4 and Acc5 should show high betweenness centrality, indicating they act as bridges in the flow of funds.