network community

Detection of Money Laundering Rings (Directed Graph)

Scénario de test & Cas d'usage

Business Context

A financial institution wants to identify potential money laundering rings where funds circulate in a closed loop between accounts. Since money flow is directional, the analysis must respect the direction of transactions.
Data Preparation

Creation of a transactional dataset with a clear closed loop (A->B->C->A) and a separate legitimate transaction path.

Copied!
1DATA mycas.transactions; INPUT from_acc $ to_acc $ amount; DATALINES;
2ACC_A ACC_B 10000
3ACC_B ACC_C 9500
4ACC_C ACC_A 9000
5ACC_X ACC_Y 50
6ACC_Y ACC_Z 50
7; RUN;

Étapes de réalisation

1
Load data and run community detection considering direction.
Copied!
1PROC CAS;
2 network.community /
3 direction="DIRECTED"
4 links={name="transactions", vars={"from_acc", "to_acc", "amount"}}
5 outNodes={name="account_communities", replace=true};
6QUIT;
2
Verify results (Expected: A, B, C share a community ID different from X, Y, Z).
Copied!
1 
2PROC PRINT
3DATA=mycas.account_communities;
4where _community_ ne .;
5 
6RUN;
7 

Expected Result


The accounts ACC_A, ACC_B, and ACC_C should be grouped into a single unique community ID due to the strong directional circular flow, distinguishing them from the linear flow of X->Y->Z.