| Title: | Multivariate-Weighted Indexing of CAMEL Ratios for Bank Performance |
| Version: | 1.0.0 |
| Description: | Computes a composite year-on-year index for bank performance assessment using the CAMEL framework (Capital Adequacy, Asset Quality, Management Efficiency, Earnings, Liquidity). The multivariate weighting scheme employs factor analysis with robust covariance estimation to derive communality-based weights from the correlation matrix of CAMEL ratios. Provides functions for index computation, visualization, and comparison across banks and time periods.The methodology is described in Ayimah et al. (2023a) <doi:10.9734/bpi/mono/978-81-19315-32-1> and Ayimah et al. (2023b) https://ajtem.com/index.php/ajtem/article/view/53. |
| License: | MIT + file LICENSE |
| URL: | https://github.com/JC-Ayimah/CamelRatiosIndex, https://JC-Ayimah.github.io/CamelRatiosIndex/ |
| BugReports: | https://github.com/JC-Ayimah/CamelRatiosIndex/issues |
| Depends: | R (≥ 3.5) |
| Imports: | cli (≥ 3.6.0), dplyr (≥ 1.1.0), ggplot2 (≥ 3.4.0), robustfa, rrcov, stats, tibble (≥ 3.2.0), utils |
| Suggests: | knitr, rmarkdown, testthat (≥ 3.0.0), vdiffr |
| VignetteBuilder: | knitr |
| Config/roxygen2/version: | 8.0.0 |
| Config/testthat/edition: | 3 |
| Encoding: | UTF-8 |
| LazyData: | true |
| NeedsCompilation: | no |
| Packaged: | 2026-06-15 08:25:35 UTC; JC-AYIMAH |
| Author: | John Coker Ayimah [aut, cph, cre], George Kyei Agyen [aut, cph], Raymond Achiyaale [aut, cph] |
| Maintainer: | John Coker Ayimah <jayimah@htu.edu.gh> |
| Repository: | CRAN |
| Date/Publication: | 2026-06-20 13:50:08 UTC |
CamelRatiosIndex: Multivariate-Weighted Indexing of CAMEL Ratios for Bank Performance
Description
Computes a composite year-on-year index for bank performance assessment using the CAMEL framework (Capital Adequacy, Asset Quality, Management Efficiency, Earnings, Liquidity). The multivariate weighting scheme employs factor analysis with robust covariance estimation to derive communality-based weights from the correlation matrix of CAMEL ratios. Provides functions for index computation, visualization, and comparison across banks and time periods.The methodology is described in Ayimah et al. (2023a) doi:10.9734/bpi/mono/978-81-19315-32-1 and Ayimah et al. (2023b) https://ajtem.com/index.php/ajtem/article/view/53.
Author(s)
Maintainer: John Coker Ayimah jayimah@htu.edu.gh [copyright holder]
Authors:
John Coker Ayimah jayimah@htu.edu.gh [copyright holder]
George Kyei Agyen gkagyen@live.com [copyright holder]
Raymond Achiyaale rachiyaale@htu.edu.gh [copyright holder]
See Also
Useful links:
Report bugs at https://github.com/JC-Ayimah/CamelRatiosIndex/issues
CAMEL Ratio Data for Ghanaian Banks (2015)
Description
CAMEL ratio data for 21 Ghanaian commercial banks as of 2015. Data sourced from Bank of Ghana publications.
Usage
camel_2015
Format
A data frame with 21 rows and 6 columns:
- Bank
Bank name (character)
- Ca1
Capital Adequacy ratio
- Aq1
Asset Quality ratio
- Me1
Management Efficiency ratio
- Eq1
Earnings ratio
- Lm1
Liquidity ratio
Source
Bank of Ghana and Ghana Stock Exchange
CAMEL Ratio Data for Ghanaian Banks (2016)
Description
CAMEL ratio data for 21 Ghanaian commercial banks as of 2016. Data sourced from Bank of Ghana publications.
Usage
camel_2016
Format
A data frame with 21 rows and 6 columns:
- Bank
Bank name (character)
- Ca2
Capital Adequacy ratio
- Aq2
Asset Quality ratio
- Me2
Management Efficiency ratio
- Eq2
Earnings ratio
- Lm2
Liquidity ratio
Source
Bank of Ghana and Ghana Stock Exchange
CAMEL Ratio Data for Ghanaian Banks (2017)
Description
CAMEL ratio data for 21 Ghanaian commercial banks as of 2017. Data sourced from Bank of Ghana publications.
Usage
camel_2017
Format
A data frame with 21 rows and 6 columns:
- Bank
Bank name (character)
- Ca2
Capital Adequacy ratio
- Aq2
Asset Quality ratio
- Me2
Management Efficiency ratio
- Eq2
Earnings ratio
- Lm2
Liquidity ratio
Source
Bank of Ghana and Ghana Stock Exchange
CAMEL Ratio Data for Ghanaian Banks (2018)
Description
CAMEL ratio data for 21 Ghanaian commercial banks as of 2017. Data sourced from Bank of Ghana publications.
Usage
camel_2018
Format
A data frame with 21 rows and 6 columns:
- Bank
Bank name (character)
- Ca2
Capital Adequacy ratio
- Aq2
Asset Quality ratio
- Me2
Management Efficiency ratio
- Eq2
Earnings ratio
- Lm2
Liquidity ratio
Source
Bank of Ghana and Ghana Stock Exchange
CAMEL Ratio Data for Ghanaian Banks (2019)
Description
CAMEL ratio data for 21 Ghanaian commercial banks as of 2019. Data sourced from Bank of Ghana publications.
Usage
camel_2019
Format
A data frame with 21 rows and 6 columns:
- Bank
Bank name (character)
- Ca2
Capital Adequacy ratio
- Aq2
Asset Quality ratio
- Me2
Management Efficiency ratio
- Eq2
Earnings ratio
- Lm2
Liquidity ratio
Source
Bank of Ghana and Ghana Stock Exchange
CAMEL Ratio Data for Ghanaian Banks (2020)
Description
CAMEL ratio data for 21 Ghanaian commercial banks as of 2020. Data sourced from Bank of Ghana publications.
Usage
camel_2020
Format
A data frame with 21 rows and 6 columns:
- Bank
Bank name (character)
- Ca2
Capital Adequacy ratio
- Aq2
Asset Quality ratio
- Me2
Management Efficiency ratio
- Eq2
Earnings ratio
- Lm2
Liquidity ratio
Source
Bank of Ghana and Ghana Stock Exchange
CAMEL Ratio Data for Ghanaian Banks (2021)
Description
CAMEL ratio data for 21 Ghanaian commercial banks as of 2021. Data sourced from Bank of Ghana publications.
Usage
camel_2021
Format
A data frame with 21 rows and 6 columns:
- Bank
Bank name (character)
- Ca2
Capital Adequacy ratio
- Aq2
Asset Quality ratio
- Me2
Management Efficiency ratio
- Eq2
Earnings ratio
- Lm2
Liquidity ratio
Source
Bank of Ghana and Ghana Stock Exchange
CAMEL Ratio Data for Ghanaian Banks (2022)
Description
CAMEL ratio data for 21 Ghanaian commercial banks as of 2022. Data sourced from Bank of Ghana publications.
Usage
camel_2022
Format
A data frame with 21 rows and 6 columns:
- Bank
Bank name (character)
- Ca2
Capital Adequacy ratio
- Aq2
Asset Quality ratio
- Me2
Management Efficiency ratio
- Eq2
Earnings ratio
- Lm2
Liquidity ratio
Source
Bank of Ghana and Ghana Stock Exchange
Compute Multivariate-Weighted CAMEL Index
Description
Computes a composite year-on-year index for bank performance assessment using the CAMEL framework. The multivariate weighting scheme employs robust factor analysis to derive communality-based weights from the correlation matrix of CAMEL ratios.
Usage
camel_index(
base_data,
current_data,
bank_names = NULL,
n_factors = 3,
scale_data = TRUE,
cov_control = rrcov::CovControlOgk(),
method = "pca",
scores_method = "regression"
)
Arguments
base_data |
A data frame or matrix containing the base year CAMEL ratios.
If a data frame, the first column must contain bank identifiers (character or
numeric). If a matrix, bank identifiers must be supplied separately via
|
current_data |
A data frame or matrix containing the current year CAMEL
ratios, in the same format and order as |
bank_names |
A character or numeric vector of bank identifiers. Required
when |
n_factors |
Integer specifying the number of factors to extract in the
robust factor analysis. Default is |
scale_data |
Logical indicating whether to standardize the data before
factor analysis. Default is |
cov_control |
A control object for robust covariance estimation, passed to
|
method |
Character specifying the factor analysis method. Default is
|
scores_method |
Character specifying the method for computing factor
scores. Default is |
Details
The index is computed as the arithmetic mean of two multivariate-weighted Laspeyres-type and Paasche-type indices, scaled to a base of 100. The percentage difference (PD) from the base year is also reported.
Value
A list of class "camel_index" containing:
- index_table
A
tibble::tibble()with columnsbank,I_mw(composite index, base = 100), andPD(percentage difference from base).- mw_lasp
Numeric vector of multivariate-weighted Laspeyres indices.
- mw_pash
Numeric vector of multivariate-weighted Paasche indices.
- I_mw
Numeric vector of composite indices (base = 100).
- PD
Numeric vector of percentage differences from base year.
- weights_base
Numeric vector of communality-based weights from base year factor analysis.
- weights_current
Numeric vector of communality-based weights from current year factor analysis.
- eigenvalues_base
Numeric vector of eigenvalues from base year correlation matrix.
- eigenvalues_current
Numeric vector of eigenvalues from current year correlation matrix.
- n_factors_base
Integer, number of eigenvalues > 1 in base year.
- n_factors_current
Integer, number of eigenvalues > 1 in current year.
- fa_base
The fitted
robustfa::FaCov()object for base year.- fa_current
The fitted
robustfa::FaCov()object for current year.- relativity_data
Matrix of current-to-base ratios for each CAMEL variable and bank.
- base_data
The processed base year data (matrix, no bank names).
- current_data
The processed current year data (matrix, no bank names).
- bank_names
Character vector of bank identifiers.
- n_factors
Integer, number of factors used.
- call
The matched call.
Data Format
When supplying data frames, the first column must be the bank identifier (character or numeric), and the remaining columns must be the five CAMEL ratios in the standard order:
Capital Adequacy (Ca)
Asset Quality (Aq) – inverted internally
Management Efficiency (Me) – inverted internally
Earnings (Eq)
Liquidity (Lm) – inverted internally
The inversion of Aq, Me, and Lm is handled automatically because higher values of these ratios indicate worse bank performance.
Examples
# Using the built-in example data
base_year <- camel_2015
current_year <- camel_2022
result <- camel_index(base_year, current_year)
result$index_table
# Access individual components
result$mw_lasp
result$mw_pash
result$weights_base
# Using matrices with explicit bank names
base_mat <- as.matrix(camel_2015[, -1])
curr_mat <- as.matrix(camel_2022[, -1])
banks <- camel_2015$Bank
result2 <- camel_index(base_mat, curr_mat, bank_names = banks)
result2$index_table
Plot CAMEL Index Percentage Differences
Description
Creates a ggplot2 line graph showing the percentage difference (PD) from the base year for each bank, enabling visual comparison of bank performance across the CAMEL framework.
Usage
plot_camel_index(
x,
highlight_banks = NULL,
add_reference_line = TRUE,
point_size = 3,
line_size = 0.8,
colour_palette = NULL,
title = NULL,
subtitle = NULL,
caption = NULL,
theme_fn = ggplot2::theme_minimal,
...
)
## S3 method for class 'camel_index'
autoplot(object, ...)
Arguments
x |
An object of class |
highlight_banks |
Optional character vector of bank names to highlight with distinct colours. All other banks are shown in grey. |
add_reference_line |
Logical indicating whether to add a horizontal
reference line at PD = 0 (the base year level). Default is |
point_size |
Numeric, size of points. Default is |
line_size |
Numeric, size of line segments. Default is |
colour_palette |
Character vector of colours for highlighted banks. Default uses a ColorBrewer qualitative palette. |
title |
Optional plot title. If |
subtitle |
Optional plot subtitle. |
caption |
Optional plot caption. If |
theme_fn |
A ggplot2 theme function. Default is |
... |
Additional arguments passed to |
object |
An object of class |
Value
A ggplot object.
Examples
# Basic plot
result <- camel_index(camel_2015, camel_2022)
plot_camel_index(result)
# Highlight specific banks
plot_camel_index(result, highlight_banks = c("Absa", "Ecobank", "GCB"))
# Custom styling
plot_camel_index(
result,
highlight_banks = c("Absa", "Ecobank"),
title = "Bank Performance: 2015 vs 2022",
subtitle = "Percentage difference from base year",
colour_palette = c("#E41A1C", "#377EB8"),
theme_fn = ggplot2::theme_bw
)
Print Method for camel_index Objects
Description
Print Method for camel_index Objects
Usage
## S3 method for class 'camel_index'
print(x, ...)
Arguments
x |
An object of class |
... |
Additional arguments (ignored). |
Value
Invisibly returns x.
Examples
base_year <- camel_2015
current_year <- camel_2022
result <- camel_index(base_year, current_year)
result
Summary Method for camel_index Objects
Description
Provides a detailed summary of the CAMEL index computation, including eigenvalues, factor loadings, and weight attribution.
Usage
## S3 method for class 'camel_index'
summary(object, ...)
Arguments
object |
An object of class |
... |
Additional arguments (ignored). |
Value
Invisibly returns object.
Examples
result <- camel_index(camel_2015, camel_2022)
summary(result)