Loading...
Loading...
This skill should be used when the user asks about "health factor", "liquidation risk", "aave risk", "will I be liquidated", "safe to borrow", "my account health", "collateral risk", "liquidation price", or wants to assess the risk of their AAVE V3 position. Calculates health factor, LTV ratios, liquidation thresholds, and provides risk level assessments for positions on Ethereum and Arbitrum.
npx skill4agent add intenxus/aave-ai aave-risk-assessorRuntime Compatibility: This skill usesfor interactive prompts. IfAskUserQuestionis not available in your runtime, collect the same parameters through natural language conversation instead.AskUserQuestion
HF = (Σ Collateral_i × LiquidationThreshold_i) / TotalDebt| Health Factor | Risk Level | Description | Recommended Action |
|---|---|---|---|
| > 2.0 | Safe | Position is well-collateralized | Normal operation |
| 1.5 - 2.0 | Moderate | Position is healthy but monitor | Continue monitoring |
| 1.2 - 1.5 | High | Position is at risk | Consider adding collateral or repaying debt |
| 1.0 - 1.2 | Critical | Position is near liquidation | Urgent: Add collateral or repay immediately |
| < 1.0 | Liquidation | Position can be liquidated | Position is being or will be liquidated |
function getRiskLevel(healthFactor: number): RiskLevel {
if (healthFactor > 2.0) return 'safe';
if (healthFactor >= 1.5) return 'moderate';
if (healthFactor >= 1.2) return 'high';
if (healthFactor >= 1.0) return 'critical';
return 'liquidation';
}
type RiskLevel = 'safe' | 'moderate' | 'high' | 'critical' | 'liquidation';
const riskLevelMessages: Record<RiskLevel, string> = {
safe: 'Your position is well-collateralized.',
moderate: 'Your position is healthy, but continue monitoring.',
high: 'Your position is at risk. Consider adding collateral or repaying debt.',
critical: 'Warning: Your position is near liquidation! Add collateral or repay immediately.',
liquidation: 'Your position is eligible for liquidation.'
};interface RiskAssessment {
// Core metrics
healthFactor: string; // Current health factor (e.g., "1.85")
maxLTV: string; // Maximum LTV allowed (e.g., "0.80")
currentLTV: string; // Current LTV ratio (e.g., "0.45")
liquidationThreshold: string; // Liquidation threshold (e.g., "0.825")
liquidationPenalty: string; // Liquidation penalty (e.g., "0.05")
// eMode status
eModeStatus: boolean; // Whether eMode is enabled
eModeCategory?: number; // eMode category ID if enabled
// Risk classification
riskLevel: 'safe' | 'moderate' | 'high' | 'critical' | 'liquidation';
// Additional metrics
totalCollateralUSD: string; // Total collateral value in USD
totalDebtUSD: string; // Total debt value in USD
availableBorrowsUSD: string; // Available borrowing power in USD
}^0x[a-fA-F0-9]{40}$import { createPublicClient, http, parseAbi } from 'viem';
import { mainnet, arbitrum } from 'viem/chains';
const POOL_ADDRESSES = {
1: '0x87870Bca3F3fD6335C3F4ce8392D69350B4fA4E2', // Ethereum
42161: '0x794a61358D6845594F94dc1DB02A252b5b4814aD' // Arbitrum
};
const poolAbi = parseAbi([
'function getUserAccountData(address user) view returns (uint256 totalCollateralBase, uint256 totalDebtBase, uint256 availableBorrowsBase, uint256 currentLiquidationThreshold, uint256 ltv, uint256 healthFactor)'
]);## AAVE Position Risk Assessment
### Risk Summary
| Metric | Value | Status |
|--------|-------|--------|
| Health Factor | {healthFactor} | {riskEmoji} {riskLevel} |
| Total Collateral | ${totalCollateralUSD} | - |
| Total Debt | ${totalDebtUSD} | - |
| Available to Borrow | ${availableBorrowsUSD} | - || Asset | LTV | Liquidation Threshold | Liquidation Penalty |
|---|---|---|---|
| USDC | 77% | 80% | 5% |
| USDT | 75% | 80% | 5% |
| DAI | 77% | 80% | 5% |
| WETH | 80% | 82.5% | 5% |
| WBTC | 73% | 78% | 7.5% |
| Asset | LTV | Liquidation Threshold | Liquidation Penalty |
|---|---|---|---|
| USDC | 80% | 85% | 5% |
| USDT | 75% | 80% | 5% |
| DAI | 75% | 80% | 5% |
| WETH | 80% | 82.5% | 5% |
| WBTC | 73% | 78% | 7.5% |
references/health-factor.mdreferences/risk-thresholds.md