Rosca Rotating Savings Association Cycle Mathematics

Ideal one-cycle ROSCA schedule with one equal contribution per participant each round and payout order given by distinct IDs. Exact safe-integer minor units in one currency; no defaults, fees, interest, time value, legal enforceability or guaranteed returns.

Description

A rotating savings association pools equal contributions for successive participant payouts.

A rotating savings association pools equal contributions for successive participant payouts.1

Its cash-flow arithmetic assumes full participation and does not model default or the value of payout timing. Use Rosca Rotating Savings Association Cycle Mathematics to evaluate the supplied inputs under the model explained below.

When to use Rosca Rotating Savings Association Cycle Mathematics

Use Rosca Rotating Savings Association Cycle Mathematics to evaluate the supplied inputs under the model explained below. Establish the currency and minor-unit convention, measurement period and applicable transaction or institution context.

How to use Rosca Rotating Savings Association Cycle Mathematics and understand its results

  1. Establish the currency and minor-unit convention, measurement period and applicable transaction or institution context.
  2. Enter Participant ids, Contribution per participant per round minor using the field table and validation rules below, then run the tool.
  3. Read Pot Per Round Minor, Round Count, Total Per Participant Contribution Minor, Payout By Round Minor, Net Cash Flows By Participant Minor in the Result object; interpret the units, signs, ordering and unknown-value placeholders described below.
  4. Correct reported input errors and rerun. Apply successful results according to their specific meanings and check the assumptions before using them in a decision.
Input fieldMeaningValue typeRequirement
participantIdsParticipant idsarray of stringRequired; constraints below
contributionPerParticipantPerRoundMinorContribution per participant per round minornumberRequired; constraints below

Enter 1 to 64 unique nonblank participant IDs and a nonnegative safe-integer equal contribution per participant per round in one currency's minor units. With n participants, every round's pot and each participant's total contribution equal n×contribution, checked for safe-integer overflow. Return n payouts and an n×n signed cash-flow matrix: row is participant, column is round, with pot−contribution in that participant's indexed payout round and −contribution otherwise. Zero contribution is allowed. No defaults, fees, interest or time value are modeled.

potMinor=n×contribution; cashFlow[i,r]=(i==r ? pot−contribution : −contribution); each row sums to zero

Use the field order, units and branch conditions described above.

Output fieldMeaningValue type
resultObject containing the named result fields below.object
result.potPerRoundMinorPot Per Round Minornumber
result.roundCountRound Countnumber
result.totalPerParticipantContributionMinorTotal Per Participant Contribution Minornumber
result.payoutByRoundMinorPayout By Round Minorarray of number
result.netCashFlowsByParticipantMinorNet Cash Flows By Participant Minorarray of arrays
json
{
  "input": {
    "participantIds": [
      "a",
      "b",
      "c"
    ],
    "contributionPerParticipantPerRoundMinor": 100
  },
  "output": {
    "result": {
      "potPerRoundMinor": 300,
      "roundCount": 3,
      "totalPerParticipantContributionMinor": 300,
      "payoutByRoundMinor": [
        300,
        300,
        300
      ],
      "netCashFlowsByParticipantMinor": [
        [
          200,
          -100,
          -100
        ],
        [
          -100,
          200,
          -100
        ],
        [
          -100,
          -100,
          200
        ]
      ]
    }
  }
}

Limitations and assumptions

Its cash-flow arithmetic assumes full participation and does not model default or the value of payout timing. Apply the exact scope and assumptions explained above.

All listed fields require explicit values. Unexpected fields, incorrect types, nonfinite numbers and sparse arrays fail validation. Domain-specific bounds, alignments and supported tokens are explained above; extremely large inputs or outputs can also be rejected. Input errors differ from successful false results, empty match lists and unknown-evidence placeholders.

Alternative or Complementary methods

Use Savings Bucket Sub Account Goals Behavioral Design Lookup for a related task: Savings buckets can partition a displayed balance or goal within an account.

Use ZBA Zero Balance Account Sweep Structure Lookup for a related task: A zero-balance-account structure uses agreed transfers between master and subsidiary accounts.

References

  1. Rosca Rotating Savings Association Cycle Mathematics — tool.io

Similar or alternative tools

Don't forget to set a bookmark for tool.io!
Privacy | Imprint | Cookies