VolSignalsIndex vol & positioning intelligence
Methodology audit · a reply to an article published September 8, 2026

Who took liquidity is the wrong question

An article on option flow methodologies lists VolSignals among four "dealer positioning" vendors and attributes to all four a method built on assumptions we do not use. It presents a volatility-surface approach as what sophisticated institutions do. The two bank desks that publish a method named that approach and built on exchange participant records instead. Below, each questionable assertion is quoted and tested against the exchange record, the rulebook and the published bank methodology.

Assertions audited 17Assertions with a shown sample 2, both contradicted by itRulebook provisions cited 12Bank research notes cited 5Positions, levels or forecasts shown in the article 0

00 · The scorecard

Seventeen assertions, one by one

Each row quotes the article in its own words (an ellipsis marks a trim; nothing is paraphrased), then the finding and the reason. The sources follow in the sections below.

#The article, verbatimFindingWhy
1“Because an entity has the tag of “market maker” or “firm”, they must be providing liquidity on that symbol. THIS IS FALSE”The premise is right; the refutation changes the definitionLiquidity provision is a registered role with quoting and dealing obligations. Showing that market makers sometimes cross the spread changes neither the role nor the inventory.
2“for the month of April 2025, the aggressor vs. passive count is equal no matter what the type of liquidity provider”Wrong on its own numbersThe claim is about counts. The published SPX table shows firms 33% aggressive by count, professional customers 42%, broker-dealers 45%, market makers 52%. Those are not equal, and by size the spread is wider still.
3“You can see the same behavior in SPY. In fact, all individual stock symbols looked similar to this: a balancing act with no discernable standout giver/taker of liquidity.”Contradicted by the article’s own tableThe published SPY table shows market makers 92% passive by count and 81% by size, customers 95% aggressive by count.
4“Open/close data is showing opened vs. closed trades. THIS IS FALSE”False as statedThe field exists and is required on the non-market-maker side, customer confirmations must state it, and corrections run through the Clearing Editor. It has one exception (market makers, net by account) and one default (Rule 6.1(h)), both disclosed in section 04. The article cites nothing.
5“tool providers often claim modeling volume against open interest reveals if a trade is opened versus closed ... option FLOW scanners must make structural assumptions. And that is typically to use the short-cut of treating the option data as if retail traders are buying puts (to protect portfolios) and selling calls (overwriting), and market makers/dealers hold the opposite positions.”MisattributedThat describes open-interest products. Signed participant data needs no such model, because the field is in the record.
6“There is a penalty for marking closing trades that are actually opening trades. There is no penalty if opening trades are actually closing trades.”Asserted without a citation; the nearby rules cut the other wayThe accuracy duty on the original mark runs both ways under Rules 6.1(i) and 8.14. Position limits and closing-only restrictions test the opening designation, which is a reason for care before marking open. Rule 6.1(h) lets a permit holder pick either value when it does not know, and corrections are made through the Clearing Editor.
7“Given market makers aren’t required or enforced to designate, they don’t. You can be confident a closing trade is actually a closing trade, but you cannot share that same confidence with an opening trade.”True, and it does not touch a net buildA market-maker position in a series is contracts bought less contracts sold, and both fields are filed for every transaction under Rule 6.1(e). The position construction does not depend anywhere on this classification being correct. Change the designation ("Opening" / "Closing") on any number of trades and the calculated position is identical, before and after.
8“Any tool provider using Open/Close methodology can only provide data for SPX and VIX. If they are saying they can provide similar analytic for options on stocks, they cannot.”FalseCboe publishes the data set across the classes on its four exchanges, and the article’s own SPY table is participant-tagged data. UBS and Barclays build single-stock retail gauges from OCC open/close volume. Whether single-stock dealer positioning can be built is a question of exchange coverage.
9“Because official open/close OI data is only updated once a day after market closes, there is no transparency for intraday changes”FalseCboe has published the Open-Close Volume Summary in 10-minute intraday snapshots since 2011 and 1-minute snapshots since 2019. It is signed volume by origin. VS3D positions are built on the 10-minute file.
10“In times of stress, only 50% of counterparties tagged as MMs are providing liquidity. That means in times of stress, open/close is half wrong. You would statistically get the same accuracy as if you guessed every single trade.”Non sequiturThe aggressor share of a tag has no bearing on the signed inventory that tag accumulates. Half of the fills crossing the spread does not make half of the positions wrong.
11“our algo correctly identifies the liquidity provider around 85% of the time. To compare, GEX is 55-60%. Open/Close varies depending on if markets are calm or volatile. Calm it would be around 80%, volatile around 52%.”Unpublished, and scored on the wrong targetNo sample, period or method is given. The 85% is scored against the resting-side flag the article itself says does not describe positioning, and it sits inside the range the published trade-classification literature reports. The 52% can only be a decision rule applied on top of open/close data, and it is close to the market-maker aggressive share in the article’s own table.
12“the core assumption for GEX is that all calls are sold and all puts are bought by customers. That assumption is simplistic and wrong, which undermines the effectiveness of mapping dealer hedging.”Correct, and not our methodSigned participant data exists to replace that assumption. Bank desks publish the naive figure beside the signed one for exactly this reason.
13“dealer hedging is reflected in the vol plane. This is how dealers hedge on liquid issuances because they have 100% control over prices. ... When a dealer limit order is executed, they are closing a position that exists.”Two of three claims overstatedQuote adjustment comes first and the residual is hedged in futures; the desks that publish size that residual against last-hour futures volume. On the article’s own table customers set the price on more than half of SPX size. A filled quote opens risk, and deemed-closing is position accounting.
14“when you hear a “GEXer” talk about positive gamma strikes being magnets, it is actually vanna that creates this impact. If it were gamma, dealers would need to flip from buying to selling or vice versa to hedge at some point without the underlying changing directions, and that is never the case with gamma.”Right about gamma, wrong about what a pin requiresA long-gamma hedge opposes the move on both sides of the strike and is largest at the strike, which produces the reversal. Vanna acts only through implied vol, which need not move at a pin. The pinning literature is built on delta-hedge rebalancing.
15“That brings us to why the most sophisticated institutions build “dealer positioning” models using a “vol surface” instead of open/close data.”Unsupported; the desks that publish chose participant recordsBofA lists a local volatility surface among three ways to sign a trade and grounds its estimates in exchange participant records "instead". Barclays names the same alternative and builds on Cboe customer-type flow data. Neither publishes a comparison; neither builds on a surface.
16“Cboe does not match open/close data to intent. And they don’t because they sell their data to these liquidity providers directly.”Half right, half unsourcedThe record reports what a trade did to an account, not why it was done. The data set is sold to anyone who licenses it, and the article offers no source for the motive.
17“The popular retail dashboard “dealer positioning visualization” providers: SPOT GAMMA, VOL SIGNALS, CONVEX VALUE, OPTION DEPTH. These providers ... parse the option data against open-interest, volume, and greeks to map out dealer positioning (GEX, DEX, and VEX).”MisattributedVS3D positions are signed participant inventories by strike and expiry, with no open-interest inference in them. The article does not describe or test any VolSignals output.
Positions shown in the article
0
Levels or forecasts tested
0
Samples cited for the accuracy figures
0
VolSignals outputs examined
0

01 · The hinge

Role and inventory are different questions

Every argument in the article that touches signed participant data swaps one question for another. "What does the hedging cohort hold" becomes "who crossed the spread". They have different answers, and a positioning product measures only the first.

The article, assumption 1

Because an entity has the tag of "market maker" or "firm", they must be providing liquidity on that symbol. THIS IS FALSE

As written, the assumption is true. The article refutes it by changing what "providing liquidity" means. A market maker is a liquidity provider in the classes it is appointed to because it registered as one and took on the obligations that come with registration: a continuous two-sided market during the day, and dealing for its own account when supply and demand come apart. Firms and broker-dealers carry the other side of customer imbalances in practice, and both desks that publish treat them as hedgers. The role belongs to the participant in the product. It stays in place on a fill where the market maker happened to cross the spread.

Cboe Rule 5.51(a), Market-Maker obligations

In registering as a Market-Maker, a Trading Permit Holder commits itself to various obligations. Transactions of a Market-Maker in its market-making capacity must constitute a course of dealings reasonably calculated to contribute to the maintenance of a fair and orderly market ... Ordinarily, a Market-Maker must: (1) during the trading day, maintain a continuous two-sided market in each of its appointed classes, pursuant to Rule 5.52(d); (2) engage, to a reasonable degree under the existing circumstances, in dealings for its own accounts when there exists, or it is reasonably anticipated that there will exist, a lack of price continuity

The obligation has stated dimensions under Rule 5.52(d): continuous electronic quotes for 90% of the time in 60% of the series of the appointed classes. A registered role with a measured quoting duty is still a role.

The tag also has regulatory consequences. The options market-maker exemption from the SEC's net capital rule, which Cboe reminded its permit holders of in Regulatory Circular RG13-166, is available only to a firm whose securities business is "The (b)(1) exemption is only available to an options market maker (i) whose securities business, except for an occasional non-specialist related securities transaction for its own account, is limited to that of acting as an options market maker on a national securities exchange". A market maker that trades outside that business more than occasionally loses the exemption.

The article's definition is passivity on individual fills, and by that definition market makers fall short about half the time in SPX. Barclays, working from the same participant categories, uses the ordinary meaning:

Barclays Derivatives Research, Reading the Dealer's Hand, September 23, 2025

Market makers (as designated liquidity providers), and Firms & Broker-dealers (encompassing bank flows) tend to be more sophisticated, and actively hedge their exposure.

Under either definition, the thing a positioning product measures stays the same. A market maker who lifts a customer's resting offer ends the trade short exactly the contracts a market maker who was lifted ends short, with the same delta, gamma, vega and the same hedge to follow. The aggressor flag records how the spread was crossed on one fill. The tag records who is in the business of carrying the other side. The inventory records what is held. Figure 1 draws the same trade both ways.

A. Customer lifts the offerThe customer crosses the spread; the market maker was quoting.CUSTOMERbuys 1,000 callsMARKET MAKERsells 1,000 callscustomer takesTHE EXCHANGE RECORDoriginsideposition effectqtyCustomerBuyOpen1,000Market makerSelln/a (net account)1,000THE INVENTORY AFTER THE TRADEMarket maker: short 1,000 callssame delta, same gamma, same vega, same hedgeaggressor on this fill: customerliquidity provider (the role in the product): market makerB. Market maker lifts the offerThe market maker crosses the spread; the customer had a resting order.CUSTOMERbuys 1,000 callsMARKET MAKERsells 1,000 callsmarket maker takesTHE EXCHANGE RECORDoriginsideposition effectqtyCustomerBuyOpen1,000Market makerSelln/a (net account)1,000THE INVENTORY AFTER THE TRADEMarket maker: short 1,000 callssame delta, same gamma, same vega, same hedgeaggressor on this fill: market makerliquidity provider (the role in the product): market maker

Figure 1. One customer buy of 1,000 calls against a market maker, drawn with each side as the aggressor. The exchange record, the resulting inventory, and the liquidity provider are identical in both panels.

The article then reports that in SPX during April 2025 market makers were aggressive on about half of their fills, and concludes that a positioning model built from participant tags is unreliable. A market maker that crosses the spread on half its fills still holds, at the end of the day, the net of everything it bought and sold. The aggressor share describes execution style. It does not determine the sign or the size of the position.

Crossing the spread is also part of the job. A market maker lifts an offer to leg the spread it was just hit on, hits a bid to flatten a strike it is too long, and crosses the market to hedge the vega of a fill that just arrived. Each of those reads "aggressive" on a trade report, and each is a market maker managing inventory. A liquidity provider that was passive on most fills would be running a different business.

The article's own evidence has a consequence the article does not draw. Its first section says the aggressor flag does not tell you how the hedging cohort is positioned. Its accuracy figure, later on, is a model's ability to reproduce that flag. If the first section is right, the accuracy figure certifies a model on the wrong target. The flag itself is exact: it records which side rested. A signed inventory is calculated without it, because who rested is not the quantity a positioning product measures.

02 · The evidence

Two tables that contradict the text around them

The only data in the article is a pair of April 2025 aggressor-versus-passive tables for SPX and SPY. Read as published, they contradict two of the sentences written about them.

The article, on the SPX table

we can aggregate the capacity for SPX to see that for the month of April 2025, the aggressor vs. passive count is equal no matter what the type of liquidity provider

By count the market maker line is near even at 51.76%, and so is the customer line at 48.57%. Firms are 33.21% aggressive by count and professional customers 42.48%. By size nothing is even: firms 75.57% aggressive, broker-dealers 69.25%, market makers 56.43%, professional customers 53.82%, customers 45.49%. The table does not say "equal no matter what the type".

The article, on the SPY table

You can see the same behavior in SPY. In fact, all individual stock symbols looked similar to this: a balancing act with no discernable standout giver/taker of liquidity.

The SPY table shows market makers passive on 92% of their fills by count and 81% by size, with customers aggressive on 95% by count. That is the pattern the article says tags would produce if they meant anything, and it sits in the article's own second table, directly under the sentence saying it does not appear.

SPX (SPX/SPXW)aggressive share of size, April 2025, as published50%0%100%SPYaggressive share of size, April 2025, as published50%0%100%Broker-dealer69.3%47.1%Customer45.5%90.7%Firm75.6%30.4%Market maker56.4%18.6%Professional customer53.8%60.8%Reading: in SPX the market maker line sits near the middle; in SPY it sits far left. The article calls these "the same behavior".

Figure 2. Aggressive share of size by capacity, April 2025, re-drawn from the two tables published in the article. The market maker line is highlighted in each panel.

The SPX and SPY panels differ for reasons of order handling, not of role. SPY option volume is dominated by retail marketable orders routed through internalization and price-improvement mechanisms, where the market maker is the responder and is recorded as the passive side by construction, and the one-cent increment leaves little room to rest inside the spread. SPX is an institutionally traded, single-listed product outside the penny program, quoted in nickels below three dollars and dimes above under Rule 5.4, and usually wider than one tick, with orders worked and rested on both sides all day, and a substantial share of size printing through complex orders, auctions and floor crosses. In that market a desk takes a resting customer order when the price suits its inventory, and that fill is recorded as aggressive.

Cboe Rule 5.4, minimum increments (Penny Interval Program)

$0.01 for all quotations in series that are quoted at less than $3 per contract and $0.05 for all quotations in series that are quoted at $3 per contract or greater, $0.01 for all SPY option series

SPX is not in the program; its increments are $0.05 below $3 and $0.10 at $3 and above

The sample has two further problems. April 2025 contains the tariff shock, so a one-month table blends a stress regime with a recovery and cannot support the separate "in times of stress" claim made later. And on a package execution, an auction response or a floor cross there is no resting side in the ordinary sense; the matching engine assigns the "aggressor" label, and nothing in the order book shows who wanted the trade.

03 · The record

What the exchange knows about each trade

The article treats OPRA as the source of all option data and reasons from what OPRA lacks. Participant-signed positioning comes from the exchange's own trade and clearing records, which contain the fields OPRA omits.

The article, assumption 2

While OPRA data cannot confirm if customer trades are matched and labeled correctly, tool providers often claim modeling volume against open interest reveals if a trade is opened versus closed.

The premise is right and the inference is wrong. OPRA carries price, size, exchange, timestamp and sale condition codes. It carries no participant origin, no buy or sell side and no position effect, so a vendor that needs a side infers one by comparing the print to the quote, which is the midpoint heuristic the article itself rejects. The exchange sells a separate product because its own record contains fields that are not in the OPRA feed. Cboe Rule 6.1(e) lists what a trading permit holder must file for every transaction so the exchange can match and clear it:

Cboe Exchange Rule 6.1(e), trade information

The trade information shall show for each transaction (1) the identity of the purchasing Clearing Trading Permit Holder and the writing Clearing Trading Permit Holder, (2) the underlying security, (3) the exercise price, (4) the expiration month, (5) the number of option contracts, (6) the premium per unit, (7) the identity of the executing brokers representing both the purchasing and writing Clearing Trading Permit Holders, (8) whether a purchase or a writing transaction, (9) except for a transaction executed by or for a Market-Maker, whether an opening or closing transaction, (10) the identity of the account of the Clearing Trading Permit Holder in which the transaction was effected, (11) the time of purchase or sale, (12) whether a put or call

Rules of Cboe Exchange, Inc. (C1 rulebook, current edition)

Side, capacity, account, and the opening or closing status of every non-market-maker transaction are in the record by rule. The capacity is also disclosed by the exchange itself: Rule 6.2(a) sends it to the counterparty on every trade.

Cboe Exchange Rule 6.2(a), transaction reports

The System sends to a User aggregated and individual transaction reports for the User’s transactions, which reports include transaction details; the contra party’s EFID, clearing Trading Permit Holder account number, and Capacity

The Open-Close data set is the aggregation of those fields. Cboe's own product description:

Cboe DataShop, Open-Close Volume Summary

Open-Close data delivers comprehensive volume analytics for options trading across all Cboe exchanges (BZX, C1, C2, EDGX) ... This dataset categorizes every trade by participant type (customer, professional customer, broker-dealer, market maker), action (buy/sell), and position (open/close) ... customer and professional customer activity further broken down by contract size (less than 100, 100-199, greater than 199 contracts).

Historical data availability: C1 end of day from 2005-01-03; C1 10-minute interval from 2011-01-03; C1 1-minute interval from 2019-10-07; BZX, C2 and EDGX end of day from 2018-01-02 and 10-minute and 1-minute intervals from 2019-03-01.

datashop.cboe.com, product page and historical-availability table. The product summary names four participant types; the file separates firms from broker-dealers as well, which is how BofA's appendix describes it: "the exchange's own records for 5 types of market participants: customers, pro-customers, broker-dealers, market makers, and firms". The firm column in the worked example in section 04 is that category.
What an OPRA last sale carriesthe public consolidated feed every vendor licenses✓symbol, expiration, strike, put or call✓price and size✓time and exchange✓sale condition code–which side was the buyer–participant origin (customer, firm, market maker)–opening or closing–account and clearing firmWhat the exchange record carriesCboe Rule 6.1(e) trade information; the Open-Close data set✓symbol, expiration, strike, put or call✓price and size✓time✓purchase or writing transaction (side)✓origin: customer, pro customer, firm, broker-dealer, market maker✓opening or closing (customer side)✓customer size band✓snapshots every 10 minutes intraday

Figure 3. Fields on a public OPRA last sale beside fields in the exchange record. The three fields the article says nobody has are all in the exchange record, by rule.

The article, on cadence

Because official open/close OI data is only updated once a day after market closes, there is no transparency for intraday changes

Cboe has published the ten-minute intraday file on its original exchange since January 2011 and the one-minute file since October 2019. VS3D positions are built on the ten-minute file, so the position you see at 10:30 is the position through 10:20.

The article, on the vendors' method

Since option tool providers don’t have an intraday data feed that enables real-time visibility into whether a transaction is an “opening” or “closing” order, option FLOW scanners must make structural assumptions. And that is typically to use the short-cut of treating the option data as if retail traders are buying puts (to protect portfolios) and selling calls (overwriting), and market makers/dealers hold the opposite positions.

That describes an open-interest product. A product built from signed participant volume receives the buy or sell, the origin and the position effect as fields, so there is no structural assumption to make about who bought the puts when the record says which origin bought them. The article has grouped four vendors by the shape of their output and then assigned every one of them the weakest input.

04 · The marks

What the rulebook says about "open" and "close"

The article asserts an enforcement asymmetry and a market-maker exemption. The rulebook does contain routes to a wrong mark. They are worth stating in full, because none of them changes a position calculated by netting buys against sells.

The article, on penalties and marking

There is a penalty for marking closing trades that are actually opening trades. There is no penalty if opening trades are actually closing trades. Given market makers aren’t required or enforced to designate, they don’t.

Two provisions help the article's side. Rule 6.1(h) lets a trading permit holder that does not know an order's opening or closing status report either value at its discretion, and default an unknown capacity to the broker-dealer code:

Cboe Rule 6.1(h), unknown values

If a Trading Permit Holder has no knowledge of the account Capacity, opening or closing status or time-in-force of an order when the Trading Permit Holder systematizes the order pursuant to Rule 5.7 or reports a trade pursuant to this Rule, as applicable, the Trading Permit Holder may use the following values when systematizing the order through an Exchange-approved device or reporting a transaction, respectively: (1) either open or close, in the Trading Permit Holder’s discretion (for opening or closing status); (2) broker-dealer Capacity code of (B)

Rule 6.6(b) lets the position-effect field be revised through the Clearing Editor on the trade date, and only a change away from the customer capacity code needs a reason code:

Cboe Rule 6.6(b), Clearing Editor

Trading Permit Holders may change the following fields through the Clearing Editor: ... (6) Position Effect (open/close); (7) Capacity (if the change is from a customer Capacity code of (C) to any other Capacity code, it must be accompanied by a Reason Code and notice of such change will automatically be sent to the Exchange

Two consequences follow. The position-effect field on the non-market-maker side is a reported field with a defined default, and the broker-dealer category is the one origin that can absorb unknowns, which is a reason to read it with more care than the others. Against that, the accuracy of every reported field is the trading permit holder's responsibility, and a customer's written confirmation must state whether the trade opened or closed a position:

Cboe Rule 6.1(i), accurate information

it remains the responsibility of the Trading Permit Holder to provide accurate trade information necessary for the reporting of a trade to time and sales reports or to allow the Exchange to properly match and clear trades

Cboe Rule 9.5, confirmation to customers

shall indicate whether the transaction is a purchase or sale, whether the transaction was an opening or a closing transaction and whether a principal or agency transaction

The market-maker exemption is real: Rule 6.1(e)(9) excepts market-maker transactions from the opening or closing designation. It exists because a market-maker account is carried net, so the position in a series is purchases less sales and no designation is needed. The rulebook states that convention in the exercise rule for American-style index options:

Cboe Rule 6.20(e)(3), exercise of American-style index options, definitions

every transaction in an option series effected by a market-maker in a market-maker’s account shall be deemed to be a closing transaction in respect of the market-maker’s then positions in such option series. No Trading Permit Holder may adjust the designation of an “opening transaction” in any such option to a “closing transaction” except to remedy mistakes or errors made in good faith.

Written for exercise eligibility, not for SPX, which is European-style; cited here as the rulebook's own statement of the net-account convention

The same paragraph is the closest thing in the rulebook to the asymmetry the article asserts: an opening designation may not be re-marked closing except to remedy a good-faith error, with no symmetric clause. It is narrower than the article's version. It governs post-trade re-designation in one class of options, not the standard applied to the original mark, which Rules 6.1(i) and 8.14 place on the trading permit holder in both directions. The penalty exposure that does exist applies to the opening mark: Rule 8.30 position limits and Rule 4.4 closing-only restrictions both test the opening designation, and the minor rule violation plan carries a fine for trading in a restricted class. A permit holder has reason to be careful before marking open.

None of this changes the market-maker position, because the position calculation does not use the designation at all. A market maker's position in a series is its buys less its sells, and that is the quantity we accumulate for each origin every ten minutes. A sale reduces what the seller holds whether the ticket said open or close. We use the designation later, as a check: the customer side is reconciled against listed open interest, and a wrong mark shows up there.

The article, conclusion

Open/close data is showing opened vs. closed trades. THIS IS FALSE

As a blanket claim this is false. The field exists, it is required, it is confirmed to the customer in writing, and it has one stated exception and one stated default. The article could have argued a measured mislabel rate, how often, in what class, and by how much, and it does not.

Mis-marks happen. They do not change a net position: buys less sells is the same number whatever designation each ticket carried. A mis-mark does break any method that sums only the trades marked opening, which is why we check against open interest instead. The worked example is on this site. On September 2 firm accounts bought about 18,000 of the September 9 7825 calls under a closing code, taking the firm net in that series from a small short to 17,765 long by the close, against a market-maker net of 17,914 short, with the difference in the other capacities; another 1,225 followed the next morning. A closing buy of that size requires a pre-existing short of that size, and our record for the series, back to its first trade, shows none. The next morning the clearing house published 18,522 contracts of open interest in a series whose open interest had been a few hundred, 757 above the firm line in our record. Open interest is the total across every participant, so it bounds the position without confirming which column holds the long. It does refute the closing code on the ticket. The direction is the reverse of the one the article describes: here an opening buy was marked closing. Designations are wrong in both directions, and the position calculation does not depend on them.

Check one: the strikes sum to zero

Every contract has one long and one short, so every participant's position at a strike must add to zero. Any construction that signs both sides of a trade passes this automatically, so it works as a filter. It fails only for methods that assign a position to one side without booking the other, which is what open-interest gamma does, and it cannot detect a position moved between two participant columns.

Check two: open interest bounds the line

A series' open interest, published by the clearing house each morning, is the total across all participants, so it can never be smaller than any one participant's long. When a screen shows a position larger than the whole series, the contracts to hold it do not exist. If a large position was genuinely opened on both sides today, open interest rises by its size tomorrow; if one side was closing, it does not, and a screen showing a new position where open interest did not move has to name the existing position it came out of. Neither test confirms which column holds the contracts. Open interest is the one public check available, and anyone with a broker screen can run it on any line.

05 · The institutions

How bank research desks build dealer positioning

The article's closing argument appeals to unnamed institutions. Two desks have published a method for this in the last year. Both name the volatility-surface route among the alternatives, and neither builds on it.

The article, conclusion

That brings us to why the most sophisticated institutions build “dealer positioning” models using a “vol surface” instead of open/close data.

BofA Global Research publishes a Systematic Flows Monitor with an SPX dealer gamma series and a methodology appendix. The appendix lists three ways one could sign an option trade, of which a local volatility surface is the third, and then says where its own estimates come from:

BofA Global Research, Systematic Flows Monitor, September 4, 2026, methodology appendix

you could: (i) naively assume end-users buy all puts and sell all calls, (ii) categorize option trades based on their distance from the bid and ask, or (iii) use a local volatility surface to impute a buy or sell signal from changes in the volatility. Instead of the aforementioned ideas, our position estimates are grounded in data directly from the exchange which classifies option trades as a buy or sell according to the exchange’s own records for 5 types of market participants: customers, pro-customers, broker-dealers, market makers, and firms.

The same appendix's summary line gives the reason: "Deriving gamma estimates based on signed volume data from the exchange rather than using models that risk mis-classifying option buys/sells"

The same desk's year-end volatility review footnotes its dealer gamma exhibit the same way:

BofA Global Research, Global Equity Volatility Insights, December 2025, exhibit source line

The gamma is derived from exchange data which classifies trades by market participant type. The gamma level above combines the gamma from regular Firm trades and all (regular + flex) Market-Maker trades.

Barclays Derivatives Research introduced its SPX option positioning estimate in September 2025. Its method section names the same three candidates, calls them more sophisticated than the naive model, and says which one it builds on:

Barclays Derivatives Research, Reading the Dealer's Hand: Unpacking SPX Option Flows, September 23, 2025

more sophisticated approaches have emerged - such as inferring trade directionality from intraday bid/ask spreads, analysing volatility shifts around trade timestamps, and leveraging CBOE’s proprietary customer-type flow data. In our analysis, we focus on the latter

Same note, on who holds what: "Market Makers (MMs) typically exhibit positioning that is nearly the mirror image of Customers" and "customers (institutional & retail) tend to be net buyers while market makers (esp. in 0DTEs) and firms (esp. in longer tenors) provide liquidity, and are the primary delta hedgers"

Neither desk publishes a comparison of the two routes, and neither says the surface approach is worse. What they establish is narrower than the article's claim and enough to answer it: with all three options in front of them, both desks built on exchange participant records, and BofA states the reason in writing. Both also disclose what their series does not do. Barclays' estimate is end-of-day and, in its own words, "the analysis uses end-of-day data and does not capture intraday inventory adjustments - an increasingly important factor given the proliferation of 0DTE options." That is a real limit of that implementation, and the one part of the article's cadence complaint that applies to a bank series. A position refreshed on the ten-minute file does not have that limit.

Approach to signing a tradeWho builds on it, per their own methodology textCan it see whether a fill opened or closed a position?How the article describes it
Assume customers sell calls and buy puts (naive GEX)Neither desk; both publish it only as a comparison seriesNoCorrectly rejected, then attributed to every vendor
Distance from bid and ask (midpoint heuristics)Neither deskNoCorrectly rejected
Changes in the volatility surface around the tradeNamed by both as an alternative; built on by neitherNo"What the most sophisticated institutions use"
Exchange and clearing-house participant records: origin, side, open or closeBofA (market makers incl. flex, plus firms), Barclays (market makers, firms and broker-dealers), UBS and Barclays for single-stock retail gauges from OCCYes, on the non-market-maker side; the market-maker side is net by construction"Half wrong", "unsupported", "SPX and VIX only"

Our position on this predates the article. In March 2024 we published the three ways a dealer gamma series can be built: naive open interest, aggressor-tagged flow, and participant-tagged exchange volume, and said which one holds up day to day. The same month we wrote that inferring SPX market-maker positioning from trade-level aggressor inference is a fool's errand, for the SPX reasons in section 02. In February 2024 we said in public that at least one bank desk built its dealer view from Cboe-tagged open/close data. Both desks quoted above have since put the method in writing.

VS3D is built the way the fourth row describes: signed participant volume from the exchange, accumulated by strike and expiry, and the market-maker position is the net of that volume, with no inference in between.

06 · Coverage

"Only SPX and VIX"

The article, assumption 2

Any tool provider using Open/Close methodology can only provide data for SPX and VIX. If they are saying they can provide similar analytic for options on stocks, they cannot.

This packs two claims together. The first, that open/close data exists only for SPX and VIX, is false. Cboe publishes the Open-Close Volume Summary across its four US options exchanges, C1, C2, BZX and EDGX, end of day back to January 2005 on C1 and January 2018 on the other three, with ten-minute and one-minute intraday files on all four. The article's own SPY table breaks April 2025 volume down by capacity: broker-dealer, customer, firm, market maker, professional customer. Only the exchange records those tags, and the article prints them for an ETF option on the page after saying participant-tagged exchange data exists only for SPX and VIX. Research desks use the clearing house's open/close record for single stocks, though for a different purpose:

UBS US Equity Derivatives Strategy, December 12, 2025, chart source line

ROBP = Call open buys (1-10 contracts) as % of total OI

Source line: OCC, UBS
Barclays, The Long & Short of It, August 18, 2026, note to the buy-to-open ratio charts

Retail trades are measured by using small sized trades as a proxy. Small sized trades are defined in this context as customer trades in single stock options with size between 1 and 10 contracts.

Source line: OCC, Barclays Derivatives Research

Those are retail sentiment gauges rather than dealer positioning, and they are cited here to show that the signed record exists and is used well beyond SPX. The second claim, that single-stock dealer positioning cannot be built this way, is one we partly agree with, for a reason the article does not give. SPX and SPXW are Cboe proprietary classes listed on a single exchange, so the exchange's record is the complete listed market in them, FLEX included. A multi-listed stock option is spread across many exchanges, and one exchange's file is a sample of that name's flow, so we publish the one complete position and leave the partial ones alone.

07 · The accuracy claims

Eighty-five percent of what, measured how

The article's method deserves a fair statement in its strongest form, since the article does not give it one. The accuracy figures can then be read for what they measure.

After a fill, the side that was resting behaves differently from the side that crossed. It replenishes or pulls, changes the size it shows, and moves its quote in the direction of the risk it just took. Read across the whole order book at high resolution, that is a real microstructure signal and a better instrument than any midpoint heuristic. Identifying the resting side on a fill is a question with a right answer, and a model can get most of it right. The article leaves three things unaddressed.

The first is the input. The article says its engine ingests every modified quote, every cancelled order and every depth-of-book quote from OPRA. OPRA disseminates last sale and best bid and offer messages per exchange; it carries no orders, no cancels and no depth of book. Those come from each exchange's own feed, and no exchange feed attributes a resting quote to a named firm, so the resting firm has to be inferred from a feed that was itself inferred.

The second is the position effect. Knowing who rested does not tell you whether the fill opened or closed a position, and building an inventory from fills requires that field. A quote-revision model has no such field. It must either assume every dealer fill opens a position or model volume against open interest, which is the method the article's own second section calls a structural assumption.

The third is SPX itself. A substantial share of SPX size trades as complex orders, auction responses and floor crosses, where the matching engine assigns the aggressor and there is no post-fill quote revision to read.

The article, quoting its data provider

our algo correctly identifies the liquidity provider around 85% of the time. To compare, GEX is 55-60%. Open/Close varies depending on if markets are calm or volatile. Calm it would be around 80%, volatile around 52%. Midpoint is too variable to measure, but averages 50%.

The article gives four figures without a sample, a period, or a definition of a hit.

The answer key measures the wrong thing, and the article says so itself. The 85% is scored against the trade-level aggressor flag, which side was resting when the print happened. That is a well-defined fact and a fair label for a model that sets out to identify the resting side. It is also the field the article's first section says does not tell you how anyone is positioned. Both can be true at once, and if they are, the headline accuracy figure certifies the one thing the article has already said not to draw a position from. The article contains no measured claim about the quantity a positioning product measures, which is the sign and the size of what the hedging cohort holds.

The figure is also ordinary. The published literature on classifying option trades by the quote rule reports accuracy in the high seventies to low eighties of percent on Cboe data (Savickas and Wilson, Journal of Financial and Quantitative Analysis, 2003). Against that benchmark, 85% identification of the resting side is in line with a thirty-year-old heuristic, and "midpoint averages 50%" is below what that literature finds for quote-based rules. The figure may well be right.

The 52% measures a decision rule rather than open/close data. Open/close data outputs no aggressor label, so the only way to score it on one is to add a rule on top, and the obvious rule is "when a market maker is on the trade, treat the market maker as the resting side". In SPX that rule is close to a coin flip, for the reasons in section 02, and it is also close to the market-maker aggressive count share of 51.76% in the article's own April 2025 SPX table. If the 52% is that number under a different name, it describes the aggressor mix, and the article should say which sample and which rule produced it. No one building a signed inventory uses that rule. The inventory adds a market maker's buys and subtracts its sells, without asking who was resting.

The article, quoting its data provider

In times of stress, only 50% of counterparties tagged as MMs are providing liquidity. That means in times of stress, open/close is half wrong. You would statistically get the same accuracy as if you guessed every single trade.

"Half of the fills crossed the spread" and "half of the positions are wrong" are different statements, and the second does not follow from the first, for the reason in section 01. Two numbers would test a signed inventory: the mislabel rate on the position-effect field, and any position, on any date, that the inventory got wrong. The article gives neither.

08 · Hedging

Quotes first, futures for the residual, and the desks that publish size the residual

The article, step 3

dealer hedging is reflected in the vol plane. This is how dealers hedge on liquid issuances because they have 100% control over prices. Dealers change the prices and quotes until these options are executed from their book. When a dealer limit order is executed, they are closing a position that exists.

Quote adjustment and futures hedging happen in sequence. A desk that gets hit on a strike first tries to trade out of the risk in options: it reprices, changes the size it shows, and waits for offsetting flow. What it cannot internalize is a residual delta, and the residual is hedged in the underlying. The desks that publish size that residual in futures terms. Barclays reports SPX dealer gamma against S&P futures volume in the last hour of the session, "the S&P gamma positioning has historically shown a long bias, generally ranging between $0-10bn, ~0-20% of last 1hr SPX futures volume (0-4% of daily futures volume)", and is explicit that the window is a working assumption:

Barclays, Reading the Dealer's Hand, September 23, 2025, footnote

Dealer gamma positioning is normalised using the last hour of SPX futures volume, implicitly assuming that dealer hedging tends to concentrate towards the end of the trading day. While dealers likely hedge more dynamically throughout the session, this approach offers a practical compromise

BofA, which calls the cohort delta-hedgers and flags "dealer gamma" as the colloquial name, quantifies the effect on S&P e-mini realized volatility by estimating the market impact of trading the required delta in the futures, with hedging confined to the last hour, thirty minutes or fifteen minutes of the session. The published institutional view is internalization first, then a residual that lands in futures and clusters into the close. Both desks size the hedge in the underlying.

The article draws two further conclusions that do not follow. The first is "100% control over prices". That does not describe a class where dozens of registered market makers compete on one order book, where the minimum increment is a nickel or a dime, and where, on the article's own SPX table, customers were the passive side of 54.51% of April 2025 size. Customers set the price on more than half the volume, and a desk that could set the price would not need the hedge. The second is that a filled limit order closes a position. Deemed-closing is position accounting. A market maker quoting a series it does not hold opens risk on the first fill, and everything in this section is about what it does with that risk.

The article, quoting its data provider, on pins

when you hear a “GEXer” talk about positive gamma strikes being magnets, it is actually vanna that creates this impact. If it were gamma, dealers would need to flip from buying to selling or vice versa to hedge at some point without the underlying changing directions, and that is never the case with gamma.

The article is right about gamma and wrong about what follows from it. A long-gamma hedger never reverses direction without spot reversing: it sells the underlying as spot rises and buys as spot falls, on both sides of the strike. The hedge always opposes the move, and its size is proportional to gamma, which is largest at the strike and largest of all on the day the option expires, so at a strike where dealers are long gamma the opposing flow is heaviest, in both directions, and that is the pinning mechanism. Barclays, on its own participant-built series, finds the same thing: "Further analysis confirms a statistically significant negative relationship between dealer gamma and SPX volatility, consistent with the view that high (positive) gamma exposure dampens volatility through mean-reverting hedging flows, whereas low (negative) gamma amplifies moves via momentum-driven dealer hedging activity".

Vanna is a different claim. Vanna hedging requires implied volatility to change; if implied volatility is flat while spot oscillates around a strike, a vanna model produces no flow and no pin. Explaining a pin with vanna also needs a systematic relationship between spot and that series' implied volatility at that strike, which is a stronger empirical claim than the gamma account, and the article does not test it. The article's intuition about "flow without a spot move" does describe charm: into expiry, delta decay moves the required hedge with spot standing still. And into an expiration the expiring line's vega goes to zero, so its vanna goes to zero while its gamma reaches its maximum, which makes the expiring line the one case where vanna cannot explain a pin. The published work on expiration pinning is built on delta-hedge rebalancing of option positions (Avellaneda and Lipkin, 2003; Ni, Pearson and Poteshman, Journal of Financial Economics, 2005; Golez and Jackwerth, Journal of Financial Economics, 2012, for S&P 500 futures).

spot up $1: sell futures, most at the strikespot down $1: buy futures, most at the strikethe strikebuysell0spot, relative to the strike →Long gamma: the hedge always opposes the move, on both sides of the strike, and is largest at the strike. No implied-vol change is needed.

Figure 4. Futures to trade for a long-gamma position on a $1 move in spot, at each level relative to the strike. The hedge opposes the move on both sides, and it is largest at the strike.

09 · Naive GEX

The assumption the article attacks is the one signed data removes

The article, on the 2017 GEX paper

Many tool providers who command the largest market positioning currently continue to base their methodology on this outdated research.

Agreed on the assumption, with the qualification both desks make. BofA publishes the naive series beside its own and finds it "often appreciably larger in magnitude". Barclays finds that the long-call, short-put assumption "holds directionally" at the index level while it "significantly overstates the magnitude of positioning". Across the whole dealer exposure the naive sign is usually right and the size is wrong. It fails where it is used, line by line at a strike, and the levels a reader trades off are built strike by strike. The article then files VolSignals under it:

The article, the "gamma modeling group"

These providers do not focus on “unusual option activity alerts”, but instead parse the option data against open-interest, volume, and greeks to map out dealer positioning (GEX, DEX, and VEX).

VS3D carries the market-maker position by strike and expiry as the net of signed participant volume, with the customer and firm sides shown beside it, and no open-interest parsing anywhere in it. On the /positions page published August 31, the expiring series' sized lines were tested against the naive convention one by one: 20 of the 36 lines over 300 contracts carried the opposite sign to what naive GEX would assign, including calls where customers were the buyers and puts where customers were the sellers. That is a direct test of the assumption the article says vendors rely on, run on the data the article says cannot be built, and published a week before the article appeared. A level printed at a strike is a claim about that strike, and being right on aggregate direction does not defend it.

On the 7790 line at the August 12 close, listed open interest across all expiries was under a thousand contracts and the measured market-maker net was close to flat. Any screen showing a large standing dealer position there was showing contracts that did not exist. That comparison, published August 14, is on our site as well.

The article, conclusion

Using midpoint or open/close data doesn’t tell customer intent. It is better than naive assumptions like GEX, but they are still highly error-prone.

Signed open/close data is the exchange's record of which origin bought and which sold, and whether the customer opened or closed. "Highly error-prone" needs a measured error, and the article does not measure one.

10 · What the article does not contain

The test that was never run

No position, no level, no outcome

Seventeen assertions about how positioning should be built, without a position from any method, a level, or a forecast checked against what the market did. The only data shown is two aggressor tables that describe execution style.

No definition of "positioning"

The article never separates the aggressor role from signed inventory. Every argument against participant data depends on treating them as the same thing.

No measured error rate

"Open/close is half wrong", "highly error-prone", "52% in volatile markets": each is asserted, none is derived from a shown sample, and none is reconciled against open interest, the one public check anyone can run.

No engagement with the record

The rulebook fields, the Clearing Editor, the customer confirmation requirement, the net-account rule and the intraday snapshot cadence are all public, and none is cited. The article invokes institutions without naming one, and the two that publish a method contradict it.

The article, on motive

Cboe does not match open/close data to intent. And they don’t because they sell their data to these liquidity providers directly.

The first half is right. The record reports what a trade did to an account, not why it was done. The data set is licensed to anyone who pays for it, which is how bank desks, independent researchers and VolSignals have it. The article gives no source for the exchange's motive, and a motive would not change what the fields contain.

11 · For the record

What VolSignals positions are, and what they are not

Every SPX option print, with the participant on each side, netted by strike and expiry, on the last two years of proprietary data, refreshed every ten minutes through the session.

Measured where it can be

Who bought and who sold is measured. The market-maker column is buys less sells by series, and both of those fields are filed for every transaction under Rule 6.1(e). The calculation needs no open/close mark, no midpoint test, no surface fit and no assumption about which origin bought the puts.

One assumption, stated

Which participants hedge is a judgment, and every desk that publishes makes it explicitly. Barclays: "We use “Dealers” as short-hand for market makers, broker-dealers and banks that provide liquidity to end investors. ... The underlying assumption behind is that end customers - who use options primarily for directional views or hedging - do not systematically hedge their greeks, whereas dealers, by mandate, tend to do so." BofA combines market makers, including flex, with firms in regular options, and notes that the customer category includes hedge funds as well as retail. We make the same judgment on the same categories, and we publish the customer and firm columns beside the market-maker column so a reader who prefers a different cohort can rebuild it. The sign of the trade is measured in every one of these builds.

Checked against open interest

Customer-side open and close marks are checked against listed open interest line by line, and the exceptions are worked rather than smoothed; the September 9 7825 call line in section 04 is one of them. Full-book greeks are cross-validated against the production simulation the dashboard renders, on a stated clock, before any figure is published.

Open to the right test

Compare positions, levels and hedging-flow estimates against outcomes on a stated sample. That test is public and repeatable, and we publish ours as we go, on this site.

What this build cannot do

No inventory before the start

The position accumulates signed volume from a start date and assumes no inventory before it. For series that first traded after the start, the position is complete. For a series with open interest predating the start, the level includes a residual that shrinks as the series turns over and matters most in long-dated lines. This is why we reconcile line by line, why we publish levels from the near-dated series that hold most of the gamma, and why our figures are described as covering the last two years of proprietary data rather than the whole life of every listed series.

Listed SPX only

No over-the-counter flow, which is also Barclays' first stated caveat. Position effect on the non-market-maker side is a reported field with a rulebook-sanctioned default under Rule 6.1(h), and Clearing Editor corrections land on the trade date, so an intraday snapshot can precede a correction. Attribution between participant columns is not verifiable against any public print; only the total per series is.

What would change our mind

We would accept and publish any of three results: a measured position-effect mislabel rate on the non-market-maker side of SPX, by class and size band, from a stated sample; any series and date where our market-maker net exceeds the published open interest for that series; or a side-by-side of two market-maker gamma series, one built from participant records and one from a surface, against next-day SPX realized volatility on a stated sample.

How the position is builtGamma from the market-maker sideA block, played through

Sources and disclosures

The article under review. "Debunking A Widely-Held Belief (And Lie) About Option Flow And Visualization Methodologies", OptionTeller (Substack), September 8, 2026, optionteller.substack.com. All passages attributed to "the article" are quoted verbatim from the published text; the two tables in section 02 are re-typed from the images as published.

Exchange documents. Rules of Cboe Exchange, Inc., current C1 rulebook (Rules 4.4, 5.4, 5.51, 5.52(d), 6.1(e), 6.1(h), 6.1(i), 6.2, 6.6, 6.20(e), 8.14, 8.30, 9.5) and Regulatory Circular RG13-166, cdn.cboe.com. Cboe DataShop, Open-Close Volume Summary product description, datashop.cboe.com. OPRA message content per the OPRA binary data recipient specification published at opraplan.com.

Institutional research. BofA Global Research, Systematic Flows Monitor, September 4, 2026 (methodology appendix, "SPX option gamma positioning"); BofA Global Research, Global Equity Volatility Insights, December 2025 (exhibit source line on dealer gamma); Barclays Derivatives Research, "Reading the Dealer's Hand: Unpacking SPX Option Flows", September 23, 2025; Barclays, "The Long & Short of It", August 18, 2026; UBS US Equity Derivatives Strategy, December 12, 2025. These notes came across our desk as licensed research; short passages are quoted with attribution for the purpose of comparing stated methodology, and no chart, table or extended passage from any of them is reproduced here. Where a note states a caveat about its own method, it is quoted as well.

Literature. Savickas and Wilson, "On Inferring the Direction of Option Trades", Journal of Financial and Quantitative Analysis, 2003. Avellaneda and Lipkin, "A market-induced mechanism for stock pinning", Quantitative Finance, 2003. Ni, Pearson and Poteshman, "Stock price clustering on option expiration dates", Journal of Financial Economics, 2005. Golez and Jackwerth, "Pinning in the S&P 500 futures", Journal of Financial Economics, 2012.

VolSignals pages referenced. volsignals.com/positions (August 31, 2026: naive-convention test on the expiring series), the measured-versus-inferred note on the 7790 line (data at the August 12 close, published August 14, 2026), volsignals.com/gamma (September 1, 2026), volsignals.com/sep9-7825c.

Scope. This page addresses the article's methodological assertions and nothing else. It makes no claim about any individual, and no claim about the accuracy of any competing product beyond what its own published text asserts. Informational only, not investment advice.

PublishedSeptember 8, 2026
AuthorVolSignals research
Contactvolsignals.com · @VolSignals
DataSPX option positions via Cboe; modeling via VS3D / VolSignals
VolSignalsIndex vol & positioning intelligence · volsignals.com · @VolSignals · Informational only, not investment advice