Data Provenance
Sources, inputs, timestamps, and queries behind all benchmark results in this report.
Risk Engine Benchmarks
Engine: Production risk engine March 2026 release, endpoint /loan_risk
Run dates:
| Benchmark | Timestamp (UTC) | MC Iterations | Runs |
|---|---|---|---|
| Multi-pool GBM + convergence + model comparison + correlation | 2026-03-27 00:38 | 10,000 | 24 |
| Convergence (100k) | 2026-03-27 10:32 | 100,000 | 10 |
| Convergence (1M) | 2026-03-27 13:43 | 1,000,000 | 10 |
| Historical stress event (Oct 10) | 2026-03-30 13:25 | N/A (sliding window) | 2 |
Parameter Mapping
The risk engine uses collateral ratio parameters internally. The relationship to LTV:
| Engine Param | Formula | Example | LTV Equivalent |
|---|---|---|---|
N | Collateral ratio = 1 / LTV | N=1.5 | LTV = 66.7% |
L | Liquidation collateral ratio = 1 / Liquidation LTV | L=1.15 | Liq LTV = 87.0% |
M | Set to L + epsilon (no margin call) | M=1.1500000001 | — |
R | Recovery ratio = N | R=1.5 | Same as N |
For full definitions, see Glossary — Risk Engine Parameters.
Model Comparison Input (wstETH/USDC)
Executed: 2026-03-27 00:38 UTC
Used for Tests 7.1, 7.2, 7.3a. All four models use the same pool parameters — only the model type and lookback differ.
GBM (stressed):
{
"type": "GBM",
"params": {
"collateral_weights": {"WSTETH": 1.0},
"loan_weights": {"USDC": 1.0},
"loan_value": 1000000,
"L": 1.15,
"M": 1.1500000001,
"N": 1.5,
"R": 1.5,
"loan_duration": 365,
"mc_top_up": 50000,
"model_lookback": 365,
"mc_iter": 10000,
"volatility_shock": 9.0,
"quantile": [0.99, 0.999, 0.9999]
}
}
GBM (no shock): Same as above, volatility_shock omitted from payload.
GARCH: Same parameters, "type": "BETA_GARCH", volatility_shock omitted.
Historical: Same parameters, "type": "HISTORICAL", model_lookback: 730, mc_iter omitted (sliding window, not Monte Carlo).
Correlation Test Input (Test 7.3b)
Executed: 2026-03-27 00:38 UTC
Correlated pair:
{
"type": "GBM",
"params": {
"collateral_weights": {
"WSTETH": 0.5,
"CBETH": 0.5
},
"loan_weights": {"USDC": 1.0},
"loan_value": 1000000,
"L": 1.15,
"M": 1.1500000001,
"N": 1.5,
"R": 1.5,
"loan_duration": 365,
"mc_top_up": 50000,
"model_lookback": 365,
"mc_iter": 10000,
"volatility_shock": 9.0,
"quantile": [0.99, 0.999, 0.9999]
}
}
Uncorrelated pair:
{
"type": "GBM",
"params": {
"collateral_weights": {
"BTC": 0.5,
"DAI": 0.5
},
"loan_weights": {"USDC": 1.0},
"loan_value": 1000000,
"L": 1.3,
"M": 1.3000000001,
"N": 1.7,
"R": 1.7,
"loan_duration": 365,
"mc_top_up": 50000,
"model_lookback": 365,
"mc_iter": 10000,
"volatility_shock": 9.0,
"quantile": [0.99, 0.999, 0.9999]
}
}
Historical Stress Event Input (Test 7.2)
Executed: 2026-03-30 13:25 UTC
With October 10th period:
{
"type": "HISTORICAL",
"params": {
"collateral_weights": {"WSTETH": 1.0},
"loan_weights": {"USDC": 1.0},
"loan_value": 1000000,
"L": 1.15,
"M": 1.1500000001,
"N": 1.5,
"R": 1.5,
"loan_duration": 365,
"mc_top_up": 50000,
"model_lookback": 730,
"quantile": [0.99, 0.999, 0.9999]
}
}
Without October 10th:
{
"type": "HISTORICAL",
"params": {
"collateral_weights": {"WSTETH": 1.0},
"loan_weights": {"USDC": 1.0},
"loan_value": 1000000,
"L": 1.15,
"M": 1.1500000001,
"N": 1.5,
"R": 1.5,
"loan_duration": 365,
"mc_top_up": 50000,
"model_lookback": 730,
"analysis_date": "10-09-2025",
"quantile": [0.99, 0.999, 0.9999]
}
}
Multi-Pool Input (ETH, BTC, cbBTC, wstETH)
Executed: 2026-03-27 00:38 UTC
All pools use volatility_shock: 9.0, mc_iter: 10000, model_lookback: 365.
| Pool | Collateral | L | N |
|---|---|---|---|
| ETH/USDC | {"ETH": 1.0} | 1.3 | 1.7 |
| BTC/USDC | {"BTC": 1.0} | 1.3 | 1.7 |
| cbBTC/USDC | {"CBBTC": 1.0} | 1.3 | 1.7 |
| wstETH/USDC | {"WSTETH": 1.0} | 1.15 | 1.5 |
Convergence Input (Tests 2.1)
Executed:
- 10k — 2026-03-27 00:38 UTC
- 100k — 2026-03-27 10:32 UTC
- 1M — 2026-03-27 13:43 UTC
Same ETH/USDC payload repeated 10 times at each iteration count (10k, 100k, 1M):
{
"type": "GBM",
"params": {
"collateral_weights": {"ETH": 1.0},
"loan_weights": {"USDC": 1.0},
"loan_value": 1000000,
"L": 1.3,
"M": 1.3000000001,
"N": 1.7,
"R": 1.7,
"loan_duration": 365,
"mc_top_up": 50000,
"model_lookback": 365,
"volatility_shock": 9.0,
"quantile": [0.99, 0.999, 0.9999]
}
}
Only mc_iter changes: 10000, 100000, or 1000000.
BigQuery Production Data
Snapshot timestamp: 2026-03-27 11:02 UTC
7-Component Scoring (Test 1.2)
Queried: 2026-03-27 11:02 UTC
SELECT
pool_slug,
ROUND(utilization_score, 2) AS util,
ROUND(lp_nakamoto_score, 2) AS lp_nak,
ROUND(lp_max_power_ratio_score, 2) AS lp_max,
ROUND(borrower_nakamoto_score, 2) AS bor_nak,
ROUND(borrower_max_power_ratio_score, 2) AS bor_max,
ROUND(liquidation_buffer_score, 2) AS liq_buf,
ROUND(extreme_event_resilience_score, 2) AS stress,
ROUND(pool_market_score, 3) AS composite
FROM defi_prepared.lending_pool_score
WHERE datetime >= TIMESTAMP_SUB(CURRENT_TIMESTAMP(), INTERVAL 24 HOUR)
AND pool_market_score IS NOT NULL
AND lending_instance_slug = 'aave_v3_eth'
QUALIFY ROW_NUMBER() OVER (
PARTITION BY pool_slug ORDER BY datetime DESC
) = 1
ORDER BY composite DESC
Utilization Examples (Test 3.1)
Queried: 2026-03-27 11:02 UTC
SELECT
s.pool_slug,
ROUND(st.utilization_rate * 100, 1) AS util_pct,
ROUND(s.utilization_score, 4) AS util_score
FROM defi_prepared.lending_pool_score s
JOIN defi_prepared.lending_pool_state st
ON s.pool_id = st.pool_id
AND DATE(s.datetime) = DATE(st.datetime)
WHERE s.datetime >= TIMESTAMP_SUB(CURRENT_TIMESTAMP(), INTERVAL 24 HOUR)
AND st.datetime >= TIMESTAMP_SUB(CURRENT_TIMESTAMP(), INTERVAL 24 HOUR)
AND s.pool_market_score IS NOT NULL
QUALIFY ROW_NUMBER() OVER (
PARTITION BY s.pool_slug ORDER BY s.datetime DESC
) = 1
ORDER BY st.utilization_rate DESC
Borrower Concentration (Test 3.2)
Queried: 2026-03-27 11:02 UTC (data snapshot)
AAVE wstETH — k=1, single dominant borrower
SELECT borrower_address, ROUND(principal_owed_usd, 0) AS principal_usd
FROM defi_prepared.lending_borrower_position
WHERE pool_slug = 'aave_v3_eth_main_wsteth'
AND datetime >= TIMESTAMP('2026-03-27')
QUALIFY ROW_NUMBER() OVER (PARTITION BY borrower_address ORDER BY datetime DESC) = 1
ORDER BY principal_owed_usd DESC LIMIT 5
AAVE CRV — k=2
SELECT borrower_address, ROUND(principal_owed_usd, 0) AS principal_usd
FROM defi_prepared.lending_borrower_position
WHERE pool_slug = 'aave_v3_eth_main_crv'
AND datetime >= TIMESTAMP('2026-03-27')
QUALIFY ROW_NUMBER() OVER (PARTITION BY borrower_address ORDER BY datetime DESC) = 1
ORDER BY principal_owed_usd DESC LIMIT 5
AAVE WBTC — k=10+, fully diversified
SELECT borrower_address, ROUND(principal_owed_usd, 0) AS principal_usd
FROM defi_prepared.lending_borrower_position
WHERE pool_slug = 'aave_v3_eth_main_wbtc'
AND datetime >= TIMESTAMP('2026-03-27')
QUALIFY ROW_NUMBER() OVER (PARTITION BY borrower_address ORDER BY datetime DESC) = 1
ORDER BY principal_owed_usd DESC LIMIT 10
Oracle Scores (Tests 1.1, 4.1, 5)
Queried: 2026-03-27 11:02 UTC (data snapshot)
Per-Feed Scores (Level 1)
SELECT address, oracle_source, score, slug
FROM defi_prepared.lending_oracle_score
ORDER BY score DESC
Market-Level Geometric Mean (Level 2)
SELECT pool_slug, oracle_score, scoring_method
FROM defi_prepared.lending_pool_oracle_score
ORDER BY oracle_score DESC
Composite Aggregation (Test 1.1)
Queried: 2026-03-27 11:02 UTC (data snapshot)
Protocol risk scores from:
SELECT protocol_slug, protocol_name,
ROUND(composite_score, 4) AS composite,
ROUND(final_score, 4) AS final
FROM defi_prepared.protocol_risk_composite_score
Three-dimension composite (Market x Oracle x Protocol) computed as geometric mean from the three queries above.
Stress Sensitivity (Test 10.1)
Executed: 2026-04-10 14:02 UTC
8 runs: GBM (no shock) and GARCH on wstETH/USDC at two LTV configurations, with and without October 10 in the lookback.
Production LTV (N=1.5, L=1.15):
{
"type": "GBM",
"params": {
"collateral_weights": {"WSTETH": 1.0},
"loan_weights": {"USDC": 1.0},
"N": 1.5, "M": 1.1500000001, "L": 1.15, "R": 1.5,
"loan_value": 1000000, "mc_iter": 10000, "mc_top_up": 50000,
"model_lookback": 365, "loan_duration": 365,
"quantile": [0.99, 0.999, 0.9999]
}
}
Stressed LTV (N=1.25, L=1.1): Same as above with N=1.25, M=1.1000000001, L=1.1, R=1.25.
GARCH variants: Same parameters with "type": "BETA_GARCH".
Excludes Oct 10 variants: Add "analysis_date": "10-09-2025" to params.
Depeg Sensitivity (Test 8.2)
Queried: 2026-04-08 UTC
SELECT
asset_slug,
reference_asset_slug,
FORMAT_TIMESTAMP('%Y-%m-%d %H:%M', datetime) AS datetime,
ROUND(CAST(stability AS FLOAT64), 4) AS stability,
ROUND((1 - CAST(stability AS FLOAT64)) * 100, 2) AS deviation_pct,
ROUND(CAST(stability_score AS FLOAT64), 4) AS stability_score,
CASE
WHEN CAST(stability AS FLOAT64) <= 0.68 THEN 'Tier 5: Near-collapse (>=32%)'
WHEN CAST(stability AS FLOAT64) <= 0.84 THEN 'Tier 4: Severe depeg (>=16%)'
WHEN CAST(stability AS FLOAT64) <= 0.92 THEN 'Tier 3: Significant depeg (>=8%)'
END AS tier_label
FROM defi_materialized.stability_score_mt
WHERE CAST(stability AS FLOAT64) <= 0.92
ORDER BY CAST(stability AS FLOAT64) ASC
Score trajectory queries used asset_slug and datetime range filters on the same table.
Stale Data Detection (Test 9.1)
Queried: 2026-04-08 UTC
Pipeline track record:
SELECT
MIN(FORMAT_TIMESTAMP('%Y-%m-%d', datetime)) AS earliest_snapshot,
MAX(FORMAT_TIMESTAMP('%Y-%m-%d', datetime)) AS latest_snapshot,
COUNT(DISTINCT DATE(datetime)) AS distinct_days,
COUNT(*) AS total_snapshots
FROM defi_materialized.lending_pool_state_mt
WHERE datetime >= TIMESTAMP('2024-01-01')
Result: Continuous production operation since 2026-01-27.
Precision Audit (Test 9.2)
Queried: 2026-04-08 UTC
Schema type verification:
SELECT column_name, data_type
FROM defi_materialized.INFORMATION_SCHEMA.COLUMNS
WHERE table_name = 'lending_pool_state_mt'
AND data_type IN ('BIGNUMERIC', 'STRING', 'INT64', 'JSON')
ORDER BY data_type, ordinal_position
Position table schema:
SELECT column_name, data_type
FROM defi_materialized.INFORMATION_SCHEMA.COLUMNS
WHERE table_name = 'lending_lp_position_mt'
AND data_type IN ('BIGNUMERIC', 'STRING')
ORDER BY ordinal_position
Confirmed: uint256 values stored as STRING (lossless), computed rates and USD values stored as BIGNUMERIC (38-digit precision).
API Latency Benchmark (Test 11.1)
Executed: 2026-04-08 20:33 UTC
1,000 requests to the production /loan_risk endpoint.
{
"type": "GBM",
"params": {
"collateral_weights": {"BTC": 1.0},
"loan_weights": {"USDC": 1.0},
"N": 1.7,
"M": 1.3000000001,
"L": 1.3,
"R": 1.7,
"loan_value": 1000000,
"mc_iter": 10000,
"mc_top_up": 50000,
"model_lookback": 90,
"loan_duration": 365,
"volatility_shock": 9.0,
"quantile": [0.99, 0.999, 0.9999]
}
}
| Parameter | Value |
|---|---|
| Requests | 1,000 |
| Successful | 1,000 |
| Failed | 0 |
Alert Latency Benchmark (Test 4.2)
Executed: 2026-03-30 17:44-17:48 UTC
50 consecutive runs of the alert runner pipeline. Each run processed 9 vaults and 50 mock users via Telegram delivery.
| Parameter | Value |
|---|---|
| Runs | 50 |
| Vaults processed | 9 |
| Mock users | 50 |
| Delivery channel | Telegram (batch sends) |
| Optimizations | None (unoptimized baseline) |