Portfolio Agent EvalsHarbor task suite · ETF analyze → backtest → rebalance
Rebalancing & Trade Generation/pf-rb-band-policy-simulation

One year of daily band monitoring with next-open trading and monthly contributions

Simulate a year of daily band monitoring and next-open trading for the household exactly as an automated rebalancer would, reproducing every trade.

T2mediumRebalancemulti-metricready
Edit
readystatic
Agent budget
30 min
Verifier budget
4 min
Tier target
60–80% pass expected

instruction.md

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

One year of band monitoring

Starting from the household as of 2024-01-02, check drift at every close. When any sleeve breaches its band, rebalance all sleeves to target at the next open under the basic trade-list constraints. Apply a 10,000 USD contribution as cash on the first trading day of each month (deployed only at the next rebalance event). Credit dividends to cash on pay-date.

Write /app/output/events.json (list of {decision_date, trigger_sleeve, drift}), /app/output/trades.csv, and year-end /app/output/post_trade.json with turnover and total costs.

Verification

reward.json metrics · weights sum to 1.00

MetricWeightCheck
events_exact
0.4
Decision dates and trigger sleeves exact.
trades_exact
0.4
Shares exact per (date, ticker).
year_end
0.2
rel 1e-6.

Harbor scaffold

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

schema_version = "1.4"

[task]
name = "portfolio-agent-evals/pf-rb-band-policy-simulation"
version = "1.0.0"
description = "Simulate a year of daily band monitoring and next-open trading for the household exactly as an automated rebalancer would, reproducing every trade."
keywords = ["etf", "portfolio", "rebalance", "trade-generation", "event-simulation", "trade-generation", "spec-adherence"]

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

[agent]
timeout_sec = 1800.0

[verifier]
timeout_sec = 240.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

  • After a rebalance the next check is the following close — no same-day re-trigger on execution slippage.
  • Contribution cash is itself a sleeve and can trigger a cash-band breach.
  • Several sleeves breaching on the same day is one event; trigger is the largest |drift|.

Inputs

Fixtures mounted in the environment

Outputs

What the verifier reads from /app/output

  • /app/output/events.json
    JSON
    Trigger log.
  • /app/output/trades.csv
    CSV
    All fills.
  • /app/output/post_trade.json
    JSON
    Year-end state.

Anti-gaming

Seeded prices produce 3 to 8 events per year.

Oracle notes

solution/solve.sh must score 1.0 on five seeds

Reference engine in event mode.

Reviews (0)

Design review before a task is marked ready

    Reviews are read-only in static export.
    Tier 2 · Practitioner60–80% pass expected. Created 2026-01-01, updated 2026-01-01.