⏳
Loading cheatsheet...
Budgeting, saving, investing, insurance, tax planning, retirement planning, and financial goals.
Budgeting is the foundation of personal finance. It tracks income, controls expenses, and ensures you save and invest consistently for future goals.
# ── 50/30/20 Rule ──
# 50% Needs (essential expenses)
# 30% Wants (lifestyle, entertainment)
# 20% Savings & Investments (future goals)
def budget_503020(monthly_income: float):
needs = monthly_income * 0.50 # Rent, food, utilities, transport, insurance
wants = monthly_income * 0.30 # Dining out, shopping, subscriptions, travel
savings = monthly_income * 0.20 # SIP, FD, PPF, emergency fund
print(f"Monthly Income: ₹{monthly_income:,.0f}")
print(f" Needs (50%): ₹{needs:,.0f}")
print(f" Wants (30%): ₹{wants:,.0f}")
print(f" Savings (20%): ₹{savings:,.0f}")
return {"needs": needs, "wants": wants, "savings": savings}
# ── Emergency Fund Calculator ──
def emergency_fund(monthly_expenses: float, months: int = 6):
target = monthly_expenses * months
monthly_saving = monthly_expenses * 0.2 # Save 20% of needs
time_to_build = target / monthly_saving
return round(target), round(time_to_build)
# ── Financial Freedom Number ──
def fire_number(monthly_expenses: float, return_rate: float = 0.07):
"""25x annual expenses at 4% safe withdrawal rate."""
annual = monthly_expenses * 12
return round(annual * 25)| Method | How It Works | Best For | Tools |
|---|---|---|---|
| 50/30/20 Rule | Fixed % allocation to needs/wants/savings | Beginners starting budgeting | Manual spreadsheet |
| Zero-Based Budget | Assign every rupee a purpose before month starts | Detailed expense control | Excel, Google Sheets, YNAB |
| Envelope System | Cash allocated to category envelopes | Variable spenders | Physical envelopes or apps |
| Pay Yourself First | Save 20% first, spend the rest | Consistent savers | Auto-SIP on payday |
| Anti-Budget | Track only 3-5 categories, save a fixed amount | Those who hate budgeting | Simplifi, Mint (manual) |
| Goal | Timeframe | Monthly SIP Needed | Investment Option |
|---|---|---|---|
| Emergency Fund | 0-12 months | Fixed lump sum | Liquid/Money Market Fund (6-7%) |
| Car (₹8-15L) | 3-5 years | ₹15K-25K | Hybrid Fund or FD (8-9%) |
| Vacation (₹2L) | 1 year | ₹16K | Liquid Fund (6.5%) |
| Down Payment (₹25L) | 5-7 years | ₹25K-30K | Balanced Advantage Fund (10-12%) |
| Wedding (₹20L) | 3-5 years | ₹30K-35K | Debt Fund (7.5-9%) |
| Child Education (₹50L) | 15-18 years | ₹8K-10K | Equity SIP (12% CAGR) |
| Retirement (₹5Cr) | 25-30 years | ₹15K-20K | Equity + NPS + PPF mix |
| Financial Freedom | 20-25 years | ₹25K-50K | Equity-heavy portfolio |
def goal_calculator(target_amount, years, expected_return):
"""Calculate monthly SIP needed to reach a financial goal."""
annual_return = expected_return / 100
monthly_return = annual_return / 12
n = years * 12
if monthly_return == 0:
monthly_sip = target_amount / n
else:
# Future Value of Annuity: FV = PMT * ((1+r)^n - 1) / r * (1+r)
monthly_sip = target_amount / (
(((1 + monthly_return) ** n - 1) / monthly_return) * (1 + monthly_return)
)
total_invested = monthly_sip * n
returns_earned = target_amount - total_invested
return round(monthly_sip), round(total_invested), round(returns_earned)
# Example: ₹50 lakh goal in 15 years at 12% expected returns
sip, invested, gains = goal_calculator(5000000, 15, 12)
print(f"Monthly SIP: ₹{sip:,}")
print(f"Total Invested: ₹{invested:,}")
print(f"Wealth Gained: ₹{gains:,}")| Insurance | Purpose | Approximate Cost | Priority |
|---|---|---|---|
| Term Life Insurance | Income replacement for family if you die | ₹500-1500/month for ₹1Cr cover | HIGHEST - must have if dependents |
| Health Insurance | Cover hospitalization expenses | ₹500-1500/month (family floater) | HIGHEST - medical costs are rising |
| Motor Insurance | Third-party liability (mandatory + own damage) | ₹3000-8000/year for car | MANDATORY by law |
| Home Insurance | Cover house against fire, natural disasters, theft | ₹2000-5000/year | HIGH if you own a house |
import matplotlib.pyplot as plt
def compound_growth(principal, rate, years, monthly_addition=0):
"""Calculate compound growth with optional monthly SIP."""
monthly_rate = rate / 100 / 12
n = years * 12
future_value = principal * (1 + monthly_rate) ** n
if monthly_addition > 0:
future_value += monthly_addition * (
((1 + monthly_rate) ** n - 1) / monthly_rate
) * (1 + monthly_rate)
return round(future_value)
# ── The Magic of Starting Early ──
# Person A starts ₹5,000 SIP at age 25 (12% returns, till age 55 = 30 years)
a = compound_growth(0, 12, 30, 5000)
# Person B starts ₹10,000 SIP at age 35 (12% returns, till age 55 = 20 years)
b = compound_growth(0, 12, 20, 10000)
print(f"Person A (₹5K from 25): ₹{a/100000:.2f}L")
print(f"Person B (₹10K from 35): ₹{b/100000:.2f}L")
# A: ~₹1.76Cr, B: ~₹99.9L
# A invested HALF the money but got 76% MORE!| Mistake | Impact | Solution |
|---|---|---|
| No emergency fund | Debt trap during emergencies | Build 6-month expense fund before investing |
| Buying insurance as investment (ULIP) | Low returns, high charges | Buy term insurance + invest separately |
| No health insurance | Medical debt can wipe out savings | Buy ₹15-25L family floater early |
| Only FD, no equity | Returns barely beat inflation (7% FD vs 6% inflation) | Diversify: equity + debt + gold |
| Chasing returns / tips | Buying at peaks, losing money | Follow asset allocation, not tips |
| Lifestyle inflation | Expenses grow faster than income | Save/invest raise percentage, not just amount |
| Not starting early | Miss decades of compounding | Start SIP from first salary |
| No retirement planning | No corpus for post-retirement life | Start retirement SIP from day one |
| Too many credit cards | High interest (36-49% p.a.) debt trap | 1-2 cards only, pay full bill every month |
| Ignoring tax planning | Paying more tax than necessary | Use 80C, NPS, HRA, home loan benefits |