← Back to all products
$15
Risk Premium Engine
Dynamic premium pricing based on protocol TVL, historical incidents, and market volatility.
TOMLPythonMarkdown
📁 File Structure 12 files
risk-premium-engine/
├── LICENSE
├── README.md
├── examples/
│ └── basic_usage.py
├── pyproject.toml
├── security-notes.md
├── src/
│ ├── __init__.py
│ ├── config.py
│ ├── engine.py
│ ├── formatters.py
│ ├── models.py
│ └── scoring.py
└── tests/
└── test_engine.py
📖 Documentation Preview README excerpt
Risk Premium Engine
Pricing engine for DeFi coverage: smart contract, depeg, oracle, bridge, governance, and liquidation risk.
Features
- Multi-type Coverage: 6 coverage types with distinct risk profiles
- Risk Scoring: Weighted multi-factor risk assessment (TVL, audits, maturity, etc.)
- Utilization Surge: Dynamic premium increases at high pool utilization
- Duration Discounts: Loyalty discounts for longer coverage periods
- Batch Quoting: Price multiple policies in a single call
- Configurable: All parameters adjustable via EngineConfig
Quick Start
from src.engine import PremiumEngine
from src.models import ProtocolMetrics, CoverageType
engine = PremiumEngine()
metrics = ProtocolMetrics(
protocol_name="Aave v3",
tvl_usd=5_000_000_000.0,
audit_count=3,
days_since_launch=730,
)
quote = engine.quote(
protocol_metrics=metrics,
coverage_type=CoverageType.SMART_CONTRACT,
coverage_amount_usd=100_000.0,
duration_days=30,
)
print(f"Premium: ${quote.premium_usd:.2f}")
Run Tests
pytest tests/ -v
License
MIT
📄 Code Sample .py preview
src/config.py
"""
Risk Premium Engine — Configuration
═════════════════════════════════════
Configurable parameters for the pricing engine.
"""
from __future__ import annotations
from dataclasses import dataclass, field
from typing import Dict, Tuple
@dataclass
class EngineConfig:
"""Configuration for the premium pricing engine."""
# ── Base Rates (annualized BPS per coverage type) ──────────────────
base_rates: Dict[str, Dict[str, int]] = field(default_factory=lambda: {
"smart_contract": {"low": 150, "medium": 400, "high": 900, "critical": 2000},
"stablecoin_depeg": {"low": 100, "medium": 300, "high": 700, "critical": 1500},
"oracle_failure": {"low": 200, "medium": 500, "high": 1000, "critical": 2500},
"bridge_exploit": {"low": 300, "medium": 600, "high": 1200, "critical": 3000},
"governance_attack": {"low": 100, "medium": 350, "high": 800, "critical": 1800},
"liquidation_failure": {"low": 150, "medium": 400, "high": 850, "critical": 2000},
})
# ── Utilization Surge Thresholds ───────────────────────────────────
# (threshold_pct, multiplier)
surge_tiers: list = field(default_factory=lambda: [
(0.50, 1.0), # 0-50%: no surge
(0.70, 1.3), # 50-70%: 1.3x
(0.85, 1.8), # 70-85%: 1.8x
(1.00, 2.5), # 85-100%: 2.5x
])
# ── Risk Scoring Weights ───────────────────────────────────────────
risk_weights: Dict[str, float] = field(default_factory=lambda: {
"tvl_weight": 0.15,
"audit_weight": 0.20,
"maturity_weight": 0.15,
"bounty_weight": 0.10,
"verification_weight": 0.10,
"upgradeability_weight": 0.10,
"admin_weight": 0.10,
"incident_weight": 0.10,
})
# ── Risk Tier Boundaries ──────────────────────────────────────────
tier_boundaries: Dict[str, Tuple[float, float]] = field(default_factory=lambda: {
"low": (0.0, 0.25),
# ... 19 more lines ...