๐ Income Allocation Strategies
This vignette demonstrates how finman
lets you build
customized budgeting trees using real-world strategies โ from
50/30/20, to handling high debt or low income. The
system supports:
- Tiered budgeting (e.g., Needs โ Rent, Food).
- Flexible allocation percentages.
- Passive vs.ย greedy allocation flows.
๐ Strategy 1: Standard 50/30/20 Budget
This strategy breaks income into:
- 50% Needs โ Rent, Food, Utilities.
- 30% Savings/Wants โ Emergency Fund, Hobbies.
- 20% Debt โ Loan payments, Credit cards.
main <- MainAccount$new("Main")
needs <- ChildAccount$new("Needs", allocation = 0.5)
savings <- ChildAccount$new("Savings", allocation = 0.3)
debt <- ChildAccount$new("Debt", allocation = 0.2)
main$add_child_account(needs)
main$add_child_account(savings)
main$add_child_account(debt)
# Tier 3 accounts under Needs
needs$add_child_account(GrandchildAccount$new("Rent", fixed_amount = 8000, freq = 30, due_date = Sys.Date() + 7))
needs$add_child_account(GrandchildAccount$new("Food", fixed_amount = 3000, freq = 30, due_date = Sys.Date() + 7))
# Under Savings
savings$add_child_account(GrandchildAccount$new("Emergency Fund", fixed_amount = 5000, freq = 30, due_date = Sys.Date() + 7))
# Under Debt
debt$add_child_account(GrandchildAccount$new("Student Loan", fixed_amount = 6000, freq = 30, due_date = Sys.Date() + 7))
# Fund the budget
main$deposit(30000, channel = "ABSA")
#> Withdrew: 15000 via Allocation to Needs - Transaction ID: sys2
#> No active child accounts available.
#> Deposited: 15000 via Allocation from Main - Transaction ID: sys1
#> Withdrew: 9000 via Allocation to Savings - Transaction ID: sys3
#> No active child accounts available.
#> Deposited: 9000 via Allocation from Main - Transaction ID: sys1
#> Withdrew: 6000 via Allocation to Debt - Transaction ID: sys4
#> No active child accounts available.
#> Deposited: 6000 via Allocation from Main - Transaction ID: sys1
#> Deposited: 30000 via ABSA - Transaction ID: sys1
โ ๏ธ Strategy 2: Debt-Heavy Budget
Users with overwhelming debt might prioritize repayment:
- Allocate 40โ60% to Debt.
- Reduce Wants or Savings.
- Pay off defaulted or overdue loans first.
main <- MainAccount$new("Main")
debt_recovery <- ChildAccount$new("Debt Recovery", allocation = 0.5)
needs <- ChildAccount$new("Needs", allocation = 0.4)
savings <- ChildAccount$new("Savings", allocation = 0.1)
main$add_child_account(debt_recovery)
main$add_child_account(needs)
main$add_child_account(savings)
debt_recovery$add_child_account(GrandchildAccount$new("Defaulted Loan", fixed_amount = 15000, freq = 30, due_date = Sys.Date()))
debt_recovery$add_child_account(GrandchildAccount$new("Overdue Credit", fixed_amount = 12000, freq = 30, due_date = Sys.Date()))
๐ผ Strategy 3: High-Income, Low-Need
With more disposable income:
- Reduce Needs to 30%.
- Boost long-term savings or projects.
- Automatically fund goals like Retirement or Land.
main <- MainAccount$new("Main")
main$add_child_account(ChildAccount$new("Needs", allocation = 0.3))
main$add_child_account(ChildAccount$new("Savings", allocation = 0.5))
main$add_child_account(ChildAccount$new("Wants", allocation = 0.2))
# Add savings targets
main$child_accounts$Savings$add_child_account(GrandchildAccount$new("Retirement", fixed_amount = 8000, freq = 30, due_date = Sys.Date() + 30))
main$child_accounts$Savings$add_child_account(GrandchildAccount$new("Land Purchase", fixed_amount = 10000, freq = 60, due_date = Sys.Date() + 60))
๐ Strategy 4: Low Income, High Obligation
- Focus all allocation on critical expenses.
- Postpone savings and wants.
- Let optional accounts deactivate automatically.
main <- MainAccount$new("Main")
needs <- ChildAccount$new("Needs", allocation = 0.9)
savings <- ChildAccount$new("Savings", allocation = 0.1)
wants <- ChildAccount$new("Wants", allocation = 0.0)
main$add_child_account(needs)
main$add_child_account(savings)
main$add_child_account(wants)
needs$add_child_account(GrandchildAccount$new("Rent", fixed_amount = 7000, freq = 30, due_date = Sys.Date() + 5))
needs$add_child_account(GrandchildAccount$new("Food", fixed_amount = 3000, freq = 30, due_date = Sys.Date() + 5))
๐ง Summary
Strategy | Description |
---|---|
50/30/20 | Balanced budgeting: Needs, Savings, Debt |
Debt-First | Prioritize loan repayments and overdue liabilities |
High-Income | Maximize structured savings and passive investments |
Low-Income | Focus on essentials; disable non-critical spending |
๐งน You can freely design any hierarchy with flexible allocation totals. Add/remove groups or goals as your finances evolve.