> ## Documentation Index
> Fetch the complete documentation index at: https://docs.0xarchive.io/llms.txt
> Use this file to discover all available pages before exploring further.

# BTC options

> Read every BTC option print, the orders they join into, and what option dealers must trade as price, time and IV move.

Read BTC options on any chart: every print, the orders they join into (blocks, screen combos and sweeps), and the dealers' exposure that the Dealer exposure panel draws. The options are always BTC's, whatever market the chart shows.

## Every print

`optionTrades()` delivers each print to `onTrade`: `time`, `price` (the option's price in BTC), `size` (BTC of options), `notional` (the premium in USD), `side` (the taker's), `strike`, `expiry`, `type` (`'call'` or `'put'`), `iv` in percent, `markPrice`, `indexPrice`, and every field the exchange sends, such as `instrument`, `tradeId`, `blockTradeId` and `comboTradeId`. `block` is true for a leg of a block trade. Prints reach back 7 days, and new ones arrive live, about a second after they print.

```ts theme={"theme":"github-dark"}
indicator('Call premium bought', { precision: 0 });

const chart = bars();
const prints = optionTrades({ minNotional: 10_000 });
const bought = tally();
const hist = plot.histogram('Calls bought $');

prints.onTrade((p) => {
  if (p.type === 'call' && p.side === 'buy') bought.add(p.notional);
});

chart.onBar(() => {
  if (prints.available) hist.set(bought.value, color.up);
});
```

## Orders: blocks, combos and sweeps

`optionOrders()` joins prints into orders and delivers each one to `onOrder` once all its prints are in. An order is a block trade (`kind: 'block'`), a screen combo (`'combo'`), or one taker order in one millisecond (`'taker'`); a taker order of several prints is a sweep. Each carries `size`, `buySize` and `sellSize`, `callSize` and `putSize`, `premium` in USD and `premiumBtc`, `fills`, `strikes` and `expiries` (how many it took), `lowStrike`, `highStrike` and `side`, which is `'mixed'` when the legs went both ways, as in a spread.

```ts theme={"theme":"github-dark"}
const orders = optionOrders({ minNotional: 250_000 });
const sweeps = tally();

orders.onOrder((o) => {
  if (o.kind === 'taker' && o.fills > 1 && o.callSize > o.putSize && o.side === 'buy') sweeps.add(o.premium);
});
```

## Dealer exposure

`dealerExposure()` is the Dealer exposure panel's model, a snapshot every 5 minutes: `spot`, dealers' totals at it (`gamma`, `charm`, `vanna`), the gamma `flip`, and `strikes()`, each strike's net dealer `position` and what it adds. Read it in any handler; it is the last snapshot at or before that bar.

* **Gamma**, BTC of delta per \$1,000 of price: positive, dealers sell rises and buy dips; negative, they chase moves.
* **Charm**, BTC of delta per hour as time passes: positive, dealers sell; negative, they buy.
* **Vanna**, BTC of delta per vol point of IV: positive, dealers sell as IV rises; negative, they buy.

Dealer positions come from block trades by default, where the taker asked for the quote, so the dealer holds the other side. `dealerExposure({ model: 'all' })` counts every trade. Only the nearest expiry counts by default, as the panel opens; `expiries: 'all'` counts every one. Snapshots reach back 7 days, and start on 25 September 2026.

```ts theme={"theme":"github-dark"}
const dealers = dealerExposure();
const flip = plot.line('Gamma flip');

chart.onBar(() => {
  if (dealers.available) flip.set(dealers.flip, dealers.gamma >= 0 ? color.up : color.down);
});
```

## Next step

Load [Dealer gamma](https://docs.0xarchive.io/terminal/examples/dealer-gamma.md) for the flip and the biggest gamma strikes on the chart, or [Option sweeps](https://docs.0xarchive.io/terminal/examples/option-sweeps.md) for the biggest orders.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.