add readable smart flow research html
All checks were successful
CI / Validate (push) Successful in 1m14s
All checks were successful
CI / Validate (push) Successful in 1m14s
This commit is contained in:
parent
442284065e
commit
07d7d598de
3 changed files with 1046 additions and 0 deletions
|
|
@ -32,6 +32,9 @@
|
|||
{"_type":"issue","id":"islandflow-ayo","title":"Drop stale backlog events from live fanout","description":"Follow-up to live freshness rollout: /ws/live was still fanning out stale backlog events for freshness-gated channels, which kept tape panes in Live feed behind despite active synthetic ingest. Gate fanout and cache ingest by freshness for options/nbbo/equities/flow.","status":"closed","priority":1,"issue_type":"bug","assignee":"dirtydishes","owner":"dishes@dpdrm.com","created_at":"2026-04-28T21:26:39Z","created_by":"dirtydishes","updated_at":"2026-04-28T21:26:44Z","started_at":"2026-04-28T21:26:44Z","closed_at":"2026-04-28T21:26:44Z","close_reason":"Completed","dependency_count":0,"dependent_count":0,"comment_count":0}
|
||||
{"_type":"issue","id":"islandflow-0v6","title":"Fix tape freshness, NBBO coverage, pause controls, and filter popup","description":"Implement the tape fixes requested for synthetic options notional sizing, strict live freshness, live-mode pause/resume behavior, stronger NBBO snapshot coverage, and moving flow filters behind a popup. Includes server-side live cache changes, web terminal state/UI changes, and tests for synthetic pricing, live snapshot freshness/NBBO retention, and live pause/filter interactions.","status":"closed","priority":1,"issue_type":"task","assignee":"dirtydishes","owner":"dishes@dpdrm.com","created_at":"2026-04-28T21:02:52Z","created_by":"dirtydishes","updated_at":"2026-04-28T21:13:38Z","started_at":"2026-04-28T21:02:57Z","closed_at":"2026-04-28T21:13:38Z","close_reason":"Completed","dependency_count":0,"dependent_count":0,"comment_count":0}
|
||||
{"_type":"issue","id":"islandflow-e4r","title":"Implement smart-money flow filtering and synthetic firehose modes","description":"Implement the approved multi-surface plan for named synthetic market profiles, options raw-vs-signal filtering, live/API filter contracts, Tape page client-side flow filters, firehose-readiness improvements, tests, and README updates.","status":"closed","priority":1,"issue_type":"feature","assignee":"dirtydishes","owner":"dishes@dpdrm.com","created_at":"2026-04-28T20:10:49Z","created_by":"dirtydishes","updated_at":"2026-04-28T20:29:29Z","started_at":"2026-04-28T20:10:53Z","closed_at":"2026-04-28T20:29:29Z","close_reason":"Implemented synthetic market profiles, options signal-path filtering, signal-aware API/replay contracts, Tape page filters, tests, and README updates. Follow-up tracked in islandflow-biq.","dependency_count":0,"dependent_count":0,"comment_count":0}
|
||||
{"_type":"issue","id":"islandflow-v6f","title":"Virtualize dashboard priority board","description":"Improve the root dashboard Priority Board readability and scrolling. Remove the redundant packet column, show packet IDs as secondary evidence metadata without the flowpacket prefix, rename the confusing Decision column, and use TanStack virtual scrolling for the row list.","status":"closed","priority":2,"issue_type":"task","assignee":"dirtydishes","owner":"dishes@dpdrm.com","created_at":"2026-06-15T20:58:29Z","created_by":"dirtydishes","updated_at":"2026-06-15T21:01:37Z","started_at":"2026-06-15T20:58:34Z","closed_at":"2026-06-15T21:01:37Z","close_reason":"Completed Priority Board virtualization, copy cleanup, and validation.","dependency_count":0,"dependent_count":0,"comment_count":0}
|
||||
{"_type":"issue","id":"islandflow-h0k","title":"Polish dashboard route","description":"Final polish pass for the root dashboard route. Align the command surface to the existing Islandflow terminal design system, tighten visual and copy details, and validate responsive behavior and build quality.","status":"closed","priority":2,"issue_type":"task","assignee":"dirtydishes","owner":"dishes@dpdrm.com","created_at":"2026-06-15T20:04:12Z","created_by":"dirtydishes","updated_at":"2026-06-15T20:09:14Z","started_at":"2026-06-15T20:04:13Z","closed_at":"2026-06-15T20:09:14Z","close_reason":"Dashboard route polish shipped on dedicated branch: route title hierarchy cleaned up, command rail isolated from legacy header styles, mobile overflow/touch behavior added, and build/tests passed.","dependency_count":0,"dependent_count":0,"comment_count":0}
|
||||
{"_type":"issue","id":"islandflow-j30","title":"Polish dashboard command header","description":"Live design polish for the dashboard command header. Simplify the page header copy to Dashboard, keep status and scope in one compact line, and replace the vague empty-filter copy with a clearer all-flow state.","status":"closed","priority":2,"issue_type":"task","assignee":"dirtydishes","owner":"dishes@dpdrm.com","created_at":"2026-06-15T19:29:23Z","created_by":"dirtydishes","updated_at":"2026-06-15T19:31:00Z","started_at":"2026-06-15T19:29:28Z","closed_at":"2026-06-15T19:31:00Z","close_reason":"Dashboard command header polish shipped: simplified title, clarified scope/filter language, compacted status rail, and validated with web build plus focused terminal tests.","dependency_count":0,"dependent_count":0,"comment_count":0}
|
||||
{"_type":"issue","id":"islandflow-cq6","title":"consolidate deploy script prompts","description":"Add a more robust consolidated deploy script that can prompt for runtime, branch/ref, and deploy pieces while preserving non-interactive CLI usage.","status":"closed","priority":2,"issue_type":"feature","assignee":"dirtydishes","owner":"dishes@dpdrm.com","created_at":"2026-06-13T15:12:51Z","created_by":"dirtydishes","updated_at":"2026-06-13T15:28:45Z","started_at":"2026-06-13T15:28:18Z","closed_at":"2026-06-13T15:28:45Z","close_reason":"Implemented guided deploy prompts, named branch deploys, explicit piece selection, docs, validation, and turn documentation.","dependency_count":0,"dependent_count":0,"comment_count":0}
|
||||
{"_type":"issue","id":"islandflow-9gb","title":"Rename news route to Newswire","description":"Follow-up to the mock9 production terminal rebuild: rename the /news route title from Wire Control to Newswire and keep the visual verification/docs aligned with the latest user-facing label.","status":"closed","priority":2,"issue_type":"task","assignee":"dirtydishes","owner":"dishes@dpdrm.com","created_at":"2026-06-13T14:33:30Z","created_by":"dirtydishes","updated_at":"2026-06-13T14:37:01Z","started_at":"2026-06-13T14:33:42Z","closed_at":"2026-06-13T14:37:01Z","close_reason":"Renamed the /news route to Newswire, updated the design record and turn document, decoded common provider HTML entities in news text, and validated with focused web tests, production build, and Helium fitted/narrow inspection.","dependency_count":0,"dependent_count":0,"comment_count":0}
|
||||
{"_type":"issue","id":"islandflow-iil","title":"Replace overview with dashboard command page","description":"Turn the mock9 Market Command concept into the production root dashboard, rename the visible route from Home to Dashboard, and keep the layout dense with a chart-first command surface.","acceptance_criteria":"Root page displays Dashboard instead of Home; dashboard includes command metrics, chart area, decision levels, priority board, live context, feed health, dark context, and replay context; web tests and production build pass.","notes":"Implemented from the mock9 direction while preserving the existing / URL and using the existing ChartPane until proper chart implementation lands.","status":"closed","priority":2,"issue_type":"feature","assignee":"dirtydishes","owner":"dishes@dpdrm.com","created_at":"2026-06-13T07:37:56Z","created_by":"dirtydishes","updated_at":"2026-06-13T07:43:44Z","started_at":"2026-06-13T07:38:02Z","closed_at":"2026-06-13T07:43:44Z","close_reason":"dashboard replacement implemented, validated, and documented","dependency_count":0,"dependent_count":0,"comment_count":0}
|
||||
|
|
@ -124,6 +127,7 @@
|
|||
{"_type":"issue","id":"islandflow-zs0","title":"Migrate terminal UI to smart-money profiles","description":"Migrate apps/web terminal rendering to consume SmartMoneyEvent directly: primary profile, probability ladder, reason codes, and suppression/abstention state, while preserving legacy alert/classifier displays during the bridge.","status":"closed","priority":2,"issue_type":"task","owner":"dishes@dpdrm.com","created_at":"2026-05-04T21:35:23Z","created_by":"dirtydishes","updated_at":"2026-05-05T05:39:58Z","closed_at":"2026-05-05T05:39:58Z","close_reason":"Completed terminal smart-money profile migration","dependency_count":0,"dependent_count":0,"comment_count":0}
|
||||
{"_type":"issue","id":"islandflow-igk","title":"Add plan mode","description":"Implement a user-facing plan mode in the application so users can switch into planning before taking action. Scope to be clarified from existing app patterns.","status":"closed","priority":2,"issue_type":"feature","owner":"dishes@dpdrm.com","created_at":"2026-05-04T04:22:37Z","created_by":"dirtydishes","updated_at":"2026-05-04T04:26:18Z","started_at":"2026-05-04T04:22:40Z","closed_at":"2026-05-04T04:26:18Z","close_reason":"Implemented as a global pi extension toggled with Shift+P","dependency_count":0,"dependent_count":0,"comment_count":0}
|
||||
{"_type":"issue","id":"islandflow-biq","title":"Finish raw live options delivery and filter/backpressure observability","description":"The smart-money signal path and Tape filters are in place, but the next firehose pass should finish server-side selective raw live delivery for options subscriptions and add explicit filtered-out/backpressure observability for API/web counters. This was discovered while landing islandflow-e4r.\n","status":"in_progress","priority":2,"issue_type":"task","assignee":"dirtydishes","owner":"dishes@dpdrm.com","created_at":"2026-04-28T20:28:58Z","created_by":"dirtydishes","updated_at":"2026-04-29T03:54:12Z","started_at":"2026-04-29T03:54:12Z","dependencies":[{"issue_id":"islandflow-biq","depends_on_id":"islandflow-e4r","type":"discovered-from","created_at":"2026-04-28T16:28:58Z","created_by":"auto-import","metadata":"{}"}],"dependency_count":0,"dependent_count":0,"comment_count":0}
|
||||
{"_type":"issue","id":"islandflow-bvw","title":"Publish standup summary for 2026-06-14","description":"Summarize June 14, 2026 git activity in a standup-ready HTML document under docs/general, anchored to commits, issues, and touched files.","status":"closed","priority":3,"issue_type":"task","assignee":"dirtydishes","owner":"dishes@dpdrm.com","created_at":"2026-06-15T21:32:39Z","created_by":"dirtydishes","updated_at":"2026-06-15T21:34:27Z","started_at":"2026-06-15T21:32:51Z","closed_at":"2026-06-15T21:34:27Z","close_reason":"Created docs/general standup summary for 2026-06-14 git activity.","dependency_count":0,"dependent_count":0,"comment_count":0}
|
||||
{"_type":"issue","id":"islandflow-q0t","title":"Publish June 11 standup git summary","description":"## Summary\nCreate the daily git-grounded standup summary for 2026-06-11 activity in docs/general.\n\n## Why this matters\nThe team needs a scannable record of yesterday's repo activity anchored to commits, Beads items, and touched files.\n\n## Scope\nInspect June 11 commits, summarize the work in HTML under docs/general, and close the task once the document is written.","status":"closed","priority":3,"issue_type":"task","assignee":"dirtydishes","owner":"dishes@dpdrm.com","created_at":"2026-06-12T13:03:42Z","created_by":"dirtydishes","updated_at":"2026-06-12T13:05:40Z","started_at":"2026-06-12T13:03:45Z","closed_at":"2026-06-12T13:05:40Z","close_reason":"Created docs/general/2026-06-12-0903-standup-summary-2026-06-11.html with a commit-grounded summary of June 11 activity.","dependency_count":0,"dependent_count":0,"comment_count":0}
|
||||
{"_type":"issue","id":"islandflow-ksr","title":"Publish June 10 standup git summary","description":"Why this issue exists and what needs to be done:\\n\\nCreate the daily standup summary for June 10, 2026 git activity in docs/general, grounded in commits and touched files, then commit and push the documentation update.","status":"closed","priority":3,"issue_type":"task","assignee":"dirtydishes","owner":"dishes@dpdrm.com","created_at":"2026-06-11T13:02:18Z","created_by":"dirtydishes","updated_at":"2026-06-11T13:04:10Z","started_at":"2026-06-11T13:02:35Z","closed_at":"2026-06-11T13:04:10Z","close_reason":"Created docs/general/2026-06-11-0902-standup-summary-2026-06-10.html with a git-grounded summary of June 10 activity.","dependency_count":0,"dependent_count":0,"comment_count":0}
|
||||
{"_type":"issue","id":"islandflow-f09","title":"Publish standup summary for 2026-06-08","description":"Why this issue exists and what needs to be done\\n\\nCreate the daily git-grounded standup summary for repository activity on 2026-06-08, save the HTML artifact in docs/general, and include only statements anchored to commits and touched files.","status":"closed","priority":3,"issue_type":"task","assignee":"dirtydishes","owner":"dishes@dpdrm.com","created_at":"2026-06-09T13:02:31Z","created_by":"dirtydishes","updated_at":"2026-06-09T13:04:19Z","started_at":"2026-06-09T13:02:53Z","closed_at":"2026-06-09T13:04:19Z","close_reason":"Created docs/general/2026-06-09-0902-standup-summary-2026-06-08.html with a git-grounded summary of June 8 activity.","dependency_count":0,"dependent_count":0,"comment_count":0}
|
||||
|
|
|
|||
729
docs/research-docs/smart-flow-market-mechanics.html
Normal file
729
docs/research-docs/smart-flow-market-mechanics.html
Normal file
|
|
@ -0,0 +1,729 @@
|
|||
<!doctype html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<title>Islandflow Research: Smart Flow Market Mechanics</title>
|
||||
<style>
|
||||
:root {
|
||||
color-scheme: dark;
|
||||
--bg-core: #06080b;
|
||||
--bg-elevated: #0b1016;
|
||||
--bg-pane: #111820;
|
||||
--bg-pane-2: #0d141b;
|
||||
--bg-soft: #ffffff08;
|
||||
--border-subtle: #ffffff14;
|
||||
--border-strong: #ffffff24;
|
||||
--border-accent: #ffb13059;
|
||||
--text-primary: #e6edf4;
|
||||
--text-dim: #a7b4c4;
|
||||
--text-faint: #7d8b9c;
|
||||
--signal-amber: #f5a623;
|
||||
--signal-amber-soft: #f5a6231f;
|
||||
--confirm-green: #25c17a;
|
||||
--risk-red: #ff6b5f;
|
||||
--info-blue: #4da3ff;
|
||||
--mono: "IBM Plex Mono", "SFMono-Regular", Consolas, monospace;
|
||||
--sans: "IBM Plex Sans", Inter, ui-sans-serif, system-ui, sans-serif;
|
||||
--display: Quantico, "IBM Plex Sans", ui-sans-serif, system-ui, sans-serif;
|
||||
}
|
||||
|
||||
* {
|
||||
box-sizing: border-box;
|
||||
}
|
||||
|
||||
html {
|
||||
scroll-behavior: smooth;
|
||||
}
|
||||
|
||||
body {
|
||||
margin: 0;
|
||||
background:
|
||||
linear-gradient(180deg, rgba(77, 163, 255, 0.07), transparent 360px),
|
||||
radial-gradient(circle at 82% 12%, rgba(245, 166, 35, 0.11), transparent 280px),
|
||||
var(--bg-core);
|
||||
color: var(--text-primary);
|
||||
font-family: var(--sans);
|
||||
font-size: 16px;
|
||||
line-height: 1.65;
|
||||
}
|
||||
|
||||
a {
|
||||
color: inherit;
|
||||
}
|
||||
|
||||
.shell {
|
||||
display: grid;
|
||||
grid-template-columns: minmax(220px, 300px) minmax(0, 1fr);
|
||||
min-height: 100vh;
|
||||
}
|
||||
|
||||
.sidebar {
|
||||
position: sticky;
|
||||
top: 0;
|
||||
height: 100vh;
|
||||
overflow-y: auto;
|
||||
border-right: 1px solid var(--border-subtle);
|
||||
background: rgba(6, 8, 11, 0.92);
|
||||
padding: 22px 18px;
|
||||
}
|
||||
|
||||
.brand {
|
||||
display: grid;
|
||||
gap: 8px;
|
||||
margin-bottom: 24px;
|
||||
padding-bottom: 18px;
|
||||
border-bottom: 1px solid var(--border-subtle);
|
||||
}
|
||||
|
||||
.brand-mark {
|
||||
color: var(--signal-amber);
|
||||
font-family: var(--mono);
|
||||
font-size: 0.72rem;
|
||||
font-weight: 700;
|
||||
letter-spacing: 0.12em;
|
||||
text-transform: uppercase;
|
||||
}
|
||||
|
||||
.brand-title {
|
||||
margin: 0;
|
||||
font-family: var(--display);
|
||||
font-size: 1.35rem;
|
||||
line-height: 1.05;
|
||||
letter-spacing: 0.04em;
|
||||
text-transform: uppercase;
|
||||
text-wrap: balance;
|
||||
}
|
||||
|
||||
.brand-meta {
|
||||
color: var(--text-faint);
|
||||
font-family: var(--mono);
|
||||
font-size: 0.72rem;
|
||||
line-height: 1.4;
|
||||
}
|
||||
|
||||
.toc {
|
||||
display: grid;
|
||||
gap: 5px;
|
||||
}
|
||||
|
||||
.toc-label {
|
||||
margin: 0 0 10px;
|
||||
color: var(--text-faint);
|
||||
font-family: var(--mono);
|
||||
font-size: 0.7rem;
|
||||
font-weight: 700;
|
||||
letter-spacing: 0.12em;
|
||||
text-transform: uppercase;
|
||||
}
|
||||
|
||||
.toc-link {
|
||||
display: block;
|
||||
border-radius: 8px;
|
||||
color: var(--text-dim);
|
||||
font-family: var(--mono);
|
||||
font-size: 0.74rem;
|
||||
line-height: 1.25;
|
||||
padding: 8px 10px;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
.toc-link:hover,
|
||||
.toc-link:focus {
|
||||
background: var(--bg-soft);
|
||||
color: var(--text-primary);
|
||||
outline: none;
|
||||
}
|
||||
|
||||
.toc-l2 {
|
||||
padding-left: 20px;
|
||||
color: var(--text-faint);
|
||||
}
|
||||
|
||||
main {
|
||||
min-width: 0;
|
||||
}
|
||||
|
||||
.hero {
|
||||
border-bottom: 1px solid var(--border-subtle);
|
||||
padding: clamp(36px, 6vw, 72px) clamp(24px, 7vw, 96px) 30px;
|
||||
}
|
||||
|
||||
.hero-grid {
|
||||
display: grid;
|
||||
grid-template-columns: minmax(0, 1fr) minmax(240px, 360px);
|
||||
gap: clamp(24px, 5vw, 64px);
|
||||
align-items: end;
|
||||
}
|
||||
|
||||
.kicker {
|
||||
width: fit-content;
|
||||
margin: 0 0 16px;
|
||||
border: 1px solid var(--border-accent);
|
||||
border-radius: 999px;
|
||||
background: var(--signal-amber-soft);
|
||||
color: var(--signal-amber);
|
||||
font-family: var(--mono);
|
||||
font-size: 0.72rem;
|
||||
font-weight: 700;
|
||||
letter-spacing: 0.12em;
|
||||
padding: 5px 10px;
|
||||
text-transform: uppercase;
|
||||
}
|
||||
|
||||
h1 {
|
||||
max-width: 980px;
|
||||
margin: 0;
|
||||
font-family: var(--display);
|
||||
font-size: clamp(2.15rem, 5vw, 5.2rem);
|
||||
line-height: 0.98;
|
||||
letter-spacing: 0.03em;
|
||||
text-transform: uppercase;
|
||||
text-wrap: balance;
|
||||
}
|
||||
|
||||
.hero-deck {
|
||||
margin: 18px 0 0;
|
||||
max-width: 72ch;
|
||||
color: var(--text-dim);
|
||||
font-size: 1.02rem;
|
||||
text-wrap: pretty;
|
||||
}
|
||||
|
||||
.principles {
|
||||
display: grid;
|
||||
gap: 10px;
|
||||
border-top: 1px solid var(--border-subtle);
|
||||
border-bottom: 1px solid var(--border-subtle);
|
||||
background: rgba(17, 24, 32, 0.72);
|
||||
padding: 14px;
|
||||
}
|
||||
|
||||
.principle {
|
||||
display: grid;
|
||||
grid-template-columns: 18px 1fr;
|
||||
gap: 10px;
|
||||
align-items: start;
|
||||
color: var(--text-dim);
|
||||
font-size: 0.88rem;
|
||||
line-height: 1.45;
|
||||
}
|
||||
|
||||
.principle::before {
|
||||
content: "";
|
||||
width: 8px;
|
||||
height: 8px;
|
||||
margin-top: 8px;
|
||||
border: 1px solid var(--signal-amber);
|
||||
background: var(--signal-amber-soft);
|
||||
}
|
||||
|
||||
.content {
|
||||
width: min(100%, 1040px);
|
||||
min-width: 0;
|
||||
padding: 34px clamp(20px, 5vw, 72px) 80px;
|
||||
}
|
||||
|
||||
article {
|
||||
display: grid;
|
||||
min-width: 0;
|
||||
gap: 0;
|
||||
}
|
||||
|
||||
article > * {
|
||||
min-width: 0;
|
||||
}
|
||||
|
||||
h2,
|
||||
h3 {
|
||||
text-wrap: balance;
|
||||
}
|
||||
|
||||
h2 {
|
||||
margin: 54px 0 16px;
|
||||
border-top: 1px solid var(--border-strong);
|
||||
padding-top: 22px;
|
||||
color: var(--text-primary);
|
||||
font-family: var(--display);
|
||||
font-size: 1.55rem;
|
||||
line-height: 1.15;
|
||||
letter-spacing: 0.04em;
|
||||
text-transform: uppercase;
|
||||
}
|
||||
|
||||
h3 {
|
||||
margin: 32px 0 12px;
|
||||
color: var(--signal-amber);
|
||||
font-family: var(--mono);
|
||||
font-size: 0.9rem;
|
||||
line-height: 1.3;
|
||||
letter-spacing: 0.1em;
|
||||
text-transform: uppercase;
|
||||
}
|
||||
|
||||
article > h1 {
|
||||
display: none;
|
||||
}
|
||||
|
||||
p,
|
||||
li {
|
||||
max-width: 75ch;
|
||||
color: var(--text-dim);
|
||||
text-wrap: pretty;
|
||||
}
|
||||
|
||||
p {
|
||||
margin: 0 0 16px;
|
||||
}
|
||||
|
||||
.lead-term {
|
||||
max-width: 86ch;
|
||||
border-top: 1px solid var(--border-subtle);
|
||||
margin: 0;
|
||||
padding: 13px 0;
|
||||
}
|
||||
|
||||
.lead-term strong {
|
||||
color: var(--text-primary);
|
||||
}
|
||||
|
||||
strong {
|
||||
color: var(--text-primary);
|
||||
font-weight: 700;
|
||||
}
|
||||
|
||||
ul,
|
||||
ol {
|
||||
display: grid;
|
||||
gap: 8px;
|
||||
margin: 0 0 18px;
|
||||
padding-left: 24px;
|
||||
}
|
||||
|
||||
li::marker {
|
||||
color: var(--signal-amber);
|
||||
}
|
||||
|
||||
code {
|
||||
border: 1px solid var(--border-subtle);
|
||||
border-radius: 6px;
|
||||
background: rgba(255, 255, 255, 0.05);
|
||||
color: var(--text-primary);
|
||||
font-family: var(--mono);
|
||||
font-size: 0.88em;
|
||||
padding: 0.1em 0.32em;
|
||||
}
|
||||
|
||||
pre {
|
||||
max-width: 100%;
|
||||
overflow-x: auto;
|
||||
border: 1px solid var(--border-subtle);
|
||||
background: #05080d;
|
||||
margin: 18px 0 28px;
|
||||
padding: 18px;
|
||||
}
|
||||
|
||||
pre code {
|
||||
border: 0;
|
||||
background: transparent;
|
||||
color: #dce7f3;
|
||||
display: block;
|
||||
font-size: 0.82rem;
|
||||
line-height: 1.55;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
.table-wrap {
|
||||
max-width: 100%;
|
||||
overflow-x: auto;
|
||||
border-top: 1px solid var(--border-strong);
|
||||
border-bottom: 1px solid var(--border-strong);
|
||||
margin: 18px 0 30px;
|
||||
}
|
||||
|
||||
table {
|
||||
width: 100%;
|
||||
min-width: 900px;
|
||||
border-collapse: collapse;
|
||||
font-size: 0.86rem;
|
||||
}
|
||||
|
||||
th,
|
||||
td {
|
||||
border-bottom: 1px solid var(--border-subtle);
|
||||
padding: 11px 12px;
|
||||
text-align: left;
|
||||
vertical-align: top;
|
||||
}
|
||||
|
||||
th {
|
||||
background: #0b1016;
|
||||
color: var(--text-primary);
|
||||
font-family: var(--mono);
|
||||
font-size: 0.7rem;
|
||||
letter-spacing: 0.08em;
|
||||
text-transform: uppercase;
|
||||
white-space: nowrap;
|
||||
}
|
||||
|
||||
td {
|
||||
color: var(--text-dim);
|
||||
}
|
||||
|
||||
tr:hover td {
|
||||
background: rgba(255, 255, 255, 0.025);
|
||||
}
|
||||
|
||||
.citation {
|
||||
display: inline-flex;
|
||||
align-items: center;
|
||||
max-width: 100%;
|
||||
border: 1px solid rgba(77, 163, 255, 0.28);
|
||||
border-radius: 999px;
|
||||
background: rgba(77, 163, 255, 0.1);
|
||||
color: #9cccff;
|
||||
font-family: var(--mono);
|
||||
font-size: 0.68rem;
|
||||
line-height: 1;
|
||||
margin-left: 0.25rem;
|
||||
padding: 0.28rem 0.45rem;
|
||||
vertical-align: 0.12em;
|
||||
white-space: nowrap;
|
||||
}
|
||||
|
||||
.doc-footer {
|
||||
border-top: 1px solid var(--border-subtle);
|
||||
color: var(--text-faint);
|
||||
font-family: var(--mono);
|
||||
font-size: 0.72rem;
|
||||
margin-top: 56px;
|
||||
padding-top: 18px;
|
||||
}
|
||||
|
||||
@media (max-width: 980px) {
|
||||
.shell {
|
||||
display: block;
|
||||
}
|
||||
|
||||
.sidebar {
|
||||
position: static;
|
||||
height: auto;
|
||||
border-right: 0;
|
||||
border-bottom: 1px solid var(--border-subtle);
|
||||
}
|
||||
|
||||
.toc {
|
||||
grid-template-columns: repeat(auto-fit, minmax(180px, 1fr));
|
||||
}
|
||||
|
||||
.hero-grid {
|
||||
grid-template-columns: 1fr;
|
||||
}
|
||||
}
|
||||
|
||||
@media (max-width: 640px) {
|
||||
body {
|
||||
font-size: 15px;
|
||||
}
|
||||
|
||||
.hero {
|
||||
padding-inline: 18px;
|
||||
}
|
||||
|
||||
.content {
|
||||
padding-inline: 18px;
|
||||
}
|
||||
|
||||
.principles {
|
||||
padding: 12px;
|
||||
}
|
||||
|
||||
h1 {
|
||||
font-size: 2.2rem;
|
||||
}
|
||||
}
|
||||
|
||||
@media (prefers-reduced-motion: reduce) {
|
||||
html {
|
||||
scroll-behavior: auto;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<div class="shell">
|
||||
<aside class="sidebar" aria-label="Document navigation">
|
||||
<div class="brand">
|
||||
<div class="brand-mark">Islandflow Research</div>
|
||||
<p class="brand-title">Smart Flow Market Mechanics</p>
|
||||
<div class="brand-meta">Readable HTML edition<br>Generated Jun 16, 2026, 1:01 PM</div>
|
||||
</div>
|
||||
<nav class="toc" aria-label="Table of contents">
|
||||
<p class="toc-label">Contents</p>
|
||||
<a class="toc-link toc-l1" href="#islandflow-research-report-on-informed-flow-detection-in-equities-and-options">Islandflow Research Report on Informed Flow Detection in Equities and Options</a>
|
||||
<a class="toc-link toc-l2" href="#executive-summary">Executive summary</a>
|
||||
<a class="toc-link toc-l2" href="#options-market-mechanics">Options market mechanics</a>
|
||||
<a class="toc-link toc-l2" href="#equity-market-mechanics">Equity market mechanics</a>
|
||||
<a class="toc-link toc-l2" href="#cross-asset-confirmation-and-participant-hypotheses">Cross-asset confirmation and participant hypotheses</a>
|
||||
<a class="toc-link toc-l2" href="#signal-catalog">Signal catalog</a>
|
||||
<a class="toc-link toc-l2" href="#false-positives-and-scoring-philosophy">False positives and scoring philosophy</a>
|
||||
<a class="toc-link toc-l2" href="#data-requirements-validation-and-final-recommendations">Data requirements, validation, and final recommendations</a>
|
||||
</nav>
|
||||
</aside>
|
||||
<main>
|
||||
<header class="hero">
|
||||
<div class="hero-grid">
|
||||
<div>
|
||||
<p class="kicker">Market-Structure Evidence Engine</p>
|
||||
<h1>Informed Flow Detection in Equities and Options</h1>
|
||||
<p class="hero-deck">A readable, evidence-first version of the Islandflow research report. The emphasis is on direct observation, explicit inference, false-positive control, and product labels that can admit uncertainty.</p>
|
||||
</div>
|
||||
<div class="principles" aria-label="Core research posture">
|
||||
<div class="principle">Direct observation first: preserve raw trades, quotes, timestamps, condition codes, and reference context.</div>
|
||||
<div class="principle">Inference second: score aggressor side, opening likelihood, IV demand, package structure, and confirmation quality separately.</div>
|
||||
<div class="principle">Hypothesis third: surface directional, volatility, hedge, event, or ambiguous candidates only when evidence survives competing explanations.</div>
|
||||
</div>
|
||||
</div>
|
||||
</header>
|
||||
<section class="content">
|
||||
<article>
|
||||
<h1 id="islandflow-research-report-on-informed-flow-detection-in-equities-and-options">Islandflow Research Report on Informed Flow Detection in Equities and Options</h1>
|
||||
<h2 id="executive-summary">Executive summary</h2>
|
||||
<p>The practical lesson from the market-structure literature is not “smart money leaves obvious footprints.” It is the opposite: <strong>good flow detection is mostly a disciplined exercise in ruling out bad explanations</strong>. Public options and equity data can reliably show that a trade happened, where it printed relative to the quote, whether it was exchange or TRF-reported, whether an options print was flagged as multi-leg or auction-like, how the quote looked at that time, and how volume/open interest/IV compared with history. Public data usually <strong>cannot</strong> directly identify the trader, directly identify whether a specific trade opened or closed a position, directly reveal a parent order, or prove that a print reflected fundamental information rather than hedging, rebalancing, inventory transfer, or event-volatility trading. OPRA disseminates consolidated listed-options last sale and quote information, but not a trader identity field; FINRA TRFs disseminate off-exchange equity reports, but off-exchange is broader than “dark pool.” OCC calculates options open interest end-of-day, and exchange proprietary open/close summaries exist, but those are not the same thing as trade-level public truth. <span class="citation" aria-label="source references">t24search5 · t27search6 · t1search12 · t24search2 · t24search3</span></p>
|
||||
<p>For an implementation like Islandflow, the most useful posture is: <strong>direct observation first, inference second, hypothesis third</strong>. Direct observations should be stored losslessly and replayably: timestamps, trade price/size, bid/ask/mid, spread width, sale/condition codes, venue/TRF flags, OI snapshots, contract metadata, adjusted-contract status, and catalyst context. Inference layers should be explicit and probabilistic: aggressor-side confidence, spread-package likelihood, open/close likelihood, volatility-demand likelihood, equity-confirmation quality, and evidence-quality penalties. Product labels should be built from these components, not from a single magic “smart money score.” <span class="citation" aria-label="source references">t20search1 · t30view2 · t24search8 · t18view0 · t34search3</span></p>
|
||||
<p>The strongest retail-accessible signals are not raw “whale” notional prints. They are <strong>bundles</strong>: quote-consistent options aggression in a liquid contract, abnormal size relative to that contract’s own baseline, supportive IV/skew behavior, supportive underlying equity prints or price/volume response, and no obvious event-noise or spread/hedge explanation. The weakest signals are standalone large premium, isolated deep-ITM trades, isolated 0DTE bursts near known catalysts, mid-quote or wide-spread prints in illiquid contracts, and late/corrected/off-hours equity prints treated as if they were contemporaneous intent. <span class="citation" aria-label="source references">t21search2 · t31view2 · t32search5 · t11view1 · t31view1 · t18view2</span></p>
|
||||
<p>A skeptical reading of the evidence says the platform should optimize for <strong>confidence scoring, abstention, and preserved evidence</strong>, not bravado. There is credible literature that some options flow contains information about future equity returns or volatility, especially when buyer-initiated opening activity is known; there is also credible literature showing that options quotes often do not lead stock prices, that trade-signing is noisy, and that market-maker hedging and demand pressure can move options prices and IV without implying directional information. Both camps are right often enough that any serious product must keep the uncertainty visible. <span class="citation" aria-label="source references">t11view6 · t21search2 · t4search3 · t4search11 · t32search5 · t32search21</span></p>
|
||||
<h2 id="options-market-mechanics">Options market mechanics</h2>
|
||||
<p class="lead-term"><strong>NBBO, bid/ask/mid interpretation.</strong> Plain English: the NBBO is the best displayed national bid and offer for an options series, and the midpoint is the arithmetic middle of those quotes. Market mechanism: listed options are quote-driven and fragmented across many exchanges; order protection and locked/crossed-market rules exist, but what you usually see in retail-accessible data is top-of-book consolidated quote context rather than full depth. Required data: OPRA trades, OPRA NBBO quotes, contract metadata, and timestamps. Reliable inferences: a trade at or through the ask is <em>more likely</em> buyer-initiated; at or through the bid is <em>more likely</em> seller-initiated; a narrow spread and fresh quote make that inference better. Unreliable inferences: mid-prints, crossed/locked or stale quotes, and trades in complex/auctioned packages. Common false positives: price improvement, midpoint executions, quote flicker, and venue-specific auctions. Algorithmically, use a quote-rule classifier with tolerance bands around bid/ask, record distance-to-mid and spread percentile, and downweight or abstain when spread is wide, quote age is elevated, or the print is flagged as complex/auction-like. Caveat: even in older proprietary tests, option trade-signing accuracy was only around 80% to 83% for common quote-based rules, and modern fast markets complicate this further. <span class="citation" aria-label="source references">t8search7 · t24search5 · t20search1 · t30view2 · t11view1</span></p>
|
||||
<p class="lead-term"><strong>Aggressor-side inference.</strong> Plain English: you are inferring who demanded liquidity, not observing it directly. Mechanism: standard trade-signing rules compare the print to the prevailing quote, then use tick-rule fallbacks for midpoint trades. Required data: synchronized trades and quotes with event timestamps. Reliable inferences: bid/ask prints in liquid names with narrow spreads and correctly aligned quotes. Unreliable inferences: inside-spread prints, auction prints, complex orders, fast markets, and one-cent spread environments where price-improvement rules can invert naïve assumptions. False positives: “buy at bid / sell at ask” edge cases, quote reversals, or trade/quote timestamp mismatch. Detection idea: produce an <code>aggressor_confidence</code> score instead of a boolean. One practical scheme is 1.0 for trades touching ask/bid on a fresh narrow quote, lower for inside-spread prints, and zero for excluded condition codes or stale quotes. Caveat: your model should preserve the raw quote and classification path so the user can audit why you called it buyer- or seller-initiated. <span class="citation" aria-label="source references">t20search1 · t30view2 · t30view1</span></p>
|
||||
<p class="lead-term"><strong>Quote staleness and quote-quality problems.</strong> Plain English: the quote you match against may already be wrong by the time the trade hits your feed. Mechanism: options quotes must constantly reprice off the underlying; when the stock moves quickly, an options market maker can be “stale” for milliseconds, creating latency-arbitrage opportunities and making print-vs-quote interpretation unreliable. Required data: trade timestamp, quote timestamp, underlying trade/quote timestamps, and optionally provider receive timestamps. Reliable inferences: only after checking quote recency and quote continuity. Unreliable inferences: during fast stock moves, large quote bursts, crossed/locked quotes, and wide-spread periods. False positives: a print near ask during a stale quote can look like urgent bullish buying when it is really a stale-market capture. Detection idea: compute quote age in event time, underlying move since quote, quote-update burst rate, and spread percentile; heavily penalize if the underlying moved materially after the displayed option quote was formed. Caveat: options SIP data are operationally bursty, and different vendors expose different timestamp layers; replay must preserve both event and receive timestamps when available. <span class="citation" aria-label="source references">t9search2 · t30view2 · t33search4 · t33search6</span></p>
|
||||
<p class="lead-term"><strong>Sweeps versus blocks.</strong> Plain English: a “sweep” is urgency across liquidity pools; a “block” is just a big print, which may or may not reflect urgency. Mechanism: in options, intermarket sweep orders are formal order types under the options order-protection framework; in retail “flow” tooling, a sweep often means multiple near-simultaneous fills in the same contract across exchanges. Required data: per-trade venue, timestamps, trade size, and order-condition fields; for better fidelity, underlying quote changes too. Reliable inferences: near-simultaneous same-series fills across multiple exchanges at escalating prices are decent evidence of urgency. Unreliable inferences: a single large print can be a cross, facilitation, QCC-like mechanism, or part of a spread. False positives: auction/cross prints, negotiated facilitation, delayed reporting, or a single broker slicing patiently across time. Detection idea: cluster same-series fills within a short event-time window, require multi-venue participation or monotone price taking, and penalize if condition codes indicate auction/cross/complex structure. Caveat: “large” should be contract-relative and liquidity-relative, never an absolute threshold. <span class="citation" aria-label="source references">t26search14 · t26search2 · t29view4</span></p>
|
||||
<p class="lead-term"><strong>Trade condition codes.</strong> Plain English: these are the market’s own labels telling you the trade mechanics were unusual, complex, late, out of sequence, official, or otherwise special. Mechanism: OPRA and the equity SIPs encode transaction types and sale conditions; some condition codes explicitly say complex stock-option trades, floor trades, crosses, compression trades, or extended-hours trades that do not update O/H/L/C. Required data: raw condition codes retained exactly as delivered. Reliable inferences: condition codes are high-value disqualifiers and context fields. Unreliable inferences: treating every disseminated trade as a “normal” price-discovery event. False positives: counting extended-hours, compression, official close/open, or qualified contingent trades as directional signals. Detection idea: maintain a condition-code policy table with <code>eligible_for_alert</code>, <code>eligible_for_aggressor</code>, <code>eligible_for_baseline</code>, and <code>eligible_for_price_confirmation</code> flags. Caveat: the safest default is to exclude or sharply downweight anything not clearly regular and contemporaneous. <span class="citation" aria-label="source references">t29view4 · t29view1 · t19view4 · t19view6</span></p>
|
||||
<p class="lead-term"><strong>Multi-leg spread detection.</strong> Plain English: many options prints are not single-view directional bets; they are spreads, rolls, collars, stock-option packages, or auctioned complex orders. Mechanism: OPRA trade message types explicitly identify many multi-leg, stock-option, auction, and cross executions. Required data: OPRA trade condition/message type, series metadata, near-simultaneous trades across strikes/expiries/put-call sides, and underlying equity prints for stock-option packages. Reliable inferences: a trade flagged as multi-leg or stock-option should be treated as structure-first, direction-second. Unreliable inferences: reading one leg of a spread as a standalone bullish or bearish order. False positives: vertical spreads, straddles, strangles, risk reversals, collars, delta hedges, rolls, and basis/arbitrage packages. Detection idea: first use explicit OPRA complex flags; then add rule-based package reconstruction over short windows using common size, opposing deltas, equal-premium families, and strike/expiry geometry. Caveat: public data will miss some parent-order linkage, so package reconstruction should produce a probability and an abstain option, not fake certainty. <span class="citation" aria-label="source references">t29view4 · t2search16</span></p>
|
||||
<p class="lead-term"><strong>Opening versus closing inference.</strong> Plain English: public trade tape usually does not tell you whether a specific customer trade opened or closed a position. Mechanism: OCC computes open interest after the session by netting opening and closing activity, exercises, and assignments; exchanges separately sell proprietary open/close summary products. Required data: at minimum daily OCC open interest and the prior day’s value; optionally exchange proprietary open/close summaries. Reliable inferences: if same-day volume massively exceeds prior open interest, at least some flow must have opened new positions; if exchange open/close datasets show buy-to-open or sell-to-close volume, that is useful but exchange-scoped. Unreliable inferences: “volume > OI means all opening” or “OI tomorrow up means this exact print opened.” False positives: rolls, exercises/assignments, multi-exchange fragmentation, and exchange-only open/close data mistaken for market-wide truth. Detection idea: compute <code>volume / prior_OI</code>, next-day <code>ΔOI</code>, and exchange-scoped open/close summaries when available; expose that as an opening-likelihood band, not a hard label. Caveat: OPRA itself is not an open/close feed. <span class="citation" aria-label="source references">t6search4 · t24search2 · t24search3 · t24search9</span></p>
|
||||
<p class="lead-term"><strong>Volume versus open interest.</strong> Plain English: volume is today’s trading activity; open interest is yesterday’s remaining outstanding contracts after clearing. Mechanism: OCC calculates OI centrally at end-of-day after consolidating exchange reports and exercise/assignment effects. Required data: intraday volume, prior-day OI, and next-day OI if available for ex-post validation. Reliable inferences: high volume with low prior OI indicates position turnover or creation pressure worth watching. Unreliable inferences: using OI as if it were intraday live inventory. False positives: contracts near expiration, rolls into new strikes/dates, corporate-action adjustments, and assignment effects. Detection idea: rank <code>volume / max(prior_OI, 1)</code> and <code>premium / prior_OI</code> by contract and by ticker; penalize expiry-week contracts and adjusted options. Caveat: same-day alerting must use prior OI, not tomorrow’s OI. <span class="citation" aria-label="source references">t6search4 · t29view3</span></p>
|
||||
<p class="lead-term"><strong>Premium concentration.</strong> Plain English: concentrating a lot of premium in one contract can matter, but premium alone is not information. Mechanism: option premium reflects intrinsic value, time value, IV, and demand pressure; deep-ITM contracts can carry huge notional premium with near-stock-like exposure, while small OTM contracts can look dramatic in percentage terms with little capital at risk. Required data: premium paid, contract multiplier, delta, moneyness, tenor, contract ADV/OI, and ticker-level historical baseline. Reliable inferences: concentrated premium in liquid ATM/OTM contracts with supportive IV and equity response can be informative. Unreliable inferences: ranking by gross premium alone. False positives: deep-ITM stock replacement, covered-call overwrites, collars, rolls, and volatility trades. Detection idea: normalize premium by contract baseline, by ticker daily option premium, and by delta-adjusted notional; separately tag intrinsic-heavy versus extrinsic-heavy flow. Caveat: “largest premium of the day” is a marketing metric, not a microstructure conclusion. <span class="citation" aria-label="source references">t23search5 · t31view2 · t32search5</span></p>
|
||||
<p class="lead-term"><strong>Short-dated and 0DTE flow.</strong> Plain English: same-day and ultra-short-dated options are now a big part of the market, but much of that activity is tactical hedging or volatility trading rather than classic directional information. Mechanism: 0DTE contracts have extreme gamma and fast-decaying time value; market-makers must hedge them dynamically, and both retail and proprietary accounts use them heavily around intraday events. Required data: days-to-expiry, intraday quotes, IV, greeks, underlying prints, macro/earnings calendar. Reliable inferences: 0DTE bursts are evidence of urgency and event sensitivity, not evidence of informed direction by default. Unreliable inferences: treating 0DTE size as a stronger “smart money” signal than longer-dated positioning. False positives: CPI/FOMC days, dealer gamma hedging, retail lottery trades, intraday gamma scalping. Detection idea: add a strong 0DTE penalty unless the flow is repeated, liquid, quote-aligned, and confirmed by underlying and IV behavior. Caveat: SEC support data show 0DTE’s share of listed-options volume rose materially through 2025, but institutional and hedging activity still concentrates heavily in longer maturities; one recent paper on SPX 0DTEs finds evidence more consistent with delta-hedging than with information-based trading. <span class="citation" aria-label="source references">t11view0 · t11view3 · t31view1</span></p>
|
||||
<p class="lead-term"><strong>Deep ITM versus ATM versus OTM interpretation.</strong> Plain English: moneyness changes what a trade probably means. Mechanism: deep-ITM options have large delta and mostly intrinsic value; ATM options maximize gamma sensitivity; OTM options are cheap convexity and event-lottery instruments. Required data: underlying spot, strike, tenor, delta, extrinsic value, and dividend/early-exercise context if relevant. Reliable inferences: deep-ITM flow often resembles stock replacement or hedge; ATM flow often reflects directional or gamma-sensitive positioning; OTM flow often reflects convexity demand or event speculation. Unreliable inferences: “OTM calls = informed bull; ITM puts = informed bear” without context. False positives: collars, covered overwrites, protective puts, merger-event convexity. Detection idea: bucket by delta or moneyness bands and score differently; e.g., deep-ITM contracts should require much stronger cross-asset confirmation before any directional label. Caveat: OIC explicitly notes that deep-ITM options have much larger delta and far-OTM options very low delta/probability of finishing ITM. <span class="citation" aria-label="source references">t23search5 · t22search1</span></p>
|
||||
<p class="lead-term"><strong>Implied-volatility expansion and skew changes.</strong> Plain English: IV and skew can confirm that the market repriced risk, but that repricing can come from demand pressure and dealer constraints, not only information. Mechanism: buying pressure affects the shape and level of the implied-volatility surface; skew is the strike-by-strike IV difference across the same expiry. Required data: trade prices, contemporaneous quotes, model IV, historical IV baseline, strike surface snapshots, and ideally greeks. Reliable inferences: if a contract prints aggressively and local IV lifts relative to the rest of the surface, that is useful evidence of demand. Unreliable inferences: “IV up, therefore informed” or “skew steepening, therefore directional smart money.” False positives: scheduled events, broad crash-hedge demand, dealer supply constraints, and ETF/index hedges that bleed into single-name surfaces. Detection idea: compute local IV shock, term-structure shock, and skew-slope change after excluding obvious event windows. Caveat: academic work shows public order flow can move IV shape directly, and demand-based option pricing models explain why option prices can deviate from simplistic no-demand intuition even without pure information. <span class="citation" aria-label="source references">t6search15 · t31view2 · t32search5</span></p>
|
||||
<p class="lead-term"><strong>Delta, gamma, vega context and market-maker hedging.</strong> Plain English: you cannot interpret options flow well without knowing what risk was traded. Mechanism: delta tracks directional sensitivity, gamma captures how fast delta changes, and vega captures sensitivity to IV; market makers typically hedge net delta and sometimes other greeks, pushing activity into the underlying or related options. Required data: greeks per trade or contract snapshot, underlying price path, and ideally surface snapshots. Reliable inferences: high-delta deep-ITM prints can be stock substitutes; high-gamma short-dated ATM prints can force aggressive dealer hedging; high-vega longer-dated prints may be volatility positioning. Unreliable inferences: equating large premium with large directional conviction without greek context. False positives: a vega trade into earnings, a gamma scalp, or a delta-neutral structure can all look “massive” while expressing little or no simple directional view. Detection idea: always compute delta-adjusted notional, gamma-per-day-to-expiry, and vega concentration; if the signal is strong on vega but weak on net delta, classify as volatility demand, not directional flow. Caveat: OIC treats greeks as theoretical guides, not exact realized sensitivities, and both theory and newer evidence indicate market-maker hedging materially affects both options and underlying-stock behavior. <span class="citation" aria-label="source references">t22search1 · t22search5 · t32search21 · t32search5</span></p>
|
||||
<p class="lead-term"><strong>Why large premium does not automatically imply directional conviction.</strong> This is the single biggest anti-hype principle. Large premium can come from intrinsic-heavy deep-ITM stock replacement, protective hedges, overwrites, spread packages, roll activity, event-volatility buying, index hedging, and demand-pressure-driven repricing. The literature most supportive of informed options trading becomes much stronger when the data know who initiated the trade and whether it opened a position; the public-tape version is weaker. That means a public “huge call premium” alert should never be treated as self-sufficient evidence of informed bullish conviction. <span class="citation" aria-label="source references">t11view4 · t11view6 · t21search2 · t31view2 · t32search5</span></p>
|
||||
<h2 id="equity-market-mechanics">Equity market mechanics</h2>
|
||||
<p class="lead-term"><strong>Lit exchange prints versus off-exchange/TRF prints.</strong> Plain English: lit prints happen on exchanges; off-exchange prints are reported to FINRA facilities. Mechanism: FINRA TRFs exist to report OTC transactions in NMS stocks effected otherwise than on an exchange. Off-exchange includes ATS/dark-pool activity, wholesaler/internalizer activity, and other broker-dealer OTC prints; it is not synonymous with dark pools. Required data: trade venue/exchange/TRF flag, sale conditions, timestamps, and SIP quotes. Reliable inferences: a TRF flag tells you the print was off-exchange. Unreliable inferences: “TRF = dark pool institution” or “off-exchange = hidden accumulation.” False positives: retail-wholesaler internalization, delayed reports, average-price reports, and administrative/corrective prints. Detection idea: classify off-exchange as a separate evidence channel with lower directional weight unless size, timing, and quote alignment are unusually strong and corroborated by other signals. Caveat: FINRA’s venue-level ATS and non-ATS transparency data are published on a delayed basis, so the real-time tape usually does not give venue-level dark-pool truth. <span class="citation" aria-label="source references">t27search6 · t17view0 · t28search1 · t28search13 · t27search19</span></p>
|
||||
<p class="lead-term"><strong>Trade reporting delays and corrections.</strong> Plain English: some equity prints arrive late, out of sequence, or corrected, so they can look like current intent when they are stale bookkeeping. Mechanism: FINRA’s trade reporting rules require rapid reporting in regular hours, with specific late/out-of-sequence modifiers; the SIP sale-condition matrices also encode prior reference price, average price, official open/close, contingent trade, and similar exceptions. Required data: execution timestamp, report timestamp if available, sale conditions/modifiers, and correction/cancel messages. Reliable inferences: only contemporaneously reported, last-sale-eligible regular prints should heavily influence real-time intent inference. Unreliable inferences: any print with late/out-of-sequence/correction pricing logic treated as fresh pressure. False positives: after-hours reports, NAV-based or average-price trades, prior-reference-price corrections, or late-reported blocks. Detection idea: maintain an equity eligibility state machine keyed off sale conditions and late thresholds; drop or heavily penalize <code>.Z</code>, <code>.U</code>, prior-reference-price, average-price, and corrected/cancelled activity from directional alerts. Caveat: what matters for replay is event time, not when your app happened to ingest the message. <span class="citation" aria-label="source references">t18view0 · t18view2 · t19view4 · t19view6 · t33search16</span></p>
|
||||
<p class="lead-term"><strong>Bid/mid/ask classification.</strong> Plain English: trade-signing in equities is also an inference problem. Mechanism: classic quote rule, tick rule, and Lee-Ready combine price-vs-quote and last-price direction to classify prints. Required data: high-quality trade-and-quote data with participant timestamps if possible. Reliable inferences: prints clearly at ask or bid on fresh narrow quotes. Unreliable inferences: midpoint/inside-spread prints and high-speed environments with trade/quote lag. False positives: ECN/internalized midpoint activity, short-sale bias in certain classification settings, and high-volume periods where trade signing degrades. Detection idea: use quote rule first, then tick fallback only when necessary, and report confidence. Caveat: the literature consistently finds classification algorithms degrade for inside-quote trades and fast markets; they are useful, but not ground truth. <span class="citation" aria-label="source references">t30view1 · t30view3 · t30view2</span></p>
|
||||
<p class="lead-term"><strong>Large block prints.</strong> Plain English: a big print can matter, but a big print is often plumbing, not alpha. Mechanism: institutions and brokers use crosses, contingent trades, and other large negotiated mechanisms to minimize market impact; those prints may hit the tape in ways that do not represent fresh, aggressive price discovery. Required data: size versus symbol baseline, sale conditions, report timing, TRF/lit flag, and quote context. Reliable inferences: a large print at or through the quote, reported contemporaneously, followed by related activity, is more meaningful than a standalone large out-of-sequence cross. Unreliable inferences: “large print = accumulation/distribution” without quote and condition context. False positives: VWAP/average-price allocations, portfolio transitions, ETF basket hedges, step-outs, and contingent trades. Detection idea: rank size by symbol intraday percentile, require quote alignment and contemporaneous reporting, and reduce weight if sale conditions indicate contingent/cross/official pricing logic. Caveat: publicly available equity tape generally shows the print, not the parent order, broker intent, or portfolio context. <span class="citation" aria-label="source references">t19view2 · t19view6 · t17view0</span></p>
|
||||
<p class="lead-term"><strong>Accumulation/distribution inference limits.</strong> Plain English: repeated buying-like prints do not prove a long-term institution is accumulating, and repeated selling-like prints do not prove distribution. Mechanism: a parent order can be sliced across venues and brokers, but so can hedges, passive rebalancing, or execution algorithms chasing benchmarks. Required data: sequential trade-signing, quote changes, off-exchange/lit mix, and volume baselines. Reliable inferences: persistent quote-consistent imbalance that also moves price/quote and survives event-noise filters. Unreliable inferences: isolated net-buy or net-sell tape counts. False positives: benchmark execution, ETF rebalance days, opening/closing auction effects, and market-making inventory management. Detection idea: look for multi-window persistence, price response, and quote depletion rather than raw counts. Caveat: without order-book provenance or account data, accumulation is a hypothesis, not an observed fact. <span class="citation" aria-label="source references">t30view2 · t7search0</span></p>
|
||||
<p class="lead-term"><strong>Quote/spread context.</strong> Plain English: the same print means different things in a one-cent spread than in a thirty-cent spread. Mechanism: effective spread measures execution relative to the midpoint, while quoted spread describes visible trading cost; spreads vary enormously by liquidity tier. Required data: NBBO at execution, spread width, trade price, and liquidity baseline. Reliable inferences: quote-aligned prints in tight spreads are more informative. Unreliable inferences: quote-aligned prints in wide spreads or thin names. False positives: any classifier that ignores spread regime will overstate confidence in illiquid names. Detection idea: attach a quality penalty as spread percentile widens and as quote depth thins. Caveat: SEC support data show even listed-options spreads are much worse outside the most liquid underliers, which is exactly where retail “unusual activity” tools often overfire. <span class="citation" aria-label="source references">t11view1 · t11view2</span></p>
|
||||
<p class="lead-term"><strong>Odd lots and liquidity issues.</strong> Plain English: small-share prints and small-size quotes can matter in modern equities, but they complicate simplistic tape reading. Mechanism: odd-lot information has been added and expanded under recent Regulation NMS changes, and best odd-lot orders can improve on the displayed NBBO. Required data: odd-lot quote/transaction support from the provider, round-lot size metadata, and quote depth. Reliable inferences: none, unless you know how your provider handles odd-lot information and mixed lots. Unreliable inferences: using only displayed round-lot NBBO when meaningful odd-lot liquidity exists inside it, or assuming every small print is noise. False positives: apparent quote “crossings,” phantom slippage, and mismeasured midpoint prints if odd-lot improvement is ignored. Detection idea: if your provider does not fully support odd-lot quote information, lower confidence for high-priced names and small-size prints. Caveat: the rules and implementations have been changing, so provider normalization differences matter a lot. <span class="citation" aria-label="source references">t17view1 · t14search13 · t14search11</span></p>
|
||||
<p class="lead-term"><strong>Dark-pool inference limits from public trade/quote data.</strong> Plain English: the public tape can tell you a lot about off-exchange activity, but usually not enough to say which dark pool matched the trade or what the resting hidden liquidity looked like in real time. Mechanism: ATS and non-ATS transparency data exist, but on delayed publication schedules; real-time SIP/TRF dissemination does not usually solve attribution at the same granularity. Required data: TRF flag in real time, plus delayed FINRA ATS/non-ATS transparency for ex-post study. Reliable inferences: rising off-exchange share in a ticker may matter as context. Unreliable inferences: “this TRF print came from a specific dark pool” or “this dark print is institutional accumulation.” False positives: internalized retail orders and non-ATS broker activity inside TRF totals. Detection idea: use real-time off-exchange prints as weak confirmation only, and use delayed FINRA transparency data to build ticker-level venue profiles for research, not same-minute alert certainty. <span class="citation" aria-label="source references">t28search1 · t28search3 · t27search19 · t27search1</span></p>
|
||||
<h2 id="cross-asset-confirmation-and-participant-hypotheses">Cross-asset confirmation and participant hypotheses</h2>
|
||||
<p>The most meaningful confirmations are <strong>mechanically linked confirmations</strong>, not vibe-based ones. Stronger confirmation examples are: aggressive call buying in a liquid contract followed by quote-consistent buy pressure or price-strength in the underlying; put buying or downside skew steepening accompanied by weak underlying tape; volatility-demand flow followed by realized-volatility expansion; repeated activity in the same ticker across sessions; and single-name flow occurring close to identifiable catalysts such as earnings, FDA meetings, or corporate filings. Weaker confirmations are: one random off-exchange print, one isolated “large premium” options trade without IV context, or sector peers moving for unrelated macro reasons. Highly overfit confirmations are those that chain together many weak clues until everything looks significant. <span class="citation" aria-label="source references">t21search2 · t21search0 · t21search18 · t34search13 · t34search10</span></p>
|
||||
<p>Options flow confirmed by equity prints is meaningful when the linkage is <strong>time-tight, quote-consistent, and liquidity-aware</strong>. Example: buyer-initiated call activity in liquid weekly or monthly options, near-ATM or moderately OTM, accompanied by aggressive underlying equity prints or upward quote revision within minutes. Equity activity confirmed by options flow is strongest when the options are not obviously hedges or spreads and when IV/skew reacts in the same direction as the tape story. Price/volume confirmation in the underlying is stronger than pure social-volume or “mentions” confirmation because the options market and stock market are explicitly linked by hedging and arbitrage. IV confirmation matters most when the flow’s hypothesis is volatility demand or event repricing, and less when the trade is deep-ITM stock replacement. Realized-volatility confirmation matters for volatility-buyer and 0DTE-type hypotheses, but it is too slow to be primary confirmation for same-session direction. Sector/theme clustering can help, but it becomes overfit fast unless the catalyst is known to be sector-wide, such as a macro release or an industry headline. <span class="citation" aria-label="source references">t4search3 · t4search11 · t21search2 · t31view1 · t32search21</span></p>
|
||||
<p>A useful participant-hypothesis layer is this:</p>
|
||||
<p class="lead-term"><strong>Institutional directional buyer.</strong> Supporting evidence: buy-side options aggression in liquid contracts, repeated bursts or multi-venue sweeps, strong <code>volume / prior_OI</code>, supportive underlying tape, and no spread/hedge flags. Weakening evidence: multi-leg/stock-option condition codes, deep-ITM structure, isolated 0DTE bursts, earnings proximity without cross-asset follow-through. Data required: trades, quotes, OI, moneyness, greeks, underlying prints, catalyst calendar. Realistic confidence: moderate at best with public data. Common misclassification: volatility buyers, call overwrites being mistaken for call buying, or spread legs misread directionally. <span class="citation" aria-label="source references">t11view4 · t11view6 · t29view4 · t24search2</span></p>
|
||||
<p class="lead-term"><strong>Institutional directional seller.</strong> Supporting evidence: ask-side put demand or bid-side call selling with supportive downside stock response and rising downside skew. Weakening evidence: protective-hedge patterns around earnings, index/ETF hedge spillover, or put volume concentrated in standard downside-hedge expiries. Confidence: moderate at best. Common misclassification: portfolio hedging labeled as alpha. <span class="citation" aria-label="source references">t6search15 · t21search2 · t25search0</span></p>
|
||||
<p class="lead-term"><strong>Volatility buyer.</strong> Supporting evidence: straddle-/strangle-like package likelihood, high vega concentration, IV expansion, realized-vol uptick after the trade, or event proximity with noncommittal delta profile. Weakening evidence: strong one-sided equity confirmation or deep directional delta concentration. Confidence: moderate when grecian context is good. Common misclassification: directional call or put buyers who also happen to lift IV. <span class="citation" aria-label="source references">t21search2 · t22search1 · t31view2</span></p>
|
||||
<p class="lead-term"><strong>Volatility seller.</strong> Supporting evidence: net sell pressure in rich IV regimes, covered-write/collar-like structures, or post-event premium harvesting patterns. Weakening evidence: strong one-sided underlying tape or repeated near-ask buying in the same series. Confidence: low-to-moderate with public data because many short-vol structures are packaged. Common misclassification: bearish or bullish stance inferred from premium collection. <span class="citation" aria-label="source references">t25search8 · t24search2 · t24search3</span></p>
|
||||
<p class="lead-term"><strong>Hedge or reactive flow.</strong> Supporting evidence: deep-ITM stock-replacement characteristics, stock-option package flags, ETF/index coincidence, expiries concentrated around known events, or flow patterns literature says are consistent with dealer delta hedging rather than information. Weakening evidence: repeated same-name activity across sessions with longer-dated maturities and supportive stock follow-through. Confidence: often higher than directional inference because “hedge/reactive” is a broader, humbler category. Common misclassification: almost all whale-alert systems underweight this bucket. <span class="citation" aria-label="source references">t29view4 · t31view1 · t32search21</span></p>
|
||||
<p class="lead-term"><strong>Spread or arbitrage structure.</strong> Supporting evidence: explicit multi-leg codes, paired strikes/expiries, put-call parity or box-like geometry, stock-option package flags, and isolated leg prices that make no standalone sense. Weakening evidence: single-leg regular prints in very active liquid contracts without companion legs. Confidence: moderate when complex flags are present, lower when reconstructing heuristically. Common misclassification: one leg of a vertical spread presented as a clean bullish call buy. <span class="citation" aria-label="source references">t29view4 · t2search16</span></p>
|
||||
<p class="lead-term"><strong>Retail momentum or speculation.</strong> Supporting evidence: 0DTE or very short-dated OTM flow, crowded meme names, small-lot clustering, and weak or chaotic cross-asset confirmation. Weakening evidence: longer-dated liquid contracts, repeated institution-like bursts, and strong contract-relative anomaly versus a ticker’s normal retail profile. Confidence: low-to-moderate; retail and professional tactical flow can look similar on public tape. Common misclassification: every flashy short-dated OTM call burst labeled “institutional bullish.” <span class="citation" aria-label="source references">t11view0 · t31view1 · t5search0</span></p>
|
||||
<p class="lead-term"><strong>Event-driven positioning.</strong> Supporting evidence: flow concentrated ahead of earnings, FDA meetings, SEC filings, M&A rumor windows, or major macro releases; elevated front-end IV; straddle-like or one-sided convexity demand. Weakening evidence: no nearby catalyst and no realized move after repeated alerts. Confidence: moderate for “event-driven,” low for exact direction. Common misclassification: informed alpha versus generic event repricing. <span class="citation" aria-label="source references">t21search0 · t21search18 · t34search13 · t34search10</span></p>
|
||||
<p class="lead-term"><strong>Unknown or abstain.</strong> Supporting evidence: conflicting clues, poor quote quality, wide spreads, stale quotes, complex conditions, low-liquidity contracts, corrected prints, or better hedge explanations. Weakening evidence: there often is no need to weaken this. Confidence: this should be frequent. Common misclassification: systems that force every alert into a story create false authority. <span class="citation" aria-label="source references">t9search2 · t20search1 · t18view2</span></p>
|
||||
<h2 id="signal-catalog">Signal catalog</h2>
|
||||
<p>Below is a catalog optimized for explainability and deterministic reconstruction rather than hype. “Thresholds” are deliberately framed as <strong>relative baselines</strong> or percentiles because absolute cutoffs age badly across tickers, expiries, and regime shifts.</p>
|
||||
<p class="lead-term"><strong>Directional options aggression.</strong> Market mechanism: liquidity-taking in a single option series. Supported hypothesis: institutional directional buyer or seller. Required data: OPRA trades, NBBO quotes, contract metadata, timestamps. Helpful data: greeks, underlying trades/quotes, next-day OI. Detection: classify print vs bid/ask/mid; require narrow spread and fresh quote; aggregate signed premium or delta-adjusted notional in a short window. Suggested threshold: contract-level signed premium or delta-notional above the ticker-expiry-strike percentile baseline. Confidence components: aggressor confidence, spread tightness, quote age, liquidity tier, repeat persistence. False-positive penalties: multi-leg flags, 0DTE, deep-ITM, catalyst proximity without confirmation. Abstain when quote is stale or midpoint-heavy. Preserve evidence: raw trade, quote snapshot, distance to bid/ask/mid, spread, timestamps, condition code, classification path. Stage: <strong>MVP</strong>. <span class="citation" aria-label="source references">t20search1 · t9search2 · t22search1</span></p>
|
||||
<p class="lead-term"><strong>Premium anomaly.</strong> Mechanism: unusually large premium concentration in a contract or ticker. Supported hypothesis: broad “attention-demand” rather than directly directional. Required data: premium, historical baselines, contract metadata. Helpful data: delta, extrinsic/intrinsic split, OI, IV, underlying ADV. Detection: rank premium versus own-history and ticker-day distribution; split into intrinsic-heavy and extrinsic-heavy buckets. Threshold: top decile or top percentile relative to contract and ticker baselines, not absolute dollars. Confidence components: baseline rarity, liquidity, extrinsic share. Penalties: deep-ITM high-delta stock replacement, spread/hedge flags. Abstain when premium is mostly intrinsic or the contract is adjusted. Preserve evidence: premium, multiplier, moneyness, delta, OI, IV, condition codes. Stage: <strong>MVP</strong>, but never user-facing on its own. <span class="citation" aria-label="source references">t23search5 · t31view2 · t34search7</span></p>
|
||||
<p class="lead-term"><strong>Volume/Open-interest anomaly.</strong> Mechanism: current trading dwarfs prior outstanding positions. Supported hypothesis: new positioning or major turnover. Required data: intraday volume and prior-day OI. Helpful data: next-day OI for validation, exchange open/close summaries. Detection: compute <code>volume / prior_OI</code>, <code>signed_delta_notional / prior_OI</code>, and ticker-relative ranks. Threshold: high percentile by contract and by ticker. Confidence components: liquidity, repeated activity, next-day OI consistency in research mode. Penalties: expiry-week rolls, corporate actions, adjusted series. Abstain when OI is stale after unusual corporate events or contract adjustments. Preserve evidence: volume trajectory, prior OI, next OI when later available, expiry, adjusted flag. Stage: <strong>MVP</strong>. <span class="citation" aria-label="source references">t6search4 · t24search2 · t34search3</span></p>
|
||||
<p class="lead-term"><strong>Repeat burst or sweep clustering.</strong> Mechanism: urgency or persistent parent-order slicing. Supported hypothesis: institutional directional or volatility buyer/seller. Required data: per-trade timestamp, venue, series ID, price. Helpful data: underlying prints, quote updates. Detection: cluster same-series or same-thesis prints within short event-time windows; identify multi-venue sweeps or repeated bursts over several minutes/hours. Threshold: cluster count, total signed delta-notional, and venue diversity above baseline. Confidence components: multi-venue evidence, price escalation, persistence. Penalties: auction or complex condition codes. Abstain when burst consists mostly of complex or midpoint trades. Preserve evidence: member prints in cluster, venues, micro-timing, price ladder. Stage: <strong>MVP</strong> for same-series sweeps, <strong>v2</strong> for multi-series thesis clustering. <span class="citation" aria-label="source references">t26search14 · t29view4</span></p>
|
||||
<p class="lead-term"><strong>Block trade interpretation.</strong> Mechanism: single large print or tight local cluster. Supported hypothesis: only weakly directional unless corroborated. Required data: trade size, quote context, condition codes, venue/TRF flag. Helpful data: subsequent same-series or underlying activity. Detection: size percentile + contemporaneous quote test + sale-condition eligibility. Threshold: top size percentile within contract or ticker. Confidence components: contemporaneous reporting, quote alignment, follow-on activity. Penalties: cross/auction/contingent/average-price/official conditions. Abstain when large print is non-regular or unconfirmed. Preserve evidence: size percentile, code, quote snapshot, late/correction state. Stage: <strong>MVP</strong>, but conservative. <span class="citation" aria-label="source references">t19view6 · t18view0 · t29view4</span></p>
|
||||
<p class="lead-term"><strong>Spread/hedge likelihood.</strong> Mechanism: identifying that a “signal” is probably not a clean directional single-leg bet. Supported hypothesis: spread/arbitrage or hedge/reactive flow. Required data: condition codes, nearby trades across strikes/expiries/put-call sides, underlying trades. Helpful data: greeks. Detection: explicit OPRA complex flags first; then geometric matching for verticals, straddles, strangles, collars, rolls, stock-option combinations. Threshold: probability model or rule count over a confidence bar. Confidence components: explicit complex code, size symmetry, delta offset, shared timestamps. Penalties: none; this is itself a safety signal. Abstain when package reconstruction is ambiguous. Preserve evidence: all linked legs and linkage rationale. Stage: <strong>MVP</strong> for explicit codes, <strong>v2</strong> for heuristic reconstruction. <span class="citation" aria-label="source references">t29view4 · t2search16</span></p>
|
||||
<p class="lead-term"><strong>IV expansion confirmation.</strong> Mechanism: local demand reprices IV upward. Supported hypothesis: volatility buyer, event-driven positioning, sometimes directional buyer. Required data: trade price, quote snapshot, model IV, historical IV baseline. Helpful data: surface/skew snapshots and greeks. Detection: compare post-trade IV to pre-trade and to local surface neighborhood. Threshold: local IV shock above contract-specific baseline percentile. Confidence components: localized IV lift, not just market-wide lift; persistence after the print. Penalties: scheduled-event windows, broad market vol regime jumps, surface-wide repricing. Abstain when IV is vendor-derived from sparse stale quotes. Preserve evidence: pre/post IV, surrounding strikes’ IV, tenor bucket. Stage: <strong>v2</strong> if IV quality is good; otherwise wait. <span class="citation" aria-label="source references">t31view2 · t25search8 · t22search5</span></p>
|
||||
<p class="lead-term"><strong>Price/volume confirmation in the underlying.</strong> Mechanism: genuine information or strong hedging pressure often leaks into the stock. Supported hypothesis: institutional directional or strong hedge/reactive flow. Required data: underlying trades and quotes, symbol baseline volume, event-time clocks. Helpful data: off-exchange flags, short-term realized vol. Detection: measure post-alert price drift, quote revision, and volume imbalance over controlled windows. Threshold: short-horizon abnormal move or abnormal signed-volume percentile relative to same time-of-day baseline. Confidence components: immediacy, persistence, quote-based classification quality. Penalties: macro tape shock or sector-wide move. Abstain on market-wide news minutes. Preserve evidence: pre/post price, short-horizon volume, same-window market/sector moves. Stage: <strong>MVP</strong>. <span class="citation" aria-label="source references">t4search3 · t21search0 · t32search21</span></p>
|
||||
<p class="lead-term"><strong>Equity off-exchange confirmation.</strong> Mechanism: related risk transfer occurs off-exchange. Supported hypothesis: hedge/reactive flow or institution-sized execution. Required data: TRF flags, size, timing, sale conditions. Helpful data: delayed FINRA ATS/non-ATS profiles for research. Detection: require real-time TRF activity in the same ticker during or just after the options cluster, but only count eligible and contemporaneous prints. Threshold: ticker- and time-of-day-adjusted off-exchange size anomaly. Confidence components: size anomaly plus price/quote response. Penalties: non-ATS context, average-price or late modifiers. Abstain when the off-exchange activation is purely delayed or condition-ineligible. Preserve evidence: TRF print details and modifier eligibility. Stage: <strong>v2</strong>. <span class="citation" aria-label="source references">t27search6 · t28search1 · t18view0 · t19view6</span></p>
|
||||
<p class="lead-term"><strong>Equity quote-aligned print classification.</strong> Mechanism: infer aggressive stock-side prints as supporting evidence. Supported hypothesis: directional or hedge/reactive flow. Required data: stock trades and quotes. Helpful data: participant timestamps. Detection: quote rule + Lee-Ready fallback with confidence. Threshold: signed notional imbalance over short horizon. Confidence components: fresh quote, inside-spread share, spread width. Penalties: midpoint-heavy or fast-market mismatch. Abstain when classification confidence is poor. Preserve evidence: trade/quote join and confidence path. Stage: <strong>MVP</strong>. <span class="citation" aria-label="source references">t30view1 · t30view3 · t30view2</span></p>
|
||||
<p class="lead-term"><strong>Catalyst proximity adjustment.</strong> Mechanism: event windows explain a lot of seemingly unusual flow. Supported hypothesis: event-driven positioning or volatility demand. Required data: earnings calendar, SEC filing/news feed, biotech/FDA event feed if covering that universe, macro calendar. Helpful data: historical event responses by ticker. Detection: compute distance to scheduled earnings, advisory meetings, SEC filing bursts, or known macro releases. Threshold: e.g., same day, next day, or pre-defined event windows. Confidence components: proximity and relevance. Penalties: strong because events create lots of informed-looking but non-informational or broadly expected flow. Abstain when event context dominates the tape story. Preserve evidence: event type, source, timestamp. Stage: <strong>MVP</strong> for earnings and SEC filings, <strong>v2</strong> for broader news/FDA. <span class="citation" aria-label="source references">t34search0 · t34search10 · t34search13</span></p>
|
||||
<p class="lead-term"><strong>Low-liquidity and wide-spread penalty.</strong> Mechanism: bad markets create fake conviction. Supported hypothesis: none; this is a quality control signal. Required data: spread width, quote size, trade count, contract ADV/OI. Helpful data: SEC/Cboe liquidity-tier baselines. Detection: percentile-rank spread, zero-depth frequency, and quote-age instability. Threshold: heavy penalties in the worst liquidity buckets. Confidence components: tighter markets get less penalty. Penalties: n/a. Abstain when spread percentile and quote staleness are both extreme. Preserve evidence: spread, depth, quote age, contract liquidity rank. Stage: <strong>MVP</strong>. <span class="citation" aria-label="source references">t11view1 · t11view2 · t9search2</span></p>
|
||||
<p class="lead-term"><strong>Stale-quote penalty.</strong> Mechanism: old quotes break most downstream inferences. Supported hypothesis: none. Required data: trade time, quote time, underlying move since quote, provider receive times if available. Helpful data: packet timestamps. Detection: compute option-quote age and underlying return since quote. Threshold: penalty rises sharply once quote age or underlying move exceeds regime-specific tolerance. Confidence components: fresh quote reduces penalty. Abstain when your trade/quote join is visibly compromised. Preserve evidence: original timestamps and join method. Stage: <strong>MVP</strong>. <span class="citation" aria-label="source references">t9search2 · t33search4 · t33search6</span></p>
|
||||
<p class="lead-term"><strong>Earnings or event-noise penalty.</strong> Mechanism: scheduled uncertainty inflates both directional and volatility-looking activity. Supported hypothesis: event-driven, not necessarily informed. Required data: earnings/news/event calendar and IV term structure. Helpful data: historical event IV patterns. Detection: penalize front-end anomalies into scheduled events unless the system explicitly labels them event-driven. Threshold: event window based on same-day or next-day timing and front-end IV elevation. Confidence components: if the product category is “event flow,” this becomes category context instead of pure penalty. Abstain when the event explains the anomaly better than any directional hypothesis. Preserve evidence: event timeline, front-end IV, historical event seasonality. Stage: <strong>MVP</strong>. <span class="citation" aria-label="source references">t25search0 · t25search8 · t34search0</span></p>
|
||||
<h2 id="false-positives-and-scoring-philosophy">False positives and scoring philosophy</h2>
|
||||
<p>The most common false positive is <strong>spreads misread as single-leg conviction</strong>. Simple systems fail because they rank each print independently and ignore explicit complex flags or nearby compensating legs. Detect or penalize by reading OPRA condition codes first, then reconstructing likely packages. Abstain when a leg can plausibly belong to a complex or stock-option package and the package confidence is non-trivial. Closely related is <strong>hedges misread as alpha</strong>: protective puts, covered calls, collars, ETF overlays, and stock-replacement trades can create huge premium and size without expressing fresh fundamental insight. Penalize deep-ITM, pairings with stock prints, and sector/index hedge overlap, and abstain when the greek profile screams hedge more than directional bet. <span class="citation" aria-label="source references">t29view4 · t32search21 · t23search5</span></p>
|
||||
<p>Another major failure mode is <strong>market-maker/dealer hedging effects</strong>. Options demand can move IV and induce stock hedging flows; that does not mean the initiating trade carried information about fundamentals. Papers on demand pressure and market-maker hedging make this point bluntly, and 0DTE research strengthens it for ultra-short-dated flow. Penalize signals that are mainly explained by gamma/vega concentration, especially near expiry or macro events, and abstain when the evidence points more naturally to hedging propagation than to informed direction. <span class="citation" aria-label="source references">t31view2 · t32search5 · t31view1</span></p>
|
||||
<p>Then there is <strong>earnings lottery flow and event repricing</strong>. Simple systems see elevated front-end IV, big OTM call/put buying, and large premium into earnings and assume information. But earnings mechanically attract volatility demand, and even directionally “right” traders can lose from post-event IV crush. Detect and penalize with catalyst calendars, front-end IV elevation, and repeated historical event patterns. Abstain liberally in the final 24 to 48 hours before scheduled earnings unless the product is explicitly labeling the flow as event-driven rather than smart. Similar logic applies to FDA calendars, merger windows, and macro releases. <span class="citation" aria-label="source references">t25search8 · t25search19 · t34search13 · t21search18</span></p>
|
||||
<p class="lead-term"><strong>ETF and index hedges</strong> fool simple systems because they can splash into single-name names via baskets, sector ETFs, and dealer hedge propagation. A large put buyer in an index or ETF can alter local greeks, skew, and stock hedging demand without saying much about any one constituent. Penalize single-name directional claims when broad-market or sector vol is simultaneously repricing. Abstain if the single-name options signal has weak idiosyncratic confirmation and strong broad-market-correlation explanation. <span class="citation" aria-label="source references">t31view2 · t32search21</span></p>
|
||||
<p class="lead-term"><strong>Meme or retail momentum</strong> is another trap. Retail-heavy 0DTE or weekly OTM flow can produce dramatic tape and premium. Simple systems overinterpret it because urgency and convexity look “institutional.” Detect with short tenor, low dollar commitment relative to socialized volume, repeated crowd-favorite names, and poor cross-asset discipline. Penalize when the name is liquidity-fragmented and the flow is one-session, one-strike, one-expiry noise. Abstain if the trade only looks special because the contract is cheap. <span class="citation" aria-label="source references">t11view0 · t5search0</span></p>
|
||||
<p class="lead-term"><strong>Illiquid contracts, wide/stale quotes, delayed/corrected prints, and corporate actions</strong> are the classic data traps. Illiquid options make aggressor-side and IV extraction unreliable; wide quotes make midpoint logic almost meaningless; delayed or corrected equity prints create phantom accumulation; adjusted options after splits, mergers, or special dividends break naïve notional and OI comparisons. Penalize each directly from the feed and from OCC memos, and abstain whenever the raw market quality or reference data are clearly compromised. <span class="citation" aria-label="source references">t11view1 · t9search2 · t18view2 · t34search7</span></p>
|
||||
<p>A sound scoring framework therefore needs at least four layers:</p>
|
||||
<p class="lead-term"><strong>Evidence quality score.</strong> Inputs: quote freshness, spread percentile, liquidity tier, condition-code eligibility, timestamp completeness, adjusted-contract status, and provider coverage quality. This is about whether the data can support inference at all. <span class="citation" aria-label="source references">t9search2 · t11view1 · t33search4</span></p>
|
||||
<p class="lead-term"><strong>Signal strength score.</strong> Inputs: signed delta-notional anomaly, <code>volume / prior_OI</code>, sweep/burst persistence, IV/skew shock, and underlying confirmation. This is about what happened in the market. <span class="citation" aria-label="source references">t11view6 · t21search2 · t31view2</span></p>
|
||||
<p class="lead-term"><strong>False-positive penalty score.</strong> Inputs: spread/hedge likelihood, 0DTE/event noise, ETF/index overlay, late/corrected/off-hours status, and low-liquidity pathology. This is about alternative explanations. <span class="citation" aria-label="source references">t29view4 · t31view1 · t18view0 · t19view6</span></p>
|
||||
<p class="lead-term"><strong>Hypothesis confidence score.</strong> Inputs: how well the surviving evidence specifically matches a participant hypothesis such as directional buyer, volatility buyer, or hedge/reactive flow. This is distinct from conviction. A strong anomaly can have <strong>high strength but low confidence</strong> if multiple explanations remain plausible. <span class="citation" aria-label="source references">t21search2 · t32search21</span></p>
|
||||
<p>A single “smart money score” is misleading because it collapses all of these dimensions into one number and invites users to mistake anomaly for information. The product-facing compromise is a label like <strong>Smart Flow candidate</strong> only when: evidence quality is high, signal strength is high, penalties are modest, and at least one participant hypothesis has a clear lead. Even then, the UI should show the label as a <strong>candidate with confidence band</strong>, not as a verdict. Good alerts read like: “High-quality bullish directional candidate; ask-side call aggression in liquid ATM weeklys; supportive underlying buy pressure; no explicit complex flags; earnings not imminent.” Bad alerts read like: “$5M call premium in XYZ.” The second version is clickbait with no epistemic spine. <span class="citation" aria-label="source references">t20search1 · t24search2 · t25search8</span></p>
|
||||
<h2 id="data-requirements-validation-and-final-recommendations">Data requirements, validation, and final recommendations</h2>
|
||||
<h3 id="data-requirement-matrix">Data requirement matrix</h3>
|
||||
<div class="table-wrap"><table>
|
||||
<thead><tr><th>Data type</th><th>Why it matters</th><th>Required or optional</th><th>Latency sensitivity</th><th>Retail-accessible availability</th><th>Common limitations</th></tr></thead>
|
||||
<tbody>
|
||||
<tr><td>OPRA options trades</td><td>Core record of listed-options prints, sizes, prices, and conditions.</td><td><strong>Required</strong></td><td>High</td><td>Available through retail-facing vendors and APIs that source OPRA. <span class="citation" aria-label="source references">t24search5 · t15search2 · t15search0</span></td><td>No trader identity; no direct aggressor flag; no trade-level open/close.</td></tr>
|
||||
<tr><td>Options NBBO quotes</td><td>Needed for bid/ask/mid classification, spread, quote age, IV extraction.</td><td><strong>Required</strong></td><td>High</td><td>Available from OPRA-based providers; some free plans are delayed or indicative. <span class="citation" aria-label="source references">t15search2 · t15search5 · t15search11</span></td><td>Top-of-book only in many retail stacks; stale or conflated delivery may exist.</td></tr>
|
||||
<tr><td>Options trade condition codes</td><td>Essential for excluding complex, auction, cross, extended-hours, or compression activity.</td><td><strong>Required</strong></td><td>High</td><td>Present in OPRA/native specs. <span class="citation" aria-label="source references">t29view4 · t29view1</span></td><td>Easy for downstream vendors to normalize away unless preserved raw.</td></tr>
|
||||
<tr><td>Open interest</td><td>Needed for <code>volume / OI</code>, opening-likelihood, and baseline context.</td><td><strong>Required</strong></td><td>Low intraday, medium daily</td><td>OCC publishes OI; many vendors redistribute it. <span class="citation" aria-label="source references">t6search4 · t29view3</span></td><td>End-of-day only; not live inventory.</td></tr>
|
||||
<tr><td>Greeks</td><td>Needed to distinguish delta, gamma, and vega-driven flow.</td><td><strong>Strongly preferred</strong></td><td>Medium</td><td>Some vendors provide modeled greeks; Cboe trade-by-trade greeks are T+1. <span class="citation" aria-label="source references">t22search5 · t15search15</span></td><td>Vendor methodology differs; real-time greeks may be model-dependent.</td></tr>
|
||||
<tr><td>Implied volatility</td><td>Needed for IV shock, skew, tenor context, event repricing.</td><td><strong>Strongly preferred</strong></td><td>Medium</td><td>Often vendor-derived or model-derived. <span class="citation" aria-label="source references">t25search8 · t15search15</span></td><td>Sparse quotes and stale markets can make IV noisy.</td></tr>
|
||||
<tr><td>Underlying equity trades</td><td>Needed for cross-asset confirmation and dealer-hedge effects.</td><td><strong>Required</strong></td><td>High</td><td>SIP-based access is common; free plans may only expose one venue like IEX. <span class="citation" aria-label="source references">t16search5 · t16search8</span></td><td>Single-venue feeds are not full-market truth.</td></tr>
|
||||
<tr><td>Underlying equity quotes</td><td>Needed for stock trade-signing, spread context, and event-time joins.</td><td><strong>Required</strong></td><td>High</td><td>SIP feeds widely available at paid tiers. <span class="citation" aria-label="source references">t16search5 · t16search2</span></td><td>Trade-signing remains inferred, not explicit.</td></tr>
|
||||
<tr><td>Off-exchange/TRF flags</td><td>Needed to separate lit from off-exchange confirmation.</td><td><strong>Required</strong></td><td>High</td><td>Included in SIP/TAQ-style trade data and vendor-normalized schemas. <span class="citation" aria-label="source references">t27search6 · t16search6</span></td><td>TRF is broader than ATS/dark pool.</td></tr>
|
||||
<tr><td>Corporate actions</td><td>Needed to detect adjusted contracts, split effects, and broken baselines.</td><td><strong>Required</strong></td><td>Medium</td><td>OCC info memos and market data reference feeds. <span class="citation" aria-label="source references">t34search3 · t34search7</span></td><td>Easy to miss or lag if reference-data pipeline is weak.</td></tr>
|
||||
<tr><td>Earnings calendar</td><td>Needed for event-noise and earnings repricing penalties.</td><td><strong>Required</strong></td><td>Medium</td><td>Public calendars are common. <span class="citation" aria-label="source references">t34search0</span></td><td>Time-of-day and revisions can be messy across providers.</td></tr>
|
||||
<tr><td>News or event feeds</td><td>Needed for SEC filings, M&A, FDA, and macro context.</td><td><strong>Optional for raw MVP, required for good product quality</strong></td><td>Medium to High</td><td>SEC EDGAR and FDA calendars are public; richer news feeds are separate. <span class="citation" aria-label="source references">t34search10 · t34search13</span></td><td>Entity mapping and deduping are nontrivial.</td></tr>
|
||||
<tr><td>Sector or industry classification</td><td>Needed for theme clustering and market-relative analysis.</td><td><strong>Optional</strong></td><td>Low</td><td>Common in reference datasets.</td><td>Taxonomy mismatch across providers.</td></tr>
|
||||
<tr><td>Historical baselines</td><td>Needed for anomaly scoring and percentile thresholds.</td><td><strong>Required</strong></td><td>Low for storage, high for research correctness</td><td>Build from your own normalized history.</td><td>Regime change, splits, symbol changes, survivorship issues.</td></tr>
|
||||
<tr><td>Exchange proprietary open/close summaries</td><td>Needed for better opening/closing and participant-type research.</td><td><strong>Optional but very valuable for v2</strong></td><td>Low to Medium</td><td>Cboe and NYSE sell them. <span class="citation" aria-label="source references">t24search2 · t24search3</span></td><td>Exchange-scoped, not full-market.</td></tr>
|
||||
</tbody></table></div>
|
||||
<p>The biggest provider gap for a retail-accessible MVP is not raw trades. It is <strong>high-quality quotes, raw condition codes, timestamps, contract-reference hygiene, and consistent greeks/IV</strong>. A second important gap is <strong>trade-level open/close and participant-type attribution</strong>, which generally requires proprietary exchange datasets rather than plain OPRA. A third is <strong>venue-granular off-exchange attribution in real time</strong>; FINRA transparency is useful, but delayed. <span class="citation" aria-label="source references">t15search2 · t15search5 · t22search5 · t28search1 · t24search2</span></p>
|
||||
<h3 id="validation-and-backtesting">Validation and backtesting</h3>
|
||||
<p>Validation has to be done in <strong>event time</strong>, not processing time. The tape often contains multiple timestamps, and providers differ on what they expose. If your alerts are built on when your system <em>received</em> data instead of when the market event occurred, you will confuse network delay with signal timing and accidentally create lookahead or mis-ordering artifacts. Preserve raw event timestamps, provider receive timestamps, and quote/trade join rules so any alert can be reconstructed exactly. <span class="citation" aria-label="source references">t33search1 · t33search4 · t33search6 · t33search16</span></p>
|
||||
<p>Avoid lookahead bias aggressively. Same-day alerting may use prior-day OI, but not tomorrow’s OI; it may use contemporaneous IV and quotes, but not later quote repairs; it may use known earnings calendars, but not future news that had not yet arrived. Validation windows should be time-of-day aware and should compare against historical distribution for that ticker, tenor bucket, and regime. A baseline for “unusual” should generally use rolling windows with exclusions for recent event days and contract-adjustment periods. <span class="citation" aria-label="source references">t6search4 · t34search7 · t34search0</span></p>
|
||||
<p>Naïve testing like “did price go up after a bullish alert?” is not enough. It fails because some signals are volatility signals, some are hedge signals, some are event signals, and some are simply data-quality failures. Better evaluation metrics include: hypothesis-calibrated outcomes, such as short-horizon drift for directional candidates, realized-vol expansion for volatility-buyer candidates, and abstention quality for ambiguous samples; precision at top confidence deciles; outcome monotonicity by confidence bucket; false-positive rate around earnings and macro events; and robustness across liquidity tiers and spread regimes. The literature is mixed precisely because the signal is conditional. Pan and Poteshman find predictive content in buyer-to-open option volume, but Muravyev and coauthors find little incremental price discovery in options quotes beyond stocks. Your backtest should therefore validate <strong>which contexts</strong> work, not whether “options flow works” in the abstract. <span class="citation" aria-label="source references">t11view4 · t11view6 · t4search11 · t21search2</span></p>
|
||||
<p>Useful validation tests include: replay tests for deterministic re-creation of every alert; ablation tests removing one evidence component at a time; placebo tests on condition-ineligible prints; event-window stress tests around earnings, FOMC, CPI, and FDA meetings; liquidity stratification tests; and hand-audited samples where a human reviewer checks whether the preserved evidence really supports the alert hypothesis. If a signal only “works” when you keep event days, illiquid contracts, or stale quotes, that is usually a red flag, not a breakthrough. <span class="citation" aria-label="source references">t18view0 · t29view4 · t11view1 · t34search13</span></p>
|
||||
<h3 id="final-deliverables">Final deliverables</h3>
|
||||
<p class="lead-term"><strong>Executive synthesis.</strong> The defensible product is not a whale-alert engine. It is a <strong>market-structure evidence engine</strong> that scores hypotheses under uncertainty. Public data can support useful directional, volatility, and hedge/reactive candidates, but only after condition-code filtering, quote-quality control, liquidity penalties, and catalyst-aware abstention. <span class="citation" aria-label="source references">t20search1 · t31view2 · t32search21</span></p>
|
||||
<p class="lead-term"><strong>Ranked list of the most useful signals for an MVP-to-v2 roadmap.</strong></p>
|
||||
<ol>
|
||||
<li>Directional options aggression in liquid contracts, with quote-quality scoring and underlying confirmation. <span class="citation" aria-label="source references">t20search1 · t11view6</span></li>
|
||||
<li>Volume/open-interest anomaly with contract-relative baselines. <span class="citation" aria-label="source references">t6search4 · t11view6</span></li>
|
||||
<li>Repeat burst or sweep clustering in the same contract or thesis family. <span class="citation" aria-label="source references">t26search14 · t29view4</span></li>
|
||||
<li>Price/volume confirmation in the underlying equity. <span class="citation" aria-label="source references">t4search3 · t21search0</span></li>
|
||||
<li>Spread/hedge-likelihood suppression using explicit complex flags. <span class="citation" aria-label="source references">t29view4</span></li>
|
||||
<li>Stale-quote and wide-spread penalties. <span class="citation" aria-label="source references">t9search2 · t11view1</span></li>
|
||||
<li>Catalyst proximity adjustment, especially earnings. <span class="citation" aria-label="source references">t25search8 · t34search0</span></li>
|
||||
<li>IV/skew confirmation once IV quality is trustworthy. <span class="citation" aria-label="source references">t31view2 · t6search15</span></li>
|
||||
<li>Equity off-exchange confirmation as a weak secondary layer, not a primary driver. <span class="citation" aria-label="source references">t27search6 · t28search1</span></li>
|
||||
</ol>
|
||||
<p class="lead-term"><strong>Signals that are probably noise unless strongly corroborated.</strong></p>
|
||||
<ul>
|
||||
<li>Standalone gross premium rankings. <span class="citation" aria-label="source references">t31view2 · t23search5</span></li>
|
||||
<li>Standalone 0DTE bursts. <span class="citation" aria-label="source references">t31view1 · t11view0</span></li>
|
||||
<li>Standalone deep-ITM prints. <span class="citation" aria-label="source references">t23search5</span></li>
|
||||
<li>Midpoint-heavy or wide-spread options prints. <span class="citation" aria-label="source references">t20search1 · t11view1</span></li>
|
||||
<li>Single TRF prints interpreted as dark-pool accumulation. <span class="citation" aria-label="source references">t27search6 · t28search1</span></li>
|
||||
<li>Late, corrected, official, average-price, or contingent equity prints counted as real-time intent. <span class="citation" aria-label="source references">t18view0 · t19view6</span></li>
|
||||
</ul>
|
||||
<p class="lead-term"><strong>MVP recommendation.</strong> Build around: OPRA trades and NBBO, stock SIP trades and quotes, raw condition codes, prior-day OI, corporate-action handling, earnings calendar, deterministic replay, and explicit abstention. Use contract-relative baselines, not fixed-dollar thresholds. Do <strong>not</strong> promise participant identity. <span class="citation" aria-label="source references">t24search5 · t16search5 · t6search4 · t34search7 · t34search0</span></p>
|
||||
<p class="lead-term"><strong>v2 recommendation.</strong> Add: better greeks and IV surfaces, exchange open/close summaries, smarter multi-leg reconstruction, delayed FINRA ATS/non-ATS research datasets for ticker profiling, broader event feeds, and richer timestamp handling. <span class="citation" aria-label="source references">t22search5 · t24search2 · t24search3 · t28search1</span></p>
|
||||
<p class="lead-term"><strong>Avoid-for-now list.</strong></p>
|
||||
<ul>
|
||||
<li>“Smart money score” as a singular authoritative product value. <span class="citation" aria-label="source references">t4search11 · t32search5</span></li>
|
||||
<li>Venue-specific dark-pool attribution in real time from public data. <span class="citation" aria-label="source references">t28search1 · t27search19</span></li>
|
||||
<li>Aggressor-side certainty on illiquid options or midpoint-heavy prints. <span class="citation" aria-label="source references">t20search1 · t9search2</span></li>
|
||||
<li>Exact opening/closing labels at trade level from plain OPRA. <span class="citation" aria-label="source references">t24search5 · t6search4</span></li>
|
||||
</ul>
|
||||
<p class="lead-term"><strong>Implementation-neutral signal formulas.</strong> These are synthesis formulas, not claims of exchange-defined truth.</p>
|
||||
<pre><code>evidence_quality
|
||||
= w1 * quote_freshness_score
|
||||
+ w2 * spread_tightness_score
|
||||
+ w3 * liquidity_score
|
||||
+ w4 * condition_eligibility_score
|
||||
- w5 * adjusted_contract_penalty
|
||||
|
||||
directional_strength
|
||||
= signed_delta_notional_z
|
||||
+ signed_premium_z * aggressor_confidence
|
||||
+ sweep_cluster_score
|
||||
+ underlying_confirmation_score
|
||||
|
||||
volatility_strength
|
||||
= vega_notional_z
|
||||
+ local_iv_shock_z
|
||||
+ skew_shift_score
|
||||
+ realized_vol_followthrough_score
|
||||
|
||||
false_positive_penalty
|
||||
= spread_structure_penalty
|
||||
+ 0dte_penalty
|
||||
+ catalyst_noise_penalty
|
||||
+ stale_quote_penalty
|
||||
+ off_exchange_ambiguity_penalty
|
||||
+ late_or_corrected_print_penalty
|
||||
|
||||
hypothesis_score[h]
|
||||
= evidence_quality
|
||||
+ strength_terms_matching_h
|
||||
- false_positive_penalty
|
||||
- contradiction_terms_for_h
|
||||
|
||||
alert_if
|
||||
evidence_quality >= q_min
|
||||
and max_h hypothesis_score[h] >= h_min
|
||||
and runner_up_gap >= gap_min
|
||||
else abstain</code></pre>
|
||||
<p>This design separates <strong>confidence</strong> from <strong>conviction</strong>. Confidence comes from evidence quality and hypothesis separation; conviction comes from signal strength. A strong but low-confidence anomaly should surface as “interesting, ambiguous,” not “smart.” <span class="citation" aria-label="source references">t20search1 · t30view2 · t32search5</span></p>
|
||||
<p class="lead-term"><strong>Evidence fields to preserve for every signal.</strong></p>
|
||||
<ul>
|
||||
<li>Raw trade record, raw quote snapshot(s), and raw condition codes. <span class="citation" aria-label="source references">t29view4 · t19view6</span></li>
|
||||
<li>Event timestamp, receive timestamp, and join methodology. <span class="citation" aria-label="source references">t33search1 · t33search4 · t33search6</span></li>
|
||||
<li>Bid, ask, midpoint, spread width, quoted size, and quote age. <span class="citation" aria-label="source references">t11view1 · t9search2</span></li>
|
||||
<li>Contract metadata: strike, expiry, call/put, multiplier, adjusted flag. <span class="citation" aria-label="source references">t34search7</span></li>
|
||||
<li>Moneyness, delta, gamma, vega, implied volatility, and local skew if available. <span class="citation" aria-label="source references">t22search1 · t22search5 · t6search15</span></li>
|
||||
<li>Prior-day OI, current volume path, and next-day OI for research reconciliation. <span class="citation" aria-label="source references">t6search4</span></li>
|
||||
<li>Underlying stock confirmation window and market/sector control move. <span class="citation" aria-label="source references">t32search21 · t21search0</span></li>
|
||||
<li>Event/catalyst context and source. <span class="citation" aria-label="source references">t34search0 · t34search10 · t34search13</span></li>
|
||||
<li>Scoring breakdown and abstention reason if suppressed. This is product design synthesis based on the evidence-quality literature above. <span class="citation" aria-label="source references">t20search1 · t30view2</span></li>
|
||||
</ul>
|
||||
<p class="lead-term"><strong>Glossary of market-structure terms.</strong></p>
|
||||
<ul>
|
||||
<li><strong>NBBO:</strong> the best national bid and offer for a security or option series. <span class="citation" aria-label="source references">t8search7 · t8search3</span></li>
|
||||
<li><strong>Midpoint:</strong> the arithmetic middle between bid and ask. <span class="citation" aria-label="source references">t11view1</span></li>
|
||||
<li><strong>Aggressor-side / trade sign:</strong> inferred liquidity demander, not directly carried in most public SIP feeds. <span class="citation" aria-label="source references">t30view1 · t33search9</span></li>
|
||||
<li><strong>TRF:</strong> FINRA Trade Reporting Facility for off-exchange equity trades. <span class="citation" aria-label="source references">t27search6</span></li>
|
||||
<li><strong>ATS / dark pool:</strong> non-displayed trading venue; only a subset of off-exchange prints. <span class="citation" aria-label="source references">t27search1 · t28search1</span></li>
|
||||
<li><strong>Open interest:</strong> outstanding contracts after netting daily opening and closing activity, exercises, and assignments. <span class="citation" aria-label="source references">t6search4</span></li>
|
||||
<li><strong>IV:</strong> model-implied volatility reflected in option prices. <span class="citation" aria-label="source references">t25search8</span></li>
|
||||
<li><strong>Skew:</strong> IV differences across strikes for the same expiry. <span class="citation" aria-label="source references">t6search15</span></li>
|
||||
<li><strong>Delta / gamma / vega:</strong> first-order price sensitivity to the underlying, rate of delta change, and sensitivity to IV. <span class="citation" aria-label="source references">t22search1</span></li>
|
||||
<li><strong>0DTE:</strong> option expiring the same trading day. <span class="citation" aria-label="source references">t11view0</span></li>
|
||||
<li><strong>ISO / sweep:</strong> order type or execution pattern intended to quickly access multiple venues’ liquidity. <span class="citation" aria-label="source references">t26search14 · t26search2</span></li>
|
||||
<li><strong>QCC / cross / auction / complex trade:</strong> special execution mechanisms often incompatible with naïve directional interpretation. <span class="citation" aria-label="source references">t29view4</span></li>
|
||||
<li><strong>BOLO / odd-lot information:</strong> best odd-lot order data added through recent Regulation NMS changes. <span class="citation" aria-label="source references">t17view1</span></li>
|
||||
</ul>
|
||||
<p class="lead-term"><strong>Source bibliography.</strong></p>
|
||||
<p class="lead-term"><strong>Primary and official market-structure sources</strong></p>
|
||||
<ul>
|
||||
<li>SEC, <em>Final Rule: Regulation NMS</em> and later NMS amendments on odd lots and better-priced orders. <span class="citation" aria-label="source references">t8search1 · t14search0</span></li>
|
||||
<li>SEC Division of Trading and Markets, <em>Roundtable on Options Market Structure Supporting Data</em>, 2026. <span class="citation" aria-label="source references">t9search0</span></li>
|
||||
<li>OPRA, official home page and 2026 participant interface specification. <span class="citation" aria-label="source references">t24search5 · t2search0</span></li>
|
||||
<li>OCC, open interest and information-memo resources. <span class="citation" aria-label="source references">t6search4 · t34search3</span></li>
|
||||
<li>OIC / OptionsEducation, resources on greeks, skew, delta, 0DTE, and market data. <span class="citation" aria-label="source references">t22search1 · t6search15 · t23search5 · t5search5</span></li>
|
||||
<li>FINRA, TRF overview, trade-reporting FAQ, OTC transparency, and dark-pool investor explainer. <span class="citation" aria-label="source references">t27search6 · t17view0 · t28search1 · t27search1</span></li>
|
||||
<li>CTA/UTP SIP specifications for equity sale conditions and timestamps. <span class="citation" aria-label="source references">t3search1 · t3search0</span></li>
|
||||
<li>Nasdaq and options order-protection definitions for NBBO and ISO. <span class="citation" aria-label="source references">t8search7 · t26search2</span></li>
|
||||
</ul>
|
||||
<p class="lead-term"><strong>Core academic papers</strong></p>
|
||||
<ul>
|
||||
<li>Pan and Poteshman, <em>The Information in Option Volume for Future Stock Prices</em>. <span class="citation" aria-label="source references">t4search0</span></li>
|
||||
<li>Chakravarty, Gulen, and Mayhew, <em>Informed Trading in Stock and Option Markets</em>. <span class="citation" aria-label="source references">t4search3</span></li>
|
||||
<li>Muravyev, Pearson, and Broussard, <em>Is There Price Discovery in Equity Options?</em> <span class="citation" aria-label="source references">t4search11</span></li>
|
||||
<li>Ni, Pan, and Poteshman, <em>Volatility Information Trading in the Option Market</em>. <span class="citation" aria-label="source references">t21search2</span></li>
|
||||
<li>Cao, Chen, and Griffin, <em>Informational Content of Option Volume Prior to Takeovers</em>. <span class="citation" aria-label="source references">t21search0</span></li>
|
||||
<li>Augustin, Brenner, Hu, and Subrahmanyam, <em>Informed Options Trading Prior to M&A Announcements</em>. <span class="citation" aria-label="source references">t21search18</span></li>
|
||||
<li>Bollen and Whaley, <em>Does Net Buying Pressure Affect the Shape of Implied Volatility Functions?</em> <span class="citation" aria-label="source references">t22search2</span></li>
|
||||
<li>Gârleanu, Pedersen, and Poteshman, <em>Demand-Based Option Pricing</em>. <span class="citation" aria-label="source references">t32search5</span></li>
|
||||
<li>Savickas and Wilson, <em>On Inferring the Direction of Option Trades</em>. <span class="citation" aria-label="source references">t20search1</span></li>
|
||||
<li>Lee and Ready; Ellis, Michaely, and O’Hara; Asquith et al.; Jurkatis on trade classification accuracy and fast-market limitations. <span class="citation" aria-label="source references">t30view1 · t30view3 · t30view2</span></li>
|
||||
<li>Dim, Eraker, and Vilkov, <em>0DTEs: Trading, Gamma Risk and Volatility Propagation</em>. <span class="citation" aria-label="source references">t31view1</span></li>
|
||||
</ul>
|
||||
<p><strong>Operational or vendor-documentation sources useful for implementation, but weaker for causal inference</strong></p>
|
||||
<ul>
|
||||
<li>Databento documentation on OPRA, SIPs, timestamps, and normalized fields. <span class="citation" aria-label="source references">t15search0 · t33search4 · t33search1</span></li>
|
||||
<li>Massive documentation on trades, quotes, timestamps, and SIP normalization. <span class="citation" aria-label="source references">t16search2 · t16search6 · t33search6</span></li>
|
||||
<li>Alpaca documentation on SIP versus IEX and OPRA access limitations. <span class="citation" aria-label="source references">t16search5 · t15search2 · t15search11</span></li>
|
||||
</ul>
|
||||
<p>The bottom line for Islandflow is blunt: <strong>build a system that can say “this is probably a hedge,” “this is probably an event-vol trade,” or “I don’t know,” and mean it.</strong> That restraint is not a weakness. In this domain, it is the entire product moat. <span class="citation" aria-label="source references">t32search5 · t31view1 · t20search1</span></p>
|
||||
|
||||
</article>
|
||||
<footer class="doc-footer">Source: docs/research-docs/smart-flow-market-mechanics.md · Output: docs/research-docs/smart-flow-market-mechanics.html</footer>
|
||||
</section>
|
||||
</main>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
313
docs/research-docs/smart-flow-market-mechanics.md
Normal file
313
docs/research-docs/smart-flow-market-mechanics.md
Normal file
|
|
@ -0,0 +1,313 @@
|
|||
# Islandflow Research Report on Informed Flow Detection in Equities and Options
|
||||
|
||||
## Executive summary
|
||||
|
||||
The practical lesson from the market-structure literature is not “smart money leaves obvious footprints.” It is the opposite: **good flow detection is mostly a disciplined exercise in ruling out bad explanations**. Public options and equity data can reliably show that a trade happened, where it printed relative to the quote, whether it was exchange or TRF-reported, whether an options print was flagged as multi-leg or auction-like, how the quote looked at that time, and how volume/open interest/IV compared with history. Public data usually **cannot** directly identify the trader, directly identify whether a specific trade opened or closed a position, directly reveal a parent order, or prove that a print reflected fundamental information rather than hedging, rebalancing, inventory transfer, or event-volatility trading. OPRA disseminates consolidated listed-options last sale and quote information, but not a trader identity field; FINRA TRFs disseminate off-exchange equity reports, but off-exchange is broader than “dark pool.” OCC calculates options open interest end-of-day, and exchange proprietary open/close summaries exist, but those are not the same thing as trade-level public truth. citeturn24search5turn27search6turn1search12turn24search2turn24search3
|
||||
|
||||
For an implementation like Islandflow, the most useful posture is: **direct observation first, inference second, hypothesis third**. Direct observations should be stored losslessly and replayably: timestamps, trade price/size, bid/ask/mid, spread width, sale/condition codes, venue/TRF flags, OI snapshots, contract metadata, adjusted-contract status, and catalyst context. Inference layers should be explicit and probabilistic: aggressor-side confidence, spread-package likelihood, open/close likelihood, volatility-demand likelihood, equity-confirmation quality, and evidence-quality penalties. Product labels should be built from these components, not from a single magic “smart money score.” citeturn20search1turn30view2turn24search8turn18view0turn34search3
|
||||
|
||||
The strongest retail-accessible signals are not raw “whale” notional prints. They are **bundles**: quote-consistent options aggression in a liquid contract, abnormal size relative to that contract’s own baseline, supportive IV/skew behavior, supportive underlying equity prints or price/volume response, and no obvious event-noise or spread/hedge explanation. The weakest signals are standalone large premium, isolated deep-ITM trades, isolated 0DTE bursts near known catalysts, mid-quote or wide-spread prints in illiquid contracts, and late/corrected/off-hours equity prints treated as if they were contemporaneous intent. citeturn21search2turn31view2turn32search5turn11view1turn31view1turn18view2
|
||||
|
||||
A skeptical reading of the evidence says the platform should optimize for **confidence scoring, abstention, and preserved evidence**, not bravado. There is credible literature that some options flow contains information about future equity returns or volatility, especially when buyer-initiated opening activity is known; there is also credible literature showing that options quotes often do not lead stock prices, that trade-signing is noisy, and that market-maker hedging and demand pressure can move options prices and IV without implying directional information. Both camps are right often enough that any serious product must keep the uncertainty visible. citeturn11view6turn21search2turn4search3turn4search11turn32search5turn32search21
|
||||
|
||||
## Options market mechanics
|
||||
|
||||
**NBBO, bid/ask/mid interpretation.** Plain English: the NBBO is the best displayed national bid and offer for an options series, and the midpoint is the arithmetic middle of those quotes. Market mechanism: listed options are quote-driven and fragmented across many exchanges; order protection and locked/crossed-market rules exist, but what you usually see in retail-accessible data is top-of-book consolidated quote context rather than full depth. Required data: OPRA trades, OPRA NBBO quotes, contract metadata, and timestamps. Reliable inferences: a trade at or through the ask is *more likely* buyer-initiated; at or through the bid is *more likely* seller-initiated; a narrow spread and fresh quote make that inference better. Unreliable inferences: mid-prints, crossed/locked or stale quotes, and trades in complex/auctioned packages. Common false positives: price improvement, midpoint executions, quote flicker, and venue-specific auctions. Algorithmically, use a quote-rule classifier with tolerance bands around bid/ask, record distance-to-mid and spread percentile, and downweight or abstain when spread is wide, quote age is elevated, or the print is flagged as complex/auction-like. Caveat: even in older proprietary tests, option trade-signing accuracy was only around 80% to 83% for common quote-based rules, and modern fast markets complicate this further. citeturn8search7turn24search5turn20search1turn30view2turn11view1
|
||||
|
||||
**Aggressor-side inference.** Plain English: you are inferring who demanded liquidity, not observing it directly. Mechanism: standard trade-signing rules compare the print to the prevailing quote, then use tick-rule fallbacks for midpoint trades. Required data: synchronized trades and quotes with event timestamps. Reliable inferences: bid/ask prints in liquid names with narrow spreads and correctly aligned quotes. Unreliable inferences: inside-spread prints, auction prints, complex orders, fast markets, and one-cent spread environments where price-improvement rules can invert naïve assumptions. False positives: “buy at bid / sell at ask” edge cases, quote reversals, or trade/quote timestamp mismatch. Detection idea: produce an `aggressor_confidence` score instead of a boolean. One practical scheme is 1.0 for trades touching ask/bid on a fresh narrow quote, lower for inside-spread prints, and zero for excluded condition codes or stale quotes. Caveat: your model should preserve the raw quote and classification path so the user can audit why you called it buyer- or seller-initiated. citeturn20search1turn30view2turn30view1
|
||||
|
||||
**Quote staleness and quote-quality problems.** Plain English: the quote you match against may already be wrong by the time the trade hits your feed. Mechanism: options quotes must constantly reprice off the underlying; when the stock moves quickly, an options market maker can be “stale” for milliseconds, creating latency-arbitrage opportunities and making print-vs-quote interpretation unreliable. Required data: trade timestamp, quote timestamp, underlying trade/quote timestamps, and optionally provider receive timestamps. Reliable inferences: only after checking quote recency and quote continuity. Unreliable inferences: during fast stock moves, large quote bursts, crossed/locked quotes, and wide-spread periods. False positives: a print near ask during a stale quote can look like urgent bullish buying when it is really a stale-market capture. Detection idea: compute quote age in event time, underlying move since quote, quote-update burst rate, and spread percentile; heavily penalize if the underlying moved materially after the displayed option quote was formed. Caveat: options SIP data are operationally bursty, and different vendors expose different timestamp layers; replay must preserve both event and receive timestamps when available. citeturn9search2turn30view2turn33search4turn33search6
|
||||
|
||||
**Sweeps versus blocks.** Plain English: a “sweep” is urgency across liquidity pools; a “block” is just a big print, which may or may not reflect urgency. Mechanism: in options, intermarket sweep orders are formal order types under the options order-protection framework; in retail “flow” tooling, a sweep often means multiple near-simultaneous fills in the same contract across exchanges. Required data: per-trade venue, timestamps, trade size, and order-condition fields; for better fidelity, underlying quote changes too. Reliable inferences: near-simultaneous same-series fills across multiple exchanges at escalating prices are decent evidence of urgency. Unreliable inferences: a single large print can be a cross, facilitation, QCC-like mechanism, or part of a spread. False positives: auction/cross prints, negotiated facilitation, delayed reporting, or a single broker slicing patiently across time. Detection idea: cluster same-series fills within a short event-time window, require multi-venue participation or monotone price taking, and penalize if condition codes indicate auction/cross/complex structure. Caveat: “large” should be contract-relative and liquidity-relative, never an absolute threshold. citeturn26search14turn26search2turn29view4
|
||||
|
||||
**Trade condition codes.** Plain English: these are the market’s own labels telling you the trade mechanics were unusual, complex, late, out of sequence, official, or otherwise special. Mechanism: OPRA and the equity SIPs encode transaction types and sale conditions; some condition codes explicitly say complex stock-option trades, floor trades, crosses, compression trades, or extended-hours trades that do not update O/H/L/C. Required data: raw condition codes retained exactly as delivered. Reliable inferences: condition codes are high-value disqualifiers and context fields. Unreliable inferences: treating every disseminated trade as a “normal” price-discovery event. False positives: counting extended-hours, compression, official close/open, or qualified contingent trades as directional signals. Detection idea: maintain a condition-code policy table with `eligible_for_alert`, `eligible_for_aggressor`, `eligible_for_baseline`, and `eligible_for_price_confirmation` flags. Caveat: the safest default is to exclude or sharply downweight anything not clearly regular and contemporaneous. citeturn29view4turn29view1turn19view4turn19view6
|
||||
|
||||
**Multi-leg spread detection.** Plain English: many options prints are not single-view directional bets; they are spreads, rolls, collars, stock-option packages, or auctioned complex orders. Mechanism: OPRA trade message types explicitly identify many multi-leg, stock-option, auction, and cross executions. Required data: OPRA trade condition/message type, series metadata, near-simultaneous trades across strikes/expiries/put-call sides, and underlying equity prints for stock-option packages. Reliable inferences: a trade flagged as multi-leg or stock-option should be treated as structure-first, direction-second. Unreliable inferences: reading one leg of a spread as a standalone bullish or bearish order. False positives: vertical spreads, straddles, strangles, risk reversals, collars, delta hedges, rolls, and basis/arbitrage packages. Detection idea: first use explicit OPRA complex flags; then add rule-based package reconstruction over short windows using common size, opposing deltas, equal-premium families, and strike/expiry geometry. Caveat: public data will miss some parent-order linkage, so package reconstruction should produce a probability and an abstain option, not fake certainty. citeturn29view4turn2search16
|
||||
|
||||
**Opening versus closing inference.** Plain English: public trade tape usually does not tell you whether a specific customer trade opened or closed a position. Mechanism: OCC computes open interest after the session by netting opening and closing activity, exercises, and assignments; exchanges separately sell proprietary open/close summary products. Required data: at minimum daily OCC open interest and the prior day’s value; optionally exchange proprietary open/close summaries. Reliable inferences: if same-day volume massively exceeds prior open interest, at least some flow must have opened new positions; if exchange open/close datasets show buy-to-open or sell-to-close volume, that is useful but exchange-scoped. Unreliable inferences: “volume > OI means all opening” or “OI tomorrow up means this exact print opened.” False positives: rolls, exercises/assignments, multi-exchange fragmentation, and exchange-only open/close data mistaken for market-wide truth. Detection idea: compute `volume / prior_OI`, next-day `ΔOI`, and exchange-scoped open/close summaries when available; expose that as an opening-likelihood band, not a hard label. Caveat: OPRA itself is not an open/close feed. citeturn6search4turn24search2turn24search3turn24search9
|
||||
|
||||
**Volume versus open interest.** Plain English: volume is today’s trading activity; open interest is yesterday’s remaining outstanding contracts after clearing. Mechanism: OCC calculates OI centrally at end-of-day after consolidating exchange reports and exercise/assignment effects. Required data: intraday volume, prior-day OI, and next-day OI if available for ex-post validation. Reliable inferences: high volume with low prior OI indicates position turnover or creation pressure worth watching. Unreliable inferences: using OI as if it were intraday live inventory. False positives: contracts near expiration, rolls into new strikes/dates, corporate-action adjustments, and assignment effects. Detection idea: rank `volume / max(prior_OI, 1)` and `premium / prior_OI` by contract and by ticker; penalize expiry-week contracts and adjusted options. Caveat: same-day alerting must use prior OI, not tomorrow’s OI. citeturn6search4turn29view3
|
||||
|
||||
**Premium concentration.** Plain English: concentrating a lot of premium in one contract can matter, but premium alone is not information. Mechanism: option premium reflects intrinsic value, time value, IV, and demand pressure; deep-ITM contracts can carry huge notional premium with near-stock-like exposure, while small OTM contracts can look dramatic in percentage terms with little capital at risk. Required data: premium paid, contract multiplier, delta, moneyness, tenor, contract ADV/OI, and ticker-level historical baseline. Reliable inferences: concentrated premium in liquid ATM/OTM contracts with supportive IV and equity response can be informative. Unreliable inferences: ranking by gross premium alone. False positives: deep-ITM stock replacement, covered-call overwrites, collars, rolls, and volatility trades. Detection idea: normalize premium by contract baseline, by ticker daily option premium, and by delta-adjusted notional; separately tag intrinsic-heavy versus extrinsic-heavy flow. Caveat: “largest premium of the day” is a marketing metric, not a microstructure conclusion. citeturn23search5turn31view2turn32search5
|
||||
|
||||
**Short-dated and 0DTE flow.** Plain English: same-day and ultra-short-dated options are now a big part of the market, but much of that activity is tactical hedging or volatility trading rather than classic directional information. Mechanism: 0DTE contracts have extreme gamma and fast-decaying time value; market-makers must hedge them dynamically, and both retail and proprietary accounts use them heavily around intraday events. Required data: days-to-expiry, intraday quotes, IV, greeks, underlying prints, macro/earnings calendar. Reliable inferences: 0DTE bursts are evidence of urgency and event sensitivity, not evidence of informed direction by default. Unreliable inferences: treating 0DTE size as a stronger “smart money” signal than longer-dated positioning. False positives: CPI/FOMC days, dealer gamma hedging, retail lottery trades, intraday gamma scalping. Detection idea: add a strong 0DTE penalty unless the flow is repeated, liquid, quote-aligned, and confirmed by underlying and IV behavior. Caveat: SEC support data show 0DTE’s share of listed-options volume rose materially through 2025, but institutional and hedging activity still concentrates heavily in longer maturities; one recent paper on SPX 0DTEs finds evidence more consistent with delta-hedging than with information-based trading. citeturn11view0turn11view3turn31view1
|
||||
|
||||
**Deep ITM versus ATM versus OTM interpretation.** Plain English: moneyness changes what a trade probably means. Mechanism: deep-ITM options have large delta and mostly intrinsic value; ATM options maximize gamma sensitivity; OTM options are cheap convexity and event-lottery instruments. Required data: underlying spot, strike, tenor, delta, extrinsic value, and dividend/early-exercise context if relevant. Reliable inferences: deep-ITM flow often resembles stock replacement or hedge; ATM flow often reflects directional or gamma-sensitive positioning; OTM flow often reflects convexity demand or event speculation. Unreliable inferences: “OTM calls = informed bull; ITM puts = informed bear” without context. False positives: collars, covered overwrites, protective puts, merger-event convexity. Detection idea: bucket by delta or moneyness bands and score differently; e.g., deep-ITM contracts should require much stronger cross-asset confirmation before any directional label. Caveat: OIC explicitly notes that deep-ITM options have much larger delta and far-OTM options very low delta/probability of finishing ITM. citeturn23search5turn22search1
|
||||
|
||||
**Implied-volatility expansion and skew changes.** Plain English: IV and skew can confirm that the market repriced risk, but that repricing can come from demand pressure and dealer constraints, not only information. Mechanism: buying pressure affects the shape and level of the implied-volatility surface; skew is the strike-by-strike IV difference across the same expiry. Required data: trade prices, contemporaneous quotes, model IV, historical IV baseline, strike surface snapshots, and ideally greeks. Reliable inferences: if a contract prints aggressively and local IV lifts relative to the rest of the surface, that is useful evidence of demand. Unreliable inferences: “IV up, therefore informed” or “skew steepening, therefore directional smart money.” False positives: scheduled events, broad crash-hedge demand, dealer supply constraints, and ETF/index hedges that bleed into single-name surfaces. Detection idea: compute local IV shock, term-structure shock, and skew-slope change after excluding obvious event windows. Caveat: academic work shows public order flow can move IV shape directly, and demand-based option pricing models explain why option prices can deviate from simplistic no-demand intuition even without pure information. citeturn6search15turn31view2turn32search5
|
||||
|
||||
**Delta, gamma, vega context and market-maker hedging.** Plain English: you cannot interpret options flow well without knowing what risk was traded. Mechanism: delta tracks directional sensitivity, gamma captures how fast delta changes, and vega captures sensitivity to IV; market makers typically hedge net delta and sometimes other greeks, pushing activity into the underlying or related options. Required data: greeks per trade or contract snapshot, underlying price path, and ideally surface snapshots. Reliable inferences: high-delta deep-ITM prints can be stock substitutes; high-gamma short-dated ATM prints can force aggressive dealer hedging; high-vega longer-dated prints may be volatility positioning. Unreliable inferences: equating large premium with large directional conviction without greek context. False positives: a vega trade into earnings, a gamma scalp, or a delta-neutral structure can all look “massive” while expressing little or no simple directional view. Detection idea: always compute delta-adjusted notional, gamma-per-day-to-expiry, and vega concentration; if the signal is strong on vega but weak on net delta, classify as volatility demand, not directional flow. Caveat: OIC treats greeks as theoretical guides, not exact realized sensitivities, and both theory and newer evidence indicate market-maker hedging materially affects both options and underlying-stock behavior. citeturn22search1turn22search5turn32search21turn32search5
|
||||
|
||||
**Why large premium does not automatically imply directional conviction.** This is the single biggest anti-hype principle. Large premium can come from intrinsic-heavy deep-ITM stock replacement, protective hedges, overwrites, spread packages, roll activity, event-volatility buying, index hedging, and demand-pressure-driven repricing. The literature most supportive of informed options trading becomes much stronger when the data know who initiated the trade and whether it opened a position; the public-tape version is weaker. That means a public “huge call premium” alert should never be treated as self-sufficient evidence of informed bullish conviction. citeturn11view4turn11view6turn21search2turn31view2turn32search5
|
||||
|
||||
## Equity market mechanics
|
||||
|
||||
**Lit exchange prints versus off-exchange/TRF prints.** Plain English: lit prints happen on exchanges; off-exchange prints are reported to FINRA facilities. Mechanism: FINRA TRFs exist to report OTC transactions in NMS stocks effected otherwise than on an exchange. Off-exchange includes ATS/dark-pool activity, wholesaler/internalizer activity, and other broker-dealer OTC prints; it is not synonymous with dark pools. Required data: trade venue/exchange/TRF flag, sale conditions, timestamps, and SIP quotes. Reliable inferences: a TRF flag tells you the print was off-exchange. Unreliable inferences: “TRF = dark pool institution” or “off-exchange = hidden accumulation.” False positives: retail-wholesaler internalization, delayed reports, average-price reports, and administrative/corrective prints. Detection idea: classify off-exchange as a separate evidence channel with lower directional weight unless size, timing, and quote alignment are unusually strong and corroborated by other signals. Caveat: FINRA’s venue-level ATS and non-ATS transparency data are published on a delayed basis, so the real-time tape usually does not give venue-level dark-pool truth. citeturn27search6turn17view0turn28search1turn28search13turn27search19
|
||||
|
||||
**Trade reporting delays and corrections.** Plain English: some equity prints arrive late, out of sequence, or corrected, so they can look like current intent when they are stale bookkeeping. Mechanism: FINRA’s trade reporting rules require rapid reporting in regular hours, with specific late/out-of-sequence modifiers; the SIP sale-condition matrices also encode prior reference price, average price, official open/close, contingent trade, and similar exceptions. Required data: execution timestamp, report timestamp if available, sale conditions/modifiers, and correction/cancel messages. Reliable inferences: only contemporaneously reported, last-sale-eligible regular prints should heavily influence real-time intent inference. Unreliable inferences: any print with late/out-of-sequence/correction pricing logic treated as fresh pressure. False positives: after-hours reports, NAV-based or average-price trades, prior-reference-price corrections, or late-reported blocks. Detection idea: maintain an equity eligibility state machine keyed off sale conditions and late thresholds; drop or heavily penalize `.Z`, `.U`, prior-reference-price, average-price, and corrected/cancelled activity from directional alerts. Caveat: what matters for replay is event time, not when your app happened to ingest the message. citeturn18view0turn18view2turn19view4turn19view6turn33search16
|
||||
|
||||
**Bid/mid/ask classification.** Plain English: trade-signing in equities is also an inference problem. Mechanism: classic quote rule, tick rule, and Lee-Ready combine price-vs-quote and last-price direction to classify prints. Required data: high-quality trade-and-quote data with participant timestamps if possible. Reliable inferences: prints clearly at ask or bid on fresh narrow quotes. Unreliable inferences: midpoint/inside-spread prints and high-speed environments with trade/quote lag. False positives: ECN/internalized midpoint activity, short-sale bias in certain classification settings, and high-volume periods where trade signing degrades. Detection idea: use quote rule first, then tick fallback only when necessary, and report confidence. Caveat: the literature consistently finds classification algorithms degrade for inside-quote trades and fast markets; they are useful, but not ground truth. citeturn30view1turn30view3turn30view2
|
||||
|
||||
**Large block prints.** Plain English: a big print can matter, but a big print is often plumbing, not alpha. Mechanism: institutions and brokers use crosses, contingent trades, and other large negotiated mechanisms to minimize market impact; those prints may hit the tape in ways that do not represent fresh, aggressive price discovery. Required data: size versus symbol baseline, sale conditions, report timing, TRF/lit flag, and quote context. Reliable inferences: a large print at or through the quote, reported contemporaneously, followed by related activity, is more meaningful than a standalone large out-of-sequence cross. Unreliable inferences: “large print = accumulation/distribution” without quote and condition context. False positives: VWAP/average-price allocations, portfolio transitions, ETF basket hedges, step-outs, and contingent trades. Detection idea: rank size by symbol intraday percentile, require quote alignment and contemporaneous reporting, and reduce weight if sale conditions indicate contingent/cross/official pricing logic. Caveat: publicly available equity tape generally shows the print, not the parent order, broker intent, or portfolio context. citeturn19view2turn19view6turn17view0
|
||||
|
||||
**Accumulation/distribution inference limits.** Plain English: repeated buying-like prints do not prove a long-term institution is accumulating, and repeated selling-like prints do not prove distribution. Mechanism: a parent order can be sliced across venues and brokers, but so can hedges, passive rebalancing, or execution algorithms chasing benchmarks. Required data: sequential trade-signing, quote changes, off-exchange/lit mix, and volume baselines. Reliable inferences: persistent quote-consistent imbalance that also moves price/quote and survives event-noise filters. Unreliable inferences: isolated net-buy or net-sell tape counts. False positives: benchmark execution, ETF rebalance days, opening/closing auction effects, and market-making inventory management. Detection idea: look for multi-window persistence, price response, and quote depletion rather than raw counts. Caveat: without order-book provenance or account data, accumulation is a hypothesis, not an observed fact. citeturn30view2turn7search0
|
||||
|
||||
**Quote/spread context.** Plain English: the same print means different things in a one-cent spread than in a thirty-cent spread. Mechanism: effective spread measures execution relative to the midpoint, while quoted spread describes visible trading cost; spreads vary enormously by liquidity tier. Required data: NBBO at execution, spread width, trade price, and liquidity baseline. Reliable inferences: quote-aligned prints in tight spreads are more informative. Unreliable inferences: quote-aligned prints in wide spreads or thin names. False positives: any classifier that ignores spread regime will overstate confidence in illiquid names. Detection idea: attach a quality penalty as spread percentile widens and as quote depth thins. Caveat: SEC support data show even listed-options spreads are much worse outside the most liquid underliers, which is exactly where retail “unusual activity” tools often overfire. citeturn11view1turn11view2
|
||||
|
||||
**Odd lots and liquidity issues.** Plain English: small-share prints and small-size quotes can matter in modern equities, but they complicate simplistic tape reading. Mechanism: odd-lot information has been added and expanded under recent Regulation NMS changes, and best odd-lot orders can improve on the displayed NBBO. Required data: odd-lot quote/transaction support from the provider, round-lot size metadata, and quote depth. Reliable inferences: none, unless you know how your provider handles odd-lot information and mixed lots. Unreliable inferences: using only displayed round-lot NBBO when meaningful odd-lot liquidity exists inside it, or assuming every small print is noise. False positives: apparent quote “crossings,” phantom slippage, and mismeasured midpoint prints if odd-lot improvement is ignored. Detection idea: if your provider does not fully support odd-lot quote information, lower confidence for high-priced names and small-size prints. Caveat: the rules and implementations have been changing, so provider normalization differences matter a lot. citeturn17view1turn14search13turn14search11
|
||||
|
||||
**Dark-pool inference limits from public trade/quote data.** Plain English: the public tape can tell you a lot about off-exchange activity, but usually not enough to say which dark pool matched the trade or what the resting hidden liquidity looked like in real time. Mechanism: ATS and non-ATS transparency data exist, but on delayed publication schedules; real-time SIP/TRF dissemination does not usually solve attribution at the same granularity. Required data: TRF flag in real time, plus delayed FINRA ATS/non-ATS transparency for ex-post study. Reliable inferences: rising off-exchange share in a ticker may matter as context. Unreliable inferences: “this TRF print came from a specific dark pool” or “this dark print is institutional accumulation.” False positives: internalized retail orders and non-ATS broker activity inside TRF totals. Detection idea: use real-time off-exchange prints as weak confirmation only, and use delayed FINRA transparency data to build ticker-level venue profiles for research, not same-minute alert certainty. citeturn28search1turn28search3turn27search19turn27search1
|
||||
|
||||
## Cross-asset confirmation and participant hypotheses
|
||||
|
||||
The most meaningful confirmations are **mechanically linked confirmations**, not vibe-based ones. Stronger confirmation examples are: aggressive call buying in a liquid contract followed by quote-consistent buy pressure or price-strength in the underlying; put buying or downside skew steepening accompanied by weak underlying tape; volatility-demand flow followed by realized-volatility expansion; repeated activity in the same ticker across sessions; and single-name flow occurring close to identifiable catalysts such as earnings, FDA meetings, or corporate filings. Weaker confirmations are: one random off-exchange print, one isolated “large premium” options trade without IV context, or sector peers moving for unrelated macro reasons. Highly overfit confirmations are those that chain together many weak clues until everything looks significant. citeturn21search2turn21search0turn21search18turn34search13turn34search10
|
||||
|
||||
Options flow confirmed by equity prints is meaningful when the linkage is **time-tight, quote-consistent, and liquidity-aware**. Example: buyer-initiated call activity in liquid weekly or monthly options, near-ATM or moderately OTM, accompanied by aggressive underlying equity prints or upward quote revision within minutes. Equity activity confirmed by options flow is strongest when the options are not obviously hedges or spreads and when IV/skew reacts in the same direction as the tape story. Price/volume confirmation in the underlying is stronger than pure social-volume or “mentions” confirmation because the options market and stock market are explicitly linked by hedging and arbitrage. IV confirmation matters most when the flow’s hypothesis is volatility demand or event repricing, and less when the trade is deep-ITM stock replacement. Realized-volatility confirmation matters for volatility-buyer and 0DTE-type hypotheses, but it is too slow to be primary confirmation for same-session direction. Sector/theme clustering can help, but it becomes overfit fast unless the catalyst is known to be sector-wide, such as a macro release or an industry headline. citeturn4search3turn4search11turn21search2turn31view1turn32search21
|
||||
|
||||
A useful participant-hypothesis layer is this:
|
||||
|
||||
**Institutional directional buyer.** Supporting evidence: buy-side options aggression in liquid contracts, repeated bursts or multi-venue sweeps, strong `volume / prior_OI`, supportive underlying tape, and no spread/hedge flags. Weakening evidence: multi-leg/stock-option condition codes, deep-ITM structure, isolated 0DTE bursts, earnings proximity without cross-asset follow-through. Data required: trades, quotes, OI, moneyness, greeks, underlying prints, catalyst calendar. Realistic confidence: moderate at best with public data. Common misclassification: volatility buyers, call overwrites being mistaken for call buying, or spread legs misread directionally. citeturn11view4turn11view6turn29view4turn24search2
|
||||
|
||||
**Institutional directional seller.** Supporting evidence: ask-side put demand or bid-side call selling with supportive downside stock response and rising downside skew. Weakening evidence: protective-hedge patterns around earnings, index/ETF hedge spillover, or put volume concentrated in standard downside-hedge expiries. Confidence: moderate at best. Common misclassification: portfolio hedging labeled as alpha. citeturn6search15turn21search2turn25search0
|
||||
|
||||
**Volatility buyer.** Supporting evidence: straddle-/strangle-like package likelihood, high vega concentration, IV expansion, realized-vol uptick after the trade, or event proximity with noncommittal delta profile. Weakening evidence: strong one-sided equity confirmation or deep directional delta concentration. Confidence: moderate when grecian context is good. Common misclassification: directional call or put buyers who also happen to lift IV. citeturn21search2turn22search1turn31view2
|
||||
|
||||
**Volatility seller.** Supporting evidence: net sell pressure in rich IV regimes, covered-write/collar-like structures, or post-event premium harvesting patterns. Weakening evidence: strong one-sided underlying tape or repeated near-ask buying in the same series. Confidence: low-to-moderate with public data because many short-vol structures are packaged. Common misclassification: bearish or bullish stance inferred from premium collection. citeturn25search8turn24search2turn24search3
|
||||
|
||||
**Hedge or reactive flow.** Supporting evidence: deep-ITM stock-replacement characteristics, stock-option package flags, ETF/index coincidence, expiries concentrated around known events, or flow patterns literature says are consistent with dealer delta hedging rather than information. Weakening evidence: repeated same-name activity across sessions with longer-dated maturities and supportive stock follow-through. Confidence: often higher than directional inference because “hedge/reactive” is a broader, humbler category. Common misclassification: almost all whale-alert systems underweight this bucket. citeturn29view4turn31view1turn32search21
|
||||
|
||||
**Spread or arbitrage structure.** Supporting evidence: explicit multi-leg codes, paired strikes/expiries, put-call parity or box-like geometry, stock-option package flags, and isolated leg prices that make no standalone sense. Weakening evidence: single-leg regular prints in very active liquid contracts without companion legs. Confidence: moderate when complex flags are present, lower when reconstructing heuristically. Common misclassification: one leg of a vertical spread presented as a clean bullish call buy. citeturn29view4turn2search16
|
||||
|
||||
**Retail momentum or speculation.** Supporting evidence: 0DTE or very short-dated OTM flow, crowded meme names, small-lot clustering, and weak or chaotic cross-asset confirmation. Weakening evidence: longer-dated liquid contracts, repeated institution-like bursts, and strong contract-relative anomaly versus a ticker’s normal retail profile. Confidence: low-to-moderate; retail and professional tactical flow can look similar on public tape. Common misclassification: every flashy short-dated OTM call burst labeled “institutional bullish.” citeturn11view0turn31view1turn5search0
|
||||
|
||||
**Event-driven positioning.** Supporting evidence: flow concentrated ahead of earnings, FDA meetings, SEC filings, M&A rumor windows, or major macro releases; elevated front-end IV; straddle-like or one-sided convexity demand. Weakening evidence: no nearby catalyst and no realized move after repeated alerts. Confidence: moderate for “event-driven,” low for exact direction. Common misclassification: informed alpha versus generic event repricing. citeturn21search0turn21search18turn34search13turn34search10
|
||||
|
||||
**Unknown or abstain.** Supporting evidence: conflicting clues, poor quote quality, wide spreads, stale quotes, complex conditions, low-liquidity contracts, corrected prints, or better hedge explanations. Weakening evidence: there often is no need to weaken this. Confidence: this should be frequent. Common misclassification: systems that force every alert into a story create false authority. citeturn9search2turn20search1turn18view2
|
||||
|
||||
## Signal catalog
|
||||
|
||||
Below is a catalog optimized for explainability and deterministic reconstruction rather than hype. “Thresholds” are deliberately framed as **relative baselines** or percentiles because absolute cutoffs age badly across tickers, expiries, and regime shifts.
|
||||
|
||||
**Directional options aggression.** Market mechanism: liquidity-taking in a single option series. Supported hypothesis: institutional directional buyer or seller. Required data: OPRA trades, NBBO quotes, contract metadata, timestamps. Helpful data: greeks, underlying trades/quotes, next-day OI. Detection: classify print vs bid/ask/mid; require narrow spread and fresh quote; aggregate signed premium or delta-adjusted notional in a short window. Suggested threshold: contract-level signed premium or delta-notional above the ticker-expiry-strike percentile baseline. Confidence components: aggressor confidence, spread tightness, quote age, liquidity tier, repeat persistence. False-positive penalties: multi-leg flags, 0DTE, deep-ITM, catalyst proximity without confirmation. Abstain when quote is stale or midpoint-heavy. Preserve evidence: raw trade, quote snapshot, distance to bid/ask/mid, spread, timestamps, condition code, classification path. Stage: **MVP**. citeturn20search1turn9search2turn22search1
|
||||
|
||||
**Premium anomaly.** Mechanism: unusually large premium concentration in a contract or ticker. Supported hypothesis: broad “attention-demand” rather than directly directional. Required data: premium, historical baselines, contract metadata. Helpful data: delta, extrinsic/intrinsic split, OI, IV, underlying ADV. Detection: rank premium versus own-history and ticker-day distribution; split into intrinsic-heavy and extrinsic-heavy buckets. Threshold: top decile or top percentile relative to contract and ticker baselines, not absolute dollars. Confidence components: baseline rarity, liquidity, extrinsic share. Penalties: deep-ITM high-delta stock replacement, spread/hedge flags. Abstain when premium is mostly intrinsic or the contract is adjusted. Preserve evidence: premium, multiplier, moneyness, delta, OI, IV, condition codes. Stage: **MVP**, but never user-facing on its own. citeturn23search5turn31view2turn34search7
|
||||
|
||||
**Volume/Open-interest anomaly.** Mechanism: current trading dwarfs prior outstanding positions. Supported hypothesis: new positioning or major turnover. Required data: intraday volume and prior-day OI. Helpful data: next-day OI for validation, exchange open/close summaries. Detection: compute `volume / prior_OI`, `signed_delta_notional / prior_OI`, and ticker-relative ranks. Threshold: high percentile by contract and by ticker. Confidence components: liquidity, repeated activity, next-day OI consistency in research mode. Penalties: expiry-week rolls, corporate actions, adjusted series. Abstain when OI is stale after unusual corporate events or contract adjustments. Preserve evidence: volume trajectory, prior OI, next OI when later available, expiry, adjusted flag. Stage: **MVP**. citeturn6search4turn24search2turn34search3
|
||||
|
||||
**Repeat burst or sweep clustering.** Mechanism: urgency or persistent parent-order slicing. Supported hypothesis: institutional directional or volatility buyer/seller. Required data: per-trade timestamp, venue, series ID, price. Helpful data: underlying prints, quote updates. Detection: cluster same-series or same-thesis prints within short event-time windows; identify multi-venue sweeps or repeated bursts over several minutes/hours. Threshold: cluster count, total signed delta-notional, and venue diversity above baseline. Confidence components: multi-venue evidence, price escalation, persistence. Penalties: auction or complex condition codes. Abstain when burst consists mostly of complex or midpoint trades. Preserve evidence: member prints in cluster, venues, micro-timing, price ladder. Stage: **MVP** for same-series sweeps, **v2** for multi-series thesis clustering. citeturn26search14turn29view4
|
||||
|
||||
**Block trade interpretation.** Mechanism: single large print or tight local cluster. Supported hypothesis: only weakly directional unless corroborated. Required data: trade size, quote context, condition codes, venue/TRF flag. Helpful data: subsequent same-series or underlying activity. Detection: size percentile + contemporaneous quote test + sale-condition eligibility. Threshold: top size percentile within contract or ticker. Confidence components: contemporaneous reporting, quote alignment, follow-on activity. Penalties: cross/auction/contingent/average-price/official conditions. Abstain when large print is non-regular or unconfirmed. Preserve evidence: size percentile, code, quote snapshot, late/correction state. Stage: **MVP**, but conservative. citeturn19view6turn18view0turn29view4
|
||||
|
||||
**Spread/hedge likelihood.** Mechanism: identifying that a “signal” is probably not a clean directional single-leg bet. Supported hypothesis: spread/arbitrage or hedge/reactive flow. Required data: condition codes, nearby trades across strikes/expiries/put-call sides, underlying trades. Helpful data: greeks. Detection: explicit OPRA complex flags first; then geometric matching for verticals, straddles, strangles, collars, rolls, stock-option combinations. Threshold: probability model or rule count over a confidence bar. Confidence components: explicit complex code, size symmetry, delta offset, shared timestamps. Penalties: none; this is itself a safety signal. Abstain when package reconstruction is ambiguous. Preserve evidence: all linked legs and linkage rationale. Stage: **MVP** for explicit codes, **v2** for heuristic reconstruction. citeturn29view4turn2search16
|
||||
|
||||
**IV expansion confirmation.** Mechanism: local demand reprices IV upward. Supported hypothesis: volatility buyer, event-driven positioning, sometimes directional buyer. Required data: trade price, quote snapshot, model IV, historical IV baseline. Helpful data: surface/skew snapshots and greeks. Detection: compare post-trade IV to pre-trade and to local surface neighborhood. Threshold: local IV shock above contract-specific baseline percentile. Confidence components: localized IV lift, not just market-wide lift; persistence after the print. Penalties: scheduled-event windows, broad market vol regime jumps, surface-wide repricing. Abstain when IV is vendor-derived from sparse stale quotes. Preserve evidence: pre/post IV, surrounding strikes’ IV, tenor bucket. Stage: **v2** if IV quality is good; otherwise wait. citeturn31view2turn25search8turn22search5
|
||||
|
||||
**Price/volume confirmation in the underlying.** Mechanism: genuine information or strong hedging pressure often leaks into the stock. Supported hypothesis: institutional directional or strong hedge/reactive flow. Required data: underlying trades and quotes, symbol baseline volume, event-time clocks. Helpful data: off-exchange flags, short-term realized vol. Detection: measure post-alert price drift, quote revision, and volume imbalance over controlled windows. Threshold: short-horizon abnormal move or abnormal signed-volume percentile relative to same time-of-day baseline. Confidence components: immediacy, persistence, quote-based classification quality. Penalties: macro tape shock or sector-wide move. Abstain on market-wide news minutes. Preserve evidence: pre/post price, short-horizon volume, same-window market/sector moves. Stage: **MVP**. citeturn4search3turn21search0turn32search21
|
||||
|
||||
**Equity off-exchange confirmation.** Mechanism: related risk transfer occurs off-exchange. Supported hypothesis: hedge/reactive flow or institution-sized execution. Required data: TRF flags, size, timing, sale conditions. Helpful data: delayed FINRA ATS/non-ATS profiles for research. Detection: require real-time TRF activity in the same ticker during or just after the options cluster, but only count eligible and contemporaneous prints. Threshold: ticker- and time-of-day-adjusted off-exchange size anomaly. Confidence components: size anomaly plus price/quote response. Penalties: non-ATS context, average-price or late modifiers. Abstain when the off-exchange activation is purely delayed or condition-ineligible. Preserve evidence: TRF print details and modifier eligibility. Stage: **v2**. citeturn27search6turn28search1turn18view0turn19view6
|
||||
|
||||
**Equity quote-aligned print classification.** Mechanism: infer aggressive stock-side prints as supporting evidence. Supported hypothesis: directional or hedge/reactive flow. Required data: stock trades and quotes. Helpful data: participant timestamps. Detection: quote rule + Lee-Ready fallback with confidence. Threshold: signed notional imbalance over short horizon. Confidence components: fresh quote, inside-spread share, spread width. Penalties: midpoint-heavy or fast-market mismatch. Abstain when classification confidence is poor. Preserve evidence: trade/quote join and confidence path. Stage: **MVP**. citeturn30view1turn30view3turn30view2
|
||||
|
||||
**Catalyst proximity adjustment.** Mechanism: event windows explain a lot of seemingly unusual flow. Supported hypothesis: event-driven positioning or volatility demand. Required data: earnings calendar, SEC filing/news feed, biotech/FDA event feed if covering that universe, macro calendar. Helpful data: historical event responses by ticker. Detection: compute distance to scheduled earnings, advisory meetings, SEC filing bursts, or known macro releases. Threshold: e.g., same day, next day, or pre-defined event windows. Confidence components: proximity and relevance. Penalties: strong because events create lots of informed-looking but non-informational or broadly expected flow. Abstain when event context dominates the tape story. Preserve evidence: event type, source, timestamp. Stage: **MVP** for earnings and SEC filings, **v2** for broader news/FDA. citeturn34search0turn34search10turn34search13
|
||||
|
||||
**Low-liquidity and wide-spread penalty.** Mechanism: bad markets create fake conviction. Supported hypothesis: none; this is a quality control signal. Required data: spread width, quote size, trade count, contract ADV/OI. Helpful data: SEC/Cboe liquidity-tier baselines. Detection: percentile-rank spread, zero-depth frequency, and quote-age instability. Threshold: heavy penalties in the worst liquidity buckets. Confidence components: tighter markets get less penalty. Penalties: n/a. Abstain when spread percentile and quote staleness are both extreme. Preserve evidence: spread, depth, quote age, contract liquidity rank. Stage: **MVP**. citeturn11view1turn11view2turn9search2
|
||||
|
||||
**Stale-quote penalty.** Mechanism: old quotes break most downstream inferences. Supported hypothesis: none. Required data: trade time, quote time, underlying move since quote, provider receive times if available. Helpful data: packet timestamps. Detection: compute option-quote age and underlying return since quote. Threshold: penalty rises sharply once quote age or underlying move exceeds regime-specific tolerance. Confidence components: fresh quote reduces penalty. Abstain when your trade/quote join is visibly compromised. Preserve evidence: original timestamps and join method. Stage: **MVP**. citeturn9search2turn33search4turn33search6
|
||||
|
||||
**Earnings or event-noise penalty.** Mechanism: scheduled uncertainty inflates both directional and volatility-looking activity. Supported hypothesis: event-driven, not necessarily informed. Required data: earnings/news/event calendar and IV term structure. Helpful data: historical event IV patterns. Detection: penalize front-end anomalies into scheduled events unless the system explicitly labels them event-driven. Threshold: event window based on same-day or next-day timing and front-end IV elevation. Confidence components: if the product category is “event flow,” this becomes category context instead of pure penalty. Abstain when the event explains the anomaly better than any directional hypothesis. Preserve evidence: event timeline, front-end IV, historical event seasonality. Stage: **MVP**. citeturn25search0turn25search8turn34search0
|
||||
|
||||
## False positives and scoring philosophy
|
||||
|
||||
The most common false positive is **spreads misread as single-leg conviction**. Simple systems fail because they rank each print independently and ignore explicit complex flags or nearby compensating legs. Detect or penalize by reading OPRA condition codes first, then reconstructing likely packages. Abstain when a leg can plausibly belong to a complex or stock-option package and the package confidence is non-trivial. Closely related is **hedges misread as alpha**: protective puts, covered calls, collars, ETF overlays, and stock-replacement trades can create huge premium and size without expressing fresh fundamental insight. Penalize deep-ITM, pairings with stock prints, and sector/index hedge overlap, and abstain when the greek profile screams hedge more than directional bet. citeturn29view4turn32search21turn23search5
|
||||
|
||||
Another major failure mode is **market-maker/dealer hedging effects**. Options demand can move IV and induce stock hedging flows; that does not mean the initiating trade carried information about fundamentals. Papers on demand pressure and market-maker hedging make this point bluntly, and 0DTE research strengthens it for ultra-short-dated flow. Penalize signals that are mainly explained by gamma/vega concentration, especially near expiry or macro events, and abstain when the evidence points more naturally to hedging propagation than to informed direction. citeturn31view2turn32search5turn31view1
|
||||
|
||||
Then there is **earnings lottery flow and event repricing**. Simple systems see elevated front-end IV, big OTM call/put buying, and large premium into earnings and assume information. But earnings mechanically attract volatility demand, and even directionally “right” traders can lose from post-event IV crush. Detect and penalize with catalyst calendars, front-end IV elevation, and repeated historical event patterns. Abstain liberally in the final 24 to 48 hours before scheduled earnings unless the product is explicitly labeling the flow as event-driven rather than smart. Similar logic applies to FDA calendars, merger windows, and macro releases. citeturn25search8turn25search19turn34search13turn21search18
|
||||
|
||||
**ETF and index hedges** fool simple systems because they can splash into single-name names via baskets, sector ETFs, and dealer hedge propagation. A large put buyer in an index or ETF can alter local greeks, skew, and stock hedging demand without saying much about any one constituent. Penalize single-name directional claims when broad-market or sector vol is simultaneously repricing. Abstain if the single-name options signal has weak idiosyncratic confirmation and strong broad-market-correlation explanation. citeturn31view2turn32search21
|
||||
|
||||
**Meme or retail momentum** is another trap. Retail-heavy 0DTE or weekly OTM flow can produce dramatic tape and premium. Simple systems overinterpret it because urgency and convexity look “institutional.” Detect with short tenor, low dollar commitment relative to socialized volume, repeated crowd-favorite names, and poor cross-asset discipline. Penalize when the name is liquidity-fragmented and the flow is one-session, one-strike, one-expiry noise. Abstain if the trade only looks special because the contract is cheap. citeturn11view0turn5search0
|
||||
|
||||
**Illiquid contracts, wide/stale quotes, delayed/corrected prints, and corporate actions** are the classic data traps. Illiquid options make aggressor-side and IV extraction unreliable; wide quotes make midpoint logic almost meaningless; delayed or corrected equity prints create phantom accumulation; adjusted options after splits, mergers, or special dividends break naïve notional and OI comparisons. Penalize each directly from the feed and from OCC memos, and abstain whenever the raw market quality or reference data are clearly compromised. citeturn11view1turn9search2turn18view2turn34search7
|
||||
|
||||
A sound scoring framework therefore needs at least four layers:
|
||||
|
||||
**Evidence quality score.** Inputs: quote freshness, spread percentile, liquidity tier, condition-code eligibility, timestamp completeness, adjusted-contract status, and provider coverage quality. This is about whether the data can support inference at all. citeturn9search2turn11view1turn33search4
|
||||
|
||||
**Signal strength score.** Inputs: signed delta-notional anomaly, `volume / prior_OI`, sweep/burst persistence, IV/skew shock, and underlying confirmation. This is about what happened in the market. citeturn11view6turn21search2turn31view2
|
||||
|
||||
**False-positive penalty score.** Inputs: spread/hedge likelihood, 0DTE/event noise, ETF/index overlay, late/corrected/off-hours status, and low-liquidity pathology. This is about alternative explanations. citeturn29view4turn31view1turn18view0turn19view6
|
||||
|
||||
**Hypothesis confidence score.** Inputs: how well the surviving evidence specifically matches a participant hypothesis such as directional buyer, volatility buyer, or hedge/reactive flow. This is distinct from conviction. A strong anomaly can have **high strength but low confidence** if multiple explanations remain plausible. citeturn21search2turn32search21
|
||||
|
||||
A single “smart money score” is misleading because it collapses all of these dimensions into one number and invites users to mistake anomaly for information. The product-facing compromise is a label like **Smart Flow candidate** only when: evidence quality is high, signal strength is high, penalties are modest, and at least one participant hypothesis has a clear lead. Even then, the UI should show the label as a **candidate with confidence band**, not as a verdict. Good alerts read like: “High-quality bullish directional candidate; ask-side call aggression in liquid ATM weeklys; supportive underlying buy pressure; no explicit complex flags; earnings not imminent.” Bad alerts read like: “$5M call premium in XYZ.” The second version is clickbait with no epistemic spine. citeturn20search1turn24search2turn25search8
|
||||
|
||||
## Data requirements, validation, and final recommendations
|
||||
|
||||
### Data requirement matrix
|
||||
|
||||
| Data type | Why it matters | Required or optional | Latency sensitivity | Retail-accessible availability | Common limitations |
|
||||
|---|---|---|---|---|---|
|
||||
| OPRA options trades | Core record of listed-options prints, sizes, prices, and conditions. | **Required** | High | Available through retail-facing vendors and APIs that source OPRA. citeturn24search5turn15search2turn15search0 | No trader identity; no direct aggressor flag; no trade-level open/close. |
|
||||
| Options NBBO quotes | Needed for bid/ask/mid classification, spread, quote age, IV extraction. | **Required** | High | Available from OPRA-based providers; some free plans are delayed or indicative. citeturn15search2turn15search5turn15search11 | Top-of-book only in many retail stacks; stale or conflated delivery may exist. |
|
||||
| Options trade condition codes | Essential for excluding complex, auction, cross, extended-hours, or compression activity. | **Required** | High | Present in OPRA/native specs. citeturn29view4turn29view1 | Easy for downstream vendors to normalize away unless preserved raw. |
|
||||
| Open interest | Needed for `volume / OI`, opening-likelihood, and baseline context. | **Required** | Low intraday, medium daily | OCC publishes OI; many vendors redistribute it. citeturn6search4turn29view3 | End-of-day only; not live inventory. |
|
||||
| Greeks | Needed to distinguish delta, gamma, and vega-driven flow. | **Strongly preferred** | Medium | Some vendors provide modeled greeks; Cboe trade-by-trade greeks are T+1. citeturn22search5turn15search15 | Vendor methodology differs; real-time greeks may be model-dependent. |
|
||||
| Implied volatility | Needed for IV shock, skew, tenor context, event repricing. | **Strongly preferred** | Medium | Often vendor-derived or model-derived. citeturn25search8turn15search15 | Sparse quotes and stale markets can make IV noisy. |
|
||||
| Underlying equity trades | Needed for cross-asset confirmation and dealer-hedge effects. | **Required** | High | SIP-based access is common; free plans may only expose one venue like IEX. citeturn16search5turn16search8 | Single-venue feeds are not full-market truth. |
|
||||
| Underlying equity quotes | Needed for stock trade-signing, spread context, and event-time joins. | **Required** | High | SIP feeds widely available at paid tiers. citeturn16search5turn16search2 | Trade-signing remains inferred, not explicit. |
|
||||
| Off-exchange/TRF flags | Needed to separate lit from off-exchange confirmation. | **Required** | High | Included in SIP/TAQ-style trade data and vendor-normalized schemas. citeturn27search6turn16search6 | TRF is broader than ATS/dark pool. |
|
||||
| Corporate actions | Needed to detect adjusted contracts, split effects, and broken baselines. | **Required** | Medium | OCC info memos and market data reference feeds. citeturn34search3turn34search7 | Easy to miss or lag if reference-data pipeline is weak. |
|
||||
| Earnings calendar | Needed for event-noise and earnings repricing penalties. | **Required** | Medium | Public calendars are common. citeturn34search0 | Time-of-day and revisions can be messy across providers. |
|
||||
| News or event feeds | Needed for SEC filings, M&A, FDA, and macro context. | **Optional for raw MVP, required for good product quality** | Medium to High | SEC EDGAR and FDA calendars are public; richer news feeds are separate. citeturn34search10turn34search13 | Entity mapping and deduping are nontrivial. |
|
||||
| Sector or industry classification | Needed for theme clustering and market-relative analysis. | **Optional** | Low | Common in reference datasets. | Taxonomy mismatch across providers. |
|
||||
| Historical baselines | Needed for anomaly scoring and percentile thresholds. | **Required** | Low for storage, high for research correctness | Build from your own normalized history. | Regime change, splits, symbol changes, survivorship issues. |
|
||||
| Exchange proprietary open/close summaries | Needed for better opening/closing and participant-type research. | **Optional but very valuable for v2** | Low to Medium | Cboe and NYSE sell them. citeturn24search2turn24search3 | Exchange-scoped, not full-market. |
|
||||
|
||||
The biggest provider gap for a retail-accessible MVP is not raw trades. It is **high-quality quotes, raw condition codes, timestamps, contract-reference hygiene, and consistent greeks/IV**. A second important gap is **trade-level open/close and participant-type attribution**, which generally requires proprietary exchange datasets rather than plain OPRA. A third is **venue-granular off-exchange attribution in real time**; FINRA transparency is useful, but delayed. citeturn15search2turn15search5turn22search5turn28search1turn24search2
|
||||
|
||||
### Validation and backtesting
|
||||
|
||||
Validation has to be done in **event time**, not processing time. The tape often contains multiple timestamps, and providers differ on what they expose. If your alerts are built on when your system *received* data instead of when the market event occurred, you will confuse network delay with signal timing and accidentally create lookahead or mis-ordering artifacts. Preserve raw event timestamps, provider receive timestamps, and quote/trade join rules so any alert can be reconstructed exactly. citeturn33search1turn33search4turn33search6turn33search16
|
||||
|
||||
Avoid lookahead bias aggressively. Same-day alerting may use prior-day OI, but not tomorrow’s OI; it may use contemporaneous IV and quotes, but not later quote repairs; it may use known earnings calendars, but not future news that had not yet arrived. Validation windows should be time-of-day aware and should compare against historical distribution for that ticker, tenor bucket, and regime. A baseline for “unusual” should generally use rolling windows with exclusions for recent event days and contract-adjustment periods. citeturn6search4turn34search7turn34search0
|
||||
|
||||
Naïve testing like “did price go up after a bullish alert?” is not enough. It fails because some signals are volatility signals, some are hedge signals, some are event signals, and some are simply data-quality failures. Better evaluation metrics include: hypothesis-calibrated outcomes, such as short-horizon drift for directional candidates, realized-vol expansion for volatility-buyer candidates, and abstention quality for ambiguous samples; precision at top confidence deciles; outcome monotonicity by confidence bucket; false-positive rate around earnings and macro events; and robustness across liquidity tiers and spread regimes. The literature is mixed precisely because the signal is conditional. Pan and Poteshman find predictive content in buyer-to-open option volume, but Muravyev and coauthors find little incremental price discovery in options quotes beyond stocks. Your backtest should therefore validate **which contexts** work, not whether “options flow works” in the abstract. citeturn11view4turn11view6turn4search11turn21search2
|
||||
|
||||
Useful validation tests include: replay tests for deterministic re-creation of every alert; ablation tests removing one evidence component at a time; placebo tests on condition-ineligible prints; event-window stress tests around earnings, FOMC, CPI, and FDA meetings; liquidity stratification tests; and hand-audited samples where a human reviewer checks whether the preserved evidence really supports the alert hypothesis. If a signal only “works” when you keep event days, illiquid contracts, or stale quotes, that is usually a red flag, not a breakthrough. citeturn18view0turn29view4turn11view1turn34search13
|
||||
|
||||
### Final deliverables
|
||||
|
||||
**Executive synthesis.** The defensible product is not a whale-alert engine. It is a **market-structure evidence engine** that scores hypotheses under uncertainty. Public data can support useful directional, volatility, and hedge/reactive candidates, but only after condition-code filtering, quote-quality control, liquidity penalties, and catalyst-aware abstention. citeturn20search1turn31view2turn32search21
|
||||
|
||||
**Ranked list of the most useful signals for an MVP-to-v2 roadmap.**
|
||||
1. Directional options aggression in liquid contracts, with quote-quality scoring and underlying confirmation. citeturn20search1turn11view6
|
||||
2. Volume/open-interest anomaly with contract-relative baselines. citeturn6search4turn11view6
|
||||
3. Repeat burst or sweep clustering in the same contract or thesis family. citeturn26search14turn29view4
|
||||
4. Price/volume confirmation in the underlying equity. citeturn4search3turn21search0
|
||||
5. Spread/hedge-likelihood suppression using explicit complex flags. citeturn29view4
|
||||
6. Stale-quote and wide-spread penalties. citeturn9search2turn11view1
|
||||
7. Catalyst proximity adjustment, especially earnings. citeturn25search8turn34search0
|
||||
8. IV/skew confirmation once IV quality is trustworthy. citeturn31view2turn6search15
|
||||
9. Equity off-exchange confirmation as a weak secondary layer, not a primary driver. citeturn27search6turn28search1
|
||||
|
||||
**Signals that are probably noise unless strongly corroborated.**
|
||||
- Standalone gross premium rankings. citeturn31view2turn23search5
|
||||
- Standalone 0DTE bursts. citeturn31view1turn11view0
|
||||
- Standalone deep-ITM prints. citeturn23search5
|
||||
- Midpoint-heavy or wide-spread options prints. citeturn20search1turn11view1
|
||||
- Single TRF prints interpreted as dark-pool accumulation. citeturn27search6turn28search1
|
||||
- Late, corrected, official, average-price, or contingent equity prints counted as real-time intent. citeturn18view0turn19view6
|
||||
|
||||
**MVP recommendation.** Build around: OPRA trades and NBBO, stock SIP trades and quotes, raw condition codes, prior-day OI, corporate-action handling, earnings calendar, deterministic replay, and explicit abstention. Use contract-relative baselines, not fixed-dollar thresholds. Do **not** promise participant identity. citeturn24search5turn16search5turn6search4turn34search7turn34search0
|
||||
|
||||
**v2 recommendation.** Add: better greeks and IV surfaces, exchange open/close summaries, smarter multi-leg reconstruction, delayed FINRA ATS/non-ATS research datasets for ticker profiling, broader event feeds, and richer timestamp handling. citeturn22search5turn24search2turn24search3turn28search1
|
||||
|
||||
**Avoid-for-now list.**
|
||||
- “Smart money score” as a singular authoritative product value. citeturn4search11turn32search5
|
||||
- Venue-specific dark-pool attribution in real time from public data. citeturn28search1turn27search19
|
||||
- Aggressor-side certainty on illiquid options or midpoint-heavy prints. citeturn20search1turn9search2
|
||||
- Exact opening/closing labels at trade level from plain OPRA. citeturn24search5turn6search4
|
||||
|
||||
**Implementation-neutral signal formulas.** These are synthesis formulas, not claims of exchange-defined truth.
|
||||
|
||||
```text
|
||||
evidence_quality
|
||||
= w1 * quote_freshness_score
|
||||
+ w2 * spread_tightness_score
|
||||
+ w3 * liquidity_score
|
||||
+ w4 * condition_eligibility_score
|
||||
- w5 * adjusted_contract_penalty
|
||||
|
||||
directional_strength
|
||||
= signed_delta_notional_z
|
||||
+ signed_premium_z * aggressor_confidence
|
||||
+ sweep_cluster_score
|
||||
+ underlying_confirmation_score
|
||||
|
||||
volatility_strength
|
||||
= vega_notional_z
|
||||
+ local_iv_shock_z
|
||||
+ skew_shift_score
|
||||
+ realized_vol_followthrough_score
|
||||
|
||||
false_positive_penalty
|
||||
= spread_structure_penalty
|
||||
+ 0dte_penalty
|
||||
+ catalyst_noise_penalty
|
||||
+ stale_quote_penalty
|
||||
+ off_exchange_ambiguity_penalty
|
||||
+ late_or_corrected_print_penalty
|
||||
|
||||
hypothesis_score[h]
|
||||
= evidence_quality
|
||||
+ strength_terms_matching_h
|
||||
- false_positive_penalty
|
||||
- contradiction_terms_for_h
|
||||
|
||||
alert_if
|
||||
evidence_quality >= q_min
|
||||
and max_h hypothesis_score[h] >= h_min
|
||||
and runner_up_gap >= gap_min
|
||||
else abstain
|
||||
```
|
||||
|
||||
This design separates **confidence** from **conviction**. Confidence comes from evidence quality and hypothesis separation; conviction comes from signal strength. A strong but low-confidence anomaly should surface as “interesting, ambiguous,” not “smart.” citeturn20search1turn30view2turn32search5
|
||||
|
||||
**Evidence fields to preserve for every signal.**
|
||||
- Raw trade record, raw quote snapshot(s), and raw condition codes. citeturn29view4turn19view6
|
||||
- Event timestamp, receive timestamp, and join methodology. citeturn33search1turn33search4turn33search6
|
||||
- Bid, ask, midpoint, spread width, quoted size, and quote age. citeturn11view1turn9search2
|
||||
- Contract metadata: strike, expiry, call/put, multiplier, adjusted flag. citeturn34search7
|
||||
- Moneyness, delta, gamma, vega, implied volatility, and local skew if available. citeturn22search1turn22search5turn6search15
|
||||
- Prior-day OI, current volume path, and next-day OI for research reconciliation. citeturn6search4
|
||||
- Underlying stock confirmation window and market/sector control move. citeturn32search21turn21search0
|
||||
- Event/catalyst context and source. citeturn34search0turn34search10turn34search13
|
||||
- Scoring breakdown and abstention reason if suppressed. This is product design synthesis based on the evidence-quality literature above. citeturn20search1turn30view2
|
||||
|
||||
**Glossary of market-structure terms.**
|
||||
- **NBBO:** the best national bid and offer for a security or option series. citeturn8search7turn8search3
|
||||
- **Midpoint:** the arithmetic middle between bid and ask. citeturn11view1
|
||||
- **Aggressor-side / trade sign:** inferred liquidity demander, not directly carried in most public SIP feeds. citeturn30view1turn33search9
|
||||
- **TRF:** FINRA Trade Reporting Facility for off-exchange equity trades. citeturn27search6
|
||||
- **ATS / dark pool:** non-displayed trading venue; only a subset of off-exchange prints. citeturn27search1turn28search1
|
||||
- **Open interest:** outstanding contracts after netting daily opening and closing activity, exercises, and assignments. citeturn6search4
|
||||
- **IV:** model-implied volatility reflected in option prices. citeturn25search8
|
||||
- **Skew:** IV differences across strikes for the same expiry. citeturn6search15
|
||||
- **Delta / gamma / vega:** first-order price sensitivity to the underlying, rate of delta change, and sensitivity to IV. citeturn22search1
|
||||
- **0DTE:** option expiring the same trading day. citeturn11view0
|
||||
- **ISO / sweep:** order type or execution pattern intended to quickly access multiple venues’ liquidity. citeturn26search14turn26search2
|
||||
- **QCC / cross / auction / complex trade:** special execution mechanisms often incompatible with naïve directional interpretation. citeturn29view4
|
||||
- **BOLO / odd-lot information:** best odd-lot order data added through recent Regulation NMS changes. citeturn17view1
|
||||
|
||||
**Source bibliography.**
|
||||
|
||||
**Primary and official market-structure sources**
|
||||
- SEC, *Final Rule: Regulation NMS* and later NMS amendments on odd lots and better-priced orders. citeturn8search1turn14search0
|
||||
- SEC Division of Trading and Markets, *Roundtable on Options Market Structure Supporting Data*, 2026. citeturn9search0
|
||||
- OPRA, official home page and 2026 participant interface specification. citeturn24search5turn2search0
|
||||
- OCC, open interest and information-memo resources. citeturn6search4turn34search3
|
||||
- OIC / OptionsEducation, resources on greeks, skew, delta, 0DTE, and market data. citeturn22search1turn6search15turn23search5turn5search5
|
||||
- FINRA, TRF overview, trade-reporting FAQ, OTC transparency, and dark-pool investor explainer. citeturn27search6turn17view0turn28search1turn27search1
|
||||
- CTA/UTP SIP specifications for equity sale conditions and timestamps. citeturn3search1turn3search0
|
||||
- Nasdaq and options order-protection definitions for NBBO and ISO. citeturn8search7turn26search2
|
||||
|
||||
**Core academic papers**
|
||||
- Pan and Poteshman, *The Information in Option Volume for Future Stock Prices*. citeturn4search0
|
||||
- Chakravarty, Gulen, and Mayhew, *Informed Trading in Stock and Option Markets*. citeturn4search3
|
||||
- Muravyev, Pearson, and Broussard, *Is There Price Discovery in Equity Options?* citeturn4search11
|
||||
- Ni, Pan, and Poteshman, *Volatility Information Trading in the Option Market*. citeturn21search2
|
||||
- Cao, Chen, and Griffin, *Informational Content of Option Volume Prior to Takeovers*. citeturn21search0
|
||||
- Augustin, Brenner, Hu, and Subrahmanyam, *Informed Options Trading Prior to M&A Announcements*. citeturn21search18
|
||||
- Bollen and Whaley, *Does Net Buying Pressure Affect the Shape of Implied Volatility Functions?* citeturn22search2
|
||||
- Gârleanu, Pedersen, and Poteshman, *Demand-Based Option Pricing*. citeturn32search5
|
||||
- Savickas and Wilson, *On Inferring the Direction of Option Trades*. citeturn20search1
|
||||
- Lee and Ready; Ellis, Michaely, and O’Hara; Asquith et al.; Jurkatis on trade classification accuracy and fast-market limitations. citeturn30view1turn30view3turn30view2
|
||||
- Dim, Eraker, and Vilkov, *0DTEs: Trading, Gamma Risk and Volatility Propagation*. citeturn31view1
|
||||
|
||||
**Operational or vendor-documentation sources useful for implementation, but weaker for causal inference**
|
||||
- Databento documentation on OPRA, SIPs, timestamps, and normalized fields. citeturn15search0turn33search4turn33search1
|
||||
- Massive documentation on trades, quotes, timestamps, and SIP normalization. citeturn16search2turn16search6turn33search6
|
||||
- Alpaca documentation on SIP versus IEX and OPRA access limitations. citeturn16search5turn15search2turn15search11
|
||||
|
||||
The bottom line for Islandflow is blunt: **build a system that can say “this is probably a hedge,” “this is probably an event-vol trade,” or “I don’t know,” and mean it.** That restraint is not a weakness. In this domain, it is the entire product moat. citeturn32search5turn31view1turn20search1
|
||||
Loading…
Add table
Add a link
Reference in a new issue