💰 TASAS DE INTERÉS Y LIQUIDACIONES en DeFi

El modelo de utilización de Compound/Aave y la mecánica de liquidaciones automáticas

Semanas 7-8: Lending Protocol Avanzado
Utilization RateJump Rate ModelLiquidation BonusClose Factor
💰 La tasa de interés como precio del dinero: Cuando el 80% del pool USDC está prestado (alta utilización), el interés sube automáticamente para incentivar más depósitos y desincentivar nuevos préstamos. Cuando solo el 20% está prestado, el interés es bajo. Este mecanismo de mercado se llama Jump Rate Model ” hay un "kink" (quiebre) en la curva donde la tasa sube agresivamente. Las liquidaciones son el seguro del sistema: si tu colateral cae demasiado, cualquiera puede liquidarte y ganar un bonus del 5-10%.
📚 Refs: Compound V2 Whitepaper (Robert Leshner, 2019) · Aave V3 Interest Rate Strategy · "Understanding DeFi Liquidations"
Tasas de Interés
Liquidaciones
Código

Jump Rate Model ” Curva de Interés

60%
80%
0%
5%
100%
Borrow APR
Supply APY
Spread
Eje X: Utilización · Eje Y: APR · La línea roja marca el kink

Simulador de Liquidaciones

$2000
5 ETH
$7000
8%
50%
0.88
Health Factor
¿Liquidable?
$3,500
Max repay
Cola de liquidaciones activas:

Jump Rate Model ” Solidity

contract JumpRateModel {
  uint256 public immutable baseRatePerYear;
  uint256 public immutable multiplierPerYear;
  uint256 public immutable jumpMultiplierPerYear;
  uint256 public immutable kink;

  function getBorrowRate(uint256 utilization)
    public view returns (uint256 rate) {
    if (utilization <= kink) {
      // Zona normal: tasa baja y lineal
      rate = baseRatePerYear + multiplierPerYear
          * utilization / 1e18;
    } else {
      // Zona de estrés: tasa sube agresivamente
      uint256 normalRate = baseRatePerYear
        + multiplierPerYear * kink / 1e18;
      uint256 excessUtil = utilization - kink;
      rate = normalRate + jumpMultiplierPerYear
          * excessUtil / 1e18;
    }
  }

  function liquidate(
    address borrower,
    uint256 repayAmount
  ) external {
    require(healthFactor(borrower) < 1e18, "Healthy");
    // Close factor: máximo 50% de la deuda por liquidación
    uint256 maxRepay = debts[borrower] * CLOSE_FACTOR / 100;
    require(repayAmount <= maxRepay);
    // Liquidator paga la deuda y recibe colateral + bonus
    uint256 collateralToSeize = repayAmount
      * (100 + LIQUIDATION_BONUS) / 100
      / ethPrice;
    collateral[borrower] -= collateralToSeize;
    collateral[msg.sender] += collateralToSeize;
    debts[borrower] -= repayAmount;
    USDC.transferFrom(msg.sender, address(this), repayAmount);
  }
}
💰 Ajusta la utilización para ver cómo cambia la tasa de interés. Luego simula una liquidación bajando el precio de ETH.