Does signed option flow lead the index?

a real-time flow line, rebuilt on our own tape and put through one control

Published 2026-09-20 · Sample 1,104 sessions, 2022-04-14 to 2026-09-18, 428,929 one-minute rows · Method day-clustered t on every mean, an era split and a 40-session holdout · Status null, and two product changes came out of it

Key finding. A real-time flow line is the running sum of signed delta notional: every option print classified against the quote, turned into the dealer's hedging requirement and cumulated through the session. Rebuilt here on the same consolidated tape and measured over 1,104 sessions, it correlates −0.22 with the move over the previous fifteen minutes and −0.006 with the move over the next fifteen. The spread that looks like an edge is the move it is echoing. The same control kills the picture we draw of the book, and the percentile we print beside it, which is why that percentile changed.

The flow line follows price. Over 1,104 sessions its fifteen-minute sum correlates −0.22 with the move that just happened and −0.006 with the move that follows. On the loudest minutes it looks like an edge worth 1.6 points over the next half hour, until the last fifteen-minute move is held fixed, at which point the flow is worth +0.11 points, t = 0.30, and the move alone is worth −3.6 points, t = −10.6. The signal was the move, wearing the flow's clothes.

What the line is

Several vendors sell the same object under different names: take every option print, decide from its position against the quote whether the customer bought or sold, convert it into the delta the dealer must hedge, and cumulate it through the session. The input is the OPRA consolidated tape, which is also our input, so the question is not whether the data can be had. It is whether the resulting line says anything about the next few minutes.

Our own version of that object is the measured book's dealer delta. This post tests it.

Two corrections before any test

The book is re-marked, not only traded into. A book's delta changes every minute for two reasons: new prints arrive, and spot moves through the gamma already on the book. Only the first is flow. Regressing the per-minute change in dealer delta on the product of net gamma and the spot move, the second effect alone explains R² = 0.443. Everything below uses the residual, which is the part prints can account for.

Signing is the ceiling. Classifying a single print against the quote agrees with Cboe's participant-tagged truth about half the time, and its errors are systematic rather than cancelling: see signing the tape and how accurate is complex trade signing. Any line built this way inherits that, ours and everyone else's.

The line follows price

Correlation of the flow summed over fifteen minutes with the price move over each window, negative windows looking back:

−30m−15m−5m+5m+15m+30m
raw change in dealer delta+0.079+0.126+0.096−0.001−0.003−0.004
flow, re-marking removed−0.156−0.217−0.116−0.003−0.006−0.005

The left half of that row is the finding: the flow leans against the move already made. The right half is the claim being tested, and it is zero to three decimal places.

Deciles, which is how a reader would trade it

Top decile of the fifteen-minute flow minus the bottom decile, ranked within each session, forward return in points, t clustered by session. A working line has one fixed sign here and keeps it out of sample:

all 1,104t2026tholdout 40dt
next 5 minutes+0.1802.95+0.0390.26+0.4601.63
next 15 minutes+0.4002.38+0.3000.86+0.6311.25
next 30 minutes+0.6842.91+0.4220.66+1.0270.94
loudest minutes only, 30m+1.5744.27+1.6921.75−0.525−0.26

The direction over the whole record is the one the indicator claims, and it is worth about a point and a half on the minutes a reader would actually watch. It does not survive 2026 on its own, and it does not survive the holdout.

The control

The loudest flow minutes are the minutes price just moved in. Same minutes, two more signals: the move itself, and the flow with that move regressed out.

next 30 minutesall 1,104t2026tholdout 40dt
the last 15-minute move−3.624−10.63−3.99−4.55−2.893−1.51
flow, that move removed+0.1110.30+0.0800.08−0.517−0.28

Short-horizon reversion after a loud move is large and shows up everywhere. The flow, once that move is taken out of it, is worth nothing in every era and at every horizon. It correlates −0.22 with the move, and the move was the signal.

The same mistake, drawn as a picture

The gamma, vanna and charm heatmaps on the terminal are fields, and a field has a topography: the steepness of the book near spot says whether a few points of movement change the hedge a lot or hardly at all. We measured it directly, as the mean absolute change in gamma per point of strike within fifteen points of spot, divided by the session's own 97th percentile, which is the scale the colour is normalised to. The unit is contour lines per point. Steep half minus flat half, forward fifteen-minute high-low range:

all 1,104t2026tlast 40t
as measured−2.818−18.0−5.359−15.1−4.201−4.9

A steep book means a quieter next quarter hour, by nearly three points of range, and it holds out of sample. Then hold three things fixed by construction, comparing the steep half with the flat half only inside cells of the same gamma percentile decile, the same size of last move, and the same block of the trading day:

inside the cellsall 1,104tlast 250 sessionst
size of the next move−0.112−1.78+0.0080.06
range of the next 15 minutes−0.228−4.11−0.293−2.29

A quarter of a point. The picture was not lying, it was drawing the clock: the book concentrates as the day's gamma builds toward the close, and the movement left in the session falls at the same time. We built the contour lines, looked at them for an afternoon and did not ship them.

And the number we print beside it

The same control has to be pointed at our own readouts, or it is not a control. The gamma percentile on the terminal ranked each minute against every minute of the prior twenty sessions, so the intraday shape of gamma went straight into it: it averaged 30.8 in the first hour of the session and 69.0 in the last, a median rise of 48 points within one session. A reading of 85 therefore meant an ordinary afternoon or a remarkable morning, and the card could not tell them apart. High half minus low half, forward fifteen-minute range:

held fixeddiff, pointst
nothing−1.469−12.50
the last move−1.128−8.72
the last move and the time of day−0.014−0.15

So on 2026-09-20 the percentile was redefined to rank a minute against the same minute of the prior twenty sessions, the definition the volume percentile moved to on 2026-09-04 for the same reason. The clock is out of it: the mean is now flat across the session, and a reading means the same thing at 10:00 and at 15:30. Sessions published before that date carry the old definition and are not comparable with the new one.

Reproduce it

Everything above comes from the public session files. Each session's one-minute series is at https://firmtape.com/snapshots/YYYY-MM-DD.json: dex is the dealer delta whose per-minute difference is the flow, ngv_meas the net gamma the re-marking correction needs, spot the price, gpct the percentile, and the per-strike frames carry the gamma the field's steepness is measured from. The three scripts are in the lab: the flow test, the field's gradient and the stratified control. Two numbers are worth checking first, because everything rests on them: the re-marking R² of 0.443, and the −0.217 correlation with the move already made.

What would change the verdict

This tests a minute-differenced book, corrected for re-marking. A vendor line is built print by print and can stitch the legs of a spread back together before signing them, which we do not. That is a real difference and it could matter. The honest way to settle it is to rebuild the line from the raw per-print tape on a sample of sessions and run exactly the control above, which has not been done. Until it is, the answer to whether a flow line belongs on this chart is no. Nothing here is investment advice; see the Terms.

Part of FirmTape research. Measured on the free session archive; every session is free to replay.