| name | defi-yield |
| description | DeFi 收益聚合器(Yield Aggregator)助手。帮助用户找到最佳收益策略、
分析各协议 APY、执行自动复投、追踪仓位收益。
当用户提到以下内容时激活:
- "收益聚合"、"DeFi 收益"、"撸收益"
- "Yearn Finance"、"Beefy Finance"、"Pendle"、"Gamma"
- "APY 查询"、"哪个池子收益最高"、"收益策略"
- "自动复投"、"流动性挖矿"、"收益农场"
- "质押收益"、"LP 收益"、"稳定币收益"
- 查询 APY、对比收益、分析风险、执行操作
|
DeFi Yield Aggregator Skill
概述
收益聚合器(Yield Aggregator)是 DeFi 中的自动理财协议,核心逻辑:
用户入金 → 协议自动分配到最高收益池子 → 收益自动复投 → 用户受益
相比手动收益耕种的优势:
- 自动复利(收益再投资,省 Gas)
- 策略由专业团队维护(Yearn 等)
- 智能路由(自动切换到收益最高的池子)
核心概念
| 术语 | 含义 |
|---|
| APY | 年化收益率(含复利效应) |
| APR | 年化收益率(不含复利) |
| TVL | Total Value Locked,锁仓量 |
| Vault | 收益池,用户存入资产、协议自动操作 |
| Auto-compounding | 自动复利,收益自动再质押 |
| Delta Neutral | 三角中性,对冲风险策略 |
| Leverage / 杠杆 | 借款放大收益(同时放大风险) |
| IL | Impermanent Loss,无常损失 |
主流收益聚合协议
🥇 Yearn Finance(以太坊)
| 项目 | 信息 |
|---|
| 官网 | yearn.finance |
| 链 | Ethereum、Arbitrum、Polygon、Fantom |
| 特点 | 主动策略 Vault(yVaults),顶级安全性 |
| 代币 | YFI(治理代币) |
| APY 来源 | yearn.finance/vaults |
🥈 Beefy Finance(多链)
| 项目 | 信息 |
|---|
| 官网 | beefy.finance |
| 链 | 50+ 条链(BSC/ETH/Polygon/Arbitrum等) |
| 特点 | 多链覆盖,收益 Vault 数量最多 |
| 代币 | BIFI |
| APY 来源 | beefy.finance/vaults |
🥉 Pendle Finance(创新)
| 项目 | 信息 |
|---|
| 官网 | pendle.finance |
| 链 | Ethereum、Arbitrum、BSC |
| 特点 | 收益代币化(PT / YT),可锁定未来收益 |
| 适合 | 预期利率下降,想提前锁定高收益 |
🏅 Gamma Strategies(Gamma)
| 项目 | 信息 |
|---|
| 官网 | gamma.xyz |
| 链 | Ethereum、Polygon |
| 特点 | Uniswap V3 流动性管理,专攻 LP 收益 |
| 适合 | 想做市但不想主动管理 LP 仓位 |
🏅 Stargate(跨链)
| 项目 | 信息 |
|---|
| 官网 | stargate.finance |
| 链 | 多链 |
| 特点 | 跨链稳定币桥 + 收益池 |
| 适合 | 稳定币跨链 + 收益双赢 |
其他常见协议
| 协议 | 特点 |
|---|
| Convex Finance | CVX 生态,专注 Curve 收益 |
| Aura Finance | Balancer 收益聚合 |
| Gearbox | 杠杆收益协议 |
| Roken | Lido rETH 质押收益增强 |
| Eigenlayer | 再质押(Restaking)收益 |
工具
API / Web 抓取
extract_content_from_websites — 抓取 Yearn / Beefy / Pendle 等官方 APY 数据
batch_web_search — 搜索最新收益策略、协议动态
Python 脚本
scripts/apy_checker.py — 批量查询多协议 APY
scripts/position_tracker.py — 追踪钱包在各协议中的仓位和收益
scripts/yield_optimizer.py — 收益对比分析,优化建议
工作流程
场景一:查询最佳 APY
- 确认用户资产类型:稳定币 / ETH / BTC / 山寨币
- 确认链偏好和风险承受能力
- 查询各协议对应 Vault APY
- 输出对比表 + 建议
操作步骤:
1. 使用 apy_checker.py 拉取 Yearn / Beefy / Gamma 等协议 APY
2. 对比稳定币收益(USDC/USDT/DAI)
3. 考虑 Gas 成本(以太坊主网 vs L2)
4. 提示无常损失风险和流动性限制
5. 给出最优策略建议
场景二:收益策略分析
根据用户持仓类型推荐策略:
稳定币(USDC/USDT/DAI):
最优:Yearn yUSDC Vault / Beefy USDC Vault
APY 范围:3%~15%(根据市场情况)
风险:低(单币池,无 IL)
注意:Gas 成本要低于收益
推荐链:Arbitrum / Polygon(低 Gas)
ETH 生态:
方案A:直接质押 Lido → 4~5% APY(安全稳定)
方案B:stETH 在 Curve/Yearn 循环LP → 5~10% APY
方案C:Yearn ETH Vault → 自动策略
风险:ETH 波动 + IL
BTC 生态:
方案A:WBTC 存入 BitBTC -> 4~6% APY
方案B:Curve wBTC/renBTC 池
风险:BTC 波动
场景三:仓位追踪
- 用户提供钱包地址
- 调用 position_tracker.py 扫描
- 输出各协议的资产分布 + 估算收益
- 提示未领取奖励情况
常用脚本
脚本 1:APY 批量查询
文件:scripts/apy_checker.py
"""
DeFi APY 批量查询器
查询 Yearn、Beefy、Pendle 等主流协议的 APY 数据
"""
import requests
import json
from dataclasses import dataclass
from typing import List, Optional
@dataclass
class VaultInfo:
protocol: str
chain: str
asset: str
vault_address: str
apy: float
tvl_usd: float
has_reward_token: bool = False
reward_apy: float = 0.0
def query_yearn_vaults() -> List[VaultInfo]:
"""查询 Yearn Finance Vaults"""
url = "https://yearn.vision/vaults"
results = []
try:
resp = requests.get(url, timeout=10)
data = resp.json()
for vault in data.get("data", [])[:20]:
results.append(VaultInfo(
protocol="Yearn",
chain=vault.get("chain", "ethereum"),
asset=vault.get("symbol", "").replace("yv", "").upper(),
vault_address=vault.get("address", ""),
apy=float(vault.get("apy", {}).get(, ) ) * ,
tvl_usd=(vault.get(, {}).get(, ) ),
))
Exception e:
()
results
() -> [VaultInfo]:
url =
results = []
:
resp = requests.get(url, timeout=)
data = resp.json()
vault data:
asset asset.upper() vault.get(, ).upper():
results.append(VaultInfo(
protocol=,
chain=vault.get(, ),
asset=vault.get(, ),
vault_address=vault.get(, ),
apy=(vault.get(, ) ) * ,
tvl_usd=(vault.get(, ) ),
))
Exception e:
()
results
() -> [VaultInfo]:
url =
results = []
headers = {: }
:
resp = requests.get(url, headers=headers, timeout=)
data = resp.json().get(, []) (resp.json(), ) resp.json()
m data[:]:
results.append(VaultInfo(
protocol=,
chain=,
asset=m.get(, ),
vault_address=m.get(, ),
apy=(m.get(, ) ),
tvl_usd=(m.get(, ) ),
))
Exception e:
()
results
():
sorted_vaults = (vaults, key= x: x.apy, reverse=)
()
( * )
v sorted_vaults[:top_n]:
apy_str = v.apy >
tvl_str = v.tvl_usd >
()
__name__ == :
argparse
parser = argparse.ArgumentParser(description=)
parser.add_argument(, , default=, =)
parser.add_argument(, , =, default=, =)
args = parser.parse_args()
( * )
()
( * )
all_vaults = []
all_vaults += query_yearn_vaults()
all_vaults += query_beefy_vaults(args.asset)
all_vaults:
format_results(all_vaults, args.top)
:
()
脚本 2:仓位追踪器
文件:scripts/position_tracker.py
"""
DeFi 仓位追踪器
查询钱包在各收益协议中的持仓和累计收益
用法:
export WALLET=0xYourAddress
python3 scripts/position_tracker.py
"""
import os
import requests
from web3 import Web3
from dataclasses import dataclass
from typing import Dict, List
WALLET = os.getenv("WALLET", "0x0000000000000000000000000000000000000000")
KNOWN_VAULTS = {
"yearn": {
"name": "Yearn Finance",
"vaults": {
"0x5f18C75AbDAe578b477E319BcA4F55eFEF2eF892": "yUSDC",
"0xa354F3587Ae0fB13C52e4873BCCC4767C8eFc2D9": "yUSDT",
"0x8d0C6B68D3E1D2d8f2d0D3F9d5E3f2E8D2E1E0E1": "yDAI",
}
},
"beefy": {
"name": "Beefy Finance",
"vaults": {
"0x0000000000000000000000000000000000000000": "beUSDC",
}
}
}
@dataclass
class Position:
protocol: str
vault: str
asset: str
balance: float
value_usd: float
apy: float
pending_rewards: float = 0.0
def get_token_balance(w3: Web3, token_addr: , wallet: ) -> :
erc20_abi = [
{
: [{: , : }],
: ,
: [{: , : }],
: ,
:
},
{
: [],
: ,
: [{: , : }],
: ,
:
},
{
: [],
: ,
: [{: , : }],
: ,
:
}
]
:
contract = w3.eth.contract(address=Web3.to_checksum_address(token_addr), abi=erc20_abi)
bal = contract.functions.balanceOf(Web3.to_checksum_address(wallet)).call()
decimals = contract.functions.decimals().call()
bal / ( ** decimals)
Exception:
() -> [Position]:
w3 = Web3(Web3.HTTPProvider(rpc_url))
w3.is_connected():
balance = get_token_balance(w3, vault_addr, wallet)
balance <= :
Position(
protocol=,
vault=vault_addr[:] + ,
asset=,
balance=balance,
value_usd=balance * ,
apy=,
)
():
WALLET.startswith():
()
()
()
()
( * )
rpc =
positions: [Position] = []
()
addr, name KNOWN_VAULTS[][].items():
pos = estimate_yearn_position(addr, WALLET, rpc)
pos:
positions.append(pos)
()
positions:
()
()
()
( + * )
total_value = (p.value_usd p positions)
total_apy = (p.apy * p.value_usd p positions) / (total_value, )
()
()
__name__ == :
main()
脚本 3:收益优化建议器
文件:scripts/yield_optimizer.py
"""
DeFi 收益优化建议器
根据用户资产和风险偏好,推荐最佳收益策略
"""
from dataclasses import dataclass
from typing import List, Optional
@dataclass
class Strategy:
protocol: str
vault_name: str
asset: str
chain: str
apy: float
min_deposit: float
risk_level: str
il_risk: bool
lockup: bool
notes: str
STRATEGIES = [
Strategy("Yearn", "yUSDC", "USDC", "Ethereum", 4.5, 0, "low", False, False, "安全首选,TVL 高"),
Strategy("Yearn", "yUSDC", "USDC", "Arbitrum", 6.2, 0, "low", False, False, "L2 低 Gas,APY 更高"),
Strategy("Beefy", "USDC", "USDC", "Polygon", 5.8, 0, "low", False, False, "Polygon 低费用"),
Strategy(, , , , , , , , , ),
Strategy(, , , , , , , , , ),
Strategy(, , , , , , , , , ),
Strategy(, , , , , , , , , ),
Strategy(, , , , , , , , , ),
Strategy(, , , , , , , , , ),
Strategy(, , , , , , , , , ),
Strategy(, , , , , , , , , ),
Strategy(, , , , , , , , , ),
]
() -> [Strategy]:
results = []
s STRATEGIES:
asset.lower() s.asset.lower():
risk == s.risk_level (,):
risk == s.risk_level == :
s.apy < min_apy:
results.append(s)
(results, key= x: x.apy, reverse=)
__name__ == :
argparse
parser = argparse.ArgumentParser(description=)
parser.add_argument(, , default=, =)
parser.add_argument(, , default=, choices=[, , ], =)
parser.add_argument(, , =, default=, =)
args = parser.parse_args()
( * )
()
( * )
results = optimize(args.asset, args.risk, args.min_apy)
results:
()
s results[:]:
()
()
()
()
()
风险提示 ⚠️
| 风险类型 | 说明 | 防范 |
|---|
| 无常损失 (IL) | 流动性池中资产价格波动导致损失 | 优先选单币池(无 IL) |
| 智能合约漏洞 | 协议被攻击导致资金损失 | 选择经过审计的知名协议 |
| ** Rug Pull** | 流动性突撤导致亏损 | 检查 TVL 和团队背景 |
| Gas 成本 | L2 收益高但波动大 | 计算净收益(扣 Gas 后) |
| 预言机操纵 | 价格数据被操纵 | 选择有 TWAP 保护的协议 |
| 流动性不足 | 提取时池子没足够流动性 | 选择高 TVL 协议 |
参考链接