Package {CamelRatiosIndex}


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

logo

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:

See Also

Useful links:


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 bank_names.

current_data

A data frame or matrix containing the current year CAMEL ratios, in the same format and order as base_data.

bank_names

A character or numeric vector of bank identifiers. Required when base_data and current_data are matrices. Must be the same length as the number of rows in the data. Ignored when inputs are data frames.

n_factors

Integer specifying the number of factors to extract in the robust factor analysis. Default is 3.

scale_data

Logical indicating whether to standardize the data before factor analysis. Default is TRUE.

cov_control

A control object for robust covariance estimation, passed to robustfa::FaCov(). Default is rrcov::CovControlOgk().

method

Character specifying the factor analysis method. Default is "pca" (principal component analysis). See robustfa::FaCov() for options.

scores_method

Character specifying the method for computing factor scores. Default is "regression". See robustfa::FaCov() for options.

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 columns bank, I_mw (composite index, base = 100), and PD (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:

  1. Capital Adequacy (Ca)

  2. Asset Quality (Aq) – inverted internally

  3. Management Efficiency (Me) – inverted internally

  4. Earnings (Eq)

  5. 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 "camel_index" returned by camel_index().

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 TRUE.

point_size

Numeric, size of points. Default is 3.

line_size

Numeric, size of line segments. Default is 0.8.

colour_palette

Character vector of colours for highlighted banks. Default uses a ColorBrewer qualitative palette.

title

Optional plot title. If NULL (default), a descriptive title is generated.

subtitle

Optional plot subtitle.

caption

Optional plot caption. If NULL (default), a caption describing the base year is generated.

theme_fn

A ggplot2 theme function. Default is ggplot2::theme_minimal().

...

Additional arguments passed to ggplot2::geom_line() and ggplot2::geom_point().

object

An object of class "camel_index" (for the autoplot generic).

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 "camel_index".

...

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 "camel_index".

...

Additional arguments (ignored).

Value

Invisibly returns object.

Examples

result <- camel_index(camel_2015, camel_2022)
summary(result)

mirror server hosted at Truenetwork, Russian Federation.