Accueil
Le SDK Almanak fournit un framework complet pour le développement, le test et le déploiement d'agents DeFi autonomes. Construit sur une architecture basée sur les intentions, les stratégies sont exprimées sous forme d'intentions de haut niveau avec un minimum de code.
Fonctionnalités¶
- Architecture basée sur les intentions - Exprimez votre logique de trading sous forme d'intentions de haut niveau (Swap, LP, Borrow, etc.). Le framework gère la compilation et l'exécution.
- Gestion d'état à trois niveaux - Persistance automatique avec les niveaux HOT/WARM/COLD pour la fiabilité.
- Backtesting complet - Simulation PnL, paper trading sur des forks Anvil et balayage de paramètres.
- Support multi-chaînes - Ethereum, Arbitrum, Optimism, Base, Avalanche, Polygon, BSC, Sonic, Plasma, Blast, Mantle, Berachain, et plus encore.
- Intégration de protocoles - Uniswap V3, Aave V3, Morpho Blue, GMX V2, Pendle, Polymarket, Kraken, et plus encore.
- Conception non-custodiale - Contrôle total de vos fonds via des comptes intelligents Safe.
- Prêt pour la production - Alertes intégrées, détection de blocage, gestion d'urgence et déploiements canari.
Installation¶
Le test sur fork Anvil (ci-dessous) nécessite Foundry :
Démarrage rapide¶
# Créer une nouvelle stratégie à partir d'un modèle
almanak strat new
# L'exécuter sur un fork Anvil local -- pas besoin de portefeuille ni de clés API
cd my_strategy
almanak strat run --network anvil --once
Le test sur fork Anvil est le point de départ recommandé. Le SDK démarre automatiquement un fork local, utilise un portefeuille pré-financé par défaut, et exécute votre stratégie sans aucune configuration. Consultez Premiers pas pour le guide complet.
Écrire une stratégie¶
Les stratégies implémentent la méthode decide(), qui reçoit un MarketSnapshot et retourne un Intent (ou None pour passer le cycle) :
from decimal import Decimal
from almanak.framework.intents import Intent
from almanak.framework.strategies import IntentStrategy, MarketSnapshot
class MyStrategy(IntentStrategy):
"""Une stratégie simple de retour à la moyenne."""
def decide(self, market: MarketSnapshot) -> Intent | None:
eth_price = market.price("ETH")
usdc = market.balance("USDC")
if eth_price < Decimal("2000") and usdc.balance_usd > Decimal("500"):
return Intent.swap(
from_token="USDC",
to_token="ETH",
amount_usd=Decimal("500"),
)
return Intent.hold(reason="En attente de meilleures conditions")
Architecture¶
almanak/
framework/ # Framework de stratégie V2
strategies/ # Classe de base IntentStrategy
intents/ # Vocabulaire d'intentions et compilateur
state/ # Gestion d'état à trois niveaux
execution/ # Orchestration des transactions
backtesting/ # PnL, paper trading, balayage de paramètres
connectors/ # Adaptateurs de protocoles
data/ # Oracles de prix, indicateurs
alerting/ # Notifications Slack/Telegram
services/ # Détection de blocage, gestion d'urgence
gateway/ # Sidecar gRPC de la passerelle
transaction_builder/ # Construction de transactions bas niveau
core/ # Énumérations, modèles, utilitaires
cli/ # Interface en ligne de commande
Toutes les stratégies s'exécutent à travers une architecture passerelle exclusive pour la sécurité. Le sidecar passerelle détient tous les secrets et expose une API gRPC contrôlée. Les conteneurs de stratégie n'ont pas de secrets et pas d'accès direct à Internet.
Retours et demandes de fonctionnalités¶
Vous avez une idée, trouvé un bug ou souhaitez demander une fonctionnalité ? Rendez-vous sur notre Discord et publiez dans le canal approprié. Nous surveillons activement les retours et les utilisons pour façonner la feuille de route du SDK.
Prochaines étapes¶
- Premiers pas - Installation et guide de votre première stratégie
- Référence CLI - Toutes les commandes CLI
- Référence API - Documentation complète de l'API Python
- Passerelle - API gRPC de la passerelle