Skip to main content
Strategy templates are ERC-1167 clonable contracts deployed once per chain. Each proposal clones a template, initializes it with custom parameters, then uses the clone in governor batch calls.

strategy list

Show available strategy templates and their deployed addresses.
sherwood strategy list

strategy clone <template>

Clone a template and initialize it. Returns the clone address for use in proposal batch calls.
sherwood strategy clone moonwell-supply \
  --vault 0x... \
  --amount 10 \
  --min-redeem 9.9 \
  --token USDC
The clone is deployed and initialized on-chain. The proposer (your wallet) pays gas for both transactions.

strategy propose <template>

All-in-one command: clone + initialize + build batch calls + submit proposal (or write JSON files).

Write calls to files (for manual proposal creation)

sherwood strategy propose venice-inference \
  --vault 0x... \
  --amount 500 --asset USDC --min-vvv 900 \
  --write-calls ./venice-calls

# Then submit manually:
sherwood proposal create \
  --vault 0x... \
  --name "Venice Inference" \
  --performance-fee 0 --duration 7d \
  --execute-calls ./venice-calls/execute.json \
  --settle-calls ./venice-calls/settle.json

Submit directly

sherwood strategy propose moonwell-supply \
  --vault 0x... \
  --amount 10000 --min-redeem 9900 --token USDC \
  --name "Moonwell USDC Yield" \
  --description "Supply 10k USDC for 7 days" \
  --performance-fee 1000 --duration 7d

Template-Specific Options

moonwell-supply

FlagDescriptionDefault
--amount <n>Amount of asset to supplyrequired
--min-redeem <n>Min asset on settlementsame as amount
--token <symbol>Asset token (USDC, WETH)USDC

venice-inference

FlagDescriptionDefault
--amount <n>Amount of asset to deployrequired
--asset <symbol>Asset token (USDC, VVV, or address)USDC
--agent <address>Agent wallet receiving sVVVyour wallet
--min-vvv <n>Min VVV from swap (required if asset != VVV)
--single-hopDirect asset-to-VVV swapfalse

aerodrome-lp

FlagDescriptionDefault
--token-a <address>Token A addressrequired
--token-b <address>Token B addressrequired
--amount-a <n>Token A amountrequired
--amount-b <n>Token B amountrequired
--stableStable pool (correlated assets)false
--gauge <address>Gauge for AERO rewardsnone
--lp-token <address>LP token addressrequired
--min-a-out <n>Min token A on settle0
--min-b-out <n>Min token B on settle0

wsteth-moonwell

Supply wstETH as Moonwell collateral. If the asset is not wstETH, the CLI swaps asset → wstETH via the Base Uniswap router before supply. Base only.
FlagDescriptionDefault
--amount <n>Asset amount to deployrequired
--token <symbol>Asset token symbolUSDC
--slippage <bps>Swap slippage tolerance in bps500

mamo-yield

Deposit asset into a Mamo yield strategy via the Mamo StrategyFactory. Base only.
FlagDescriptionDefault
--amount <n>Asset amount to deployrequired
--mamo-factory <address>Mamo StrategyFactory addressrequired

portfolio

Weighted basket of tokens (stock tokens, crypto) with on-chain rebalancing. Built on UniswapSwapAdapter with automatic multi-hop routing: the adapter tries direct USDC→token pools first, then falls back to USDC→WETH→token for tokens without direct pools (added in PR #176). Available on Base and Robinhood L2.
FlagDescriptionDefault
--amount <n>Total asset amount to allocaterequired
--tokens <list>Comma-separated token addresses or symbolsrequired
--weights <list>Comma-separated weights in bps (must sum to 10000)required
--max-slippage <bps>Max per-swap slippage in bps500
--fee-tier <n>Uniswap V3 pool fee tier3000
--swap-adapter <address>Override swap adapterauto-detected
See the Portfolio strategy reference for mechanics and risk notes.

hyperliquid-perp

Open a leveraged perpetual futures position on Hyperliquid via the HyperEVM strategy template. HyperEVM only.
FlagDescriptionDefault
--amount <n>USDC collateral to deployrequired
--leverage <n>Leverage multiplier10
--asset-index <n>HyperCore perp asset index (0 = BTC, 3 = ETH)0
--min-return <n>Min USDC return amount on settlement
--max-position <amount>Max position size in USD100000
--max-trades-per-day <n>Max trades per day50
See the Hyperliquid Perp strategy reference for mechanics, liquidation risk, and settlement flow.

How It Works

  1. Clone: The CLI deploys an ERC-1167 minimal proxy pointing to the template singleton. Cost: ~50k gas.
  2. Initialize: Calls strategy.initialize(vault, proposer, data) with your parameters. Cost: ~100-200k gas.
  3. Build calls: Generates execute.json and settle.json with the correct approve + execute/settle batch calls.
  4. Submit: Either writes files for proposal create or calls governor.propose() directly.
The vault trusts the governor — no separate allowlisting step is needed for strategy clones.