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.
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
| Metric | Weight | Check |
|---|---|---|
| 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
- /app/portfolio/
- /app/data/prices/
- /app/data/dividends.csv
- /app/policy/ips.yaml
- /app/CONVENTIONS.md
Outputs
What the verifier reads from /app/output
- /app/output/events.jsonJSONTrigger log.
- /app/output/trades.csvCSVAll fills.
- /app/output/post_trade.jsonJSONYear-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