Skip to content

Claude Haiku 5.5 (effort default (no --effort flag) · thinking on) on Pension claiming-age comparison: lifetime totals, present values and break-even ages

AClaude Haiku 5.5default · thinking on · Claude Code 2.1.299 (headless -p) · cloud · 2026-10-20 · by @bobsiopener

Trust 80%Fully autonomoussuccess · first try
Estimated cost
$0.0080
Wall time
39s
Human step-ins
0
Outcome
Pass

Compare with other models on this task →

Summary

Exact prompt

# Pension claiming age: lifetime totals, present values and break-even ages `input.json` describes a worker's monthly benefit at full retirement age and the (synthetic, given) rules for claiming early or late. Write `solve.py` (Python 3 standard library only) so that `python solve.py input.json answer.json` compares claiming ages. We re-run it on fresh inputs, so do not hard-code anything. Use only the rules below and the numbers in the input. ## Input `pia_monthly` (monthly benefit if claimed exactly at full retirement age, before cost-of-living raises), `fra_months` (full retirement age in months, e.g. 800 = 66 years 8 months), `reduction_first_36_per_month`, `reduction_beyond_36_per_month`, `delayed_credit_per_month` (fractions), `cola` (yearly raise), `discount_rate`, `claim_ages`, `death_ages`, `max_age` (integers, whole years), `pairs` (list of [earlier, later] claim ages). ## Rules 1. Claiming at whole age A means the first payment is for the month the person turns A. Let m = A*12 - `fra_months`. 2. If m < 0, with k = -m: factor = 1 - (min(k, 36) * `reduction_first_36_per_month` + max(k - 36, 0) * `reduction_beyond_36_per_month`). If m >= 0: factor = 1 + m * `delayed_credit_per_month`. 3. The monthly payment during age-year t (the 12 months from birthday t to the day before birthday t+1) is `pia_monthly * factor * (1 + cola) ** (t - 62)`, for t >= A. Raises apply from age 62 whether or not the person has claimed yet. No rounding of payments. 4. `monthly_at_claim` = the monthly payment for age-year A. 5. `lifetime[D]` = sum of all monthly payments for age-years A .. D-1 (death at birthday D, nothing paid from then on). 6. `pv[D]` = sum over age-years t = A .. D-1 of (12 * monthly payment for t) / (1 + discount_rate) ** (t - 62). 7. Break-even for a pair [a, b]: go month by month from the month of birthday a up to (not including) the month of birthday `max_age`, keeping cumulative totals for both claim ages (the later one starts at birthday b). The break-even is the first month index M (months since birth, counting the birthday-a month as a*12) with M >= b*12 and cumulative(b) >= cumulative(a), reported as M / 12 rounded to 4 decimals; `null` if it never happens. 8. `best_by_pv[D]` = the claim age with the highest `pv[D]` (lower age on ties). 9. Round money to 2 decimals and `factor` to 6 decimals only when writing. ## Output `answer.json`: ``` {"claims": {"62": {"factor": ..., "monthly_at_claim": ..., "lifetime": {"72": ..., ...}, "pv": {"72": ..., ...}}, ... one entry per claim age}, "breakeven": {"62-67": ..., ...one key per pair "a-b"}, "best_by_pv": {"72": 70, ...one key per death age}} ``` Keys are strings of the integer ages. ## Scoring Hidden checks (partial credit = fraction passed; all must pass): `factors_and_monthly` (factor within 0.000001, money within 0.011), `lifetime_totals`, `present_values` (within 0.011), `breakeven_ages` (within 0.0001), `best_by_pv` (exact) on the given input; `fresh_run_1`, `fresh_run_2`: the whole answer on fresh inputs (tolerance 0.011; integers exact). Each run has a 60-second limit.

Two-tier early-claim reduction, delayed credits, raises from age 62 regardless of claiming, a month-by-month break-even search, and present values with a tie rule. Original benchmark task written for usecaserank.com (not based on a specific public post). Headless, offline run on a reproducible fixture. Each run's notes say how its cost was measured (estimates are marked).

These are synthetic test cases for comparing AI models, not financial advice.

Success criteria: 1. factors_and_monthly 2. lifetime_totals 3. present_values 4. breakeven_ages 5. best_by_pv 6. fresh_run_1 7. fresh_run_2

Setup notes: Use Case Scout batch 9 case j03-claiming-age-breakeven (offline fixture). Prepared with batch9/prepare.sh; hidden key/tests kept outside the agent's work dir. Prompt = TASK.md verbatim. Scored with the scout's scorer: `python score.py WORKDIR KEYDIR`. Tools: Read/Write/Edit/Glob/Grep/Bash, web disabled. Single run, no retries. Claude Code's own reported cost for claude-haiku-5.5: $0.00803. Score: 7/7. Cost is an ESTIMATE: measured tokens x pricing.json list price (Claude Pro subscription, nothing billed); input_tokens include cache reads and writes. Single run.

Estimated cost List-price estimate; not actually billed.

Metrics

Estimated cost
$0.0080
Wall time
39s
Human step-ins
0
Turns
9
Model usage
ModelInput tokOutput tokCost
AClaude Haiku 5.5anthropic/claude-haiku-5.5effort default (no --effort flag) · thinking on216,0456,229$0.0080

Reproduce this run

  1. Use the use case prompt on the use case page.
  2. Same setup: Claude Haiku 5.5 (anthropic/claude-haiku-5.5, effort default (no --effort flag) · thinking on) via Claude Code 2.1.299 (headless -p), cloud.
  3. It counts as a success only if it meets every success criterion: 1. factors_and_monthly 2. lifetime_totals 3. present_values 4. breakeven_ages 5. best_by_pv 6. fresh_run_1 7. fresh_run_2
  4. Log model, tokens, wall time, human step-ins and the evidence log, then submit it as a reproduction. A different model? Submit a head-to-head rerun.

How runs are scored: Methodology.

Was this useful?

⇄ Rerun on another model

Automated checks

Trust 80% comes from these checks (how Trust % works).

Evidence log
[
 {
  "duration_api_ms": 37991,
  "stop_reason": "end_turn",
  "session_id": "[REDACTED]",
  "total_cost_usd": 0.00803005,
  "usage": {
   "input_tokens": 18,
   "cache_creation_input_tokens": 14492,
   "cache_read_input_tokens": 201535,
   "output_tokens": 6229,
   "output_tokens_details": {
    "thinking_tokens": 2361
   },
   "server_tool_use": {
    "web_search_requests": 0,
    "web_fetch_requests": 0
   },
   "service_tier": "standard",
   "cache_creation": {
    "ephemeral_1h_input_tokens": 14492,
    "ephemeral_5m_input_tokens": 0
   },
   "inference_geo": "global",
   "iterations": [
    {
     "input_tokens": 2,
     "output_tokens": 521,
     "cache_read_input_tokens": 26288,
     "cache_creation_input_tokens": 743,
     "cache_creation": {
      "ephemeral_5m_input_tokens": 0,
      "ephemeral_1h_input_tokens": 743
     },
     "type": "message"
    }
   ],
   "speed": "standard",
   "fallback_credit": null
  },
  "modelUsage": {
   "claude-haiku-5-5": {
    "inputTokens": 18,
    "outputTokens": 6229,
    "cacheReadInputTokens": 201535,
    "cacheCreationInputTokens": 14492,
    "webSearchRequests": 0,
    "costUSD": 0.00803005,
    "contextWindow": 1000000,
    "maxOutputTokens": 128000,
    "thinkingTokens": 2361,
    "canonicalModel": "claude-haiku-5-5",
    "provider": "firstParty",
    "costBasis": "list"
   }
  },
  "permission_denials": [],
  "terminal_reason": "completed",
  "fast_mode_state": "off",
  "fast_mode_disabled_reason": "sdk_opt_in_required",
  "subagent_stats": {
   "spawned": 0,
   "requested": {
    "background": 0,
    "foreground": 0,
    "unset": 0
   },
   "started_in_background": 0,
   "max_depth": 0,
   "spawned_by_subagents": 0,
   "completed": 0,
   "failed": 0,
   "killed": {
    "parent": 0,
    "user": 0,
    "system": 0
   },
   "refused": {
    "depth_limit": 0,
    "concurrency_limit": 0,
    "budget": 0
   },
   "by_type": {}
  },
  "safety_stops": 0,
  "is_error": false,
  "num_turns": 9,
  "subtype": "success",
  "api_error_status": null,
  "result": "I wrote `solve.py` and ran it on `input.json`. It writes `answer.json` in the work directory. It uses only the standard library and runs in about 20 ms, well under the 60-second limit.\n\nResults on the given input:\n\n- **Factors:** 62 \u2192 0.733333, 67 \u2192 1.053333, 70 \u2192 1.293333. The 62 value checks by hand: 52 months early gives 36\u00d70.005556 + 16\u00d70.004167 = 0.266667 reduction.\n- **Break-even ages:** 62-67 \u2192 77.0833, 62-70 \u2192 79.0833, 67-70 \u2192 81.6667, 65-68 \u2192 78.9167.\n- **Best by PV:** age 62 for death at 72, 64 at 78, 68 at 82, and 70 for 86, 90 and 95.\n\nI chose these readings where the spec left room:\n\n- **Lifetime totals** sum all 12 monthly payments in each age-year, so each year counts 12 \u00d7 the monthly amount. Rule 5 could be read as one payment per year, but the PV rule's explicit \"12 *\" makes the monthly reading the consistent one.\n- **Break-even cumulatives** include the payment for month M itself. Both totals are advanced by that month before the test is made.\n- **Rounding** happens only on output. Comparisons for `best_by_pv` use unrounded PVs, and ties go to the lower claim age.\n\nI have not checked the output against an independent implementation, so the hidden checks are the real test. The 62 factor and the 62 monthly amount were checked by hand. The other values follow the same formulas.",
  "ttft_ms": 1733,
  "type": "result",
  "duration_ms": 38482,
  "uuid": "[REDACTED]",
  "ttft_stream_ms": 1609,
  "time_to_request_ms": 242,
  "first_content_frame_ms": 1609,
  "queued_turn_count": 0,
  "result_index": 0
 }
]

Get new runs and ranking changes weekly