MarianmarianDocs
Products

Stablecoin Borrowing

Users lock a basket and borrow mUSD — a USDC-pegged stablecoin over-collateralized by tokenized equity. Borrow interest is the fuel that pays locker yield: the whole point of Marian is that this loop is native and self-funded.

How it works

  • User transfers their basket shares into the BorrowMarket (a per-basket isolated pool).
  • RiskEngine computes their collateral factor CF and health factor HF.
  • User mints mUSD up to CF · NAV · shares.
  • Interest accrues per block; user repays anytime; on repay their basket is unlocked.

Collateral factor

Each basket has a base CF calibrated to its volatility. Locking amplifies it via a boost curve:

CF_i  =  CF_base,i  +  ΔCF_boost(L_i)

CF_base is set per basket:
   mSP7    → 65%
   bDIV25  → 70%    (lower vol → higher CF)
   bNDX    → 60%
   bXLE    → 55%    (higher sector vol)

ΔCF_boost is a linear ramp on lock duration L (months):
   ΔCF_boost(L)  =  min( 0.005 · L , 0.12 )   // capped at +12%

Examples:
   mSP7 + no lock            →  65%
   mSP7 + 12-month lock      →  71%
   mSP7 + 48-month lock      →  77%  (max CF)
   bDIV25 + 48-month lock    →  82%  (protocol max)

Interest rate model

mUSD borrow APR is a two-slope kinked curve on utilization U = borrowed / supplied:

For U ≤ U_opt (80%):
   r_borrow(U)  =  r_0  +  U · ( r_opt − r_0 ) / U_opt

For U > U_opt:
   r_borrow(U)  =  r_opt  +  ( U − U_opt ) · ( r_max − r_opt ) / ( 1 − U_opt )

Parameters:
   r_0     = 0.01     (1%   base)
   r_opt   = 0.05     (5%   at 80% utilization)
   r_max   = 0.60     (60%  at 100% utilization)
   U_opt   = 0.80

Sample rate table

UtilizationBorrow APRLocker APY (70%)Insurance (20%)
0%1.00%
25%2.25%1.575%0.450%
50%3.50%2.450%0.700%
70%4.50%3.150%0.900%
80% (kink)5.00%3.500%1.000%
90%32.50%22.75%6.500%
100%60.00%42.00%12.00%

Health factor

HF_i  =  ( Σ_j  c_i,j · L_i,j · P_j )  /  D_i

where:
   c_i,j    = quantity of collateral asset j for user i
   L_i,j    = liquidation threshold of asset j (= CF + 3% buffer)
   P_j      = oracle price of asset j
   D_i      = user's mUSD debt

Liquidatable if:  HF_i  <  1.00
Warning zone:     1.00  ≤  HF_i  <  1.15
Peg
1.00 USDC
PSM-backed
Debt ceiling
$200M
per basket market
Liquidation penalty
6.0%
capped
Max liq. per event
50%
of user debt

Full example — Alice's position

Alice holds 10,000 mSP7 (NAV $10.00, so $100,000 collateral value) and locks for 24 months → CF = 65% + 12% × min(24/24, 1) · 0.5 = 71%.

Max borrow          =  100,000 · 0.71  =  71,000  mUSD
Alice borrows       =  60,000  mUSD           (LTV = 60%, safe)
Liquidation thresh  =  0.71 + 0.03  =  74%
Liquidation price   =  60,000 / (10,000 · 0.74)  =  $8.11

Price drop before liquidation:  ( 10.00 − 8.11 ) / 10.00  =  18.9%

At 5% borrow APR on 60,000:
   Annual interest paid   =  3,000  mUSD
   Locker share (70%)     =  2,100  mUSD
   Insurance share (20%)  =    600  mUSD
   Treasury (10%)         =    300  mUSD

If Alice is also a locker of 40,000 veMRN (0.055% of ve_total),
her share of that 2,100 is:  1.16  mUSD  (plus dividends and boost).
The system is symmetric: as more Alices borrow, all lockers benefit.
Why this loop is stable
Because borrow interest funds locker yield, and locker yield attracts locks that reduce $MRN float, the protocol has a natural anti-dilution reflex whenever demand for leverage rises. Rising utilization → rising fees → rising locker APR → more locks → tighter float → higher $MRN price → deeper collateral capacity.