Portfolio Agent EvalsHarbor task suite · ETF analyze → backtest → rebalance
Rebalancing & Trade Generation/pf-rb-multi-account-asset-location

Household rebalance across three accounts with asset-location scoring

Rebalance a three-account household to a single household target while honouring asset-location preferences, per-account cash rules and no cross-account transfers.

T3hardRebalancemulti-metricready
Edit
readystatic
Agent budget
40 min
Verifier budget
5 min
Tier target
25–50% pass expected

instruction.md

What the agent sees (CONVENTIONS.md is appended automatically)

Household rebalance with asset location

Accounts: taxable, traditional IRA, Roth IRA. Household sleeve targets and bands are in ips.yaml with location preferences: bonds and REITs preferred in the traditional IRA, the highest-expected-growth sleeve preferred in the Roth, the rest in taxable. A location score (points per dollar located per preference) is defined in ips.yaml.

Constraints: household sleeve weights within bands; each account's cash >= its own buffer; no transfers between accounts; whole shares. Taxable sells are penalised at 0.5% of notional in the objective. Maximise location score minus penalties.

Write per-account trades in /app/output/trades.csv, /app/output/post_trade.json (household and per-account weights) and /app/output/objective.json.

Verification

reward.json metrics · weights sum to 1.00

MetricWeightCheck
feasibilitygate
0.35
Cash buffers, no transfers, whole shares, no shorts. GATE at 0.2.
household_bands
0.15
Every sleeve within band.
objective_gap
0.5
Objective >= oracle - 1% of |oracle|; linear to 0 at -10%.

Gates: feasibility. A gate failure caps or zeroes the trial reward regardless of other metrics.

Harbor scaffold

Generated from this record — task.toml, Dockerfile, verifier, oracle stub

schema_version = "1.4"

[task]
name = "portfolio-agent-evals/pf-rb-multi-account-asset-location"
version = "1.0.0"
description = "Rebalance a three-account household to a single household target while honouring asset-location preferences, per-account cash rules and no cross-account transfers."
keywords = ["etf", "portfolio", "rebalance", "trade-generation", "multi-account", "asset-location", "optimization"]

[metadata]
author_name = "portfolio-agent-evals"
difficulty = "hard"
category = "quant-finance"
tags = ["trade-generation", "tier-3", "rebalance", "multi-metric"]
theme = "Rebalancing & Trade Generation"
tier = 3
reward_type = "multi-metric"

[agent]
timeout_sec = 2400.0

[verifier]
timeout_sec = 300.0

[environment]
# Offline by design: all data is synthetic and generated at build time.
network_mode = "none"
cpus = 2
memory_mb = 4096
storage_mb = 10240
build_timeout_sec = 900.0

Traps

Each must carry signal: a trap-blind solution must lose credit

  • The IRA is too small to hold all bonds: location is a preference, not a constraint.
  • Naive per-account replication of the household target scores poorly.
  • Taxable sells are penalised, so the cheapest path uses IRA and Roth trades where possible.

Inputs

Fixtures mounted in the environment

Outputs

What the verifier reads from /app/output

  • /app/output/trades.csv
    CSV
    Per-account trades.
  • /app/output/post_trade.json
    JSON
    Weights.
  • /app/output/objective.json
    JSON
    Score, penalties, total.

Anti-gaming

Account sizes are seeded so the IRA capacity binds in every instance.

Oracle notes

solution/solve.sh must score 1.0 on five seeds

MILP with account x ticker integer variables and linear location score.

Reviews (0)

Design review before a task is marked ready

    Reviews are read-only in static export.
    Tier 3 · Expert25–50% pass expected. Created 2026-01-01, updated 2026-01-01.