Estate Planning
Each topic starts with a real scenario and a bar model, then three levels of exercises. Level 1 (Guided) fills in the blanks of a finished function. Level 2 (Practice) applies it to new numbers. Level 3 (Challenge) asks a new question with little scaffolding. The R and Python exercises run in your browser: click Run Code to try, Submit Answer to check, and use the hint or solution if you get stuck. Excel exercises have a solution you can reveal.
1 Book Topics
- Why it matters young: at 18 your parents lose the right to act for you; set up a plan while you’re thinking clearly, since people tend to miss their own cognitive decline
- Beneficiary designations: the ten minute task; name a primary and contingent beneficiary on retirement plans, IRAs, HSAs, life insurance, and bank (POD) and brokerage (TOD) accounts; these forms override your will
- Financial power of attorney: a durable POA names an agent to handle your money if you can’t
- Healthcare directive and HIPAA release: a healthcare proxy and living will (often one advance directive), plus a HIPAA form so doctors can share information
- Will and trust: a will covers what has no beneficiary, names an executor, and names a guardian for children; without one, state intestate succession decides; most people starting out don’t need a trust
- Paperwork and parents: store originals safely, keep an account list (no passwords), set up password manager emergency access, and ask your parents about their plan
2 What You Own and What You Owe
Your estate starts with your net worth: everything you own minus everything you owe.
Formula: Net worth = Total assets − Total debts
Example: ($12,000 + $6,000 + $8,000 + $9,000) − ($6,000 + $1,000) = $35,000 − $7,000 = a net worth of $28,000.
How to read this result: net worth is the yearly check in on your progress. It’s also roughly what your estate would be worth today, before adding any life insurance.
2.1 Level 1: Guided
Fill in the blanks to finish net_worth(), then find the net worth for assets of $12,000 (401(k)), $6,000 (Roth IRA), $8,000 (savings), and $9,000 (car), with debts of $6,000 (car loan) and $1,000 (credit card).
Put the assets in B2:B5 and the debts in B7:B8. Find net worth in B10.
=SUM(B2:B5) - SUM(B7:B8)This returns $28,000.
Add up everything you own, then everything you owe.
def net_worth(assets, debts):
return sum(assets) - sum(debts)
net_worth([12000, 6000, 8000, 9000], [6000, 1000])Add up everything you own, then everything you owe.
net_worth <- function(assets, debts) {
sum(assets) - sum(debts)
}
net_worth(c(12000, 6000, 8000, 9000), c(6000, 1000))2.2 Level 2: Practice
A recent graduate has $3,000 in savings, a $5,000 car, and $30,000 of student loans. What is their net worth?
Put the new numbers in the sheet.
The same formula returns -$22,000. A negative start is common, not a failure.
Assets are [3000, 5000]; debts are [30000].
net_worth([3000, 5000], [30000])Assets are c(3000, 5000); debts are 30000.
net_worth(c(3000, 5000), 30000)2.3 Level 3: Challenge
Track net worth over a year. Using the balance sheet below, how much did net worth grow from last year to this year?
| Item | Type | Last year | This year |
|---|---|---|---|
| 401(k) | Asset | $12,000 | $15,500 |
| Roth IRA | Asset | $6,000 | $8,000 |
| Savings | Asset | $8,000 | $9,500 |
| Car | Asset | $9,000 | $7,500 |
| Car loan | Debt | $6,000 | $3,800 |
| Credit card | Debt | $1,000 | $0 |
Put the table in A1:D7. Find net worth for each year with SUMIF(), then the change.
=(SUMIF(B2:B7,"Asset",D2:D7)-SUMIF(B2:B7,"Debt",D2:D7)) - (SUMIF(B2:B7,"Asset",C2:C7)-SUMIF(B2:B7,"Debt",C2:C7))Net worth went from $28,000 to $36,700, a gain of $8,700, even though the car lost $1,500 of value.
Give debts a sign of -1: sign = sheet["type"].map({"Asset": 1, "Debt": -1}). Then (sheet["this_year"] * sign).sum() is this year’s net worth.
sign = sheet["type"].map({"Asset": 1, "Debt": -1})
(sheet["this_year"] * sign).sum() - (sheet["last_year"] * sign).sum()mutate(sign = if_else(type == "Debt", -1, 1)), then summarise(change = sum(this_year * sign) - sum(last_year * sign)).
sheet |>
mutate(sign = if_else(type == "Debt", -1, 1)) |>
summarise(change = sum(this_year * sign) - sum(last_year * sign)) |>
pull(change)3 How Much Your Beneficiary Forms Control
Life insurance isn’t part of net worth while you’re alive, but it pays out when you die. Add it, then split the estate by what decides who gets each piece.
Formula: Share controlled by beneficiary forms = Assets with a named beneficiary ÷ Total estate
Example: ($12,000 + $6,000 + $45,000 + $8,000) ÷ $80,000 = about 89% of the estate, decided by forms that take minutes to fill out. That’s why beneficiary designations come before a will for most young people.
How to read this result: the higher the share, the less your will has to do. With every form filled in, a will only decides the car. With no forms, all $80,000 goes through probate.
3.1 Level 1: Guided
Fill in the blanks to finish beneficiary_share(), then find the share of an $80,000 estate controlled by beneficiary forms when the 401(k) ($12,000), Roth IRA ($6,000), life insurance ($45,000), and savings ($8,000) all have forms, and the $9,000 car does not. Give a decimal.
Put the amounts in B2:B6 and “Yes”/“No” for has a form in C2:C6. Find the share.
=SUMIF(C2:C6, "Yes", B2:B6) / SUM(B2:B6)This returns 0.8875, about 89% of the estate.
The bottom of the fraction is the whole estate: both piles together.
def beneficiary_share(with_beneficiary, without_beneficiary):
return sum(with_beneficiary) / (sum(with_beneficiary) + sum(without_beneficiary))
beneficiary_share([12000, 6000, 45000, 8000], [9000])The bottom of the fraction is the whole estate: both piles together.
beneficiary_share <- function(with_beneficiary, without_beneficiary) {
sum(with_beneficiary) / (sum(with_beneficiary) + sum(without_beneficiary))
}
beneficiary_share(c(12000, 6000, 45000, 8000), 9000)3.2 Level 2: Practice
You never added a payable-on-death (POD) designation to the $8,000 savings account. What share do the forms control now?
Change savings to “No”.
The same formula returns 0.7875. The $8,000 now goes through a will or state law.
Move the 8000 from the first list to the second.
beneficiary_share([12000, 6000, 45000], [8000, 9000])Move the 8000 from the first vector to the second.
beneficiary_share(c(12000, 6000, 45000), c(8000, 9000))3.3 Level 3: Challenge
Worst case: only the 401(k) has a beneficiary form. How many dollars of the estate would pass through a will (or state law, if there’s no will)?
Mark only the 401(k) “Yes” and total the rest.
=SUMIF(C2:C6, "No", B2:B6)This returns $68,000, including the $45,000 life insurance payout.
estate["has_form"] = estate["account"] == "401(k)", then sum amount where has_form is False (use ~).
estate["has_form"] = estate["account"] == "401(k)"
estate.loc[~estate["has_form"], "amount"].sum()mutate(has_form = account == "401(k)"), then filter(!has_form) and summarise(total = sum(amount)).
estate |>
mutate(has_form = account == "401(k)") |>
filter(!has_form) |>
summarise(total = sum(amount)) |>
pull(total)


