Stablecoins and Peg Risk

Introduction

Main purpose in this notebook:

  • Explain why stablecoins depeg.
  • Measure depeg behavior in market data.
  • Connect peg deviations to arbitrage frictions and run-risk dynamics.

Three Economic Designs

The notebook compares three designs:

  • Fiat-backed (custodial reserves).
  • Crypto-collateralized (on-chain overcollateralization).
  • Algorithmic (incentive/mechanism-based stabilization).

A reduced-form pricing identity used for interpretation is: P_t = 1 - \lambda_t, where \lambda_t is the market-implied redemption/liquidity-risk discount (Gorton et al. 2026).

Data: Measuring Peg Deviations

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import yfinance as yf
import warnings
warnings.simplefilter(action="ignore", category=FutureWarning)

tickers = ["USDT-USD", "USDC-USD", "DAI-USD", "BTC-USD", "ETH-USD"]
px = yf.download(tickers, start="2021-01-01", progress=False)["Close"].dropna(how="all")

stables = ["USDT-USD", "USDC-USD", "DAI-USD"]
d = px[stables] - 1.0

summary = pd.DataFrame({
    "mean_depeg": d.mean(),
    "std_depeg": d.std(),
    "min_depeg": d.min(),
    "max_depeg": d.max(),
    "mean_abs_depeg": d.abs().mean(),
})
summary
mean_depeg std_depeg min_depeg max_depeg mean_abs_depeg
Ticker
USDT-USD 0.000123 0.000723 -0.004128 0.011530 0.000454
USDC-USD -0.000004 0.000787 -0.028500 0.010496 0.000198
DAI-USD 0.000077 0.001136 -0.026131 0.010310 0.000485

Key result:

  • Depeg distance is usually small but not zero; stress episodes generate larger deviations.

Arbitrage Logic Around the Peg

No-arbitrage friction band used in the notebook: |P_t-1|\leq\kappa.

If observed depegs exceed this band frequently, markets are pricing meaningful redemption or liquidity frictions (Gorton et al. 2026).

Ticker
USDT-USD    0.014949
USDC-USD    0.005873
DAI-USD     0.034170
Name: share_outside_band, dtype: float64

Run Risk as a Coordination Problem

Stylized run-probability mapping: \Pr(\text{run})=\sigma\!\left(a+b(1-c)+\gamma\ell\right), where c is collateral quality and \ell is liquidity mismatch (Gorton et al. 2026).

Gorton, Gary B., Elizabeth C. Klee, Chase P. Ross, Sharon Y. Ross, and Alexandros P. Vardoulakis. 2026. “Leverage and Stablecoin Pegs.” Journal of Financial and Quantitative Analysis 61 (1): 99–136. https://doi.org/10.1017/S0022109025000134.

Key result:

  • Run probability rises nonlinearly as collateral quality falls and liquidity mismatch rises.

Stablecoins and Market Stress

/tmp/ipykernel_1971949/307199599.py:4: Pandas4Warning: Sorting by default when concatenating all DatetimeIndex is deprecated.  In the future, pandas will respect the default of `sort=False`. Specify `sort=True` or `sort=False` to silence this message. If you see this warnings when not directly calling concat, report a bug to pandas.
  joined = pd.concat([rv, depeg_pressure], axis=1).dropna()

crypto_risk_30d avg_abs_depeg
crypto_risk_30d 1.000000 0.150735
avg_abs_depeg 0.150735 1.000000

Interpretation:

  • Depeg pressure and market volatility often co-move during stress (Griffin and Shams 2020).
  • This is descriptive evidence, not a causal estimate.
Griffin, John M., and Amin Shams. 2020. “Is Bitcoin Really Untethered?” Journal of Finance 75 (4): 1913–64. https://doi.org/10.1111/jofi.12903.

Takeaways

  • Stablecoins are peg mechanisms with balance-sheet and liquidity risk.
  • Persistent depegs should be interpreted as risk premia, not pure noise.
  • Arbitrage frictions and run dynamics are central for understanding peg breaks.
  • This notebook is an in-sample diagnostic exercise, not a trading strategy backtest.