For AI agents · portfolio
How an AI agent builds its own portfolio — and why it should
An agent that always buys the single highest yield within its risk budget puts every dollar on one contract. Spread over 5 sources of yield, the worst single failure costs 22.5% of the amount instead of 100% — for 1.27 percentage points less yield than sUSDai alone.
As data: /api/v1/agents/portfolio?amount_usd=1000&max_risk=3 · MCP tool build_portfolio on https://mcp.tokenbank.world. Checks, not advice.
Why an agent should spread
- A bot that always buys the single highest yield within its risk budget puts every dollar on one contract, one issuer and one source of yield. One failure then takes the whole amount.
- Spread over several sources of yield, one failure takes only that block. The expected yield drops a little; the worst case drops a lot.
- The admixture adds a small share above the budget: more yield, with the possible loss capped by its size.
- If one product fails — a depeg, an exploit, a borrower default, an insurance claim — you lose at most 22.5% of the amount, not 100%.
- The 4 blocks earn from different sources (government debt, borrowers, trading fees, staking, …). They fail for different reasons, so they rarely fail together.
- Within the risk budget, spreading earns 4.97% against 6.24% for everything in sUSDai: 1.27 pp less — the price of not depending on one contract.
- The 10% admixture lifts the whole to 6.36% with a product above your risk budget; its possible loss is capped at 10% of the amount by its size.
Single-product failures on record
Live example: 1,000 USD, risk ≤ 3
Core blocks 4.97% · with admixture 6.36% · single best 6.24% (sUSDai) · 13-week T-bill 4.15%
| Block | Category | Weight | USD | Yield | Risk | Route |
|---|---|---|---|---|---|---|
| sUSDai | Yield stablecoins | 22.5% | 225 | 6.24% | 3 | dex · Ethereum |
| syrupUSDC | Private credit | 22.5% | 225 | 5.14% | 3 | dex · Solana |
| Uniswap V4 — USDC / USDT liquidity pool | Stablecoin pools | 22.5% | 225 | 4.82% | 3 | lp · Ethereum |
| USDY | Treasury tokens | 22.5% | 225 | 3.69% | 1 | dex · Ethereum |
| PT-reUSDe-10DEC2026 | Fixed rate (admixture) | 10% | 100 | 18.89% | 5 | pendle · Ethereum |
Yield by category — what an agent can buy
| Category | Products | Median yield | Range | Risk levels | Moves with crypto price |
|---|---|---|---|---|---|
| Reinsurance | 1 | 11.02% | 11.02–11.02% | 4:1 | no |
| Fixed rate | 17 | 9.34% | 2.2–18.89% | 4:2 5:15 | no |
| Liquidity pools | 241 | 6.82% | 0–93.64% | 4:40 5:201 | yes |
| SOL staking | 2 | 4.69% | 4.6–4.78% | 3:1 4:1 | yes |
| Yield stablecoins | 8 | 4.29% | 0.71–6.24% | 3:3 4:5 | no |
| Private credit | 2 | 4.07% | 3–5.14% | 3:1 4:1 | no |
| Stablecoin lending | 2 | 3.88% | 3.76–4% | 3:1 4:1 | no |
| Crypto lending | 3 | 3.6% | 3.5–4% | 3:2 4:1 | yes |
| Treasury tokens | 2 | 3.56% | 3.42–3.69% | 1:1 3:1 | no |
| ETH staking | 3 | 2.2% | 1.98–2.27% | 2:1 3:2 | yes |
| Stablecoin pools | 47 | 0.37% | 0.01–9.01% | 2:7 3:2 4:15 5:23 | no |
Steps
- Get the map. categories (median yield and risk per category), blocks, admixture, summary, whyGET https://tokenbank.world/api/v1/agents/portfolio?amount_usd=<amount>&max_risk=<1-5> (MCP build_portfolio)
- Check the proposal against your owner’s rules. riskLevel and riskReasons of each block; drop any block your mandate excludes and call again with categories you allow
- Buy block by block. contract, route, steps — verify the contract, approve the exact amount, simulate, then sendMCP get_purchase_steps { "ticker": "<block.ticker>" }
- Keep the record. store this response next to the transaction hashes: it shows what was checked and why each block was chosen
- Rebalance. see rebalancecall build_portfolio again
Rules
- One product per category, never the same exposure twice (five staked-ETH tokens are one exposure).
- No block above the cap (default 30%).
- Each block is checked at its own amount — on Ethereum, gas makes small blocks too expensive; Base and Solana cost cents.
- Blocks that move with a crypto price (staking, pools with a price token) only with price_exposure=true.
When to rebalance
- Re-run at least monthly, and at once when a block’s risk level rises above your budget or its yield falls below the 13-week T-bill for 7 days (it then pays less than risk-free).
- Move only when a block’s weight is off by more than a third of its target, or the proposal changed a ticker — every move costs gas and spread.
- Exit a block that fails a check you cannot fix (contract unknown, route closed, exit too thin) before buying the replacement.