[Anthias Labs] Minimum Reserve Recommendations (1/8/26)
The following report gives minimum reserves recommendations for Base and OP Mainnet for the month of January. Below are our recommendations as well as the current state of reserves and bad debt on Base and OP Mainnet. Additionally, the bottom of this post contains recommendations for next steps to remediate bad debt on the protocol using reserves.
Current Reserves
The table below details the current state of reserves on Base. It gives the current reserve levels, as well as the monthly change in reserves from last month to this month. It should be noted that 300 WETH was withdrawn and converted to cbXRP over the past month.
| Asset | Total Reserves | Total Reserves (USD) | Monthly Change (Tokens) | Monthly Change (USD) |
|---|---|---|---|---|
| AERO | 166977.4032 | $101,188.31 | 19217.8572 | $11,646.02 |
| cbBTC | 0.4645 | $43,620.92 | 0.0158 | $1,483.77 |
| cbETH | 10.6186 | $38,385.15 | 0.6225 | $2,250.27 |
| cbXRP | 496082.4255 | $1,170,258.44 | 467416.2381 | $1,102,634.91 |
| DAI | 1798.3254 | $1,798.33 | 43.3261 | $43.33 |
| EURC | 23536.1306 | $27,584.35 | 371.1894 | $435.03 |
| LBTC | 0.2014 | $18,960.07 | 0.0001 | $9.41 |
| MAMO | 3333.5764 | $86.67 | 270.749 | $7.04 |
| MORPHO | 14256.3285 | $17,392.72 | 43.6173 | $53.21 |
| rETH | 2.9432 | $10,966.96 | 0.0113 | $42.11 |
| tBTC | 0.0747 | $7,045.16 | 0.0001 | $9.43 |
| USDC | 105716.1659 | $105,716.17 | 9976.7512 | $9,976.75 |
| USDS | 130.4403 | $130.44 | 5.3579 | $5.36 |
| VIRTUAL | 867711.8773 | $947,541.37 | 5602.3243 | $6,117.74 |
| weETH | 6.0124 | $21,053.65 | 0.0027 | $9.45 |
| WELL | 2492218.551 | $19,937.75 | 239693.8708 | $1,917.55 |
| WETH | 49.2119 | $158,861.08 | -299.4872 | -$966,775.53 |
| wrsETH | 0.8118 | $2,783.57 | 0 | $0.00 |
| wstETH | 6.6436 | $26,221.82 | 0.0044 | $17.37 |
| Total: $2,719,532.92 | Total: +$169,883.22 |
Recommended Minimum Reserves
We recommend the protocol sends no reserves to auction this month in order to accrue reserves to cover bad debt as quickly as possible. The following recommendations propose minimum reserves above their current levels for all markets.
| Asset | Recommended Reserves |
|---|---|
| AERO | 600000 |
| cbBTC | 4 |
| cbETH | 100 |
| cbXRP | 1300000 |
| DAI | 1500 |
| EURC | 250000 |
| LBTC | 1 |
| MAMO | 600000 |
| MORPHO | 140000 |
| rETH | 6 |
| tBTC | 1 |
| USDC | 800000 |
| USDS | 2500 |
| VIRTUAL | 2000000 |
| weETH | 8 |
| WELL | 4000000 |
| WETH | 400 |
| wrsETH | 1 |
| wstETH | 100 |
Bad Debt
With Moonwell’s contracts (Compound V2), there are two ways to fix insolvencies caused by bad debt. The first is to maintain enough reserves in the market to cover the shortfall, as reserves can serve as excess withdrawal liquidity. The second is to repay the debt on behalf of the borrower. Each approach has its pros and cons.
The first approach requires the minimum amount of capital to restore solvency. However, the bad debt continues to accrue interest. The protocol can essentially ignore this accrual and only hold reserves equal to the initial principal amount borrowed (the portion that became bad debt). The interest technically increases, but it’s never claimable, as no rational borrower will repay it. As a result, the accounting remains permanently broken. Utilization stays distorted, which can mislead suppliers into thinking they’re earning higher rates than they actually are. Yet suppliers are still made whole through redemptions.
The second option is to repay the debt on behalf of the borrower. This fully corrects the accounting but requires the protocol to cover any interest that has accrued since the debt went bad.
Ultimately, the second option is cleaner and effectively the only viable one if the protocol wants to continue actively supporting the market. If the goal is to sunset a market with bad debt, the first option is the cheapest way to make suppliers whole again. At the end of the day both methods increase the cash available for withdraw.
On Base, all of the bad debt materializes from three addresses listed below.
Address: 0xa98e339f5a0f135792286d481b4e23d91a667d3f
Reason: Oracle misprice 10/10/25
| Token | Amount | USD Value |
|---|---|---|
| VIRTUAL | 1944480.799 | $2,219,041.00 |
| AERO | 257209.2132 | $156,555.40 |
| MORPHO | 119226.4849 | $147,280.48 |
Address: 0x42ecd332d47c91cbc83b39bd7f53cebe5e9734bb
Reason: wrsETH oracle misprice 11/4/25
| Token | Amount | USD Value |
|---|---|---|
| cbXRP | 1232048.966 | $2,948,293.00 |
| wstETH | 81.8219 | $322,934.17 |
| EURC | 155519.7753 | $182,422.40 |
| cbETH | 47.8816 | $172,930.52 |
| AERO | 204486.462 | $124,464.67 |
| USDC | 80624.9828 | $80,633.05 |
| tBTC | 0.0121 | $1,130.60 |
Address: 0x6a8ee608d88db389796b9c02a1aaa36b89ac660c
Reason: Unfairly liquidated 11/4/25
| Token | Amount | USD Value |
|---|---|---|
| cbBTC | 0.147 | $13,771.00 |
| WETH | 0.2254 | $726.18 |
| wstETH | 0.0049 | $19.32 |
| MORPHO | 10.3106 | $12.73 |
| weETH | 0.0033 | $11.57 |
| rETH | 0.0005 | $1.83 |
| wrsETH | 0.0003 | $1.15 |
| cbETH | 0.0002 | $0.73 |
| cbXRP | 0.1173 | $0.28 |
| EURC | 0.0015 | $0.01 |
| USDC | 0.0005 | $0.01 |
| VIRTUAL | 0.00008244 | $0.01 |
| AERO | 0.00003968 | $0.01 |
The table below summarizes all the bad debt on Base, along with remaining insolvency after reserves are accounted for. In some markets the bad debt is fully covered by reserves, while others such as VIRTUAL and cbXRP the debt is too great. For these markets where reserves cover bad debt fully, we recommend paying off the debt on behalf of the borrower by calling the rebayBorrowBehalf() function. This will fix the accounting issues in that contract where utilization may be slightly skewed. For other markets we recommend keeping the reserves as is until either a decision is made to sunset the market, or enough reserves are accrued to fully cover the debt.
| Asset | Bad Debt (tokens) | Bad Debt (USD) | Remaining Insolvency (tokens) | Remaining Insolvency (USD) |
|---|---|---|---|---|
| AERO | 461695.6752 | $279,787.58 | 294718.272 | $178,599.27 |
| cbBTC | 0.147 | $13,804.68 | 0 | $0.00 |
| cbETH | 47.8818 | $173,087.78 | 37.2632 | $134,702.63 |
| cbXRP | 1232049.083 | $2,906,403.79 | 735966.6577 | $1,736,145.35 |
| DAI | 0 | $0.00 | 0 | $0.00 |
| EURC | 155519.7768 | $182,269.18 | 131983.6462 | $154,684.83 |
| LBTC | 0 | $0.00 | 0 | $0.00 |
| MAMO | 0 | $0.00 | 0 | $0.00 |
| MORPHO | 119236.7955 | $145,468.89 | 104980.467 | $128,076.17 |
| rETH | 0.0005 | $1.86 | 0 | $0.00 |
| tBTC | 0.0121 | $1,141.18 | 0 | $0.00 |
| USDC | 80624.9833 | $80,624.98 | 0 | $0.00 |
| USDS | 0 | $0.00 | 0 | $0.00 |
| VIRTUAL | 1944480.799 | $2,123,373.03 | 1076768.922 | $1,175,831.66 |
| weETH | 0.0033 | $11.56 | 0 | $0.00 |
| WELL | 0 | $0.00 | 0 | $0.00 |
| WETH | 0.2254 | $727.61 | 0 | $0.00 |
| wrsETH | 0.0003 | $1.03 | 0 | $0.00 |
| wstETH | 81.8268 | $322,964.65 | 75.1832 | $296,742.83 |
| Total: $6,229,667.81 | Total: $3,804,782.74 |
Using reserves to repay on borrowers behalf
As mentioned above, the cleanest way to recapitalize markets with bad debt is to repay the debt on each borrowers behalf.
In Moonwell’s mToken contracts, each market tracks:
totalSupply— total mTokens outstandingtotalBorrows— aggregate borrows outstandingtotalReserves— reserves accrued to the protocolcash— underlying actually held by the mToken contract
Utilization is calculated as:
U = totalBorrows / (cash + totalBorrows)
Because bad debt remains inside totalBorrows, it keeps utilization elevated, even if real borrowing demand is gone and even if the market has little/no cash. This matters because utilization is the input to the interest rate model. Interest rates get distorted, and the system charges interest on uncollectible debt.
When the protocol repays the bad debt (by calling rebayBorrowBehalf()), it does two critical things:
- Removes the uncollectible balance from
totalBorrows - Injects real underlying into
cash(although keeping the underlying as reserves does the same thing)
This normalizes utilization, normalizes the interest rate model output, stops interest compounding on phantom borrows, and makes the exchange rate reflect collectible assets rather than a mix of cash + unrecoverable IOUs.
For starters, we recommend the protocol repay the following bad debt balances. All of these markets have enough reserves to pay off the bad debt. Although simply holding the reserves solves the solvency issue, paying back the debt goes the extra step to fix the accounting issue.
Address: 0x6a8ee608d88db389796b9c02a1aaa36b89ac660c
| Token | Position Debt (tokens) | Position Debt (USD) | Reserves Available (tokens) |
|---|---|---|---|
| cbBTC | 0.147 | $13,771.00 | 0.4645 |
| WETH | 0.2254 | $726.18 | 49.2119 |
Address: 0x42ecd332d47c91cbc83b39bd7f53cebe5e9734bb
| Token | Position Debt (tokens) | Position Debt (USD) | Reserves Available (tokens) |
|---|---|---|---|
| USDC | 80624.9828 | $80,633.05 | 105716.1659 |
| tBTC | 0.0121 | $1,130.60 | 0.0747 |
OP Mainnet
Current Reserves
| Asset | Total Reserves | Total Reserves (USD) | Monthly Change (tokens) | Monthly Change (USD) |
|---|---|---|---|---|
| cbETH | 0 | 0 | 0 | 0 |
| DAI | 1560.9434 | $1,560.94 | 36.6934 | 36.6934 |
| OP | 8494.4496 | $2,684.25 | 320.9773 | 101.4288268 |
| rETH | 0.2432 | $898.17 | 0.1199 | 442.8059273 |
| USDC | 63242.4556 | $63,242.46 | 137.9138 | 137.9138 |
| USDT | 9191.9676 | $9,191.97 | 42.6144 | 42.6144 |
| USDT0 | 3087.3978 | $3,087.40 | 18.8451 | 18.8451 |
| VELO | 349377.6785 | $8,385.06 | 38452.7946 | 922.8670704 |
| weETH | 0.1479 | $513.43 | 0.0001 | 0.3471464 |
| WETH | 29.8631 | $95,545.44 | -2.458 | -7864.243184 |
| wrsETH | 0.1363 | $463.21 | 0 | 0 |
| wstETH | 1.8298 | $7,166.38 | 0.0001 | 0.3916484 |
| $192,738.70 | Total: -$6160.34 |
The reason for the decline in reserves this month is because in last months recommendation we instructed the protocol to withdraw approximately 3 WETH and move it to rETH and cbETH reserves. This swap has yet to happen, but will execute soon.
Recommended Minimum Reserves
Similarly to Base, we propose minimum reserves such that no reserves will be auctioned off until enough reserves are accrued to pay off outstanding bad debt.
| Asset | Recommended Reserves |
|---|---|
| cbETH | 0.2 |
| DAI | 22500 |
| OP | 10000 |
| rETH | 3 |
| USDC | 136000 |
| USDT | 73600 |
| USDT0 | 40000 |
| VELO | 600000 |
| weETH | 3 |
| WETH | 180 |
| wrsETH | 2 |
| wstETH | 12 |
Bad Debt
On OP Mainnet all bad debt materializes from three addresses listed below.
Address: 0xa98e339f5a0f135792286d481b4e23d91a667d3f
Reason: wrsETH oracle mispricing 11/4/25
| Asset | Amount | USD Value |
|---|---|---|
| rETH | 2.3124 rETH | $8,674.71 |
| wstETH | 1.3962 wstETH | $5,556.15 |
| cbETH | 0.1003 cbETH | $364.76 |
Address: 0x79376987955480e421e0b23bfd01de05b6e068fe
Reason: Unknown circa March 2025
| Asset | Amount | USD Value |
|---|---|---|
| VELO | 801.3516 VELO | $18.98 |
Address: 0x703dfcd90b7003549dd89e97d541137ecb03c4d2
Reason: Unknown circa February 2025
| Asset | Amount | USD Value |
|---|---|---|
| VELO | 640.2615 VELO | $15.12 |
We recommend the protocol take action to repay these underwater positions using reserves to fix accounting in the affected markets. There is sufficient reserves in all respective markets to cover the debt listed above (after WETH swaps execute).