Exposure Sheet vs Separate GEX/DEX/VEX/CHEX Calls: When to Use the Combined Endpoint | FlashAlpha

Exposure Sheet vs Separate GEX/DEX/VEX/CHEX Calls: When to Use the Combined Endpoint

FlashAlpha's /v1/exposure/sheet returns gamma, delta, vanna, and charm exposure aligned on one strike axis in a single call, plus DAG (delta-adjusted gamma), the gamma-wall peaks, and the Line-in-the-Sand inflection strike. Here is when the combined sheet beats four separate GEX/DEX/VEX/CHEX requests, the extra fields it adds, and when the per-greek endpoints are still the right call.

T
Tomasz Dobrowolski Quant Engineer
Jun 10, 2026
17 min read
GammaExposure API DealerPositioning DeveloperGuide Greeks

You can read dealer gamma, delta, vanna, and charm one endpoint at a time, or pull them together from /v1/exposure/sheet/SPY in a single request. The math behind each greek is identical either way - the question is how many calls you make, who aligns the strikes, and which extra fields you need. Here is the decision.


The Rule of Thumb

Use /v1/exposure/sheet (combined)

"Give me the whole exposure picture for this symbol." One call returns all four greeks per strike on a shared axis, plus DAG, chain totals, the gamma-wall peaks, and the Line-in-the-Sand strike. Use it for dashboards, screeners, and anything that reads more than one greek.

Use /v1/exposure/{gex,dex,vex,chex} (separate)

"I only need one greek." A single per-greek call is smaller, and GEX alone is reachable on the Free tier. Use it when one metric drives your logic, or when tier gating means you only have access to one of them.

If you only remember one sentence: reading two or more greeks means one sheet call, not two-to-four separate calls.

One Call vs Four

The per-greek endpoints each return their own per-strike array. To assemble a combined view you would call all four, then join them on strike yourself - and handle the case where a strike appears in one array but not another. The sheet does that join server-side and returns one row per strike with every greek already populated.

Four separate callsOne sheet call
Requests4 (gex + dex + vex + chex)1
Rate-limit cost4 against your daily quota1
Strike alignmentYou join four arrays on strikeDone for you - one row per strike
Round-trip latency4 serial, or 4 parallel connections1
Extra fieldsPer-greek arrays onlynet_dag, chain totals, gamma peaks (walls), Line-in-the-Sand strike
TierGEX Free+, DEX/VEX/CHEX Basic+Growth+

The tradeoff is tier: the sheet is Growth and above, while GEX on its own starts on the Free tier. If your whole product reads a single greek, the per-greek endpoint is cheaper to reach. The moment you read two, the sheet is fewer requests and less client code.

What the Sheet Adds

Beyond aligning the four greeks, the sheet returns three things the per-greek endpoints do not:

  • DAG (delta-adjusted gamma) - a delta-weighted gamma column returned per strike (dag) and as a chain total (net_dag), surfaced alongside the four greeks so you can read gamma in delta-adjusted terms without computing it yourself.
  • Gamma peaks - the peaks array surfaces the wall strikes directly, each with its net_gex, a normalized strength, and a side of call_wall or put_wall, so you do not scan the whole rowset to find them.
  • Line-in-the-Sand strike (LIS) - the lis object flags a single inflection strike with its magnitude: the level the sheet identifies as the key pivot in the exposure profile.

The response also carries chain totals (net_gex, net_dex, net_dag, and the rest) and, when you pass ?expiration=, OPEX / triple-witching flags. If you were calling four endpoints and then computing walls and a delta-adjusted-gamma column yourself, the sheet replaces both the calls and that post-processing.

In Code

The four per-greek endpoints are first-class methods on the official SDKs (pip install flashalpha); the combined sheet is one REST call. The contrast in Python:

from flashalpha import FlashAlpha
import requests

fa = FlashAlpha("YOUR_API_KEY")

# The long way: four SDK calls, then align the four arrays on strike yourself
gex  = fa.gex("SPY")
dex  = fa.dex("SPY")
vex  = fa.vex("SPY")
chex = fa.chex("SPY")
# ...you still have to join gex/dex/vex/chex per strike in your own code...

# The combined way: one request, every greek already aligned per strike,
# plus totals, net_dag, the Line-in-the-Sand strike, and the gamma peaks
sheet = requests.get(
    "https://lab.flashalpha.com/v1/exposure/sheet/SPY",
    headers={"X-Api-Key": "YOUR_API_KEY"},
).json()

print(sheet["totals"]["net_gex"], sheet["lis"]["strike"])
for wall in sheet["peaks"]:
    print(wall["side"], wall["strike"], wall["strength"])

SDKs are available for Python, JavaScript, C#, Go, and Java; the per-greek methods (gex, dex, vex, chex) exist in each. See the Python SDK reference for the full method list.

All four exposure greeks in one call

Try the exposure sheet in the browser before you wire it up.

Get API Access

When the Separate Endpoints Win

The combined sheet is not always the right call. Reach for a single per-greet endpoint when:

  • One greek drives your logic. A gamma-flip alert only needs /v1/exposure/gex (or /v1/exposure/levels); pulling vanna and charm you never read is wasted payload.
  • You are on the Free or Basic tier. GEX is Free+, the other three are Basic+, and the sheet is Growth+. If you have not upgraded to Growth, the per-greek endpoints are how you reach this data.
  • You want the lightest possible response. A single per-strike array is smaller over the wire than the full four-greek sheet, which matters for high-frequency polling of one metric.

Frequently Asked Questions

No. The per-strike gamma, delta, vanna, and charm values are computed the same way whether you call /v1/exposure/sheet or the individual /v1/exposure/{gex,dex,vex,chex} endpoints. The sheet aligns them on one strike axis and adds DAG (delta-adjusted gamma), the gamma-wall peaks, and the Line-in-the-Sand inflection strike; it does not recompute the greeks differently.
Use /v1/exposure/sheet whenever you read two or more of the exposure greeks for a symbol. It collapses four requests into one, spends one unit of your rate-limit quota instead of four, aligns every greek on a shared strike axis, and returns the chain totals, the gamma peaks, and the Line-in-the-Sand strike so you do not post-process the arrays yourself.
DAG is delta-adjusted gamma: a delta-weighted gamma figure the sheet returns per strike (dag) and as a chain total (net_dag), alongside the four greeks. It lets you read gamma in delta-adjusted terms straight from the response instead of computing it yourself.
/v1/exposure/sheet is Growth tier and above. For comparison, /v1/exposure/gex is Free and above, and /v1/exposure/{dex,vex,chex} are Basic and above. If you are below Growth, assemble the view from the per-greek endpoints; on Growth and above, the single sheet call is simpler.
The opposite - it costs less. One sheet request spends one unit of your daily quota and returns all four greeks; calling the per-greek endpoints separately spends four. For any workflow that reads more than one greek, the sheet is the rate-limit-efficient choice.

Live Market Pulse

Get tick-by-tick visibility into market shifts with full-chain analytics streaming in real time.

Intelligent Screening

Screen millions of option pairs per second using your custom EV rules, filters, and setups.

Execution-Ready

Instantly send structured orders to Interactive Brokers right from your scan results.

Join the Community

Discord

Engage in real time conversations with us!

Twitter / X

Follow us for real-time updates and insights!

GitHub

Explore our open-source SDK, examples, and analytics resources!