# BTC ETF Options Tracker (`gochujang/btc-etf-options-tracker`) Actor

Track put/call ratio, max pain, IV skew, and gamma walls for Bitcoin and Ethereum spot ETFs (IBIT, GBTC, FBTC, ARKB, ETHA). Options sentiment signals from Yahoo Finance. No API key. $0.01/ETF.

- **URL**: https://apify.com/gochujang/btc-etf-options-tracker.md
- **Developed by:** [Hojun Lee](https://apify.com/gochujang) (community)
- **Categories:** Business
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

$10.00 / 1,000 etf analyzeds

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

### What does BTC ETF Options Tracker do?

**BTC ETF Options Tracker** fetches live options chain data for all major Bitcoin and Ethereum spot ETFs — **IBIT, GBTC, FBTC, ARKB, BITB, ETHA, ETHW** — and computes institutional-grade analytics including **put/call ratio, max pain price, IV skew, and gamma wall strikes**. No API key is needed; all data is sourced from Yahoo Finance.

Use it to understand how institutional traders are positioned in crypto ETF options, spot directional sentiment shifts before they appear in spot prices, and identify key price levels where dealer hedging activity concentrates.

### Why use BTC ETF Options Tracker?

- **Institutional sentiment read**: Options on Bitcoin ETFs like IBIT and GBTC represent billions in notional exposure — the put/call ratio reveals how institutions are hedging
- **Max pain targeting**: Identify the strike price where option writers extract maximum value; often acts as a magnet for spot prices near expiry
- **Gamma wall identification**: Spot the open-interest concentrations that dealers must hedge — these become key support/resistance zones
- **IV skew monitoring**: Rising put IV relative to calls signals demand for downside protection — a leading indicator of bearish sentiment
- **Multi-ETF coverage**: Compare Bitcoin vs Ethereum ETF options positioning side-by-side to detect rotation between assets

### How to use BTC ETF Options Tracker

1. Go to the Apify Store and find **BTC ETF Options Tracker**
2. Click **Try for free** or **Start** — no API keys required
3. Configure the `etfSymbols` array to select specific ETFs, or leave empty to analyze all 7 default ETFs
4. Click **Run** — results appear in the dataset within seconds
5. Access output via the **JSON** export, **API**, or connect to downstream tools via webhooks

### Input

| Field | Type | Default | Description |
|-------|------|---------|-------------|
| `etfSymbols` | array | all 7 | ETF tickers to analyze: IBIT, GBTC, FBTC, ARKB, BITB, ETHA, ETHW |
| `expiryMode` | string | `nearest` | Options expiry window — `nearest` uses the next upcoming expiry |

### Output

```json
[
  {
    "symbol": "IBIT",
    "name": "iShares Bitcoin Trust",
    "underlying": "BTC",
    "current_price": 42.18,
    "next_expiry": "2026-09-19",
    "available_expiries": 12,
    "total_call_oi": 284710,
    "total_put_oi": 198430,
    "oi_put_call_ratio": 0.6969,
    "total_call_volume": 18420,
    "total_put_volume": 9810,
    "vol_put_call_ratio": 0.5325,
    "atm_call_iv": 0.4812,
    "atm_put_iv": 0.5091,
    "iv_skew": 0.0641,
    "max_pain_price": 40.0,
    "max_pain_vs_spot_pct": -5.16,
    "gamma_wall_strikes": [
      {"strike": 40.0, "total_oi": 48220},
      {"strike": 45.0, "total_oi": 37610},
      {"strike": 38.0, "total_oi": 29450}
    ],
    "options_sentiment": "mildly_bullish",
    "as_of": "2026-09-02T15:45:00Z"
  },
  {
    "symbol": "GBTC",
    "name": "Grayscale Bitcoin Trust",
    "underlying": "BTC",
    "current_price": 51.73,
    "next_expiry": "2026-09-19",
    "available_expiries": 8,
    "total_call_oi": 91240,
    "total_put_oi": 134880,
    "oi_put_call_ratio": 1.4784,
    "total_call_volume": 4200,
    "total_put_volume": 6880,
    "vol_put_call_ratio": 1.6381,
    "atm_call_iv": 0.5219,
    "atm_put_iv": 0.5897,
    "iv_skew": 0.0814,
    "max_pain_price": 49.0,
    "max_pain_vs_spot_pct": -5.27,
    "gamma_wall_strikes": [
      {"strike": 50.0, "total_oi": 22110},
      {"strike": 45.0, "total_oi": 18730}
    ],
    "options_sentiment": "bearish",
    "as_of": "2026-09-02T15:45:00Z"
  }
]
```

### Data fields

| Field | Type | Description |
|-------|------|-------------|
| `symbol` | string | ETF ticker (IBIT, GBTC, etc.) |
| `name` | string | Full ETF name |
| `underlying` | string | BTC or ETH |
| `current_price` | float | Current ETF price in USD |
| `next_expiry` | string | Next options expiry date (YYYY-MM-DD) |
| `available_expiries` | int | Number of expiry dates available |
| `total_call_oi` | int | Total call options open interest (contracts) |
| `total_put_oi` | int | Total put options open interest (contracts) |
| `oi_put_call_ratio` | float | Put/call ratio by open interest (>1 = more puts) |
| `total_call_volume` | int | Call options volume (day) |
| `total_put_volume` | int | Put options volume (day) |
| `vol_put_call_ratio` | float | Put/call ratio by daily volume |
| `atm_call_iv` | float | Implied volatility of at-the-money call |
| `atm_put_iv` | float | Implied volatility of at-the-money put |
| `iv_skew` | float | OTM put IV minus OTM call IV (positive = bearish skew) |
| `max_pain_price` | float | Strike minimizing total option buyer payoff |
| `max_pain_vs_spot_pct` | float | Max pain vs current price (%) |
| `gamma_wall_strikes` | array | Top 3 strikes by combined OI (dealer hedging zones) |
| `options_sentiment` | string | Composite signal: bullish / mildly_bullish / neutral / mildly_bearish / bearish / mixed |
| `as_of` | string | UTC timestamp of data fetch |

### Cost estimation

Pricing: **$0.01 per ETF analyzed**

| Scenario | ETFs | Cost |
|----------|------|------|
| BTC ETFs only (IBIT, GBTC, FBTC, ARKB, BITB) | 5 | $0.05 |
| All 7 ETFs (BTC + ETH) | 7 | $0.07 |
| Daily monitoring (7 ETFs × 30 days) | 210 | $2.10 |

### FAQ

**Does this require an options trading account or API key?**
No. All data is fetched from Yahoo Finance's public options API. No registration or API key is needed.

**What does "max pain" mean in practice?**
Max pain is the strike price at which the total value of all options contracts is minimized for option buyers. Because option writers (often market makers) are incentivized to keep the price near max pain near expiry, it often acts as a gravitational zone for spot prices in the final days before expiration.

**Why might the put/call ratio differ between IBIT and GBTC?**
GBTC historically carries a premium/discount dynamic and attracts different user bases — retail holders vs institutional arbitrageurs. Divergences in PC ratio between ETFs can signal which institutions are buying downside protection vs which are bullish.

*Disclaimer: This actor provides publicly available options data for informational purposes only. Nothing in the output constitutes financial or investment advice. Options trading carries significant risk. Always perform your own due diligence.*

Keywords: BTC ETF options tracker, IBIT options put call ratio, Bitcoin ETF options sentiment, GBTC options analysis, crypto ETF options flow, Bitcoin spot ETF gamma wall, max pain IBIT, implied volatility Bitcoin ETF, crypto institutional positioning, BTC ETF options open interest

***

### Related actors

- [Crypto ETF Flow Tracker](https://apify.com/gochujang/crypto-etf-flow-tracker) — BTC and ETH ETF inflow/outflow data to pair with this actor's options sentiment signals
- [Crypto Volatility Scanner](https://apify.com/gochujang/crypto-volatility-scanner) — On-chain and spot volatility metrics alongside ETF implied volatility from options
- [Crypto Options Analytics](https://apify.com/gochujang/crypto-options-analytics) — Broader crypto options market data (Deribit) to compare with ETF options sentiment

### Feedback

If this actor powers your ETF research, a review helps others find it: [Leave a review on Apify Store](https://apify.com/gochujang/btc-etf-options-tracker#reviews)

***

**Keywords:** Bitcoin ETF options, IBIT options, put call ratio Bitcoin, max pain ETF, implied volatility Bitcoin ETF, gamma wall crypto, GBTC options, FBTC options, ARKB options, ETHA options, Bitcoin options sentiment, crypto ETF derivatives, Yahoo Finance options, ETF options analytics, Bitcoin options tracker

# Actor input Schema

## `etfSymbols` (type: `array`):

List of ETF ticker symbols to analyze. Defaults to all: IBIT, GBTC, FBTC, ARKB, BITB, ETHA, ETHW.

## `expiryMode` (type: `string`):

Which options expiry to analyze. 'nearest' = next upcoming expiry (default).

## Actor input object example

```json
{
  "etfSymbols": [
    "IBIT",
    "GBTC"
  ],
  "expiryMode": "nearest"
}
```

# Actor output Schema

## `results` (type: `string`):

No description

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {};

// Run the Actor and wait for it to finish
const run = await client.actor("gochujang/btc-etf-options-tracker").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {}

# Run the Actor and wait for it to finish
run = client.actor("gochujang/btc-etf-options-tracker").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{}' |
apify call gochujang/btc-etf-options-tracker --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,gochujang/btc-etf-options-tracker"
        }
    }
}
```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/uRyOHrAxD8fGa7bnn/builds/KwSCCdpqtNx0HMiyB/openapi.json
