OPEN-SOURCE SCRIPT
Open Interest Bubbles [BackQuant]

Open Interest Bubbles [BackQuant]
A visual OI positioning overlay that aggregates futures open interest across major venues, normalizes it into a consistent “signal strength” scale, then plots extreme events as bubbles, labels, and optional horizontal levels directly on price.
What this is for
Open interest is one of the cleanest ways to track when positioning is building, unwinding, or aggressively shifting. The problem is raw OI is noisy, exchange-specific, and hard to compare across time. This script solves that by:
- Aggregating OI across multiple exchanges.
- Letting you choose what “OI signal” you care about (raw, delta, percent versions).
- Normalizing the signal so “big events” are easy to spot.
- Plotting those events as bubbles and levels at the exact price they occurred.
You end up with a clean, fast visual map of where large positioning changes occurred, and where those events may later matter as reaction points.
────────────────────────────────────────────────────────────
Plotting types (what you can display)
Bubbles

This mode plots OI events as size-bucketed circles on the chart. Bigger bubbles represent stronger normalized events. You can tune:
- Bubble sizing by bucket (Tiny → Huge).
- Heatmap vs solid color styling.
- Signed vs unsigned coloring (positive/negative separation or magnitude-only).
Best use:
- Spotting “where something changed” at a glance.
- Identifying clusters of positioning events around key price zones.
- Seeing whether the market is repeatedly building/closing positions at similar levels.
Levels

Levels mode draws a horizontal line at the anchor price when an extreme OI event triggers. These act like “positioning memory” levels:
- They do not claim to be support/resistance by themselves.
- They highlight prices where the derivatives market clearly did something meaningful.
Best use:
- Marking potential reaction zones.
- Combining with your price action tools (structure, OBs, FVGs) to confirm whether an OI level aligns with a technical level.
- Building a “map” of where leverage likely entered or exited.
Modes available in the script:
- Off
- Bubbles
- Bubbles + Labels
- Labels Only
- Levels + Labels
────────────────────────────────────────────────────────────
Aggregated Open Interest source (multi-exchange)
This indicator builds a single aggregated OI series by requesting OI data from multiple exchanges and summing it. You can toggle exchanges on/off:
- Binance, Bybit, OKX, Bitget, Kraken, HTX, Deribit
You can also choose OI units:
- COIN, OI in base units (native sizing)
- USD, converted for a dollar-value representation
Important note:
Not every symbol has OI data on every venue. If the script cannot build an aggregated series for the symbol, it will throw an error rather than quietly plotting garbage.
────────────────────────────────────────────────────────────
OI Source, what the bubbles are measuring
You control what “signal” is normalized and plotted:
- Delta, change in aggregated OI from the prior bar.
Use when you want to highlight bursts of new positioning or sudden unwind events.
- Raw OI, the aggregated open interest level itself.
Use when you want to highlight absolute positioning build-up periods.
- Delta %, percent change in OI.
Use when you want moves normalized to the current OI regime, useful across different market eras.
- Raw OI %, percent change form of the raw series.
Use when you want relative changes rather than absolute size.
Practical guidance:
- Delta modes are best for “event detection”.
- Raw modes are better for “regime context” and whether positioning is structurally rising or fading.
────────────────────────────────────────────────────────────
Normalization (the key to making it readable)
Because OI varies massively across assets and time, the script includes multiple normalization modes to convert your chosen OI source into a comparable “strength” value.
Options:
- ZScore, deviation from a rolling mean in standard deviation units.
- StdNorm, scaled by rolling standard deviation.
- AbsZScore, absolute value version for magnitude-only mapping.
- AbsStdNorm, absolute value version for magnitude-only mapping.
- None, plots raw values (advanced users only, often too noisy visually).
Why this matters:
Normalization makes a “1.5” or “3.0” threshold mean something across different assets and timeframes, instead of being stuck to raw OI units.
────────────────────────────────────────────────────────────
Threshold system (when bubbles/levels trigger)
The plot is driven by two user thresholds:
- Base Threshold
Controls where “meaningful” events start. Raising this reduces noise and focuses on larger deviations.
- Extreme Threshold
Controls what qualifies as a top-tier event. Extreme events are what you typically want to convert into labels and levels.
You also control side filtering:
- Both, show positive and negative events.
- Positive Only, show only increases (or positive signal side depending on source).
- Negative Only, show only decreases (or negative signal side).
In practice:
- Use Base Threshold to tune chart cleanliness.
- Use Extreme Threshold to mark only the “big stuff” that tends to matter later.
────────────────────────────────────────────────────────────
Anchor Source (where the bubble/level is placed)
The indicator places bubbles, labels, and levels at a price anchor you choose:
- HL2, Close, Open, High, Low, VWAP
This is important because “where you pin the event” changes how it reads:
- Close is clean and consistent for backtesting and candle-close logic.
- High/Low can better represent where the fight occurred intrabar.
- VWAP can be useful for “fair price” anchoring in active markets.
────────────────────────────────────────────────────────────
Style system (theme, palette, signed logic)
This script is built to look good and stay readable on busy charts.
Themes
- BackQuant, Classic, Ice, Fire, Mono, Custom
Palette Mode
- Solid, one consistent color
- Heatmap, intensity increases with magnitude
- Single Color Adaptive, adapts to chart background for clarity
Side Coloring
- Signed, positive and negative events can use different ramps
- Unsigned, magnitude-only coloring
Negative theme handling:
- Auto (mirrors your chosen theme),
- Invert (flips the ramp),
- Custom (fully user-defined negative palette).
What this gives you:
- You can run a clean “mono” look for professional charts.
- Or a high-contrast heatmap for fast scanning.
- Or fully custom branding colors for BackQuant-style presentation.
────────────────────────────────────────────────────────────
Labels (what’s inside the label)
When labels are enabled, the script can display:
- OI, the aggregated OI value
- OI + Norm, OI plus normalized strength
- Norm Only, just the normalized strength
- Src + Norm, the selected source value (Delta, Raw, %) plus normalized strength
You can also control:
- Left/Center/Right label alignment
- Number formatting style (Raw, Compact, Volume format)
Best practice:
- Use “Src + Norm” when you want both the raw event size and its rarity.
- Use “Norm Only” when you want a clean, minimal chart.
────────────────────────────────────────────────────────────
Levels and object limits (performance and cleanliness)
Because this script draws objects, it includes a hard cleanup system:
- You set Max Levels / Labels to control chart clutter.
- The script deletes older lines/labels when the limit is exceeded.
This is critical if you trade lower timeframes, where OI events can trigger frequently.
────────────────────────────────────────────────────────────
How to interpret the signals
What a large bubble usually means:
- A statistically large positioning change relative to recent history.
- This can represent fresh leverage entering, forced liquidations, or aggressive de-risking, depending on direction and context.
How to use levels:
- Treat them as “attention levels”, not automatic entries.
- Combine them with structure and liquidity tools:
- If price revisits an OI level and shows rejection, it often confirms that level mattered.
- If price slices through with no reaction, it often indicates the OI event was transitional, not defended.
Common setups:
- Clustered extreme bubbles near a breakout zone, then retest later.
- Extreme negative event at capitulation low, followed by structure flip.
- Extreme positive build into resistance, then unwind and mean reversion.
Also, please check out NoveltyTrade for the OI Aggregation logic & pulling the data source!
Here is the original script:

A visual OI positioning overlay that aggregates futures open interest across major venues, normalizes it into a consistent “signal strength” scale, then plots extreme events as bubbles, labels, and optional horizontal levels directly on price.
What this is for
Open interest is one of the cleanest ways to track when positioning is building, unwinding, or aggressively shifting. The problem is raw OI is noisy, exchange-specific, and hard to compare across time. This script solves that by:
- Aggregating OI across multiple exchanges.
- Letting you choose what “OI signal” you care about (raw, delta, percent versions).
- Normalizing the signal so “big events” are easy to spot.
- Plotting those events as bubbles and levels at the exact price they occurred.
You end up with a clean, fast visual map of where large positioning changes occurred, and where those events may later matter as reaction points.
────────────────────────────────────────────────────────────
Plotting types (what you can display)
Bubbles
This mode plots OI events as size-bucketed circles on the chart. Bigger bubbles represent stronger normalized events. You can tune:
- Bubble sizing by bucket (Tiny → Huge).
- Heatmap vs solid color styling.
- Signed vs unsigned coloring (positive/negative separation or magnitude-only).
Best use:
- Spotting “where something changed” at a glance.
- Identifying clusters of positioning events around key price zones.
- Seeing whether the market is repeatedly building/closing positions at similar levels.
Levels
Levels mode draws a horizontal line at the anchor price when an extreme OI event triggers. These act like “positioning memory” levels:
- They do not claim to be support/resistance by themselves.
- They highlight prices where the derivatives market clearly did something meaningful.
Best use:
- Marking potential reaction zones.
- Combining with your price action tools (structure, OBs, FVGs) to confirm whether an OI level aligns with a technical level.
- Building a “map” of where leverage likely entered or exited.
Modes available in the script:
- Off
- Bubbles
- Bubbles + Labels
- Labels Only
- Levels + Labels
────────────────────────────────────────────────────────────
Aggregated Open Interest source (multi-exchange)
This indicator builds a single aggregated OI series by requesting OI data from multiple exchanges and summing it. You can toggle exchanges on/off:
- Binance, Bybit, OKX, Bitget, Kraken, HTX, Deribit
You can also choose OI units:
- COIN, OI in base units (native sizing)
- USD, converted for a dollar-value representation
Important note:
Not every symbol has OI data on every venue. If the script cannot build an aggregated series for the symbol, it will throw an error rather than quietly plotting garbage.
────────────────────────────────────────────────────────────
OI Source, what the bubbles are measuring
You control what “signal” is normalized and plotted:
- Delta, change in aggregated OI from the prior bar.
Use when you want to highlight bursts of new positioning or sudden unwind events.
- Raw OI, the aggregated open interest level itself.
Use when you want to highlight absolute positioning build-up periods.
- Delta %, percent change in OI.
Use when you want moves normalized to the current OI regime, useful across different market eras.
- Raw OI %, percent change form of the raw series.
Use when you want relative changes rather than absolute size.
Practical guidance:
- Delta modes are best for “event detection”.
- Raw modes are better for “regime context” and whether positioning is structurally rising or fading.
────────────────────────────────────────────────────────────
Normalization (the key to making it readable)
Because OI varies massively across assets and time, the script includes multiple normalization modes to convert your chosen OI source into a comparable “strength” value.
Options:
- ZScore, deviation from a rolling mean in standard deviation units.
- StdNorm, scaled by rolling standard deviation.
- AbsZScore, absolute value version for magnitude-only mapping.
- AbsStdNorm, absolute value version for magnitude-only mapping.
- None, plots raw values (advanced users only, often too noisy visually).
Why this matters:
Normalization makes a “1.5” or “3.0” threshold mean something across different assets and timeframes, instead of being stuck to raw OI units.
────────────────────────────────────────────────────────────
Threshold system (when bubbles/levels trigger)
The plot is driven by two user thresholds:
- Base Threshold
Controls where “meaningful” events start. Raising this reduces noise and focuses on larger deviations.
- Extreme Threshold
Controls what qualifies as a top-tier event. Extreme events are what you typically want to convert into labels and levels.
You also control side filtering:
- Both, show positive and negative events.
- Positive Only, show only increases (or positive signal side depending on source).
- Negative Only, show only decreases (or negative signal side).
In practice:
- Use Base Threshold to tune chart cleanliness.
- Use Extreme Threshold to mark only the “big stuff” that tends to matter later.
────────────────────────────────────────────────────────────
Anchor Source (where the bubble/level is placed)
The indicator places bubbles, labels, and levels at a price anchor you choose:
- HL2, Close, Open, High, Low, VWAP
This is important because “where you pin the event” changes how it reads:
- Close is clean and consistent for backtesting and candle-close logic.
- High/Low can better represent where the fight occurred intrabar.
- VWAP can be useful for “fair price” anchoring in active markets.
────────────────────────────────────────────────────────────
Style system (theme, palette, signed logic)
This script is built to look good and stay readable on busy charts.
Themes
- BackQuant, Classic, Ice, Fire, Mono, Custom
Palette Mode
- Solid, one consistent color
- Heatmap, intensity increases with magnitude
- Single Color Adaptive, adapts to chart background for clarity
Side Coloring
- Signed, positive and negative events can use different ramps
- Unsigned, magnitude-only coloring
Negative theme handling:
- Auto (mirrors your chosen theme),
- Invert (flips the ramp),
- Custom (fully user-defined negative palette).
What this gives you:
- You can run a clean “mono” look for professional charts.
- Or a high-contrast heatmap for fast scanning.
- Or fully custom branding colors for BackQuant-style presentation.
────────────────────────────────────────────────────────────
Labels (what’s inside the label)
When labels are enabled, the script can display:
- OI, the aggregated OI value
- OI + Norm, OI plus normalized strength
- Norm Only, just the normalized strength
- Src + Norm, the selected source value (Delta, Raw, %) plus normalized strength
You can also control:
- Left/Center/Right label alignment
- Number formatting style (Raw, Compact, Volume format)
Best practice:
- Use “Src + Norm” when you want both the raw event size and its rarity.
- Use “Norm Only” when you want a clean, minimal chart.
────────────────────────────────────────────────────────────
Levels and object limits (performance and cleanliness)
Because this script draws objects, it includes a hard cleanup system:
- You set Max Levels / Labels to control chart clutter.
- The script deletes older lines/labels when the limit is exceeded.
This is critical if you trade lower timeframes, where OI events can trigger frequently.
────────────────────────────────────────────────────────────
How to interpret the signals
What a large bubble usually means:
- A statistically large positioning change relative to recent history.
- This can represent fresh leverage entering, forced liquidations, or aggressive de-risking, depending on direction and context.
How to use levels:
- Treat them as “attention levels”, not automatic entries.
- Combine them with structure and liquidity tools:
- If price revisits an OI level and shows rejection, it often confirms that level mattered.
- If price slices through with no reaction, it often indicates the OI event was transitional, not defended.
Common setups:
- Clustered extreme bubbles near a breakout zone, then retest later.
- Extreme negative event at capitulation low, followed by structure flip.
- Extreme positive build into resistance, then unwind and mean reversion.
Also, please check out NoveltyTrade for the OI Aggregation logic & pulling the data source!
Here is the original script:

Script de código abierto
Fiel al espíritu de TradingView, el creador de este script lo ha convertido en código abierto, para que los traders puedan revisar y verificar su funcionalidad. ¡Enhorabuena al autor! Aunque puede utilizarlo de forma gratuita, recuerde que la republicación del código está sujeta a nuestras Normas internas.
Check out whop.com/signals-suite for Access to Invite Only Scripts!
Exención de responsabilidad
La información y las publicaciones no constituyen, ni deben considerarse como asesoramiento o recomendaciones financieras, de inversión, de trading o de otro tipo proporcionadas o respaldadas por TradingView. Más información en Condiciones de uso.
Script de código abierto
Fiel al espíritu de TradingView, el creador de este script lo ha convertido en código abierto, para que los traders puedan revisar y verificar su funcionalidad. ¡Enhorabuena al autor! Aunque puede utilizarlo de forma gratuita, recuerde que la republicación del código está sujeta a nuestras Normas internas.
Check out whop.com/signals-suite for Access to Invite Only Scripts!
Exención de responsabilidad
La información y las publicaciones no constituyen, ni deben considerarse como asesoramiento o recomendaciones financieras, de inversión, de trading o de otro tipo proporcionadas o respaldadas por TradingView. Más información en Condiciones de uso.