Skip to contents

Monthly rate at which an organization draws down its cash reserves.

Formula:

brr = ( cash_boy - cash_eoy ) / months_in_period

Definitional Range

Bounded below at zero (cash cannot be negative). Values below 1.0 indicate cash depletion; values above 1.0 indicate cash accumulation. Ratios near zero indicate near-complete cash exhaustion. The ratio is undefined (NA) when beginning-of-year cash is zero, which occurs in the first year of operation or after a complete cash drawdown.

Benchmarks and rules of thumb

  • A ratio consistently below 1.0 over multiple years is a warning sign; a single year below 1.0 may reflect planned reserve spending.

  • Below 0.50 in a single year (cash halved) warrants investigation.

  • A ratio consistently above 1.0 indicates accumulating liquidity reserves.

Calculated For: 990 + 990EZ filers.

Usage

get_cash_burn_ratio( df,
  cash_eoy         = "F9_10_ASSET_CASH_EOY",
  cash_boy         = "F9_10_ASSET_CASH_BOY",
  months_in_period = 12,
  winsorize = 0.98 ,
  range     = "zp",
  sanitize  = TRUE,
  summarize = FALSE )

Arguments

df

A data.frame containing the fields required for computing the metric.

cash_eoy

Cash on hand, end of year.

cash_boy

Cash on hand, beginning of year.

months_in_period

Number of months in the reporting period. Defaults to 12 for a standard annual filing. Adjust for short-year filers.

winsorize

The winsorization value (between 0 and 1), defaults to 0.98, which winsorizes at the 1st and 99th percentiles.

range

Character string specifying the theoretical range of the ratio, used to set winsorization bounds. Default "zp". Options: "np" (negative to positive), "zp" (zero to positive), "zo" (zero to one), "nz" (negative to zero), or a custom "lo;hi" pair (e.g. "0;10").

sanitize

Logical (default TRUE). If TRUE, NA values in the financial input columns are imputed to zero before the ratio is computed, respecting form scope: Part X and VIII/IX fields (990 only) are imputed only for 990 filers; Part I summary fields (990 + 990EZ) are imputed for all filers. The returned dataframe always contains the original unmodified input columns.

summarize

Logical. If TRUE, prints a summary() of the results and plots density curves for all four output columns (raw, winsorized, z-score, percentile). Defaults to FALSE.

Value

Object of class data.frame: the original dataframe appended with four new columns:

- `cash_burn`   - monthly burn rate in dollars (raw)
- `cash_burn_w` - winsorized version
- `cash_burn_z` - standardized z-score (based on winsorized values)
- `cash_burn_p` - percentile rank (1-100)

Details

Primary uses and key insights

The burn rate ratio compares end-of-year cash to beginning-of-year cash, measuring the rate at which an organization is accumulating or depleting its cash position over a single fiscal year. A ratio below 1.0 means the organization ended the year with less cash than it started with (burning cash); a ratio above 1.0 means it accumulated cash. It is most useful for detecting multi-year cash erosion trends before they reach a crisis point.

Formula variations and their sources

The term "burn rate" originates in startup finance, where it refers to monthly cash outflows. The nonprofit adaptation here is an annual version: EOY cash divided by BOY cash. An alternative formulation computes the dollar change (EOY - BOY) divided by annual expenses to express the burn as a fraction of the operating budget, but that version requires an additional variable and is better captured by the days/months of cash functions (get_days_cash_operations(), get_months_cash_operations()).

Why this formula was chosen

The EOY/BOY ratio is the simplest formulation and requires only two fields from the Part X balance sheet. It directly answers "is the cash position improving or deteriorating year-over-year?" without requiring expense data, making it calculable even for organizations where Part IX data is incomplete.

Canonical citations

  • Zietlow, J., Hankin, J.A. & Seidner, A. (2007). Financial Management for Nonprofit Organizations. Wiley. - Discusses cash trend analysis for nonprofits.

  • Nonprofit Finance Fund. (Annual). State of the Nonprofit Sector Survey.

    • Annual survey tracks cash position changes as a sector-wide indicator.

Variables used:

  • F9_10_ASSET_CASH_EOY: Cash on hand, end of year (cash_eoy)

  • F9_10_ASSET_CASH_BOY: Cash on hand, beginning of year (cash_boy)

Examples

library( fiscal )
data( dat10k )

d <- get_cash_burn_ratio( df = dat10k )
head( d[ , c( "cash_burn", "cash_burn_w", "cash_burn_z", "cash_burn_p" ) ] )
#>      cash_burn cash_burn_w cash_burn_z cash_burn_p
#>          <num>       <num>       <num>       <int>
#> 1:          NA          NA          NA          NA
#> 2:  -5214.5833  -5214.5833  -0.5777694          29
#> 3: 393444.1667 183044.3667   3.7522370         100
#> 4:          NA          NA          NA          NA
#> 5:   -308.3333   -308.3333   0.1077133          54
#> 6:          NA          NA          NA          NA