Skip to main content

getAggressivePoolStatus

Get aggressive pool status with derived health, risk level, APY trend, and yield consistency indicators.

Signature

getAggressivePoolStatus(chainId?: number): Promise<PoolStatus[]>

Parameters

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

Returns

List of aggressive/degen pools with computed status indicators for quick assessment.

Return Type

interface PoolStatus {
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
healthScore: string; // Overall health: "healthy", "moderate", "risky"
riskLevel: string; // Risk assessment: "low", "medium", "high"
apyTrend: string; // Yield direction: "rising", "falling", "stable"
yieldConsistency: string; // Yield volatility: "consistent", "mixed", "volatile"
liquidityDepth: string; // Liquidity tier: "deep", "moderate", "shallow"
avgCombinedApy7d: number | null; // Average combined APY over 7 days
}

Field Descriptions

  • poolName: The name of the lending pool or vault
  • protocolName: The DeFi protocol hosting the pool (typically newer or higher-risk protocols)
  • chainId: The blockchain network ID (8453 = Base, 42161 = Arbitrum, 9745 = Plasma, 146 = Sonic)
  • healthScore: Aggregate health indicator based on stability metrics and liquidity
    • "healthy": All or most stability indicators are positive, good liquidity depth
    • "moderate": Mixed stability indicators or moderate liquidity (common in aggressive strategies)
    • "risky": Multiple negative stability indicators or shallow liquidity
    • Calculation: Combines tvlStability + apyStability + tvlApyCombinedRisk + liquidityDepth bonus. Score ≥3 = healthy, ≥1.5 = moderate, <1.5 = risky
    • Note: Aggressive pools may naturally have "moderate" or "risky" health scores due to higher volatility
  • riskLevel: Count of negative risk signals
    • "low": 0 risk signals (rare in aggressive strategies)
    • "medium": 1-2 risk signals present (common in aggressive pools)
    • "high": 3+ risk signals detected (proceed with caution)
    • Risk signals include: Unstable TVL, unstable APY, unstable combined risk, shallow liquidity, >90% utilization
    • Note: "Medium" risk in aggressive pools is typical and may still be acceptable for yield-seeking users
  • apyTrend: Direction of yield movement over time
    • "rising": 7-day APY is >10% higher than 30-day APY (momentum building, possible new incentives)
    • "falling": 7-day APY is >10% lower than 30-day APY (incentives ending, demand decreasing)
    • "stable": APY change between 7d and 30d is within ±10%
    • Use case: Rising trends may indicate good entry points; falling trends may signal time to exit
  • yieldConsistency: Volatility assessment of yield over time
    • "consistent": Spread between 7d and 30d APY is ≤10% (rare in aggressive strategies)
    • "mixed": Spread between 7d and 30d APY is 10-30% (typical for aggressive pools)
    • "volatile": Spread between 7d and 30d APY is >30% (high variability, common with incentive programs)
    • Note: Aggressive pools often have "mixed" or "volatile" consistency due to changing incentive structures
  • liquidityDepth: Liquidity tier - "deep" (>$10M), "moderate" ($1M-$10M), "shallow" (<$1M)
    • Shallow liquidity in aggressive pools increases slippage risk for large deposits
  • avgCombinedApy7d: Current 7-day average yield (typically higher than conservative pools)

Example

// Get aggressive pool status for Arbitrum
const arbAggressiveStatus = await sdk.getAggressivePoolStatus(42161);

// Sort by APY to find highest yields
const sortedByApy = arbAggressiveStatus
.filter((pool) => pool.avgCombinedApy7d !== null)
.sort((a, b) => (b.avgCombinedApy7d || 0) - (a.avgCombinedApy7d || 0));

console.log("Top Aggressive Pools by APY on Arbitrum:");
sortedByApy.slice(0, 5).forEach((pool) => {
console.log(`\n${pool.poolName} (${pool.protocolName})`);
console.log(` APY: ${pool.avgCombinedApy7d?.toFixed(2)}% | Trend: ${pool.apyTrend}`);
console.log(` Health: ${pool.healthScore} | Risk: ${pool.riskLevel}`);
console.log(` Liquidity: ${pool.liquidityDepth} | Consistency: ${pool.yieldConsistency}`);
});

// Find aggressive pools with rising yields and acceptable risk
const risingOpportunities = arbAggressiveStatus.filter(
(pool) =>
pool.apyTrend === "rising" &&
pool.riskLevel !== "high" &&
pool.liquidityDepth !== "shallow"
);

console.log(`\nFound ${risingOpportunities.length} rising opportunities with manageable risk`);

// Get all aggressive pool status across chains
const allAggressiveStatus = await sdk.getAggressivePoolStatus();

// Risk distribution analysis
const riskDistribution = {
low: allAggressiveStatus.filter(p => p.riskLevel === "low").length,
medium: allAggressiveStatus.filter(p => p.riskLevel === "medium").length,
high: allAggressiveStatus.filter(p => p.riskLevel === "high").length,
};

console.log("\nRisk Distribution:", riskDistribution);

Notes

  • This method internally calls getActiveAggressiveOppsRisk() and derives status indicators
  • Aggressive pools typically have higher APYs but also higher risk profiles compared to conservative pools
  • "Medium" risk and "moderate" health scores are common and may still be acceptable depending on risk tolerance
  • Always consider liquidity depth for position sizing - shallow liquidity limits withdrawal capacity
  • Volatile yield consistency is expected in aggressive strategies with changing incentive programs
  • Compare apyTrend across multiple pools to identify the best entry timing
  • High utilization (>90%) in aggressive pools may indicate withdrawal delays during market stress