Downloading Data

download_data() fetches a quarterly FCA Call Report archive from Ketchbrook Analytics’ public AWS S3 mirror and extracts it locally.

Basic usage

import fcall

fcall.download_data(
    year=2025,
    month="September",
    dest="fcadata/sep2025/",
)

Month argument

month accepts either the full month name or its integer equivalent:

# Both of these download September 2025
fcall.download_data(
    year=2025,
    month="September",
    dest="sep_by_name/",
)
fcall.download_data(
    year=2025,
    month=9,
    dest="sep_by_int/",
)

Valid quarters are 3 (March), 6 (June), 9 (September), 12 (December).

Selective extraction

Use the files argument to extract only the specific file(s) you want to download.

fcall.download_data(
    year=2025,
    month=9,
    dest="inst_only/",
    files=["D_INST.TXT", "INST_Q202509_G20251112.TXT"],
)

Suppressing output

Pass quiet=True to suppress the progress messages:

fcall.download_data(
    year=2025,
    month=9,
    dest="data/",
    quiet=True,
)

URL convention

FCA’s archive URL format changed in 2015:

Period URL format Example
2015 - present {year}{MonthName}.zip 2020March.zip
Before 2015 {AbbrevMonth}{year}.zip Sept2011.zip

download_data() handles this automatically.

Handling failed downloads

download_data() returns True if the data was downloaded and unzipped successfully. If it can’t download the data (e.g., there is no internet connection, the S3 bucket is unavailable, or there is no data for the requested year and month) or can’t unzip it, download_data() prints an informative message and returns False instead of raising an error. Invalid arguments, such as a non-quarter month, still raise a ValueError. A name in files that is not in the archive raises a KeyError, because that is a mistake in the call and not an unavailable resource.

Check the return value before processing:

if fcall.download_data(year=2025, month=9, dest="data/"):
    result = fcall.process_data("data/")

Data availability

Check https://www.fca.gov/bank-oversight/call-report-data-for-download to confirm a quarter’s data has been published before attempting a download. Typically each quarter’s data appears 5-6 weeks after the period ends.

Note2024 data

FCA’s posted 2024 RCR7 data files are missing rows, so process_data() fails on them. The 2024 files in Ketchbrook’s S3 bucket (which download_data() uses) have been corrected to add the missing rows. All other files are identical to FCA’s. See ketchbrookanalytics/fcall#23 for details. If you need FCA’s original 2024 files, download them directly from the FCA website.