An article on option flow methodologies lists VolSignals among four "dealer positioning" vendors, attributes to all of them a method built on assumptions we do not use, and offers as the institutional alternative the one approach two bank research desks explicitly set aside. Below, every questionable assertion is quoted and tested against the exchange record, the rulebook, and published bank methodology.
Each row states the article's claim in our words, the finding, and the reason. The quoted passages and the sources follow in the sections below.
| # | The assertion | Finding | Why |
|---|---|---|---|
| 1 | A tagged market maker or firm is providing liquidity on that symbol, and that is false | True as stated; the refutation redefines the term | Liquidity provision is a registered role with quoting and dealing obligations, not passivity on a fill. Showing that market makers sometimes cross the spread does not change the role, and it does not change the inventory. |
| 2 | In SPX, aggressor and passive counts are equal for every capacity | Wrong on its own numbers | The published SPX table shows firms 33% aggressive by count and 76% by size; broker-dealers 45% and 69%. Those are not equal. |
| 3 | SPY shows the same behavior | Contradicted by the article’s own table | The published SPY table shows market makers 92% passive by count and 81% by size, customers 95% aggressive by count. |
| 4 | Open/close data does not show opened versus closed trades | False | The exchange record carries a position-effect field on the customer side, customer confirmations must state it, and corrections are logged. The article cites nothing for the claim. |
| 5 | Vendors infer open versus close by modeling volume against open interest | Misattributed | That is how open-interest products work. Signed participant data needs no such model; the field is in the record. |
| 6 | There is a penalty for one mis-mark and none for the other | Unsupported | No rule, circular or enforcement action is cited. The rulebook assigns the accuracy duty to the trading permit holder for every field. |
| 7 | Market makers are not required to mark open or close, so they do not | True and irrelevant | Market-maker accounts are net by rule: every transaction is deemed closing against the existing position. A net account needs no open/close mark to state its inventory. |
| 8 | Open/close methodology can only cover SPX and VIX | False | Cboe publishes the data set for every class on four exchanges; the article’s own SPY table is participant-tagged data. UBS and Barclays build single-stock retail gauges from OCC open/close volume. |
| 9 | Official open/close data updates once a day, so there is no intraday view | False | Cboe sells intraday snapshots at 10-minute and 1-minute cadence. VS3D positions are built on the 10-minute file. |
| 10 | In stress only half of market-maker-tagged counterparties provide liquidity, so open/close is half wrong | Non sequitur | The 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 | The vol-surface algorithm identifies the liquidity provider 85% of the time; open/close 52% in volatile markets | Unpublished, circular, and off-target | No sample, period or method is given. The accuracy is scored against the trade-level aggressor flag the article says is meaningless. Open/close data does not emit an aggressor label, so it cannot score 52% on one. |
| 12 | Naive GEX assumes customers sell every call and buy every put, which is wrong | Correct, and not our method | Signed participant data exists to replace that assumption. Bank desks publish the naive figure beside the signed one for exactly this reason. |
| 13 | Dealers hedge on the vol plane and control prices; a filled dealer limit order closes a position | Contradicted by bank research and by the rulebook | Barclays and BofA both model dealer hedging as futures flow and size it against last-hour futures volume. A quote that fills opens risk; the deemed-closing rule is position accounting, not risk management. |
| 14 | Positive-gamma pins are vanna, because gamma hedging never flips without a reversal | Wrong mechanics | A long-gamma hedge flips sign as spot crosses the strike in one direction. Vanna acts through implied vol, which need not move at a pin. |
| 15 | The most sophisticated institutions build dealer positioning from a vol surface instead of open/close data | Contradicted by the institutions named | BofA lists the vol-surface approach as one it set aside in favor of exchange participant records. Barclays names the same alternative and chooses the participant data. |
| 16 | Cboe does not match open/close to intent because it sells the data to liquidity providers | Motive claim, no evidence | The data set is sold to anyone who licenses it. The article offers no source for the motive. |
| 17 | VolSignals belongs to a group that parses open interest, volume and greeks to map dealer positioning | Misattributed | VS3D positions are signed participant inventories by strike and expiry, not open-interest inference. The article does not describe or test any VolSignals output. |
Every argument in the article that touches signed participant data rests on one substitution: it swaps "what does the hedging cohort hold" for "who crossed the spread". Those are different questions with different answers, and only the first one is what a positioning product measures.
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, and the article's refutation of it works only 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 it: a continuous two-sided market during the day, and dealing for its own account when supply and demand come apart. Firms and broker-dealers warehouse risk against customer imbalances by mandate. That is a role in the product. It does not switch off on a fill where the market maker happened to cross the spread.
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 article replaces that definition with a different one, passivity on individual fills, and then reports that market makers are not always passive. Barclays, working from the same participant categories, keeps the ordinary meaning:
Market makers (as designated liquidity providers), and Firms & Broker-dealers (encompassing bank flows) tend to be more sophisticated, and actively hedge their exposure.
Whichever definition is used, the thing a positioning product measures does not move. 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. The delta is the same, the gamma is the same, the vega is the same, and so is the hedge that follows. 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.
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 therefore unreliable. The conclusion does not follow. 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 says nothing about the sign or the size of the position.
It is also what anyone who has made markets in index options would expect. Taking liquidity is part of the business of providing it. 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. Every one of those reads "aggressive" on a trade report, and every one of them is a market maker managing inventory. The premise that a liquidity provider should be passive on most fills is a premise about a different business.
One more thing follows from the article's own evidence, and it cuts the other way. If the aggressor flag is as uninformative in SPX as the article says, then every method that signs trades by who crossed the spread, or by which quote moved after the fill, inherits that noise. Signed participant inventory does not use the flag. The article's strongest data point is an argument against its own answer key.
The only data in the article is a pair of April 2025 aggressor-versus-passive tables for SPX and SPY. Read as published, they refute two of the sentences written about them.
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
The SPX table shows firms aggressive on a third of their trades by count and three quarters by size, broker-dealers 45% by count and 69% by size, market makers 52% and 56%. By count the market maker line is near even. By size it is not, and the other capacities are nowhere near equal. "Equal no matter what the type" is not what the table says.
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 textbook pattern the article says tags should produce if they meant anything, and it appears in the article's own second table, directly under the sentence saying it does not.
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 a reason that has nothing to do with roles. SPY options are quoted a penny wide; a customer who wants a fill has one move, which is to cross, so the market maker is passive on nearly every fill by construction. SPX is quoted in nickels and dimes and wider, with size on both sides, so customers rest inside the spread all day and market makers take them when the price suits their inventory. The split is a quoting-width fact. And in neither product does it change what anyone holds at the close.
Two further problems with the sample. April 2025 contains the tariff shock, so a one-month whole-sample table blends a stress regime with a recovery and cannot support the separate "in times of stress" claim made later. And in SPX a large share of size trades through complex orders, auctions and floor crosses, where "aggressor" is an assignment made by the matching engine, not an observation of who wanted the trade.
The article treats OPRA as the source of all option data and reasons from what OPRA lacks. Participant-signed positioning is not built from OPRA. It is built from the exchange's own trade and clearing records, which carry the fields OPRA omits.
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 no participant origin, no side, and no position effect. That is why the exchange sells a separate product. Cboe Rule 6.1(e) lists what a trading permit holder must file for every transaction so the exchange can match and clear it:
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
Side, capacity, account, and the opening or closing status of every non-market-maker transaction are in the record by rule. The Open-Close data set is the aggregation of those fields. Cboe's own product description:
an end-of-day volume summary of trading activity on the Exchange at the option level by origin (customer, professional customer, broker-dealer, and market maker), side of the market (buy or sell), price, and transaction type (opening or closing). The customer and professional customer volume is further broken down into trade size buckets
Data is captured in “snapshots” taken every 10 minutes throughout the trading day and is available to subscribers within five minutes of the conclusion of each 10-minute period.
Figure 3. Fields on a public OPRA last sale beside fields in the exchange record. The three the article says nobody has are the three the record was built to carry.
Because official open/close OI data is only updated once a day after market closes, there is no transparency for intraday changes
Cboe publishes the intraday file in 10-minute and 1-minute snapshots, available within minutes of each interval. VS3D positions are built on the 10-minute file, so the position you see at 10:30 is the position through 10:20, not last night's open interest with a model on top.
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. It does not describe a product built from signed participant volume, where the buy or sell, the origin and the position effect arrive as fields. 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.
The article asserts an enforcement asymmetry and a market-maker exemption. One is uncited; the other is real, and it makes the market maker's inventory easier to state, not harder.
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.
No rule, regulatory circular or disciplinary action is cited for the penalty claim, and we could not find one. What the rulebook does say is that accuracy is the trading permit holder's responsibility for every reported field, that the position-effect field can be corrected through the Clearing Editor with a record kept, and that a customer's written confirmation must state whether the trade opened or closed a position:
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
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
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. The reason is the next rule. A market maker's account is a net account:
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.
A net account does not need an open or close mark to state its inventory. Its position in a series is its purchases less its sales. That is precisely the quantity a signed-volume build accumulates for the market-maker origin: buys minus sells, by series, every ten minutes. The customer side of the same fills carries the mark, is confirmed to the customer in writing, and is what reconciles against listed open interest. The article presents the exemption as a hole in the data. It is the reason the market-maker column is the cleanest one in it.
Open/close data is showing opened vs. closed trades. THIS IS FALSE
Stated as a blanket, this is false. A field exists, it is required, it is confirmed to the customer, and its corrections are logged. What the article could have argued, and did not, is a measured mislabel rate. It gives none.
Mis-marks do happen, and a signed-volume build has to be robust to them. It is, because the mark is not an input to the position. A sell reduces what the seller holds whether it was coded open or close. The worked example is on this site. On September 2 a firm account bought about 19,000 of the September 9 7825 calls, and the order carried a closing code. Our record for that series went back to its first trade and showed no firm short anywhere near that size, so the substance was an opening buy and the position was carried that way: firm long, market makers short. The next morning the clearing house published open interest for the series a few hundred contracts above the firm position in our record. The mark was wrong, the inventory was right, and the public open-interest print settled it. That is the check the article never runs.
Every contract has exactly one long and one short. Ask any positioning screen for every participant's position at a strike and add them. The total must be zero. A construction reconciled to that identity at every snapshot cannot carry a phantom position; one that is not reconciled has no way to notice one.
A position genuinely built today appears in the exchange's published open interest tomorrow morning. An accumulation residual does not. Anyone with a broker screen can run this test on any line, on any day, against any vendor.
The article's closing argument is an appeal to unnamed authority. The named authorities say the opposite in writing.
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 option trades, including a local volatility surface, and then states which one BofA uses:
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 desk's year-end volatility review footnotes its dealer gamma exhibit the same way:
The gamma is derived from exchange data which classifies trades by market participant type.
Barclays Derivatives Research introduced its SPX option positioning estimate in September 2025. Its method section names the same three candidate approaches the article discusses and picks the participant data:
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
Two independent desks, two years apart, each considered signing trades off changes in the volatility surface and each chose the exchange's participant records instead. The reason BofA gives is the one the article never engages: a surface-based sign is a model that can misclassify a buy as a sell, while the exchange record is the exchange's own classification. On the question of who provides liquidity in SPX, Barclays reaches the same reading a signed inventory shows every day: customers net buyers, market makers and firms on the other side and doing the hedging.
| Approach to signing a trade | Who uses it, per their own methodology text | How the article describes it |
|---|---|---|
| Assume customers sell calls and buy puts (naive GEX) | Published by BofA and Barclays as the comparison series, not the estimate | Correctly rejected, then attributed to every vendor |
| Distance from bid and ask (midpoint heuristics) | Neither desk | Correctly rejected |
| Changes in the volatility surface around the trade | Neither desk; BofA lists it as set aside, Barclays names it and chooses otherwise | "What the most sophisticated institutions use" |
| Exchange participant records: origin, side, open or close | BofA (SPX dealer gamma), Barclays (BSOP), UBS and Barclays (single-stock retail gauges from OCC) | "Half wrong", "unsupported", "SPX and VIX only" |
None of this is new to us, and none of it is a reaction to the article. In March 2024 we published the three ways a dealer gamma series can be built, naive open interest, aggressor-tagged flow, and the 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, market-maker inventory read directly rather than inferred. Where our gamma series and the two desks' series are stated on comparable terms they land in the same band. Both desks describe a long bias of roughly zero to ten billion dollars per percent with occasional negative readings; our 2026 closes to date have a median near five billion with the same occasional dips below zero, and the same sign rule for what happens to realized volatility on each side of it.
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.
Cboe publishes the Open-Close data set for every option class traded on its four options exchanges, back to 2005 for the original exchange. The article's own SPY table is participant-tagged Cboe data for an ETF option. UBS and Barclays build retail gauges for single-stock options from the same kind of record at the clearing house:
ROBP = Call open buys (1-10 contracts) as % of total OI
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.
VolSignals covers SPX only, and that is a choice about completeness rather than a limit of the method. SPX options trade on one exchange group, so the record is the whole market for that product. A multi-listed stock option is spread across many exchanges and a single exchange's file is a sample. We would rather publish a complete position for one product than a partial one for a thousand.
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%.
Four figures, no sample, no period, no definition of a hit. Three things about them can be said without seeing the work.
The validation is circular. The surface's accuracy is scored against "trade-level signed data that shows which side is the aggressor". Two sections earlier the same article says that flag cannot tell you who is providing liquidity. Either the aggressor flag is a valid answer key, in which case the participant tags it was drawn from are informative, or it is not, in which case the 85% is scored against noise.
The comparison is a category error. Open/close data does not output an aggressor label. It outputs signed volume by origin and position effect. Scoring it at "52% in volatile markets" on a task it does not perform is like grading a thermometer on its wind-speed readings.
The metric is the wrong one for the product being sold. A positioning product is judged on whether its inventory, its levels and its hedging-flow estimates describe what happens. The article shows no position, no level, and no outcome for any method, its own included.
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. The second does not follow from the first, for the reason in section 01.
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.
Three claims in four sentences. Dealers do adjust quotes to attract offsetting flow; every market maker does. That is not the same as having "100% control over prices" in the most competitive option market in the world, and it is not what a delta hedge is. Barclays sizes SPX dealer gamma against last-hour futures volume because that is where the hedge shows up, and describes market makers and firms as the primary delta hedgers. BofA estimates the effect of dealer gamma on realized volatility by modeling the delta traded in S&P e-mini futures in the last hour, thirty minutes and fifteen minutes of the session. Neither desk models the hedge as a quote adjustment.
SPX dealer gamma "can represent up to 20-30% of last-hour SPX futures volumes"
"When a dealer limit order is executed, they are closing a position that exists" borrows the net-account rule from section 04 and misreads it. Deemed-closing is position accounting: it lets the clearing house carry one net number per series for a market maker. It does not mean the fill reduced risk. A market maker quoting a two-sided market in a series it does not hold opens risk on the first fill, and the hedge that follows is a futures trade or an offsetting option, not a quote change.
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 mechanics are backwards. A long-gamma hedger buys the underlying as it falls and sells as it rises. As spot moves up through a strike where the dealer is long gamma, the required hedge goes from buying below to selling above. The sign of the flow flips at the strike while spot keeps moving in one direction. That flip, and the mean reversion it produces, is the pin. Vanna changes the hedge only when implied volatility changes, and a level pin does not require implied volatility to move at all.
Figure 4. Futures to trade for a long-gamma position as spot moves through the strike. The sign changes at the strike with no reversal in spot.
Many tool providers who command the largest market positioning currently continue to base their methodology on this outdated research.
Agreed on the assumption: "customers sell every call and buy every put" is a 2017 convenience that no longer holds, and both bank desks publish the naive series only as a comparison. The article then files VolSignals under it:
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 does not parse open interest against volume and greeks. It carries the market-maker position by strike and expiry as the net of signed participant volume, and it shows the customer and firm sides beside 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 the direct test of the assumption the article says vendors rely on, run on the data the article says cannot be built, published a week before the article appeared.
On the 7790 line on August 12, listed open interest across all expiries was under a thousand contracts and the measured market-maker net was close to flat, while inference-based screens showed a large long. The contracts to hold that long did not exist. That comparison is on our site as well. The article examined none of it.
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 not a guess at customer intent; it 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. The article measures none.
Seventeen assertions about how positioning should be built, and not one position from any method, not one level, not one forecast checked against what the market did. The only data shown is two aggressor tables that describe execution style.
The article never separates the aggressor role from signed inventory. Every argument against participant data depends on treating them as the same thing.
"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.
The rulebook fields, the Clearing Editor, the customer confirmation requirement, the net-account rule and the intraday snapshot cadence are all public. None is cited. The named institutions are cited in the abstract and contradicted in the specific.
Cboe does not match open/close data to intent. And they don’t because they sell their data to these liquidity providers directly.
The data set is licensed to anyone who pays for it, which is how bank desks, independent researchers and VolSignals have it. No source is given for the exchange's motive, and a motive would not change what the fields contain.
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.
The market-maker column is buys less sells by series, the same net quantity the clearing rules define for a market-maker account. No assumption about who bought the puts. No midpoint test. No surface fit.
Customer-side open and close marks reconcile against listed open interest line by line. Full-book greeks are cross-validated against the production simulation the dashboard renders, on a stated clock, before any figure is published.
The input is the one BofA and Barclays chose over midpoint heuristics and surface inference, for the reason they give: the exchange's own classification does not misclassify a buy as a sell.
Compare positions, levels and hedging-flow estimates against outcomes on a stated sample. That test is public, repeatable, and the one the article did not run. We publish ours as we go, on this site.
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 5.51, 6.1, 6.5, 6.6, 8.14, 9.5), cdn.cboe.com. Cboe DataShop, Open-Close Volume Summary product description, datashop.cboe.com. OPRA field content per the OPRA Pillar output specification, 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; single sentences 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.
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 (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.