Functional Weave
Code in TypeScript

charity.fundraising-ratio@1.0.0

README.md

1,252 bytes · view raw

# charity.fundraising-ratio

Two headline efficiency figures from a charity's accounts:

- **Cost to raise £1**: fundraising costs divided by the funds they raised.
  Returned as money (`costToRaiseOne`, 20p) and as basis points
  (`costRatioBasisPoints`, 2000), because the money figure is rounded to the
  minor unit and loses detail in a currency with few decimals (¥0.3 rounds to
  ¥0, but 3000 basis points does not).
- **Charitable spend ratio**: expenditure on charitable activities as a share
  of total expenditure, in basis points (8000 = 80%).

Each ratio is one integer division of the amounts as given, rounded half up;
nothing goes through a float. Minor units per major unit come from
money.currency-digits, so dinars (3 decimals) and yen (none) work.

Which costs count as fundraising, and which income counts as "raised" by
them, is a judgement the figures depend on heavily: the Charities SORP's
"expenditure on raising funds" includes trading costs and investment
management that a fundraising KPI usually leaves out. Pass the figures your
definition uses and publish the definition with the number. Costs above the
funds raised (a ratio over 10000) are allowed: a new appeal often costs more
than it brings in in its first year.