快速入门¶
本指南将引导您完成 Almanak SDK 的安装、创建您的第一个策略,以及在本地 Anvil 分叉上运行 -- 无需钱包或 API 密钥。
前提条件¶
- Python 3.11+
- Foundry(提供用于本地分叉测试的 Anvil):
安装¶
或者使用 uv:
使用 AI 编程代理? 一个命令即可让它学会 SDK:
这会自动检测您的平台(Claude Code、Codex、Cursor、Copilot 以及 其他 6 个)并安装策略构建器技能。
1. 获取策略¶
选项 A:复制一个可运行的演示(推荐初学者使用)¶
这会显示一个交互式菜单,包含 13 个可运行的演示策略。选择一个,它会被复制到您当前的目录中,随时可以运行。您也可以跳过菜单:
选项 B:从模板创建¶
按照交互式提示选择模板、链和名称。这将创建一个策略目录,包含:
strategy.py- 您的策略实现,包含decide()方法config.json- 链、协议和参数配置.env- 环境变量(稍后填入您的密钥)__init__.py- 包导出tests/- 测试脚手架
2. 在本地 Anvil 分叉上运行¶
测试策略的最快方式 -- 无需钱包密钥、无需真实资金、零风险:
此命令会自动:
- 启动 Anvil 分叉 -- 分叉
config.json中指定的链(默认使用免费公共 RPC) - 使用默认 Anvil 钱包 -- 无需
ALMANAK_PRIVATE_KEY - 启动网关侧车在后台运行
- 为您的钱包充值
anvil_funding中列出的代币(见下方) - 运行一次迭代 您的策略的
decide()方法
Anvil 上的钱包充值¶
在 config.json 中添加 anvil_funding 块,以便在分叉启动时自动为您的钱包充值:
{
"strategy_id": "my_strategy",
"chain": "arbitrum",
"anvil_funding": {
"ETH": 10,
"USDC": 10000,
"WETH": 5
}
}
原生代币(ETH、AVAX 等)通过 anvil_setBalance 充值。ERC-20 代币通过存储槽操作充值。每次分叉启动时都会自动执行。
更好的 RPC 性能(可选)¶
免费公共 RPC 可用但有速率限制。如需更快的分叉速度,请在 .env 中设置 Alchemy 密钥:
这会自动为所有支持的链构建 RPC URL。任何提供商都可以 -- 请参阅环境变量了解完整的优先级顺序。
3. 在主网运行¶
Warning
主网执行使用真实资金。请从小额开始,并使用专用钱包。
要在实际链上运行,您需要在 .env 中设置钱包私钥:
# .env
ALMANAK_PRIVATE_KEY=0xYOUR_PRIVATE_KEY
# RPC 访问(选择一个)
ALCHEMY_API_KEY=your_alchemy_key
# 或者: RPC_URL=https://your-rpc-provider.com/v1/your-key
然后不使用 --network anvil 标志运行:
请参阅环境变量了解完整的配置选项列表,包括协议特定的 API 密钥。
策略结构¶
策略实现 decide() 方法,该方法接收 MarketSnapshot 并返回 Intent:
from decimal import Decimal
from almanak import IntentStrategy, Intent, MarketSnapshot
class MyStrategy(IntentStrategy):
def decide(self, market: MarketSnapshot) -> Intent | None:
price = market.price("ETH")
balance = market.balance("USDC")
if price < Decimal("2000") and balance.balance_usd > Decimal("500"):
return Intent.swap(
from_token="USDC",
to_token="ETH",
amount_usd=Decimal("500"),
)
return Intent.hold(reason="没有机会")
可用意图¶
| 意图 | 描述 |
|---|---|
SwapIntent |
DEX 上的代币交换 |
HoldIntent |
无操作,等待下一轮 |
LPOpenIntent |
开设流动性头寸 |
LPCloseIntent |
关闭流动性头寸 |
BorrowIntent |
从借贷协议借款 |
RepayIntent |
偿还借款资产 |
SupplyIntent |
向借贷协议提供资产 |
WithdrawIntent |
从借贷协议提取资产 |
StakeIntent |
质押代币 |
UnstakeIntent |
取消质押代币 |
PerpOpenIntent |
开设永续合约头寸 |
PerpCloseIntent |
关闭永续合约头寸 |
FlashLoanIntent |
闪电贷操作 |
CollectFeesIntent |
收取 LP 费用 |
PredictionBuyIntent |
购买预测市场份额 |
PredictionSellIntent |
出售预测市场份额 |
PredictionRedeemIntent |
赎回预测市场收益 |
VaultDepositIntent |
存入金库 |
VaultRedeemIntent |
从金库赎回 |
BridgeIntent |
跨链桥接代币 |
EnsureBalanceIntent |
元意图,解析为 BridgeIntent 或 HoldIntent,确保目标链上的最低代币余额 |