Break-even transaction cost for each active policy
For each active policy, root-find the transaction-cost level at which it stops beating buy-and-hold on CAGR.
instruction.md
What the agent sees (CONVENTIONS.md is appended automatically)
Break-even transaction costs
Using the tournament engine (fixed fee 0), for each policy other than buy-and-hold find the proportional cost c* in bps such that CAGR_policy(c*) = CAGR_buy_and_hold(c*), by bisection on [0, 500] to within 0.1 bps. Initial purchase costs apply to all policies at the same c. Report c*, or "never" if the policy underperforms at 0 bps, or ">500" if it still wins at 500, in /app/output/breakeven.json along with the number of engine evaluations used.
Verification
reward.json metrics · weights sum to 1.00
| Metric | Weight | Check |
|---|---|---|
| breakeven_values | 0.8 | abs 0.5 bps vs oracle bisection. |
| sentinel_cases | 0.2 | 'never' and '>500' cases exact. |
Harbor scaffold
Generated from this record — task.toml, Dockerfile, verifier, oracle stub
schema_version = "1.4" [task] name = "portfolio-agent-evals/pf-eval-cost-breakeven" version = "1.0.0" description = "For each active policy, root-find the transaction-cost level at which it stops beating buy-and-hold on CAGR." keywords = ["etf", "portfolio", "backtest", "strategy-evaluation", "root-finding", "cost-modelling"] [metadata] author_name = "portfolio-agent-evals" difficulty = "medium" category = "quant-finance" tags = ["strategy-evaluation", "tier-2", "backtest", "partial"] theme = "Strategy Evaluation & Overfitting Discipline" tier = 2 reward_type = "partial" [agent] timeout_sec = 1800.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
- CAGR is not perfectly monotone in cost because of whole-share rounding; follow the bisection spec rather than a fancier root-finder.
- Buy-and-hold's CAGR also depends on c through the initial purchase.
- One policy is planted to be a 'never' case.
Inputs
Fixtures mounted in the environment
- /app/strategies/
- /app/data/prices/
- /app/policy/ips.yaml
- /app/data/dividends.csv
- /app/CONVENTIONS.md
Outputs
What the verifier reads from /app/output
- /app/output/breakeven.jsonJSONBreak-even cost per policy.
Anti-gaming
Which policy is the 'never' case depends on seed.
Oracle notes
solution/solve.sh must score 1.0 on five seeds
Bisection with 13 iterations from a 500 bps bracket reaches 0.06 bps.
Reviews (0)
Design review before a task is marked ready