# Una frase, catorce pasos, tres redes

> El factor de salud que debe sostener, las comisiones de cada salto, los puntos donde puede fallar y las tres cosas que lo complican.

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

---
La mayoría de los textos sobre estrategias le enseñan la idea y se saltan la ejecución. El dinero se va en la ejecución, así
que este hace lo contrario: la idea ocupa dos párrafos y el resto es lo que tiene que ocurrir de verdad.

## La idea

Tiene 1.000 $ en USDC en Base. Quiere exposición a cbBTC, no quiere venderla para hacer caja, y quiere un activo del mundo real
con rendimiento que vaya amortizando el préstamo, de modo que la posición se financie sola.

En una frase:

<Quote>
  Coge 1.000 $, cambia la mitad a cbBTC, deposítalo, pide prestados 500 $, puentéalos, compra el RWA y que su rendimiento pague
  el préstamo cada mes.
</Quote>

Cuatro protocolos, tres redes y una programación mensual. A mano son aproximadamente veinte minutos y ocho firmas al mes, todos
los meses, para siempre, que es la razón real por la que la gente deja de ejecutar estrategias así, y no que la estrategia esté mal.

## El plan compilado

<StepBoard title="Catorce pasos, tres redes, armado indefinidamente" repeats="cada mes" steps={[
  { op: 'deposit.pull',      name: 'pull-1000',     detail: '1.000 USDC desde la cartera', 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: '← salida del paso enlazado',  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: '← salida del paso enlazado',  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: '← salida del paso enlazado',  chain: 'ethereum', pill: '2 calls', brk: true },
  { op: 'bridge.cctp',    name: 'bridge-back',   detail: '499,50 · 0,50 $ de comisión', chain: 'eth→base', pill: 'off-chain', brk: true },
  { op: 'property.buy',        name: 'buy-rwa-49',    detail: '49 unidades a 10,10 $',       chain: 'base',     pill: '2 calls', brk: true },
  { op: 'rent.claim_own',      name: 'claim-yield',   detail: 'rendimiento mensual',         chain: 'base',     pill: '1 call' },
  { op: 'rent.redeem',     name: 'redeem-usdc',   detail: '← salida del paso enlazado',  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: 'el resto a la cartera',       chain: 'base',     pill: '1 call' },
]} />

<StatRow>
  <Stat value="14" label="pasos" />
  <Stat value="3" label="redes" />
  <Stat value="1,56" label="health factor" accent />
  <Stat value="1" label="firma" note="Un mensaje cubre el plan entero." />
</StatRow>

## Cómo leerlo

Hay tres cosas en ese tablero en las que merece detenerse.

### Las líneas punteadas son fronteras de transacción

Los pasos 2→3 y 3→4 están punteados. Eso es el motor diciendo que un importe en ejecución no puede llevarse más allá de ese punto,
así que empieza una transacción nueva. No es una advertencia. Es la forma del plan, dicha antes de que usted apruebe en lugar de
descubierta cuando algo revierte.

### «← salida del paso enlazado» no es un marcador de posición

El paso 3 deposita *lo que el paso 2 recibió realmente*: el llenado real tras el deslizamiento, no los 500 USDC que el plan esperaba.
Si el intercambio se llena a peor precio, el depósito es menor y el préstamo se dimensiona contra el colateral menor. El health factor
se mantiene.

<Callout type="warn" title="No todos los parámetros leen el bus">
  Este es un filo afilado. En un paso de aportación de liquidez, `amount0` puede alimentarse de un paso anterior mientras que `amount1`
  es un literal. Un plan que intercambie hacia token1 y espere que ambas patas se dimensionen solas se quedará corto en una. Compruebe
  qué parámetros se alimentan en ejecución antes de confiar en ello.
</Callout>

### Los puentes son la parte cara

Los pasos 5, 7 y 9 cruzan redes. Cada uno es fuera de cadena: el valor sale, pasa el tiempo, el valor llega. Son los pasos más lentos,
los que tienen comisiones reales, y aquellos que un importe en ejecución no puede cruzar.

<Callout type="danger" title="Solo se puentea USDC">
  El puente del catálogo es CCTP, y CCTP es solo USDC. Dimensionar un paso de puente a partir de un intercambio que produjo WETH se
  rechaza en la validación, que es el resultado correcto, pero sorprende, porque la frase no decía nada sobre USDC.
</Callout>

## Las cifras

<Spec title="A dónde va el dinero" rows={[
  ['Deslizamiento del intercambio', '~0,05–0,3 % sobre 500 USDC a través de un router de agregación'],
  ['Comisión de CCTP', '0,50 $ por cruce, fija — visible como 499,50 en el paso 9'],
  ['Gas', 'Patrocinado por el relayer, reembolsado desde el plan en USDC'],
  ['Tipo de préstamo', 'Variable de Aave v3, flotante — el mayor coste incierto'],
  ['Entrada al RWA', '49 unidades a 10,10 $, desde un presupuesto de 500 $ con redondeo'],
]} />

Fíjese en lo que **no** es un coste: nunca puentea gas a Arbitrum ni a Ethereum. El relayer patrocina esas llamadas y se le reembolsa
en el activo que el plan ya tiene. Para un plan en tres redes, esa es la diferencia entre una firma y unas seis.

## El mismo plan, en tres tamaños

El número de pasos no cambia con el tamaño, pero sí lo que merece la pena hacer. Las
comisiones del puente son fijas: dominan un plan pequeño y desaparecen en uno grande.

| Tamaño del plan | Comisiones CCTP | % en comisiones | Pasos | ¿Merece automatizarlo? |
| --- | --- | --- | --- | --- |
| 1.000 $ | 1,50 $ | 0,15 % | 14 | Justo — las comisiones se comen un mes de rendimiento |
| 10.000 $ | 1,50 $ | 0,015 % | 14 | Sí |
| 100.000 $ | 1,50 $ | 0,0015 % | 14 | Sí, y ahora el slippage importa más que las comisiones |

A partir de unos 10.000 $ los costes fijos dejan de ser lo que hay que optimizar y pasa a
serlo la ejecución del intercambio — que es otra forma de plan, con la operación repartida
entre varios mercados en lugar de enrutada por uno solo.

## Qué puede salir mal

<Steps>
  <Step title="El intercambio se llena mal">
    El depósito y el préstamo se reducen con él. El health factor se preserva porque el préstamo se calcula desde el colateral real y
    no desde el previsto.
  </Step>
  <Step title="cbBTC cae">
    El health factor baja. En 1,56 hay margen significativo, pero esta es una posición apalancada y puede liquidarse. El plan no la
    defiende: haría falta una regla aparte, y debería preguntar cuánto cuesta la protección antes de dar por hecho que compensa.
  </Step>
  <Step title="El rendimiento del RWA no llega">
    El paso 13 devuelve lo que el paso 12 convirtió. Un mes flojo deja deuda pendiente, y eso está bien: se acumula, y la ejecución
    siguiente devuelve más. Nada se rompe.
  </Step>
  <Step title="Un paso revierte">
    El plan se detiene ahí e informa del estado en que paró. Los pasos 11–14 simplemente no se ejecutan. La siguiente ejecución
    programada lee sus saldos de nuevo en lugar de suponerlos.
  </Step>
</Steps>

<Callout type="note" title="Pregunte antes de comprometerse">
  Antes de ejecutar esto, las herramientas de solo lectura lo valorarán: qué habría recolectado el rango sobre el historial real, cuánto
  ha costado el préstamo a cada tipo desde 2021, qué aspecto han tenido las liquidaciones a este health factor. Nada de eso firma nada, y
  es la mitad del producto que más se desaprovecha.
</Callout>

## Devolver por participaciones, no por importe

Un detalle de implementación que se generaliza mucho más allá de este plan.

El paso 13 devuelve 500 USDC. Si en cambio devuelve *la posición*, devuelva por participaciones y no por un importe fijo: un importe
fijo deja deuda residual conforme el interés se acumula entre la lectura y la ejecución, y la deuda residual bloquea la retirada que
intentaba hacer.

<Compare left="Devolver 500 USDC" right="Devolver el saldo completo de participaciones" verdict>
  <Fragment slot="left">
    El interés se acumula entre la lectura y la transacción. Sobreviven unos pocos wei de deuda. La retirada posterior revierte y el
    motivo no es evidente.
  </Fragment>
  <Fragment slot="right">
    La posición se cierra limpiamente sin importar cuánto interés se acumulara entre medias.
  </Fragment>
</Compare>

La misma forma aparece con los aTokens: retirar exactamente lo que depositó puede revertir por un wei, porque el token redondea a la baja.
Las operaciones de posición completa deben expresarse como operaciones de posición completa.

## ¿Merecía la pena automatizarlo?

Veinte minutos y ocho firmas al mes no es mucho trabajo. La razón para automatizarlo no son los veinte minutos: es que una estrategia que
ejecuta a mano es una estrategia que ejecuta cuando se acuerda, a un precio que no eligió, y que deja de ejecutar el mes que está ocupado.

El plan de arriba se ejecuta el día uno del mes esté usted atento o no, con una forma que aprobó una vez, y se detiene limpiamente si algo
va mal.