Net surplus or deficit as a share of beginning-of-year net assets.
Formula:
rona = revenues_less_expenses / net_assets_boyDefinitional Range
Unbounded in both directions. A value of 0 means break-even. The typical range for nonprofits is approximately [-0.30, 0.30]. The ratio is undefined (NA) when beginning net assets equal zero. Extreme values occur when BOY net assets are near zero (small denominator) rather than when the surplus itself is large.
Benchmarks and rules of thumb
Small positive values (0.02-0.10) are considered healthy.
Sustained negative RONA over multiple years is a financial vulnerability indicator (Greenlee & Trussel 2000).
Most useful in trend analysis and within-subsector comparisons.
Calculated For: 990 + 990EZ filers.
Usage
get_return_netassets_ratio( df,
revenues_less_expenses = "F9_01_EXP_REV_LESS_EXP_CY",
net_assets_boy = c( "F9_10_NAFB_TOT_BOY", "F9_01_NAFB_TOT_BOY" ),
winsorize = 0.98 ,
range = "np",
sanitize = TRUE,
summarize = FALSE )Arguments
- df
A
data.framecontaining the fields required for computing the metric.- revenues_less_expenses
Revenues less expenses (net surplus or deficit) for the current year. Accepts one or two column names; if two are provided they are coalesced with the 990 value taking priority over 990EZ.
- net_assets_boy
Total net assets, beginning of year. Accepts one or two column names.
- 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). IfTRUE, 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 asummary()of the results and plots density curves for all four output columns (raw, winsorized, z-score, percentile). Defaults toFALSE.
Value
Object of class data.frame: the original dataframe appended with four
new columns:
- `return_netassets` - return on net assets (raw)
- `return_netassets_w` - winsorized version
- `return_netassets_z` - standardized z-score (based on winsorized values)
- `return_netassets_p` - percentile rank (1-100)Details
Primary uses and key insights
Return on net assets (RONA) measures how effectively the organization used its equity base to generate a surplus. By using beginning-of-year net assets as the denominator, it expresses the annual surplus as a percentage return on the organizational equity in place at the start of the year - analogous to return on equity (ROE) in commercial finance.
RONA is closely related to get_netassets_growth_ratio(): both measure
year-over-year equity change, but RONA uses the reported revenues-less-expenses figure
while the growth ratio uses the direct balance sheet comparison (EOY - BOY). The two
can differ when there are other net asset adjustments (line 20 on Form 990 Part I).
Formula variations and their sources
Revenues less expenses / net assets BOY. Using beginning-of-year net assets in the denominator (rather than ending or average) avoids circular dependency: the ending value is determined partly by the surplus being measured. This is the standard approach in the nonprofit literature (Greenlee & Trussel 2000).
An alternative uses average net assets ((BOY + EOY)/2), which smooths distortions from large mid-year transactions, but requires two balance sheet fields and is not standard in the 990-based literature.
Canonical citations
Greenlee, J.S. & Trussel, J.M. (2000). Predicting the financial vulnerability of charitable organizations. Nonprofit Management and Leadership, 11(2), 199-210.
Keating, E.K., Fischer, M., Gordon, T.P. & Greenlee, J. (2005). Assessing financial vulnerability in the nonprofit sector. Harvard Business School Working Paper 04-016.
Nonprofit Finance Fund. State of the Nonprofit Sector Survey (annual).
Examples
library( fiscal )
data( dat10k )
d <- get_return_netassets_ratio( df = dat10k )
#> :: Beginning net assets equal to zero :: 444 case(s) replaced with NaN
head( d[ , c( "return_netassets", "return_netassets_w", "return_netassets_z", "return_netassets_p" ) ] )
#> return_netassets return_netassets_w return_netassets_z return_netassets_p
#> <num> <num> <num> <int>
#> 1: 0.58829164 0.58829164 1.098716729 86
#> 2: 0.29746908 0.29746908 0.720583984 76
#> 3: 0.04376201 0.04376201 -0.111050730 46
#> 4: 2.11238532 2.11238532 1.804691104 96
#> 5: -0.02331568 -0.02331568 -0.620025886 28
#> 6: 0.06191028 0.06191028 -0.005086097 50