Philidor Docs
Risk Framework

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

CategoryExamplesPrimary failure mode
nativeETH, WETHChain halt / liveness failure
fiat_backed_stablecoinUSDC, USDT, PYUSDIssuer insolvency, reserve shortfall
cdp_stablecoinDAI, USDS, LUSD, GHOCollateral cascade, governance attack
synthetic_stablecoinUSDe, USD0, eUSDBasis unwind, funding inversion
lstwstETH, cbETH, rETHSlashing and withdrawal risk
lrtweETH, ezETH, rsETHAVS/slashing aggregation risk
wrapped_btcWBTC, cbBTC, tBTCBridge/custodian failure
governance_tokenLINK, UNI, ARBVolatility and liquidity shock
unreviewedAny unclassified assetUnknown / insufficient assessment

2) Dimension-Based Scoring

The weighted formula depends on category. Core dimensions include:

  • peg_stability
  • issuer_custody
  • redeemability
  • reserve_transparency
  • governance_controls
  • protocol_security
  • operator_quality
  • bridge_mechanism
  • dependency_depth
  • liquidity
  • volatility

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.0
  • provisional → 9.0
  • unreviewed → 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.0
  • active_depeg → cap 1.0 (7-day cooldown)
  • redemption_paused → cap 2.0 (3-day cooldown)
  • single_signer_upgrade → cap 3.0
  • endogenous_collateral_high → cap 4.0 (14-day cooldown)
  • proof_of_reserve_missing → cap 4.0 (30-day cooldown)
  • unaudited_token_contract → cap 4.0
  • no_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.

On this page

Raw