Stochastic.Finance Docs

Last updated 12 September 2026

Providing liquidity

A liquidity provider seeds one option pool with USDC and option tokens, and earns every swap fee paid by everyone who trades that leg. The dApp page is /add_liquidity.

This is the role the protocol's economics are built around. Options are hard to make markets in — that is exactly why the fee that pays you for it starts at 2% rather than 30 basis points, and rises from there. Simulated against the deployed curve, that design puts the median liquidity provider at around 10% a year.

What you need first

Two assets, for the same option leg:

  • USDC — ordinary balance
  • Option tokens of the leg you want to make a market in

Most LPs get the option tokens by minting them: post collateral, receive both legs, then put one leg into a pool. If you want to provide liquidity on both legs of the same option, a single mint gives you exactly the inventory for both.

You cannot add one-sided liquidity

There is no single-asset deposit and no zapping. A pool is a pair, and seeding it means supplying both sides in the ratio the pool is already at (or, if you are first, in whatever ratio you choose — which sets the opening price).

Adding liquidity

addLiquidity(
    tradeToken,          // SF Options address
    tokenId,             // the leg
    amountStableDesired, // USDC you'd like to add
    amountTradeDesired,  // option units you'd like to add
    amountStableMin,     // slippage guards against a ratio shift
    amountTradeMin,
    to,                  // who receives the LP shares
    deadline
) returns (amountStable, amountTrade, liquidity)

If a pool for that leg doesn't exist yet, the router creates it. The pair address is deterministic, derived from (option contract, tokenId), so it can be computed before it exists.

add_liquidity

You receive LP shares — an ERC-20 token (SFSwap V0 / SFS-V0) specific to that one pool. They are transferable: whoever holds them can withdraw the underlying, which means LP positions can be moved or sold without touching the pool.

Opening a new pool

The first deposit sets the price. Shares minted are the geometric mean of the two amounts:

$$s_{minted} = \sqrt{x_{USDC} \cdot y_{option}}$$

Two consequences for the first provider:

  • You are choosing the opening price. Deposit at a ratio far from the model price and the first arbitrageur will correct it at your expense. Price your opening deposit off getOptionPrice.
  • A fixed 1,000,000 share units are permanently locked. They are minted to an address nobody controls and can never be redeemed. This is a standard anti-donation measure — it stops an attacker inflating the value of a single share unit to make the pool unusable for small providers. At any realistic deposit size the cost is negligible, and it only ever applies to the first deposit.

Subsequent deposits mint shares pro-rata to the reserves and don't touch this.

How you earn

Every swap against your pool pays a fee in USDC, and 100% of it stays with you. Nothing is split with the protocol, nothing is routed to a treasury, and there is nothing to claim — the fee simply increases the reserves your shares are a claim on, so each share is worth more when you withdraw.

The fee starts at a 2% floor and rises with the gap between the pool price and the model price, to a 100% cap. That is far above what a spot AMM charges, and deliberately so: an option's fair value moves continuously as spot moves and as time decays, so a pool that isn't traded constantly is always somewhat stale. A 30bp fee would hand that staleness to arbitrageurs for free. Here, they pay you for it. See Dynamic swap fee.

What liquidity providers earn

Simulated against the deployed fee curve, the median liquidity provider earns around 10% a year, and the fee income comfortably outruns the cost of rebalancing.

What was simulated

A weekly cycle, repeated across hundreds of price paths, with the underlying following geometric Brownian motion at 65% annual volatility. Within each week:

  • Both legs of an at-the-money weekly option are seeded at fair value, so the LP starts market-neutral.
  • The week is divided into 24 sub-steps. At each one, arbitrage pushes each pool back to the edge of the no-arbitrage band — the band being exactly as wide as the dynamic fee makes it — and then one organic trade arrives.
  • Organic trades are sized by a slippage budget rather than a fixed notional, so a trader cannot farm fees off their own price impact.

Weekly results are compounded to an annual figure. The model tracks four flows separately — arbitrage fees earned, organic fees earned, adverse selection paid, and the net — so the result can be decomposed rather than taken on faith.

The results

LP annualised return distribution under the deployed fee curve

With a plausible 20% of organic flow informed, the annualised return has a median of +9.6%, a 95th percentile of +17.2%, and a distribution that clusters tightly in the 5–15% band.

The engine behind it is turnover: annual swap volume runs at roughly 6× the pooled capital. At a 2% floor and considerably more whenever the pool drifts, that volume generates fee income that outweighs the cost of being rebalanced by arbitrageurs.

Where the return comes from

Practical guidance

  • Weekly options need weekly attention. Positions do not roll themselves. Each Friday's expiry is a decision point.

Next

© Stochastic Finance Protocol — All Rights Reserved