optNetwork cycle

Anti-Money Laundering: Circular Transaction Detection

Scénario de test & Cas d'usage

Business Context

A banking institution needs to identify 'smurfing' or circular money laundering patterns where funds are transferred through a series of accounts and return to the originator (e.g., A -> B -> C -> A) to obscure the source.
About the Set : optNetwork

Network analysis and graph algorithms.

Discover all actions of optNetwork
Data Preparation

Creation of a transaction table with a hidden circular pattern (Acc_A -> Acc_B -> Acc_C -> Acc_A) among legitimate linear transfers.

Copied!
1 
2DATA mycas.transactions;
3INPUT from_acc $ to_acc $ amount;
4DATALINES;
5Acc_A Acc_B 10000 Acc_B Acc_C 9500 Acc_C Acc_A 9000 Acc_X Acc_Y 500 Acc_Y Acc_Z 200;
6 
7RUN;
8 

Étapes de réalisation

1
Execution of cycle detection on directed graph looking for all cycles with a minimum length of 3 hops.
Copied!
1 
2PROC CAS;
3optNetwork.cycle RESULT=r STATUS=s / direction="DIRECTED" links={name="transactions"} linksVar={from="from_acc", to="to_acc"} maxCycles="ALL" minLength=3 out={name="SuspiciousRings", replace=true} outCyclesLinks={name="RingDetails", replace=true};
4 
5RUN;
6 
2
Validation of results ensuring the linear transaction (X->Y->Z) is ignored.
Copied!
1 
2PROC CAS;
3TABLE.fetch TABLE={name="SuspiciousRings"};
4 
5RUN;
6 

Expected Result


The action identifies exactly one cycle (Acc_A, Acc_B, Acc_C). The output table 'SuspiciousRings' contains the 3 accounts involved. The linear transactions are excluded.