getActiveAggressiveOppsRisk
Get active aggressive/degen opportunities (status = "live") with risk and utilization data.
Signature
getActiveAggressiveOppsRisk(chainId?: number): Promise<AggressiveOpportunityRisk[]>
Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
| chainId | number | ❌ | Optional 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
chainIdis not provided, returns opportunities from all supported chains nullvalues in stability fields indicate data is not available for that metric- Always assess multiple risk indicators together rather than relying on a single metric