Activating the First LlamaLend v2 Markets on Optimism: Borrow Caps & Admin Fee

Summary

This proposal activates the first three LlamaLend v2 markets, which have been deployed on Optimism but have not yet had borrowing enabled. Each controller was deployed with borrow_cap = 0 and admin_percentage = 0. The vote drives the LlamaLend Markets Configurator (0xd36c590531cAF5F620C57Faf5827Ce8E7f6E5Bec) to, per controller:

  • set borrow_cap to the refined, stress-derived value below; and
  • set admin_percentage to 1% (1e16, where 1e18 == 100%).
Market Refined borrow cap Admin fee
wstETH/WETH 824 WETH 0% → 1%
WBTC/USDC 4,380,000 USDC 0% → 1%
wstETH/USDC 2,660,000 USDC 0% → 1%

Because the markets are launching alongside an incentive campaign on Optimism, the caps are sized to be conservative yet not so restrictive that they suppress organic market-rate discovery. Each cap is anchored to executable liquidation capacity under stress using a fresh-market sizing method, and should be migrated to the live exposure-scale method once real borrower positions accumulate.


Background: LlamaLend v2 and the Optimism deployment

LlamaLend v2 is the next iteration of Curve’s isolated lending stack, pairing a single collateral asset against a single borrowed asset in each market, with liquidations handled by LLAMMA’s continuous soft-liquidation mechanism rather than discrete liquidation events. Markets are deployed in a dormant state with borrowing disabled via a zero borrow cap, and are activated by governance once risk parameters have been reviewed.

This proposal covers the first deployment of LlamaLend v2, comprising three markets on Optimism:

Market Controller Borrowed asset
wstETH/WETH 0x745422BF49f3F6e4A8E12E4abD19339E7910F8C9 WETH (18 decimals)
WBTC/USDC 0x9fC15ac3EF97093832f49B7997A58E29b49C56dE USDC (6 decimals)
wstETH/USDC 0xb5EC7A3D591877A66BE4f3eafdC4205E98A1BCAA USDC (6 decimals)

The borrow cap is denominated in the borrowed token’s native decimals: the controller transfers _debt 1:1 to the borrower and tracks that same quantity in total_debt / borrow_cap (the BORROWED_PRECISION factor is only applied inside the AMM’s internal math). USDC caps are therefore expressed with 6 decimals and the WETH cap with 18.


Methodology: fresh-market borrow-cap sizing

For a fresh market, no borrower positions exist yet, so liquidation pressure cannot be inferred from live vault-level data. Instead, the cap is derived from stressed executable liquidity combined with a conservative borrower-behaviour assumption.

Executable liquidity. For each candidate liquidation route, the model finds the maximum executable collateral amount subject to the liquidator’s usable price-impact margin:

\text{PI}_{\max} = \Theta - \delta

where \Theta is the liquidation discount and \delta is an execution / price-duration loss buffer. Route capacity is stressed by a liquidity contraction factor \lambda_{\text{liq}}, and the deepest stressed route is used:

X_{\text{stress}} = \max_i \frac{x_i^*}{\lambda_{\text{liq}}}

Route capacities are not summed, because aggregator routes may reuse overlapping underlying liquidity.

Sizing LTV. Where a reliable reference market exists, the debt-weighted p95 borrower LTV is used as the empirical behavioural assumption (see Appendix). If that empirical assumption is non-binding under stress, or where borrower behaviour is uncertain, the model falls back to the Curve-derived max LTV:

L_{\max} = 1 - \text{loan discount} - \frac{N}{2A}

Hard-liquidation trigger. The method checks whether the stressed borrower LTV breaches a reduced-form hard-liquidation proxy L_{\text{hard}} = 1 - \Theta. The shock required to reach that proxy is:

s_{\text{trigger}} = 1 - \frac{L}{L_{\text{hard}}}

and the portion of the stress beyond that buffer is:

\phi = \max\left(0, \frac{s - s_{\text{trigger}}}{s}\right)

\phi is a stress-severity factor, not a probability. If \phi = 0, the chosen stress does not create hard-liquidation pressure under the assumed borrower behaviour, and the liquidity module is non-binding.

Soft liquidation. LLAMMA’s soft liquidation is captured through an efficiency parameter \eta, so residual hard-liquidation pressure is scaled by (1-\eta)\phi. The fresh-market cap is then:

C_{\text{fresh}} = \frac{X_{\text{stress}} \cdot P_s \cdot L}{(1-\eta)\phi}

where P_s = P_0(1-s) is the shocked collateral price. This cap binds only when the stress shock exceeds the borrower’s LTV buffer. Once a market is live, this approximation should be replaced by the live exposure-scale method using actual borrower positions and observed liquidation pressure.


Results

wstETH/WETH — recommended cap ~824 WETH

Scoped under a 4.00% collateral price-shock scenario, using current-price valuation, a 1.5% maximum liquidator price-impact tolerance, 0% assumed soft-liquidation efficiency, and a 1.5× liquidity contraction factor (usable liquidity reduced to 66.7% of baseline, a 33.3% reduction).

Soft-liquidation efficiency is set to 0% as a conservative assumption for this correlated-asset stress: the scenario represents a relative dislocation between wstETH and WETH rather than a gradual broad-market move. Because such basis shocks can occur quickly (or through liquidity/oracle dislocation), the analysis does not assume LLAMMA soft liquidation materially reduces residual hard-liquidation pressure before the stressed price level is reached.

The executable route considered is wstETH → WETH. Baseline executable capacity is 256.88 wstETH, falling to 171.25 wstETH after the liquidity contraction. Max LTV from Curve parameters is 95.52%; under the 4.00% shock, stressed LTV rises to 99.50%, breaching the simplified hard-liquidation proxy of 98.5%. The implied trigger shock is ≈ 3.02%, so the scenario exceeds the liquidation buffer. The implied at-risk fraction is 24.49%; with 0% soft-liquidation efficiency the residual buffer-adjusted pressure is also 24.49% of exposure, giving a cap of ≈ 824.18 WETH-equivalent.

WBTC/USDC — recommended cap ~$4.38m

Refined under a 9.40% collateral price-shock scenario, using current-price valuation, a 5% maximum liquidator price-impact tolerance, 65% assumed soft-liquidation efficiency, and a 1.5× liquidity contraction factor.

The executable route is WBTC → USDC. Baseline executable capacity is 14.25 WBTC, falling to 9.50 WBTC after contraction; with a single route there is no aggregation or double-counting adjustment. Max LTV is 89.92%; under the 9.40% shock, stressed LTV rises to 99.24%, breaching the hard-liquidation proxy of 95.0%, with an implied trigger shock of ≈ 5.35%. The implied at-risk fraction is 43.07%; after 65% soft-liquidation efficiency the residual pressure is 15.07% of exposure, giving a cap of ≈ $4.38m.

wstETH/USDC — recommended cap ~$2.66m

Refined under a 13.10% collateral price-shock scenario, using current-price valuation, an 11% maximum liquidator price-impact tolerance, 65% assumed soft-liquidation efficiency, and a 1.5× liquidity contraction factor.

The executable route is wstETH → USDC. Baseline executable capacity is 339.01 wstETH, falling to 226.01 wstETH after contraction. Max LTV is 83.59%; under the 13.10% shock, stressed LTV rises to 96.19%, breaching the hard-liquidation proxy of 89.0%, with an implied trigger shock of ≈ 6.08% — so the scenario materially exceeds the liquidation buffer. The implied at-risk fraction is 53.60%; after 65% soft-liquidation efficiency the residual pressure is 18.76% of exposure, giving a cap of ≈ $2.66m.


Admin fee (0% → 1%)

Alongside cap activation, this proposal sets the admin_percentage on all three controllers to 1% (1e16). This parameter is the protocol’s share of the interest paid by borrowers, with the remainder accruing to suppliers. A 1% setting is a deliberately conservative starting level for newly launched markets: it establishes a protocol revenue stream while keeping the cost to borrowers low during the incentive-driven bootstrap phase, so as not to discourage the early borrowing the caps are designed to accommodate. As with the caps, the admin fee can be revisited once the markets mature and live utilisation data is available.


Recommended parameters

Market Borrow cap Basis
WBTC/USDC ~$4.38m Buffer-adjusted fresh-market method; WBTC → USDC executable liquidity; 65% soft-liquidation efficiency; max-LTV fallback (empirical 80% LTV case was non-binding).
wstETH/USDC ~$2.66m Buffer-adjusted fresh-market method; wstETH → USDC executable liquidity; 65% soft-liquidation efficiency; max-LTV fallback.
wstETH/WETH ~824 WETH Buffer-adjusted fresh-market method; wstETH → WETH executable liquidity; max-LTV / high-LTV assumption; 0% soft-liquidation efficiency to reflect sudden correlated-asset basis dislocation risk.

Once the Optimism markets are live, these fresh-market assumptions should be replaced by the live exposure-scale method using actual borrower positions and observed liquidation pressure.


Vote Specification

Configurator: 0xd36c590531cAF5F620C57Faf5827Ce8E7f6E5Bec

# Call Target controller Argument (native decimals)
1 set_borrow_cap wstETH/WETH 0x745422…F8C9 824e18 (824 WETH)
2 set_admin_percentage wstETH/WETH 0x745422…F8C9 1e16 (1%)
3 set_borrow_cap WBTC/USDC 0x9fC15a…56dE 4.38e12 (4,380,000 USDC)
4 set_admin_percentage WBTC/USDC 0x9fC15a…56dE 1e16 (1%)
5 set_borrow_cap wstETH/USDC 0xb5EC7A…BCAA 2.66e12 (2,660,000 USDC)
6 set_admin_percentage wstETH/USDC 0xb5EC7A…BCAA 1e16 (1%)
Vote payload (boa / curve-voting-lib)
CONFIGURATOR = "0xd36c590531cAF5F620C57Faf5827Ce8E7f6E5Bec"  # LlamaLend Markets Configurator

# (label, controller, borrowed_symbol, human_borrow_cap in whole borrowed-token units)
MARKETS = [
    ("wstETH/WETH", "0x745422BF49f3F6e4A8E12E4abD19339E7910F8C9", "WETH",       824),  # 18d -> 824e18
    ("WBTC/USDC",   "0x9fC15ac3EF97093832f49B7997A58E29b49C56dE", "USDC", 4_380_000),  #  6d -> 4.38e12
    ("wstETH/USDC", "0xb5EC7A3D591877A66BE4f3eafdC4205E98A1BCAA", "USDC", 2_660_000),  #  6d -> 2.66e12
]

ADMIN_PERCENTAGE = 10**16  # 1% (1e18 == 100%)

with vote(OWNERSHIP, DESCRIPTION, live_env=BrowserEnv()):
    # No mainnet actions — all changes are on Optimism via xgov.
    with xvote(OPTIMISM, OPTIMISM_RPC):
        configurator = boa.from_etherscan(CONFIGURATOR, name="Configurator", api_key=ETHERSCAN_KEY)
        for label, addr, *_ in MARKETS:
            configurator.set_borrow_cap(addr, BASELINE[label]["raw_cap"])  # raw_cap = human_cap * 10**decimals
            configurator.set_admin_percentage(addr, ADMIN_PERCENTAGE)

Appendix: borrower LTV behaviour in reference markets

To inform the pre-launch behavioural assumptions, we reviewed reference Curve Lend v1 markets on Ethereum and measured observed borrower LTV:

\text{LTV} = \frac{\text{debt}}{\text{collateral_up} \times \text{oracle price}}

For each proxy market we compared historical LTVs, latest per-user LTVs, and debt-weighted LTVs. Debt-weighted LTV is the most relevant metric for cap sizing because caps are constrained by debt demand, not by the number of users. Unweighted LTV can overemphasise small accounts, while p99 is noisy and sensitive to outliers or liquidation-adjacent positions. The preferred behavioural input is therefore the historical debt-weighted p95 LTV, with the latest debt-weighted p95 as a sanity check — capturing aggressive but still representative behaviour without assuming every borrower sits exactly at the maximum allowed LTV.

WBTC/USDC → proxied by the WBTC–crvUSD LlamaLend v1 market:

wstETH/USDC → proxied by the wstETH–crvUSD LlamaLend v1 market:

wstETH/WETH → proxied by the sreUSD–crvUSD and sfrxUSD–crvUSD looping markets (LlamaLend v1):

Proposed behavioural assumptions

Deployment Proxy market Debt-weighted p95 Assumption
WBTC/USDC WBTC–crvUSD ~79.7% historical; ~69.6% latest 80% base case
wstETH/USDC wstETH–crvUSD ~79.4% historical; ~75.0% latest 80% base case
wstETH/WETH looping proxy set sfrxUSD–crvUSD ~96.8–97.0%; sreUSD–crvUSD ~92.3–95.3% max-LTV / high-LTV

For new markets, this empirical assumption serves as the base case. If the empirical-LTV scenario does not breach the hard-liquidation buffer under the stress scenario, the liquidity constraint is treated as non-binding under that behavioural assumption — which held for some markets here. In those cases, a max-LTV fallback is additionally run to produce an actionable initial cap.


Appendix: Market Parameterization

This appendix records how the amplification factor (A) and the liquidation and loan discounts were calibrated for each market, for context on why the markets are configured as they are. The values below are the ones configured for the markets.

Configured values

Market A Liquidation discount Margin Loan discount
WBTC/USDC 96 5% 3% 8%
wstETH/USDC 83 11% 3% 14%
wstETH/WETH 186 1.5% 1.9% 3.4%

Method

The amplification factor is selected by sweeping 30 log-spaced values across the range A ∈ [30, 250] over historical price paths, choosing the value that minimises the liquidation-discount series.

Once A is fixed, discount calibration is performed separately from the parameter sweeps. The simulator rolls a 60-minute evaluation window (with extra conservatism over the 30-minute loan duration used in the sweeps) across the entire ~4-year dataset at a 1-minute stride, producing an exhaustive set of historical market scenarios. From this distribution:

  • the liquidation discount is anchored to the worst 0.01% of outcomes (expected shortfall in the tail); and
  • the loan discount is the more conservative of the worst 0.0025% of outcomes and liquidation discount + margin, where the margin floor is 3% for uncorrelated pairs and 0.5% for correlated pairs. The applied margin is max(empirical margin, floor).

WBTC/USDC

Data: BTC–USDT spot on Binance, 11 Mar 2022 – 11 Mar 2026 (~4 years).

  • A = 96 — located at the minimum of the liquidation-discount series.
  • Liquidation discount = 5% (tail expected shortfall ≈ 5.01%).
  • Margin = max(0.82%, 3%) = 3% (uncorrelated floor binds).
  • Loan discount = 8% — taken as liquidation discount + margin, which is more conservative than the ~5.82% 0.0025%-tail estimate.

wstETH/USDC

Data: synthetic ETH–USDT spot on Binance (11 Mar 2022 – 12 Oct 2023) spliced to the wstETH-USD Pyth feed (12 Oct 2023 onward), spanning 11 Mar 2022 – 11 Mar 2026.

  • A = 83 — located at the minimum of the liquidation-discount series.
  • Liquidation discount = 11% (tail expected shortfall ≈ 10.73%).
  • Margin = max(2.62%, 3%) = 3% (uncorrelated floor binds).
  • Loan discount = 14% — taken as liquidation discount + margin, more conservative than the ~13.36% 0.0025%-tail estimate.

wstETH/WETH

Data: synthetic ETH–USDT spot on Binance combined with the wstETH-USD Pyth feed, 12 Oct 2023 – 11 Mar 2026.

  • A = 186 — located at the minimum of the liquidation-discount series; the high value reflects the tight correlation of the pair.
  • Liquidation discount = 1.5% (tail expected shortfall ≈ 1.47%).
  • Margin = max(1.9%, 0.5%) = 1.9% (correlated floor of 0.5% does not bind).
  • Loan discount = 3.4% — taken as liquidation discount + margin, marginally above the ~3.36% 0.0025%-tail estimate.

1 Like