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 npimport pandas as pdimport matplotlib.pyplot as pltimport yfinance as yfimport warningswarnings.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.0summary = 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).
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.