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
- Establish the currency and minor-unit convention, measurement period and applicable transaction or institution context.
- Enter Participant ids, Contribution per participant per round minor using the field table and validation rules below, then run the tool.
- 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.
- 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 field | Meaning | Value type | Requirement |
|---|---|---|---|
| participantIds | Participant ids | array of string | Required; constraints below |
| contributionPerParticipantPerRoundMinor | Contribution per participant per round minor | number | Required; 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 field | Meaning | Value type |
|---|---|---|
| result | Object containing the named result fields below. | object |
| result.potPerRoundMinor | Pot Per Round Minor | number |
| result.roundCount | Round Count | number |
| result.totalPerParticipantContributionMinor | Total Per Participant Contribution Minor | number |
| result.payoutByRoundMinor | Payout By Round Minor | array of number |
| result.netCashFlowsByParticipantMinor | Net Cash Flows By Participant Minor | array of arrays |
{
"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
Similar or alternative tools
- Savings Bucket Sub Account Goals Behavioral Design Lookup
Savings buckets can partition a displayed balance or goal within an account.
- ZBA Zero Balance Account Sweep Structure Lookup
A zero-balance-account structure uses agreed transfers between master and subsidiary accounts.