The Scenario
You trade options. You've been looking for a systematic way to identify tickers in a low-volatility squeeze — the kind of setup where Bollinger Bands have contracted into a narrow channel and a breakout is likely but direction is unclear. You have 20 tickers in an Excel sheet. You need Bollinger Band upper, lower, midline, and bandwidth for each one.
You pulled the data manually last week. It took longer than the trade itself was open.
The bad version:
- Call the Bollinger Bands endpoint in Twelve Data for the first ticker, extract the upper, lower, and midline values from the JSON, and paste them into columns B, C, and D.
- Calculate bandwidth as (upper - lower) / midline by hand — or with a formula in the sheet once the values are there — and write the result into column E.
- Repeat for 19 more tickers, discover that two of them returned data from a different timeframe than you specified because of a default parameter you didn't override, and manually re-pull those two with the correct parameters.
By the time the sheet is populated, the low-vol window you were trying to identify has either passed or widened.
The Easy Way: One Prompt in SheetXAI
SheetXAI is an AI agent inside your Google Sheet. It reads the tickers in column A and, through its built-in Twelve Data integration, fetches Bollinger Band data for each ticker, calculates bandwidth, and writes everything into the specified columns.
Fetch Bollinger Bands from Twelve Data for each ticker in column A using 20-period daily data. Write upper band into column B, lower band into column C, SMA midline into column D, and calculate bandwidth as (upper - lower) / midline, writing the result into column E.
What You Get
- Columns B through D: upper band, lower band, and 20-day SMA for each ticker.
- Column E: bandwidth as a decimal ratio — smaller values indicate tighter squeezes.
- Values reflect the most recent completed trading day.
- Tickers with fewer than 20 days of history get a note in column F rather than a placeholder number that would distort your ranking.
What If the Data Is Not Quite Ready
If you want to rank tickers by bandwidth to surface the tightest squeezes first
Fetch 20-period Bollinger Bands from Twelve Data for each ticker in column A. Write upper, lower, and midline into columns B, C, D. Calculate bandwidth and write into column E. Sort the rows by column E from smallest to largest so the tightest squeezes appear at the top.
If you want Keltner Channel values alongside Bollinger Bands to confirm squeeze conditions
Fetch Bollinger Bands and Keltner Channel data from Twelve Data for each ticker in column A. Write Bollinger upper, lower, and midline into columns B, C, D. Write Keltner upper, lower, and midline into columns E, F, G. In column H, write SQUEEZE if the Bollinger Bands are inside the Keltner Channel, otherwise write NO SQUEEZE.
If you want historical bandwidth rather than current, to see if the squeeze is tightening
Fetch 20-period Bollinger Bands from Twelve Data for each ticker in column A for the last 20 trading days. Write the date in column A2 onward, the ticker in row 1 onward, and bandwidth values filling the matrix so you can see whether each ticker's bands are narrowing, stable, or widening over the past month.
Kill-chain: fetch bands, identify squeezes, add RSI to gauge pre-breakout momentum, and highlight candidates
Fetch 20-period Bollinger Bands from Twelve Data for each ticker in column A and calculate bandwidth, writing it into column B. Fetch 14-day RSI and write into column C. In column D, write SQUEEZE CANDIDATE if bandwidth is below 0.05 and RSI is between 40 and 60 (low volatility, no clear directional momentum), otherwise leave blank. Sort rows so SQUEEZE CANDIDATE entries appear first.
Try It
Get the 7-day free trial of SheetXAI and open your options watchlist sheet, then ask it to populate the Bollinger Band squeeze metrics and rank by bandwidth in one prompt. Also see adding RSI and MACD columns and the full Twelve Data overview.
