Asset Composition (40%)
Asset methodology: category-specific dimensions, evidence-backed scoring, cap cascade, hard-fail controls, staleness penalties, and Aave lending market construction.
Asset quality is the irreducible risk floor. The asset model scores assets by category against explicit dimensions, then applies non-compensatory caps.
1) Category Taxonomy
| Category | Examples | Primary failure mode |
|---|---|---|
| native | ETH, WETH | Chain halt / liveness failure |
| fiat_backed_stablecoin | USDC, USDT, PYUSD | Issuer insolvency, reserve shortfall |
| cdp_stablecoin | DAI, USDS, LUSD, GHO | Collateral cascade, governance attack |
| synthetic_stablecoin | USDe, USD0, eUSD | Basis unwind, funding inversion |
| lst | wstETH, cbETH, rETH | Slashing and withdrawal risk |
| lrt | weETH, ezETH, rsETH | AVS/slashing aggregation risk |
| wrapped_btc | WBTC, cbBTC, tBTC | Bridge/custodian failure |
| governance_token | LINK, UNI, ARB | Volatility and liquidity shock |
| unreviewed | Any unclassified asset | Unknown / insufficient assessment |
2) Dimension-Based Scoring
The weighted formula depends on category. Core dimensions include:
peg_stabilityissuer_custodyredeemabilityreserve_transparencygovernance_controlsprotocol_securityoperator_qualitybridge_mechanismdependency_depthliquidityvolatility
Dimension weights are defined in the active methodology configuration.
3) Cap Cascade (Non-Compensatory)
Final asset score is the minimum of the weighted dimension score and all active caps.
final_asset_score = min(
weighted_dimension_score,
overlay_cap,
review_status_cap,
hard_fail_cap,
override_cap,
staleness_cap
)Review status caps
reviewed→ 10.0provisional→ 9.0unreviewed→ 8.0
For provisional or missing-evidence contexts, the default dimension fallback is conservative (2.5).
4) Overlays
yield_bearing: score constrained by wrapper/underlying dependency.lockup: liquidity dimension is down-weighted.
5) Hard-Fail Controls
Hard-fail flags apply strict caps regardless of weighted dimension quality. When a flag is active, the final asset score cannot exceed the listed cap, even if the rest of the evidence is strong.
All flags:
sanctions_exposure→ cap 0.0active_depeg→ cap 1.0 (7-day cooldown)redemption_paused→ cap 2.0 (3-day cooldown)single_signer_upgrade→ cap 3.0endogenous_collateral_high→ cap 4.0 (14-day cooldown)proof_of_reserve_missing→ cap 4.0 (30-day cooldown)unaudited_token_contract→ cap 4.0no_recent_attestation→ cap 5.0 (30-day cooldown)
Flags are event-sourced and may include trigger windows and cooldowns.
6) Staleness Penalties
Evidence freshness affects effective dimension values:
- stale (
now > fresh_until): value × 0.92 - expired (
now > fresh_until + 90d): value reduced to 75% of original with a minimum floor of 5.0 - if the stale/expired weighted share exceeds a threshold, a global staleness cap applies
7) Unresolved Address Fallback
If an adapter cannot resolve an exposure address, scoring falls back to strict unreviewed behavior:
- asset score constrained to a conservative low cap
- explainability includes a machine-readable unresolved-address reason
8) Portfolio-Level Adjustments
After per-exposure asset scoring, portfolio penalties are applied at the vault level:
- concentration penalty
- category correlation penalty
- wrong-way risk penalty
These adjustments prevent concentrated portfolios from appearing safer than diversified equivalents with similar average exposure quality. Single-asset vaults are exempt from concentration and correlation penalties.
9) Aave v3 Lending Markets (Deposit-Weighted Composite)
For single-sided lending markets on Aave v3, the asset vector is not the deposit asset alone. A depositor in an Aave pool is exposed principally to the token they supplied, and secondarily — via the shared liquidation engine — to the other active reserves in the same pool.
To reflect this, the Aave lending asset score is a 70/30 weighted composite:
asset_score_aave_lending
= 0.70 * score(deposit_asset)
+ 0.30 * weighted_mean(
score(other_active_reserves),
weight = reserve_share_of_pool,
filter = reserve_share >= 1%
)- Deposit asset (70%). The token the user directly holds a claim on.
- Pool reserves (30%). Other reserves in the same pool, weighted by their share of pool exposure, filtered to reserves making up at least 1% of the pool so that dust reserves do not distort the composite.
The 70/30 split reflects that institutional depositor risk in a single-sided Aave market is dominated by the deposited asset, with cross-collateral risk entering as a secondary factor that is materially mediated by liquidation bonuses, isolation mode, e-mode boundaries, and the Aave liquidation engine.
Dimension-level scoring, cap cascade, hard-fail flags, staleness handling, and the portfolio adjustments above all apply to both the deposit-asset component and the pool-reserve component before they are combined.