Files
2026-09-15 15:24:03 -04:00

2.3 KiB
Raw Permalink Blame History

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.