# Une phrase, quatorze étapes, trois réseaux

> Le facteur de santé qu’il doit tenir, les frais à chaque étape, les endroits où il peut casser, et les trois choses qui le compliquent.

- Source: https://defiloops.com/fr/blog/a-loop-that-buys-and-borrows
- Published: 2026-05-19
- Category: Strategy
- Tags: worked-example, lending, bridging, rwa
- Author: DeFiLoops

---
La plupart des textes de stratégie vous montrent l’idée et sautent l’exécution. L’argent part dans l’exécution : celui-ci fait donc
l’inverse. L’idée tient en deux paragraphes et le reste est ce qui doit réellement se produire.

## L’idée

Vous détenez 1 000 $ en USDC sur Base. Vous voulez une exposition au cbBTC, vous ne voulez pas la vendre pour lever du cash, et vous
voulez un actif du monde réel à rendement qui rembourse l’emprunt, de sorte que la position se finance elle-même.

En une phrase :

<Quote>
  Prends 1 000 $, convertis la moitié en cbBTC, dépose-les, emprunte 500 $, fais-les passer, achète le RWA, et que son rendement
  rembourse le prêt chaque mois.
</Quote>

Quatre protocoles, trois réseaux et une planification mensuelle. À la main, cela représente environ vingt minutes et huit signatures
par mois, tous les mois, pour toujours — ce qui est la vraie raison pour laquelle les gens arrêtent d’exécuter des stratégies comme
celle-ci, et non le fait que la stratégie soit mauvaise.

## Le plan compilé

<StepBoard title="Quatorze étapes, trois réseaux, armé indéfiniment" repeats="chaque mois" steps={[
  { op: 'deposit.pull',      name: 'pull-1000',     detail: '1 000 USDC depuis le portefeuille', chain: 'base',     pill: '1 call' },
  { op: 'swap.router',    name: 'swap-cbbtc',    detail: '500 USDC → cbBTC',                  chain: 'base',     pill: '2 calls', brk: true },
  { op: 'lend.supply',    name: 'supply-cbbtc',  detail: '← sortie de l’étape liée',          chain: 'base',     pill: '2 calls', brk: true },
  { op: 'lend.borrow',    name: 'borrow-500',    detail: '500 USDC · HF 1,56',                chain: 'base',     pill: '2 calls', brk: true },
  { op: 'bridge.cctp',    name: 'bridge-to-arb', detail: '500 USDC · CCTP',                   chain: 'base→arb', pill: 'off-chain', brk: true },
  { op: 'swap.router',    name: 'swap-route',    detail: '← sortie de l’étape liée',          chain: 'arbitrum', pill: '2 calls', brk: true },
  { op: 'bridge.cctp',  name: 'bridge-to-eth', detail: '500 USDC · CCTP',                 chain: 'arb→eth',  pill: 'off-chain', brk: true },
  { op: 'swap.router',    name: 'swap-usdc',     detail: '← sortie de l’étape liée',          chain: 'ethereum', pill: '2 calls', brk: true },
  { op: 'bridge.cctp',    name: 'bridge-back',   detail: '499,50 · 0,50 $ de frais',          chain: 'eth→base', pill: 'off-chain', brk: true },
  { op: 'property.buy',        name: 'buy-rwa-49',    detail: '49 unités à 10,10 $',               chain: 'base',     pill: '2 calls', brk: true },
  { op: 'rent.claim_own',      name: 'claim-yield',   detail: 'rendement mensuel',                 chain: 'base',     pill: '1 call' },
  { op: 'rent.redeem',     name: 'redeem-usdc',   detail: '← sortie de l’étape liée',          chain: 'base',     pill: '2 calls' },
  { op: 'lend.repay',     name: 'repay-500',     detail: '500 USDC · Aave v3',                chain: 'base',     pill: '2 calls' },
  { op: 'transfer.erc20', name: 'send-rest',     detail: 'le reste vers le portefeuille',     chain: 'base',     pill: '1 call' },
]} />

<StatRow>
  <Stat value="14" label="étapes" />
  <Stat value="3" label="réseaux" />
  <Stat value="1,56" label="health factor" accent />
  <Stat value="1" label="signature" note="Un seul message couvre tout le plan." />
</StatRow>

## Comment le lire

Trois choses sur ce tableau méritent qu’on s’y arrête.

### Les lignes pointillées sont des frontières de transaction

Les étapes 2→3 et 3→4 sont pointillées. C’est le moteur qui dit qu’un montant à l’exécution ne peut pas être porté au-delà de ce point :
une nouvelle transaction commence donc. Ce n’est pas un avertissement. C’est la forme du plan, énoncée avant votre approbation plutôt que
découverte quand quelque chose échoue.

### « ← sortie de l’étape liée » n’est pas un espace réservé

L’étape 3 dépose *ce que l’étape 2 a réellement reçu* — le remplissage réel après slippage, pas les 500 USDC que le plan espérait. Si
l’échange se remplit à un moins bon prix, le dépôt est plus petit et l’emprunt est dimensionné contre le collatéral plus petit. Le health
factor tient.

<Callout type="warn" title="Tous les paramètres ne lisent pas le bus">
  Voici un bord tranchant. Sur une étape d’apport de liquidité, `amount0` peut être alimenté par une étape antérieure tandis que `amount1`
  est un littéral. Un plan qui échange vers token1 en attendant que les deux jambes se dimensionnent seules se retrouvera court d’un côté.
  Vérifiez quels paramètres sont alimentés à l’exécution avant de compter dessus.
</Callout>

### Les passerelles sont la partie chère

Les étapes 5, 7 et 9 franchissent des réseaux. Chacune est hors chaîne — la valeur part, du temps passe, la valeur arrive. Ce sont les
étapes les plus lentes, celles qui ont de vrais frais, et celles qu’un montant à l’exécution ne peut pas franchir.

<Callout type="danger" title="Seul l’USDC passe">
  La passerelle du catalogue est CCTP, et CCTP ne fait que de l’USDC. Dimensionner une étape de passerelle à partir d’un échange qui a
  produit du WETH est refusé à la validation — ce qui est le bon résultat, mais cela surprend, parce que la phrase ne disait rien sur l’USDC.
</Callout>

## Les chiffres

<Spec title="Où va l’argent" rows={[
  ['Slippage d’échange', '~0,05–0,3 % sur 500 USDC via un routeur d’agrégation'],
  ['Frais CCTP', '0,50 $ par passage, fixes — visibles comme 499,50 à l’étape 9'],
  ['Gas', 'Parrainé par le relayer, remboursé depuis le plan en USDC'],
  ['Taux d’emprunt', 'Variable Aave v3, flottant — le plus gros coût incertain'],
  ['Entrée RWA', '49 unités à 10,10 $, depuis un budget de 500 $ avec arrondi'],
]} />

Notez ce qui **n’est pas** un coût : vous ne faites jamais passer de gas vers Arbitrum ni vers Ethereum. Le relayer parraine ces appels et
se fait rembourser dans l’actif que le plan détient déjà. Pour un plan sur trois réseaux, c’est la différence entre une signature et environ six.

## Le même plan, à trois tailles

Le nombre d'étapes ne change pas avec la taille, mais ce qui vaut la peine d'être fait, si.
Les frais de passage sont forfaitaires : ils dominent un petit plan et disparaissent dans un
grand.

| Taille du plan | Frais CCTP | Part en frais | Étapes | Vaut-il d'automatiser |
| --- | --- | --- | --- | --- |
| 1 000 $ | 1,50 $ | 0,15 % | 14 | Limite — les frais mangent un mois de rendement |
| 10 000 $ | 1,50 $ | 0,015 % | 14 | Oui |
| 100 000 $ | 1,50 $ | 0,0015 % | 14 | Oui, et le slippage compte désormais plus que les frais |

Au-delà d'environ 10 000 $, les coûts fixes cessent d'être ce qu'il faut optimiser et cèdent
la place à l'exécution de l'échange — ce qui est une autre forme de plan, où l'ordre est
réparti entre plusieurs marchés plutôt que passé par un seul.

## Ce qui peut mal tourner

<Steps>
  <Step title="L’échange se remplit mal">
    Le dépôt et l’emprunt se réduisent avec lui. Le health factor est préservé parce que l’emprunt est calculé à partir du collatéral réel et
    non du collatéral prévu.
  </Step>
  <Step title="Le cbBTC baisse">
    Le health factor descend. À 1,56 il y a une marge significative, mais c’est une position à levier et elle peut être liquidée. Le plan ne la
    défend pas — il faudrait une règle distincte, et vous devriez demander ce que coûte la protection avant de supposer qu’elle en vaut la peine.
  </Step>
  <Step title="Le rendement du RWA ne suffit pas">
    L’étape 13 rembourse ce que l’étape 12 a converti. Un mois faible laisse une dette en cours, et c’est très bien : elle court, et l’exécution
    suivante rembourse davantage. Rien ne casse.
  </Step>
  <Step title="Une étape échoue">
    Le plan s’arrête là et rapporte l’état dans lequel il s’est arrêté. Les étapes 11 à 14 ne s’exécutent tout simplement pas. La prochaine
    exécution planifiée relit vos soldes plutôt que de les supposer.
  </Step>
</Steps>

<Callout type="note" title="Demandez avant de vous engager">
  Avant d’exécuter ceci, les outils en lecture seule le valoriseront : ce que la plage aurait collecté sur l’historique réel, ce que l’emprunt a
  coûté à chaque taux depuis 2021, à quoi ont ressemblé les liquidations à ce health factor. Rien de cela ne signe quoi que ce soit, et c’est la
  moitié du produit que l’on sous-utilise le plus.
</Callout>

## Rembourser en parts, pas en montant

Un détail d’implémentation qui se généralise bien au-delà de ce plan.

L’étape 13 rembourse 500 USDC. Si vous remboursez plutôt *la position*, remboursez en parts et non en montant fixe — un montant fixe laisse une
dette résiduelle à mesure que les intérêts courent entre le calcul et l’exécution, et une dette résiduelle bloque le retrait que vous essayiez
de faire.

<Compare left="Rembourser 500 USDC" right="Rembourser tout le solde de parts" verdict>
  <Fragment slot="left">
    Les intérêts courent entre la lecture et la transaction. Quelques wei de dette survivent. Le retrait qui suit échoue et la raison n’est pas
    évidente.
  </Fragment>
  <Fragment slot="right">
    La position se ferme proprement quels que soient les intérêts accumulés entre-temps.
  </Fragment>
</Compare>

La même forme apparaît avec les aTokens : retirer exactement ce que vous avez déposé peut échouer d’un wei, parce que le jeton arrondit vers le
bas. Les opérations sur position entière doivent s’exprimer comme des opérations sur position entière.

## Cela valait-il la peine d’être automatisé ?

Vingt minutes et huit signatures par mois, ce n’est pas beaucoup de travail. La raison d’automatiser n’est pas les vingt minutes — c’est qu’une
stratégie que vous exécutez à la main est une stratégie que vous exécutez quand vous y pensez, à un prix que vous n’avez pas choisi, et que vous
cessez d’exécuter le mois où vous êtes occupé.

Le plan ci-dessus s’exécute le premier du mois que vous y prêtiez attention ou non, sous une forme que vous avez approuvée une fois, et il
s’arrête proprement si quelque chose ne va pas.