DeFi Yield Strategies
Discover yield opportunities across DeFi protocols (Aave, Compound, and others), deposit tokens to earn yield, and withdraw when ready. This is a full lifecycle skill covering discovery through to exit.
Confirm wallet is authenticated
fdx status
If the wallet is not authenticated, refer to the authenticate skill.
Step 1: Discover Yield Strategies
Search for available yield opportunities:
# Browse all available strategies
fdx call discoverYieldStrategies
# Filter by chain
fdx call discoverYieldStrategies --chainKey ethereum
# Filter by token
fdx call discoverYieldStrategies --chainKey ethereum --tokenAddress 0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48
# Filter by minimum APY and risk level
fdx call discoverYieldStrategies --chainKey ethereum --minApy 5 --maxRisk low
# Sort results
fdx call discoverYieldStrategies --chainKey ethereum --sortBy apy
discoverYieldStrategies Parameters
| Parameter | Required | Description |
|---|---|---|
--chainKey | No | Filter by blockchain (e.g. ethereum, polygon, arbitrum, base) |
--tokenAddress | No | Filter by token contract address |
--minApy | No | Minimum APY percentage (e.g. 5 for 5%) |
--maxRisk | No | Maximum risk level filter (e.g. low, medium, high) |
--sortBy | No | Sort results (e.g. apy, risk) |
Step 2: Deposit for Yield
Once a strategy is selected, deposit tokens into it:
fdx call depositForYield \
--chainKey <chain> \
--strategyId <strategyId> \
--amount <amount>
depositForYield Parameters
| Parameter | Required | Description |
|---|---|---|
--chainKey | Yes | Blockchain where the strategy runs |
--strategyId | Yes | Strategy identifier from discoverYieldStrategies results |
--amount | Yes | Amount to deposit (human-readable) |
--tokenAddress | No | Token to deposit (if strategy accepts multiple tokens) |
Step 3: Withdraw from Yield
Exit a position and retrieve tokens:
fdx call withdrawFromYield \
--chainKey <chain> \
--positionId <positionId>
withdrawFromYield Parameters
| Parameter | Required | Description |
|---|---|---|
--chainKey | Yes | Blockchain of the position |
--positionId | Yes | Position identifier from the deposit result |
--amount | No | Amount to withdraw (omit for full withdrawal) |
--recipient | No | Custom recipient address (defaults to own wallet) |
Example Session
# Check auth and balance
fdx status
fdx call getWalletOverview --chainKey ethereum
# Discover USDC yield strategies on Ethereum with at least 3% APY
fdx call discoverYieldStrategies \
--chainKey ethereum \
--tokenAddress 0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48 \
--minApy 3 \
--sortBy apy
# Deposit 1000 USDC into a chosen strategy
fdx call depositForYield \
--chainKey ethereum \
--strategyId <strategyId-from-discovery> \
--amount 1000
# Later: withdraw the full position
fdx call withdrawFromYield \
--chainKey ethereum \
--positionId <positionId-from-deposit>
Flow
- Check authentication with
fdx status - Check available balance with
fdx call getWalletOverview --chainKey <chain> - Discover strategies with
fdx call discoverYieldStrategies— present options to the human - Human selects a strategy — confirm the choice, risks, and deposit amount
- Execute deposit with
fdx call depositForYield - When the human wants to exit, withdraw with
fdx call withdrawFromYield
Important: DeFi protocols carry smart contract risk. Always present the risk level to your human and let them make the final decision on which strategy to use and how much to deposit.
Prerequisites
- Must be authenticated (
fdx statusto check, seeauthenticateskill) - Wallet must hold sufficient balance of the deposit token on the target chain
- If insufficient funds, suggest using the
fund-walletskill orswap-tokensskill to acquire the needed token
Error Handling
- "Not authenticated" — Run
fdx setupfirst, or seeauthenticateskill - "Insufficient balance" — Check balance; see
fund-walletskill - "Invalid strategyId" — Re-run
discoverYieldStrategiesto get current strategy IDs - "Invalid positionId" — The position may have already been withdrawn