Getting Started
fcall is a Python package for parsing Farm Credit Administration (FCA) Call Report data into tidy Polars DataFrames.
It is a Python re-implementation of the R package {fcall} by Ketchbrook Analytics.
Installation
pip install fcall
# or with uv:
uv add fcallQuick start
The package exposes three functions that mirror the R package’s public API.
1. Download a quarter
import fcall
fcall.download_data(
year = 2025,
month = "September", # or month=9
dest = "fcadata/",
)This downloads the September 2025 archive from Ketchbrook’s public AWS S3 bucket and unzips it into fcadata/. Valid quarters are March, June, September, and December (or integers 3, 6, 9, 12).
2. Parse the data
result = fcall.process_data("fcadata/")
# Access a specific dataset
rcb_df = result["data"]["RCB"] # Debt Securities
inst_df = result["data"]["INST"] # Institution information
# Access the schema / metadata for that dataset
rcb_meta = result["metadata"]["RCB"]
print(rcb_meta["scenario"]) # "single_multiple"
print(rcb_meta["vars_info"]) # Polars DataFrame of column definitions3. Compare two quarters
fcall.download_data(year=2023, month=9, dest="fcadata_2023/")
fcall.download_data(year=2025, month=9, dest="fcadata_2025/")
diffs = fcall.compare_metadata(
dir1="fcadata_2023/",
dir2="fcadata_2025/",
)
# Files added or removed
print(diffs["file_differences"])
# Line-level content diffs for shared files that changed
for filename, diff_lines in diffs["content_differences"].items():
print(filename)
print("\n".join(diff_lines))What data is available?
FCA publishes Call Report data quarterly. As of March 2026 there are 36 datasets per quarter (72 files: one metadata D_*.TXT and one data file per dataset). See fcall.file_metadata for the full list with descriptions:
import fcall
print(fcall.file_metadata)FCA’s 2024 posted files contain a known defect. If you try to process 2024 data, fcall will emit a warning and point you to ketchbrookanalytics/fcall-py/issues/1 for details and workarounds.