--- title: "General Workflow" output: rmarkdown::html_vignette vignette: > %\VignetteIndexEntry{General Workflow} %\VignetteEngine{knitr::rmarkdown} %\VignetteEncoding{UTF-8} --- ```{r, include = FALSE} library(ffiec) no_creds <- no_creds_available() knitr::opts_chunk$set( collapse = TRUE, comment = "#>", eval = !no_creds ) ``` ```{r eval = no_creds, echo = FALSE, comment = NA} message( "No FFIEC API credentials available. Code chunks will not be evaluated." ) ``` ## Using {ffiec} This package attempts to offer a convenient interface to interact with the Central Data Repository 'REST API' service made available by the United States Federal Financial Institutions Examination Council ('FFIEC'). ## Getting Started If you haven't done so already, install {ffiec} and create an account through the FFIEC's Web Service portal using the instructions in the [README section](https://ketchbrookanalytics.github.io/ffiec/#installation). With your username and password from the FFIEC's Web Service portal in-hand (either stored as environment variables or ready to be passed as function arguments), load the package using `library()`. ```{r load, eval = FALSE} library(ffiec) ``` While the package offers several functions to enable different workflows and analyses, one general workflow is as follows: - Collect a list of available Call reporting periods - For each desired Call reporting period and desired Institution ID, retrieve Call report data First, to obtain the available Call reporting periods, use the `get_reporting_periods()` function. The `as_data_frame` argument is set to `TRUE` to alter the return behavior of the function. By default, the function will return a list object. ```{r periods} reporting_periods <- get_reporting_periods(as_data_frame = TRUE) ``` Next, filter the `get_reporting_periods()` return value to the period(s) of interest. For the purposes of this example, the four reporting periods in calendar year 2025 will be used. ```{r last_four_quarters} reports_2025 <- reporting_periods |> dplyr::filter( ReportingPeriod <= as.Date("2025-12-31"), ReportingPeriod >= as.Date("2025-01-01") ) |> dplyr::pull() ``` Using the `get_facsimile()` function, Call report data can be collected for the selected reporting periods and one or more specified institutions. ```{r call_data} call_df <- get_facsimile( reporting_period_end_date = reports_2025, fi_id = c(480228, 451965) ) ``` Notice that each institution ID (column `BankRSSDIdentifier`) contains Call report data for each reporting period. ```{r call_data_count} call_df |> dplyr::count(CallDate, BankRSSDIdentifier) ``` This example can be extended by comparing Call report values, either between periods or between institutions (or both). Below, the Call report data is filtered to display Tier 1 capital for each institution over the selected reporting periods. ```{r call_data_filter} call_df |> dplyr::filter(MDRM == "RCFA8274") |> # Tier 1 capital dplyr::mutate(Value = as.numeric(Value)) ``` ## Additional Uses The package offers functions to interact with both Call report data and Uniform Bank Performance Report (UBPR) data. To interact with the latter, simply substitute `get_ubpr_reporting_periods()` and `get_ubpr_facsimile()` into the above examples. However, please be aware that `get_ubpr_facsimile()` returns different column names than `get_facsimile()`.