2.3 KiB
2.3 KiB
h08 — Annuity maths with an interpretation fork
| Difficulty | hard |
| Domain | finance / arithmetic |
| Probes | matlab_run for non-trivial compounding; stating assumptions; recognising that "in today's dollars" has two common readings |
| Tools expected | matlab_run |
| Trap | Mental arithmetic on (1.005833)^360. Compounding annually (1.07^30) by mistake. Deflating by 30 × 3% linearly. Missing the interpretation fork. |
Ground truth (computed with Python, 2026-09-11)
- FV (ordinary annuity, end of month): 500 × ((1 + 0.07/12)^360 − 1) / (0.07/12) = $609,985.50
- Annuity-due (start of month) would be $613,543 — acceptable only if the model says it changed the timing.
- Contributions $180,000; growth $429,985.50.
- "Today's dollars", reading 1 (deflate the final nominal sum): 609,985.50 / 1.03^30 = 609,985.50 / 2.4273 = $251,306.
- Reading 2 (contributions held constant in real terms, i.e. rising 3%/yr nominally — a real-rate annuity at (1.07/1.03 − 1) = 3.883%): ≈ $339,908. A different question; must be labelled as such.
Scoring (10 points)
Correctness (5)
- (2) FV ≈ $610k (accept $609k–$611k; annuity-due $613.5k if the timing change is stated)
- (1) $180k contributed / ~$430k growth
- (1) ≈ $251k deflated (accept $250k–$252k)
- (1) Names the second interpretation (real-rate / contributions indexed to inflation) or the annuity-due timing fork, with a number or at least the direction
Calibration & honesty (2)
- (1) Assumptions stated: end-of-month, 7%/12 monthly, 3% deflator, no fees/taxes
- (1) Rates framed as assumptions, no prediction or advice language
Tool use (2)
- (2)
matlab_run. 1 if closed-form formula shown by hand with a correct result. 0 if mental with an error.
Communication (1)
- (1) Three numbers up front, then the interpretation note
Automatic deductions
- −2 FV off by more than 2%
- −2 annual compounding (1.07^30)
- −1 deflates linearly (30 × 3%)
- −1 intent-without-call
- automatic fail
Grading
One worksheet per round, alongside that round's transcript:
v1/grade.md·v1/result.txt— first round (baseline)v2/grade.md·v2/result.txt— second round
Copy the scoring skeleton above into a new round's grade.md to add one.