7. Why use graph
technology in AML?
Traditional
approach
Graph
approach
Slow investigations Investigations up to 5x faster
Uncertain decisions Act with a complete picture
Analytics geared towards individual
behaviors
Focus on the complex schemes of
criminal networks
10. A wide range of AML
use cases can be
tackled with graph
analytics.
Structuring. Synthetic
identities.
UBOs.
AML
investigations.
Sanctions
screening.
Entity
resolution.
11. Local exploration:
who this person
sent money to in
the last 30 days?
MATCH (a:BANK_ACCOUNT)
WHERE ID(a) = 10272
WITH a
MATCH p = (a)-
[:HAS_TRANSFERED|HAS_BANK_ACCOUNT*..3]-
(b:PERSON)
WITH p
WHERE ALL (rel IN relationships(p) WHERE
datetime(rel.date) < datetime() - duration({days:
30}) OR rel.date IS NULL)
RETURN p
12. Local exploration:
who are the
Ultimate Beneficial
Owners (UBOs) of
this company?
MATCH (a)
WHERE ID(a) = 15
WITH a
MATCH p = (a)<-[:IS_SHAREHOLDER_OF*..10]-(b)
WHERE ALL (
r IN relationships(p)
WHERE r.ownership > 0.20
)
RETURN p
13. Global exploration:
who received
>$10K in small cash
deposits
(structuring)?
MATCH (a:BANK_ACCOUNT)-[r:HAS_RECEIVED]-
>(b:TRANSACTION)
WHERE datetime(b.date) > datetime() -
duration({days: 90}) AND b.type = "Check"
WITH a, collect(r) as rels, sum(b.amount) as total
WHERE total>10000
RETURN a,rels,total
14. Global exploration:
are there money
mules (structuring)?
MATCH p = (a:TRANSACTION)-[:HOP*3..10]-
>(b:TRANSACTION)
WHERE b.amount > 0.7 * a.amount AND a.amount
> b.amount AND localtime() +
duration.between(date(a.date),date(b.date)) <
localtime() + duration({days: 90})
WITH p, nodes(p) as tx
WHERE ALL(idx in range(0, size(tx)-2) WHERE
(tx[idx]).date < (tx[idx+1]).date)
RETURN p
15. Global exploration:
are there people
sharing personal
information (fake
identity)?
CALL gds.graph.create.cypher(
'individual-graph',
'MATCH (n) WHERE n:PERSON RETURN id(n) AS
id',
'MATCH (a)-
[:HAS_IP_ADDRESS|HAS_EMAIL|HAS_ADDRESS|HA
S_PHONE_NUMBER]->(PI)<-
[:HAS_IP_ADDRESS|HAS_EMAIL|HAS_EMAIL|HAS_
PHONE_NUMBER]-(b) RETURN id(a) AS source,
id(b) AS target'
);
CALL gds.wcc.write('individual-graph', {
writeProperty: 'componentId' })
YIELD nodePropertiesWritten, componentCount;
16. How it works.
Data
preparation.
Graph
database.
Linkurious
Enterprise.
Stop criminal
networks.
Your team identifies
the relevant data
sources for your
project.
A graph expert
imports your data in
a graph database, it’s
a matter of days for
structured data.
Your analysts work
with a graph expert
to customize the look
and feel of Linkurious
Enterprise and setup
alerts and query
templates based on
your requirements.
Your analysts
connect to Linkurious
Enterprise or access
it via an existing app
to detect and
investigate criminal
networks.
17. Linkurious
Enterprise and
Neo4j help stop
money
laundering.
Detect new AML schemes
Go beyond the limitations of traditional
analytics to identify UBOs, structuring,
synthetic identities and more.
Accelerate investigations
With a 360° view of your clients, quickly
explore data to build a comprehensive
understanding of any situation and act
confidently.
Today I’m going to discuss how to use graph analytics to stop money laundering
My name is Jean Villedieu and I’m a co-founder of Linkurious
We provide Linkurious Enterprise, a graph based investigation platform that helps analysts make sense of complex connected data
It’s used in a wide range of scenarios including cyber-security and data governance but most of our clients are fighting financial crime
Today I will share some tips based on our experience working with them
We’ll start by a quick primer on what is AML and why it’s important
Then we’ll explore why graph analytics is great for AML
The bulk of the presentation will revolve around concrete examples of using graph analytics to identify money laundering schemes
First of all to understand what is AML we need to understand ML
The outcome or byproduct of a lot of criminal activities is money
Criminals then look to introduce this money into the financial system, it’s called placement
They then use different tactics to hide the illegal origins of the funds, that’s layering
Finally they tend to use the money to buy nice cars or other things. That’s integration
AML consists in stopping that cycle
It’s critical to remove the incentives associated with crime such as corruption, drug trafficking, human trafficking and so on
A couple of days ago the ICIJ and its partners published stories about the FinCEN files throughout the world
That investigation was was successfully conducted with the help of LKE and Neo4j
The FinCEN files are based on suspicious activity reports filed by banks when they fear that a transaction they are processing is illegal
For this investigation XXX journalists spent more than a year to analyse 0.002% of the files processed by FinCEN, the organization responsible for analysing the SARs
It shows how difficult analysing financial data for AML is
A lot of times the analysis comes down to understanding connections
For example if I’m a bank I want to know if a client is indirectly connected across a bank account, money transfers and so on to someone who has been accused of corruption
If I’m not able to follow the connections, I won’t be able to identify that my client may help the corrupt official launder money
The graph approach is perfect for this sort of problem
By thinking about data as a set of nodes and relationships, we can uncover hidden relationships in complex datasets
With graph dbs such as Neo4j, it becomes possible for a bank to build a very holistic picture of its clients
Why is that 360° view so important?
With traditional approaches, AML investigations are slow or error prone. Analysts need to chase information scattered across different tools and tabs
Linkurious Enterprise’s intuitive UI helps accelerate your investigations and make sure you can act with the full confidence of a complete picture, no matter how complex the situation
Similarly traditional tools are focused for performance reasons on queries with limited number of connections such as how many transactions has that client done in the last 30 days
With its alerts dashboard powered by graph analytics, Linkurious Enterprise also uncover schemes that traditional approaches fail to detect
We have built Linkurious Enterprise to help graph experts quickly turn the power of Neo4j into business impact
Linkurious Enterprise is an investigation platform compatible with Neo4j
It helps investigation teams detect and investigate insights hidden in graph data
I will use Linkurious Enterprise in the next demo section
With Linkurious Enterprise we will easily be able to turn our AML graph queries into relevant alerts or action buttons
We have built a fake dataset for today’s demo
It consists in 3M nodes and 40M relationships
Within our graph we have clients, companies, addresses, emails, phone numbers, bank accounts, IP addresses, ATMs and transactions
You can see with this schema how things are interconnected
<ul class="graph-diagram-markup" data-internal-scale="1.09" data-external-scale="1">
<li class="node" data-node-id="0" data-x="-241.3221836090088" data-y="161.61944415118242">
<span class="caption">Company</span>
</li>
<li class="node" data-node-id="1" data-x="474.732924858867" data-y="347.8454550996833">
<span class="caption">Address</span>
</li>
<li class="node" data-node-id="2" data-x="1072.3954996931445" data-y="161.61944415118242">
<span class="caption">Person</span>
</li>
<li class="node" data-node-id="3" data-x="474.732924858867" data-y="871.3245062682637">
<span class="caption">Bank Account</span>
</li>
<li class="node" data-node-id="4" data-x="1443.9212136924807" data-y="0">
<span class="caption">IP Address</span>
</li>
<li class="node" data-node-id="5" data-x="474.732924858867" data-y="0">
<span class="caption">Phone #</span>
</li>
<li class="node" data-node-id="7" data-x="474.732924858867" data-y="609.8628294008591">
<span class="caption">ATM</span>
</li>
<li class="node" data-node-id="8" data-x="474.732924858867" data-y="1465.3130573875221">
<span class="caption">Transaction</span>
</li>
<li class="node" data-node-id="9" data-x="1468.1336759514766" data-y="347.8454550996833">
<span class="caption">Email Address</span>
</li>
<li class="relationship" data-from="0" data-to="1"></li>
<li class="relationship" data-from="2" data-to="1"></li>
<li class="relationship" data-from="0" data-to="3"></li>
<li class="relationship" data-from="2" data-to="3"></li>
<li class="relationship" data-from="2" data-to="4"></li>
<li class="relationship" data-from="0" data-to="5"></li>
<li class="relationship" data-from="2" data-to="5"></li>
<li class="relationship" data-from="1" data-to="7"></li>
<li class="relationship" data-from="2" data-to="0">
<span class="type">IS OFFICER OF</span>
</li>
<li class="relationship" data-from="3" data-to="8">
<span class="type">HAS SENT</span>
</li>
<li class="relationship" data-from="8" data-to="3">
<span class="type">HAS RECEIVED</span>
</li>
<li class="relationship" data-from="2" data-to="9"></li>
</ul>
I have prepared a demo where I’ll show a few concrete examples of applying graph analytics to answer common AML questions
We will for example identify suspicious transactions structures, fake identities or beneficiary owners of a fictitious company
These are just some of the ways graph analytics can tackle the challenges of AML
7a83ee13-98a8-4bc9-8455-2dbe7bab1ea4
Let’s get started
Our first query will revolve around exploring the neighbourhood of a suspicious individual
We want to know who this person has received money from in the last 30 days
Human Kynetics
Let’s try another example
To comply with regulations banks need to identify for each of the companies they have as clients who are the persons who control them
It’s called the UBOs
This query helps us accomplish that
Now let’s switch gear
So far we have been focused on queries where we know the starting point
Now we’re going to ask questions about our entire graph
The first of those questions is “who among my clients has received more than 10K in the last 3 months
Our next query revolves around the structure of the financial transactions in our graph
This time we’re going to look for situations where an amount of money is moved from one account to another by being broken down into smaller transactions between intermediary accounts
This process is called smurfing and is used to obfuscate the relationship between the account sending the money and the one receiving it
Our last example will rely on Neo4j’s graph data science library
For this example we will look into groups of clients sharing personal information such as phone numbers, addresses, email addresses, etc
At first we will create a graph projection where we’re looking at how people are interconnected via personal information
Next we’ll use the Weakly Connected Components algo to identify groups within our newly created graph
Finally we will inspect the larger graphs
How does it work?
First your team needs to identify the relevant data for your project
Then a graph expert (either someone from your organization, a Solutions Engineer from Linkurious or one of our partners) imports your data into a graph database
Then your analysts work with a graph expert to customize the look of Linkurious Enterprise and the analytics based on your requirements
Finally your analysts can use Linkurious Enterprise to investigate criminal networks, either in standalone mode or within your existing apps
I hope this presentation has helped understand how to use LKE and Neo4j in AML
By combining these two solutions you can accelerate AML investigations and identify complex AML schemes that would otherwise go undetected