Skip to contents

Compares total liabilities to unrestricted net assets.

Formula:

dmr = total_liabilities / unrestricted_net_assets

Definitional Range

Same as get_debt_equity_ratio(): bounded below at zero when both numerator and denominator are positive; unbounded above; negative when unrestricted net assets are negative.

Benchmarks and rules of thumb

  • Values above 3.0-5.0 are commonly flagged as high leverage in the nonprofit vulnerability literature. See get_debt_equity_ratio() for fuller benchmark guidance.

Calculated For: 990 + 990EZ filers.

Usage

get_debt_netassets_ratio( df,
  liabilities = c( "F9_10_LIAB_TOT_EOY", "F9_01_NAFB_LIAB_TOT_EOY" ),
  net_assets  = "F9_10_NAFB_UNRESTRICT_EOY",
  winsorize = 0.98 ,
  range     = "np",
  sanitize  = TRUE,
  summarize = FALSE )

Arguments

df

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

liabilities

Total liabilities, EOY. Accepts one or two column names; if two are provided they are coalesced with the 990 value taking priority over 990EZ.

net_assets

Unrestricted net assets, EOY.

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 "np". 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:

- `debt_netassets`   - debt to net assets ratio (raw)
- `debt_netassets_w` - winsorized version
- `debt_netassets_z` - standardized z-score (based on winsorized values)
- `debt_netassets_p` - percentile rank (1-100)

Details

Primary uses and key insights

The debt to net assets ratio compares total liabilities to unrestricted net assets, similar to get_debt_equity_ratio(). The key distinction is in scope: this function accepts both 990 and 990EZ filers (PZ scope) because it can use the Part I liabilities field as a fallback for 990EZ filers, whereas get_debt_equity_ratio() requires the Part X unrestricted net assets breakdown which is only on the full 990.

The practical use case for this function is cross-sectional analyses that include both 990 and 990EZ filers. For full-990-only datasets, get_debt_equity_ratio() provides a more precise measure.

Formula variations and their sources

See get_debt_equity_ratio() for a full discussion of formula variations. This implementation uses F9_10_NAFB_UNRESTRICT_EOY as the denominator (unrestricted net assets, Part X line 27B) and falls back to the Part I summary liabilities field for the numerator when needed. The Part X unrestricted net assets field is not available on 990EZ, so 990EZ filers will have NA for this ratio.

Canonical citations

  • Tuckman, H.P. & Chang, C.F. (1991). A methodology for measuring the financial vulnerability of charitable nonprofit organizations. Nonprofit and Voluntary Sector Quarterly, 20(4), 445-460.

Variables used:

  • F9_10_LIAB_TOT_EOY: Total liabilities, EOY (liabilities, 990)

  • F9_01_NAFB_LIAB_TOT_EOY: Total liabilities from Part I (liabilities, 990EZ fallback)

  • F9_10_NAFB_UNRESTRICT_EOY: Unrestricted net assets, EOY (net_assets)

Examples

library( fiscal )
data( dat10k )

d <- get_debt_netassets_ratio( df = dat10k )
#>    :: Net assets equal to zero :: 1,661 case(s) replaced with NaN
head( d[ , c( "debt_netassets", "debt_netassets_w", "debt_netassets_z", "debt_netassets_p" ) ] )
#>    debt_netassets debt_netassets_w debt_netassets_z debt_netassets_p
#>             <num>            <num>            <num>            <int>
#> 1:             NA               NA               NA               NA
#> 2:            NaN              NaN               NA               NA
#> 3:     0.05232291       0.05232291       0.05821479               53
#> 4:             NA               NA               NA               NA
#> 5:     0.92405358       0.92405358       1.12609439               89
#> 6:             NA               NA               NA               NA