Strategies, in plain language

A strategy is a mandate: where USDC may go, how much, and what makes a move worth making. Three templates ship today. Every number is owner-set and engine-enforced.

Conservative

for treasuries that prize reachability
venue cap 50% liquid buffer 20% move only for ≥ 1.00% net gain custody cap $10,000 / day, on-chain break-even gate 3 days

Half the treasury can never sit in one venue, a fifth stays liquid, and the engine only moves for a clear win.

Balanced

the default posture
venue cap 70% liquid buffer 10% move only for ≥ 0.50% net gain custody cap $100,000 / day, on-chain break-even gate 7 days

Room to chase yield, with a tenth always reachable and every move still required to pay for itself.

Aggressive

for capital that can concentrate
venue cap 100% liquid buffer 5% move only for ≥ 0.25% net gain custody cap $1,000,000 / day, on-chain break-even gate 14 days

Full concentration allowed when the numbers justify it. The guardrails still hold: this is a wider fence, not no fence.

How a strategy decides

Before allocating, every venue is scored. The headline rate is read on-chain; the haircut is what is wrong with the venue itself.

net APY = headline APY venue cost risk haircut
Utilization at 90%: withdrawals start queuing behind borrowers−100 bps
Utilization at 97%: the headline rate is theoretical for anyone exiting−400 bps
Liquidity under $1M: a thin pool is an exit-liquidity trap, not a venueexcluded
Position above its cap: unwound even at a yield loss. Risk bounds beat yield.forced unwind

The four gates

A proposed move executes only if it clears all four. Every rejection is logged.

caps · buffer · allowlist

Risk gate

The move cannot breach a venue cap, eat the liquidity buffer, or leave the allowlist.

gain > threshold

Minimum improvement

Yield-chasing moves must beat the policy threshold. Compliance moves skip this gate.

size > dust floor

Dust floor

Smaller than the minimum move size, a move is not worth its own transaction. Accrual drift never churns.

yield repays gas

Break-even gate

The extra yield over the break-even window must exceed the execution cost, or the move is dropped.

What that looks like with real rates

With Marginfi at 6.27% net and Kamino at 3.17% net (live mainnet rates), the balanced template plans the column on the right.

The $100 treasury does not move because a week of a half-percent edge on $100 is less than ten cents of gas. That refusal is the feature: small treasuries are safe to automate precisely because the engine knows when doing nothing is the right trade.

plan · balanced template
$10,0007,000 marginfi · 2,000 kamino · 1,000 buffer
$1,000700 marginfi · 200 kamino · 100 buffer
$100no moves  (yield < gas: the gate holds)
reproducible with the dry-run planner, no capital required

Unattended, by design

A deployed strategy re-scores and re-plans on a watch loop. Because only moves that clear every gate are emitted, most cycles are no-ops: the treasury sits still until the numbers justify motion. Each cycle also health-checks every venue, and a violated invariant trips the fail-safe halt.

Deliberately simple, openly so

Today the engine is a single-asset, lend-only, spot-rate allocator, on purpose: it is legible and hard to lose money with. Multi-asset treasuries, LP and liquid-staking venues, and richer optimization are roadmap, each behind the same policy object and the same four gates.

Common questions

Why has my treasury not moved?
Probably because moving would lose money. Most watch-loop cycles are no-ops by design: a move that fails the improvement threshold, the dust floor, or the break-even gate is dropped and the rejection is logged. Stillness is the engine doing its job, not failing at it.
Can I change a strategy after deploying it?
Yes. The owner can update the policy object at any time, and the engine re-plans inside the new fence on the next cycle. What nobody can do, including your agent, is widen the policy at runtime: capability grants only ever act inside it.
Can my agent override the policy?
No. Agents pick a template or operate within the policy you deployed. A malformed or out-of-bounds policy is rejected outright, never silently corrected, and the custody layer refuses to sign anything outside the mandate regardless of what the engine asks.
What can a custom policy set?
Every dial the templates use: the venue allowlist, per-venue cap, liquidity buffer, minimum improvement, dust floor, break-even window, and the on-chain daily custody cap. The templates are just well-chosen values for the same object.
Which assets and venues are supported today?
USDC, across allowlisted lending venues, with adapters for live markets like Marginfi and Kamino. New venue classes (liquid staking, LP, fixed-term) arrive as adapters land and obey the same policy object when they do.