Insights·Markets
How Borro runs a stock market
How a stock gets listed, and what runs it every hour after that.

Every stock on Borro is its own small market. Listing one is a fixed set of steps, and once it is live a set of jobs runs it around the clock. Here is the whole of it.
1. The feed. A stock is listed only if Chainlink publishes a price for its Robinhood token. The feeds print through the 24/5 session, on a 0.5% move or at least every 24 hours, and they pause from Friday 8pm to Sunday 8pm New York time. Every limit, quote and liquidation on Borro uses that feed. There is no Borro price.
2. The vault. Each stock gets a Morpho Vault V2 of its own: bNVDA for NVDA, bSPY for SPY. Lenders deposit the stock token and hold shares of the vault in their own wallet. The vault lends into exactly one Morpho Blue market, and nothing else. A loss in one stock's market stays in that stock's vault.
3. The two markets. Each stock has two isolated Morpho Blue markets. In the first, shorters borrow the stock itself. They post USDG as collateral, held as shares of the Steakhouse USDG vault so it earns interest while the short is open, and they can borrow stock worth up to 62.5% of it, or 77% for SPY and QQQ. The rent they pay is the lender's yield. In the second, holders post their vault shares and borrow USDG against them, up to 62.5% for SPY, QQQ and NVDA and 38.5% for the rest. That USDG comes from Borro's USDG vault, bUSDG.
4. The route. A short sells the stock the moment it opens and buys it back when it closes. Borro trades through one Uniswap pool per stock, and the same pool prices every quote the app shows. Only the owner can change a route, and the change waits two days.
5. The cap. Every hour the keeper measures that pool. It asks how much of the stock can be sold into USDG, and how much bought, before the price moves 2% from where a tiny trade would fill. Those two answers are the exit depth: what a liquidation could actually clear. Each market's cap is a set fraction of that depth, never below what is already lent, and it is published at /caps.json beside the live cap. Today the job only observes and writes the change for the multi-signature wallet to sign. Raising a cap waits three days on chain. Lowering one takes effect at once.
That is the listing. Then four things run it.
The allocator runs every five minutes. It keeps a withdrawal buffer in the USDG vault, tops up each market that is near fully used, takes USDG back from markets that are not, and never passes a cap. Every move of a run goes in one transaction, whole or not at all.
The liquidator reads every borrower in every market every 15 seconds and applies Morpho's own health test. A position past its limit can be closed by Borro's bot, or by anyone else, for a bonus of up to 15%. Each liquidation is simulated first and sent only if it pays.
The fee job runs every hour. Borro keeps 10% of rent and 0.10% of each short's sale. The job turns those fees into USDG, buys $BORRO in its Pons pool, burns exactly what it bought, and lists every burn at /burns.json.
The weekend band. While the feeds are paused, the keeper reads Hyperliquid's perp and Borro's own pools every five minutes and publishes a weekend price with a 95% band for each stock. The contracts keep using Friday's last print. The app sizes a new short at the top of the band and values posted stock at the bottom of it. The first Chainlink print lands at 00:00 UTC on Monday, and a gap past the band is what the Weekend Desk's cover is for.
Nothing here is set by hand and left. Any setting that could hurt a lender waits three days in public before it takes effect, and the owner is a multi-signature wallet that cannot move anyone's position.
Borro
