Mining FinCEN data

In this post I discuss how to use a financial institution’s search engine (FinCEN) and Python to analyze data on  financial market participants.   

how to use a financial institution’s search engine (FinCEN) and Python to analyze data on  financial market participants.   

Legal Background

The Financial Crimes Enforcement Network is a bureau within the Treasury Department, established on 31 U.S.C. §310 as a regulatory basis. Its duties and powers with respect to data analysis include, in short:

  1. advise and make recommendations on matters relating to financial intelligence, financial crimes and other financial activities;
  2. Maintain a government-wide data access service with access to (i) information collected by the Department of the Treasury including reports concerning monetary instruments transactions, pursuant to [several Acts] , (ii) information regarding currency flows, (iii) other records and data maintained by government agencies, among other information;
  3. analyze and disseminate the available data to (i) identify possible criminal activity to enforcement agencies; (ii) support criminal financial investigations, prosecutions and proceedings; (iii) identify possible instances of noncompliance; (v) determine emerging trends and methods in money laundering and other financial crimes; (vi) support the conduct of intelligence activities to protect against international terrorism;
  4. Establish and maintain a financial crimes communications center to furnish law enforcement authorities with intelligence information related to emerging or ongoing investigations and undercover operations
  5.  Furnish research, analytical, and informational services to financial institutions in the interest of detection, prevention, and prosecution of terrorism, organized crime, money laundering, and other financial crimes
  6. Provide computer and data support and data analysis to the Secretary of the Treasury for tracking and controlling foreign assets.

Pursuant to Treasury Order 180-01, FinCEN is responsible for the implementation, administration and enforcement of compliance with
the Currency and Foreign Transactions Reporting Act of 1970 (“Bank Secrecy Act”), a law that requires companies to co-operate with the government to prevent money laundering. Section 1022.380 of 31 CFR Chapter X applies to money services businesses (MSBs) as defined in 31 CFR 1010.100 (ff) and requires these companies to register with the FinCEN. The FinCEN maintains a repository on its website with publicly available information on all MSB Registrants.

Mining HTML tables and analyzing them using Python Pandas

Python, together with the BeautifulSoup and Pandas libraries, makes extracting the MSB data an easy task

FinCEN allows you to either (1) download the .xls file containing all registrants or (2) use the web interface to view (a part or all of) the registrants. Obviously, we will use route (2) since knowing how to scrape the page is a useful skill for websites which do not provide an .xls file.

A brief look at the Document Object Model of the webpage reveals a pretty straightforward HTML structure with an embedded table. Python, together with the BeautifulSoup and Pandas libraries, makes extracting the MSB data an easy task. I posted a simple script here. Note that I first created a local copy of the HTML before scraping it. Navigating the HTML tags allows you to preserve the table’s structure and dump it in a Pandas DataFrame, which you can subsequently use in another program, or export  to csv.

To get a sense of the activities of MSB registrants, I use Pandas. Since FinCEN provides uses numeric codes to refer to the MSB activities, you must use information located elsewhere on the institution’s page to make sense of the data. Using a basic script, I produced the following:

Overview of MSB Activities in all States and Territories.
Overview of MSB activities in all States and Territories.
Overview of MSB activities as disclosed by New York based registrants.
Overview of MSB activities as disclosed by New York based registrants.

It is relatively easy to sort the bars by size, which I will leave to you. To compare the numbers, I used basic Numpy code to produce a concise table:


It seems that in New York State as well in all U.S. States and Territories, cashing checks, transmitting money and selling money orders are the most common activities of MSB registrants. These are not the only activities of the respective MSB registrants, as very often MSBs are engaged in multiple activities and active in multiple States.