Skip to main content

getActiveAggressiveOppsRisk

Get active aggressive/degen opportunities (status = "live") with risk and utilization data.

Signature

getActiveAggressiveOppsRisk(chainId?: number): Promise<AggressiveOpportunityRisk[]>

Parameters

ParameterTypeRequiredDescription
chainIdnumberOptional chain ID filter (Base, Arbitrum, Plasma, Sonic)

Returns

List of active aggressive opportunities with risk metrics and utilization data.

Return Type

interface AggressiveOpportunityRisk {
poolName: string; // Name of the lending pool
protocolName: string; // Protocol name (e.g., Morpho, Euler, Harvest)
chainId: number; // Blockchain ID where the pool is deployed
liquidityDepth: string; // Liquidity tier: "deep" (>$10M), "moderate" ($1M-$10M), "shallow" (<$1M)
utilizationRate: number; // Percentage of TVL being utilized (0-100)
tvlStability: boolean | null; // Whether TVL has been stable over the measurement period
apyStability: boolean | null; // Whether APY has been stable over 30 days
tvlApyCombinedRisk: boolean | null; // Combined stability risk indicator (true = stable)
avgCombinedApy7d: number | null; // Average combined APY over 7 days
avgCombinedApy15d: number | null; // Average combined APY over 15 days
avgCombinedApy30d: number | null; // Average combined APY over 30 days
collateralSymbols: string[]; // Array of accepted collateral token symbols
}

Field Descriptions

  • poolName: The name of the lending pool or vault
  • protocolName: The DeFi protocol hosting the pool (e.g., Morpho, Euler, Harvest, Wasabi)
  • chainId: The blockchain network ID (8453 = Base, 42161 = Arbitrum, 9745 = Plasma, 146 = Sonic)
  • liquidityDepth: Categorical liquidity assessment
    • "deep": Pool has >$10M available liquidity (low slippage risk)
    • "moderate": Pool has $1M-$10M liquidity (moderate slippage risk)
    • "shallow": Pool has <$1M liquidity (high slippage risk for large deposits)
  • utilizationRate: Percentage of total value locked (TVL) currently being borrowed/utilized. High utilization (>90%) may limit withdrawal capacity.
  • tvlStability: Boolean flag indicating whether the pool's TVL has remained stable. Unstable TVL may indicate risk events or liquidity migration.
  • apyStability: Boolean flag indicating whether APY has been stable over the past 30 days. Volatile APY is common in aggressive strategies with incentive programs.
  • tvlApyCombinedRisk: Combined risk indicator considering both TVL and APY stability. False indicates higher risk profile.
  • avgCombinedApy7d: Rolling 7-day average of combined APY (base yield + incentives + rewards)
  • avgCombinedApy15d: Rolling 15-day average of combined APY
  • avgCombinedApy30d: Rolling 30-day average of combined APY. Compare with 7d to identify yield trends.
  • collateralSymbols: List of token symbols accepted as collateral. Exotic collateral may indicate higher risk.

Example

// Get all aggressive opportunities on Arbitrum
const arbOpps = await sdk.getActiveAggressiveOppsRisk(42161);

arbOpps.forEach((opp) => {
console.log(`Pool: ${opp.poolName} on ${opp.protocolName}`);
console.log(` Liquidity Depth: ${opp.liquidityDepth}`);
console.log(` Utilization: ${opp.utilizationRate}%`);
console.log(` 7d APY: ${opp.avgCombinedApy7d?.toFixed(2)}%`);
console.log(` 30d APY: ${opp.avgCombinedApy30d?.toFixed(2)}%`);

// Check risk flags
const riskFlags = [];
if (!opp.tvlStability) riskFlags.push("Unstable TVL");
if (!opp.apyStability) riskFlags.push("Volatile APY");
if (opp.liquidityDepth === "shallow") riskFlags.push("Low liquidity");
if (opp.utilizationRate > 90) riskFlags.push("High utilization");

if (riskFlags.length > 0) {
console.log(` ⚠️ Risk Flags: ${riskFlags.join(", ")}`);
}
});

// Get aggressive opportunities across all chains
const allAggressiveOpps = await sdk.getActiveAggressiveOppsRisk();

Notes

  • Only returns opportunities with status = "live" (actively accepting deposits)
  • Aggressive strategies typically offer higher yields but come with increased risk
  • Utilization rate is calculated as: (tvl - liquidity) / tvl * 100
  • If chainId is not provided, returns opportunities from all supported chains
  • null values in stability fields indicate data is not available for that metric
  • Always assess multiple risk indicators together rather than relying on a single metric