Skip to contents

Measures reliance on investment-related revenue as a share of total revenue.

Formula:

iidr = investment_income / total_revenue

investment_income = invest_income + bond_proceeds + rent_income + asset_sale_income

Definitional Range

Bounded [0, 1] in most years, but values above 1.0 are possible in years with large asset sale gains. Values below zero can result from asset sale losses or negative investment returns.

Benchmarks and rules of thumb

  • Values above 0.30 indicate significant financial asset dependency and warrant monitoring of portfolio performance.

  • Large year-over-year swings often reflect one-time asset transactions rather than structural revenue changes.

Calculated For: 990 filers only.

Usage

get_investment_income_ratio( df,
  invest_income    = "F9_08_REV_OTH_INVEST_INCOME_TOT",
  bond_proceeds    = "F9_08_REV_OTH_INVEST_BOND_TOT",
  rent_income      = "F9_08_REV_OTH_RENT_GRO_PERS",
  asset_sale_income= "F9_08_REV_OTH_SALE_ASSET_OTH",
  total_revenue    = "F9_08_REV_TOT_TOT",
  numerator = NULL, denominator = NULL, winsorize = 0.98 ,
  range     = "np",
  sanitize  = TRUE,
  summarize = FALSE )

Arguments

df

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

invest_income

Investment income.

bond_proceeds

Tax-exempt bond proceeds.

rent_income

Gross rents from personal property.

asset_sale_income

Net gain from sales of assets other than inventory.

total_revenue

Total revenue.

numerator

Optional. A pre-aggregated column for investment income. Cannot be combined with the individual component arguments.

denominator

Optional. A pre-aggregated column for total revenue. Cannot be combined with total_revenue.

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:

- `invest_income`   - investment income dependency ratio (raw)
- `invest_income_w` - winsorized version
- `invest_income_z` - standardized z-score (based on winsorized values)
- `invest_income_p` - percentile rank (1-100)

Details

Primary uses and key insights

The investment income dependency ratio measures the share of total revenue from investment-related sources: interest, dividend income, rental income, bond proceeds, and proceeds from asset sales. It captures financial portfolio dependency - the degree to which the organization's budget relies on endowment returns, rental properties, or investment gains.

A high ratio may be a sign of financial maturity (large endowment generating returns) or financial risk (dependency on volatile investment markets). During periods of market decline or low interest rates, organizations with high investment income ratios face greater revenue volatility.

Formula variations and their sources

(Investment income + bond income + rental income + asset sale income) / total revenue (Part VIII lines 3 + 4 + 6a(ii) + 7d / line 12A). Note that this combines recurring investment income with potentially one-time asset sale proceeds; some analysts separate these. The asset sale proceeds (line 7d) are particularly volatile and may distort the ratio in years with large asset disposals.

Canonical citations

  • Chang, C.F. & Tuckman, H.P. (1994). Revenue diversification among nonprofits. VOLUNTAS, 5(3), 273-290.

  • Carroll, D.A. & Stater, K.J. (2009). Revenue diversification in nonprofit organizations. Journal of Public Administration Research and Theory, 19(4), 947-966.

Variables used:

  • F9_08_REV_OTH_INVEST_INCOME_TOT: Investment income (invest_income)

  • F9_08_REV_OTH_INVEST_BOND_TOT: Income from bond proceeds (bond_proceeds)

  • F9_08_REV_OTH_RENT_GRO_PERS: Gross rental income (rent_income)

  • F9_08_REV_OTH_SALE_ASSET_OTH: Net gain from asset sales (asset_sale_income)

  • F9_08_REV_TOT_TOT: Total revenue (total_revenue)

Examples

library( fiscal )
data( dat10k )

d <- get_investment_income_ratio( df = dat10k )
#>    :: Total revenue equal to zero :: 74 case(s) replaced with NaN
head( d[ , c( "invest_income", "invest_income_w", "invest_income_z", "invest_income_p" ) ] )
#>    invest_income invest_income_w invest_income_z invest_income_p
#>            <num>           <num>           <num>           <int>
#> 1:            NA              NA              NA              NA
#> 2:  1.428209e-05    1.428209e-05      -0.8019472              32
#> 3:  8.070080e-03    8.070080e-03       0.3584971              73
#> 4:            NA              NA              NA              NA
#> 5:  1.758535e-05    1.758535e-05      -0.8019472              33
#> 6:            NA              NA              NA              NA