<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: GEX.live</title>
    <description>The latest articles on DEV Community by GEX.live (@gexlive).</description>
    <link>https://dev.to/gexlive</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4084601%2Feafabb21-81de-4d43-8585-24b5a580b611.png</url>
      <title>DEV Community: GEX.live</title>
      <link>https://dev.to/gexlive</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/gexlive"/>
    <language>en</language>
    <item>
      <title>LAB now ships a free Idea Feed: rule-shaped trading ideas, deliberately untested</title>
      <dc:creator>GEX.live</dc:creator>
      <pubDate>Thu, 20 Aug 2026 18:21:22 +0000</pubDate>
      <link>https://dev.to/gexlive/lab-now-ships-a-free-idea-feed-rule-shaped-trading-ideas-deliberately-untested-3if3</link>
      <guid>https://dev.to/gexlive/lab-now-ships-a-free-idea-feed-rule-shaped-trading-ideas-deliberately-untested-3if3</guid>
      <description>&lt;p&gt;A small release, not a launch. The LAB tab on gex.live has a new rightmost rail called &lt;strong&gt;IDEA FEED&lt;/strong&gt;. It is a stream of short, rule-shaped trading ideas about SPX dealer positioning — "fade the first touch of the call wall after a gap up", that kind of thing — collected daily by a scanner from what people actually discuss, rewritten into something the Lab compiler can parse, and published &lt;strong&gt;untested&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;That last word is the point.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why untested is the feature
&lt;/h2&gt;

&lt;p&gt;Every feed of trading ideas on the internet comes with a verdict attached: "this works", "78% win rate", a screenshot of a good month. The feed here refuses to do that. Each card says exactly two things about its idea: &lt;code&gt;compiles clean&lt;/code&gt; (our compiler turned the text into a runnable rule without complaint) and &lt;code&gt;untested&lt;/code&gt; (nobody has run it against the archive yet). The honest test is yours to run.&lt;/p&gt;

&lt;p&gt;One click drops the idea into the Lab conveyor. The compiler has already done the translation, so the first message in your session is the rule itself, stamped &lt;code&gt;↳ from IDEA FEED · compiles, untested&lt;/code&gt;. Running the backtest costs one Lab credit; a failed job refunds itself. If your balance is zero the button does not go dead — it turns into &lt;code&gt;0 CREDITS · BUY →&lt;/code&gt;, remembers the idea you picked, and comes back to it after.&lt;/p&gt;

&lt;h2&gt;
  
  
  What you will not find
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;No source attribution on the cards. The idea is the unit, not the poster.&lt;/li&gt;
&lt;li&gt;No win rates, no "rated", no thumbs. The archive is 1,000+ finished SPX sessions; the Lab tests against all of it with an out-of-sample split and tells you what survived, which so far is: very little. That verdict is worth more than a badge on a card.&lt;/li&gt;
&lt;li&gt;No approval gate. The scanner's finds ship directly every day, so the feed stays fresh by itself. "NEW" is personal — it means new since &lt;em&gt;you&lt;/em&gt; last opened the rail, not new for everyone.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Why build a feed that mostly produces "no"
&lt;/h2&gt;

&lt;p&gt;Because the alternative is pretending. The whole site is built on measuring dealer positioning from the tape instead of assuming it from yesterday's open interest, and on publishing every finished session free so the numbers can be checked. A feed of ideas that come pre-blessed would undo that in one rail. A feed of ideas that come with a one-click honest test is the same principle applied to strategy.&lt;/p&gt;

&lt;p&gt;Try it: &lt;a href="https://gex.live/lab" rel="noopener noreferrer"&gt;https://gex.live/lab&lt;/a&gt; — the rail is on the right, collapsed into a thin spine that says &lt;code&gt;◂ IDEAS · N NEW&lt;/code&gt;. Finished sessions and the idea cards are free; running a test spends a credit.&lt;/p&gt;

</description>
      <category>trading</category>
      <category>finance</category>
      <category>datascience</category>
      <category>showdev</category>
    </item>
    <item>
      <title>The Lab: a backtester that is allowed to say "no"</title>
      <dc:creator>GEX.live</dc:creator>
      <pubDate>Thu, 20 Aug 2026 18:21:18 +0000</pubDate>
      <link>https://dev.to/gexlive/the-lab-a-backtester-that-is-allowed-to-say-no-4m86</link>
      <guid>https://dev.to/gexlive/the-lab-a-backtester-that-is-allowed-to-say-no-4m86</guid>
      <description>&lt;p&gt;gex.live has two halves. The terminal measures where SPX options dealers are positioned, every second, from the tape. The &lt;strong&gt;Lab&lt;/strong&gt; is the half that asks the uncomfortable question: does any of that predict anything?&lt;/p&gt;

&lt;h2&gt;
  
  
  What it is
&lt;/h2&gt;

&lt;p&gt;A browser-side conveyor with three stages and a credit meter.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Compile.&lt;/strong&gt; You describe a rule in plain text — "short the first touch of the put wall when net gamma is below the 20th percentile" — and the compiler turns it into a deterministic rule over the archive's fields: flip, walls, hold band, gamma percentile, DEX/VEX/vanna/charm per strike, time of day. Compiling is free. If the text is ambiguous the compiler says which part, instead of guessing.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Backtest.&lt;/strong&gt; The rule runs against the full session archive — 1,000+ finished SPX days, every one of them public at gex.live/sessions — with a fixed out-of-sample split. One credit per job; a job that fails refunds itself.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Quant optimize.&lt;/strong&gt; Optional. A LightGBM pass over the same feature store to see whether there is structure the hand-written rule missed, reported as out-of-sample AUC plus feature importance, not as a new "signal".&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The heavy part (DuckDB + LightGBM) runs in a scale-to-zero container that reads snapshots over HTTPS from the public archive. It depends on no machine and on no private data, which is the point: you are testing against the same files anyone can download.&lt;/p&gt;

&lt;h2&gt;
  
  
  The honest-stats rule
&lt;/h2&gt;

&lt;p&gt;Every verdict comes with its baseline. "Your rule made 3% in-sample" means nothing next to "the unconditional drift over the same days was 2.8%". The report shows both, shows the out-of-sample half separately, and refuses to produce a headline number from the in-sample half. Most rules do not survive this. That includes our own: the site's own directional levels were tested three separate ways across the whole archive and none held out of sample — which is why the terminal sells measurement and not signals, and why the Lab exists at all.&lt;/p&gt;

&lt;h2&gt;
  
  
  The free Idea Feed
&lt;/h2&gt;

&lt;p&gt;Next to the conveyor sits a rail of rule-shaped ideas, collected daily and published untested. One click compiles one into your session; the test is yours to run and pay a credit for. The feed produces mostly "no". That is what a feed of testable ideas should do.&lt;/p&gt;

&lt;h2&gt;
  
  
  Who it is for
&lt;/h2&gt;

&lt;p&gt;Someone who has a hunch about dealer positioning — "the hold band pins price into the close", "the flip acts as a magnet after 2pm" — and would rather spend a credit to find out than a month trading it. And, through the MCP server, anyone who would rather ask their AI assistant to run the test than click through a UI.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://gex.live/lab" rel="noopener noreferrer"&gt;https://gex.live/lab&lt;/a&gt; · archive: &lt;a href="https://gex.live/sessions" rel="noopener noreferrer"&gt;https://gex.live/sessions&lt;/a&gt;&lt;/p&gt;

</description>
      <category>trading</category>
      <category>datascience</category>
      <category>machinelearning</category>
      <category>showdev</category>
    </item>
    <item>
      <title>We listed gex.live on ~15 directories in a week. Here is what that did and did not do</title>
      <dc:creator>GEX.live</dc:creator>
      <pubDate>Thu, 20 Aug 2026 18:21:15 +0000</pubDate>
      <link>https://dev.to/gexlive/we-listed-gexlive-on-15-directories-in-a-week-here-is-what-that-did-and-did-not-do-1l8h</link>
      <guid>https://dev.to/gexlive/we-listed-gexlive-on-15-directories-in-a-week-here-is-what-that-did-and-did-not-do-1l8h</guid>
      <description>&lt;p&gt;Build-in-public note, no fireworks.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why bother
&lt;/h2&gt;

&lt;p&gt;Search Console in mid-August was blunt: 6 of 1,098 pages indexed, the rest stuck at "Discovered – currently not indexed", and the Links report empty. Zero external backlinks. The site has a thousand free session pages that nobody can find because nothing points at them. Directories are the cheapest way to get the first handful of pointers, and they are also the corpora that AI assistants read when someone asks "what tools show SPX gamma exposure". So the goal was never traffic. It was (a) backlinks and (b) third-party mentions.&lt;/p&gt;

&lt;h2&gt;
  
  
  What went in
&lt;/h2&gt;

&lt;p&gt;The same card everywhere: &lt;em&gt;SPX dealer positioning rebuilt from the 0DTE tape; zero-gamma flip, call/put walls, hold band; every finished session free; a backtest Lab; an MCP server; no buy/sell signals.&lt;/em&gt; Logo from the favicon, three screenshots (terminal, the measured book, the Lab), category Finance / Investing wherever the menu allowed it.&lt;/p&gt;

&lt;p&gt;Done and live: Capterra, AlternativeTo, the official MCP registry (and glama.ai, which pulls from it), TradersList, Firsto, TinyLaunch, Startup Fame, Indie Hackers. Submitted and waiting on a human: StartupStash. Product Hunt is scheduled, one shot only.&lt;/p&gt;

&lt;h2&gt;
  
  
  What we skipped, and why — this is the useful part
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Anything that wants a badge on our homepage&lt;/strong&gt; for the free tier (Huzzler, Startup Fame's final step). The card is filled and sits unpublished. A measurement terminal with "featured on" stickers on it is a different product.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;AI-tool directories&lt;/strong&gt; (Futurepedia, There's An AI For That). $300–$500 for a listing in front of an audience that wants image generators. The MCP server technically qualifies; the economics do not.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Hashnode.&lt;/strong&gt; Published a 1,300-word engineering write-up; AutoMod archived it within the hour as "this type of content" on a free subdomain, with an upsell to Pro. The Markdown is saved; it will go out on dev.to instead.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Reddit.&lt;/strong&gt; Not a channel for this product. Decided, not deferred.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Paid "we submit you to 140 directories" packages.&lt;/strong&gt; Every one of those directories is on the list above or is a badge farm.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  What it actually produced
&lt;/h2&gt;

&lt;p&gt;Honest answer: a dozen dofollow links and a dozen places where the phrase "measured, not assumed" now exists outside our own domain. Indexing has not moved yet — it will not for weeks, if it moves at all. The one thing that changed immediately is that asking an AI assistant about SPX dealer-gamma tools now sometimes returns gex.live, because the MCP registry listing is exactly the kind of page those models read.&lt;/p&gt;

&lt;h2&gt;
  
  
  The rule we kept
&lt;/h2&gt;

&lt;p&gt;Never write "accurate" about the signing. Internal measurement against Cboe trade-level truth puts simple tape-based signing near a coin flip on 0DTE, and a directory whose stated filter is "no dishonest offerings" will check. Every listing says &lt;em&gt;measured rather than assumed&lt;/em&gt;, which is true, and links to the free archive so anyone can verify it.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://gex.live" rel="noopener noreferrer"&gt;https://gex.live&lt;/a&gt; — the archive is at /sessions, no account needed.&lt;/p&gt;

</description>
      <category>buildinpublic</category>
      <category>seo</category>
      <category>startup</category>
      <category>marketing</category>
    </item>
    <item>
      <title>Backtest SPX dealer-gamma rules from your AI assistant</title>
      <dc:creator>GEX.live</dc:creator>
      <pubDate>Thu, 20 Aug 2026 18:21:11 +0000</pubDate>
      <link>https://dev.to/gexlive/backtest-spx-dealer-gamma-rules-from-your-ai-assistant-2ffn</link>
      <guid>https://dev.to/gexlive/backtest-spx-dealer-gamma-rules-from-your-ai-assistant-2ffn</guid>
      <description>&lt;p&gt;gex.live has an MCP server. Add it to Claude, Cursor, ChatGPT or any MCP client and the assistant can read the dealer-positioning archive and drive the backtesting Lab on your behalf. The one-line version is the title. Here is the rest.&lt;/p&gt;

&lt;h2&gt;
  
  
  Two tiers, one rule: free data stays free
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Free, no key&lt;/strong&gt; — the same finished-session data that is free on the website:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;list_sessions&lt;/code&gt; — finished SPX sessions in the archive, newest first, paged (max 50 a call).&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;get_session(day)&lt;/code&gt; — one session's dealer-positioning summary: OHLC, the zero-gamma flip and how often price crossed it, call/put walls, the hold band, net-gamma percentile, ATM IV at the open. Measurements only.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;get_levels(day)&lt;/code&gt; — just the level set for one session — flip, call resistance, put support, hold band — plus where the session closed relative to them.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Keyed&lt;/strong&gt; — the Lab, metered in credits exactly as on the site. These tools only appear in the tool list once the client sends a Lab token:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;lab_compile(message)&lt;/code&gt; — turn a plain-words idea ("fade a +3 sigma stretch above vwap on top-decile volume") into a testable rule. Free of credits, needs a positive balance. Returns the compiled spec, a clarifying question, or compile errors — never a guess.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;lab_run(id, kind)&lt;/code&gt; — one conveyor step: &lt;code&gt;backtest&lt;/code&gt; first (rule → tested), then &lt;code&gt;quant&lt;/code&gt; (the LightGBM optimize, tested → ready). One credit, refunded on failure. The result is the engine's honest verdict: per-leg era tables — all / this year / holdout.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;lab_state&lt;/code&gt; — your whole Lab in one call: ideas with stages and results, which idea holds the conveyor, your credit balance.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;lab_thread(id)&lt;/code&gt; — the compile-chat thread for one idea.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;lab_idea(id, action)&lt;/code&gt; — desk actions: put a ready idea on the desk, drop it back to the start, delete, or set its desk display/alert options.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;When a keyed tool is called without a token, the error is the instruction: what it does, where to get a key (gex.live/account → LAB &amp;amp; API, shown once, scoped to the Lab only, revocable), what it costs. The assistant relays it verbatim. The funnel is one sentence.&lt;/p&gt;

&lt;h2&gt;
  
  
  Works in claude.ai out of the box
&lt;/h2&gt;

&lt;p&gt;Header-based auth is fine for Cursor and the CLI (&lt;code&gt;claude mcp add --transport http gex https://mcp.gex.live/mcp --header "Authorization: Bearer labk_…"&lt;/code&gt;). claude.ai web and desktop cannot send headers, so there is an OAuth facade on the product host: discovery documents, dynamic client registration, a consent page behind the normal login, PKCE required, codes encrypted and short-lived. Connect once, the Lab tier is there.&lt;/p&gt;

&lt;h2&gt;
  
  
  What it is for
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;"Show me the last ten sessions where the flip was above spot at the open and tell me what the close did." → &lt;code&gt;list_sessions&lt;/code&gt;, &lt;code&gt;get_session&lt;/code&gt; × 10, an honest summary.&lt;/li&gt;
&lt;li&gt;"Test: fade the first touch of the call wall after a gap up." → &lt;code&gt;lab_compile&lt;/code&gt;, then &lt;code&gt;lab_run(backtest)&lt;/code&gt;, a verdict with era tables and a holdout column — probably a polite no.&lt;/li&gt;
&lt;li&gt;"Where is my Lab at?" → &lt;code&gt;lab_state&lt;/code&gt;: stages, results, balance.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  What it is not
&lt;/h2&gt;

&lt;p&gt;A signal service, and not a live feed: today's positioning is the paid stream on the site, not an MCP tool. The server exposes finished measurements and a way to test rules against them. If a rule survives the holdout the Lab will say so; so far, very few do, including the site's own levels. The MCP server is listed in the official registry (&lt;code&gt;registry.modelcontextprotocol.io&lt;/code&gt;, &lt;code&gt;live.gex/gex-mcp&lt;/code&gt;) and on glama.ai.&lt;/p&gt;

&lt;p&gt;Install: &lt;a href="https://gex.live/mcp" rel="noopener noreferrer"&gt;https://gex.live/mcp&lt;/a&gt; · free archive: &lt;a href="https://gex.live/sessions" rel="noopener noreferrer"&gt;https://gex.live/sessions&lt;/a&gt;&lt;/p&gt;

</description>
      <category>mcp</category>
      <category>ai</category>
      <category>trading</category>
      <category>showdev</category>
    </item>
    <item>
      <title>Three books that disagree: rebuilding an options dealer's position from the tape</title>
      <dc:creator>GEX.live</dc:creator>
      <pubDate>Thu, 20 Aug 2026 16:31:07 +0000</pubDate>
      <link>https://dev.to/gexlive/three-books-that-disagree-rebuilding-an-options-dealers-position-from-the-tape-1og4</link>
      <guid>https://dev.to/gexlive/three-books-that-disagree-rebuilding-an-options-dealers-position-from-the-tape-1og4</guid>
      <description>&lt;p&gt;Almost every gamma-exposure chart you have seen is built the same way: take yesterday's end-of-day open interest, assume dealers are short calls and long puts, multiply, plot. It renders instantly and it is wrong in a specific, knowable way — the sign is an assumption, not a measurement, and the data is a day stale before the opening bell.&lt;/p&gt;

&lt;p&gt;I spent a while building the other version: sign every option print as it happens and rebuild the dealer's book from the tape. This is a writeup of how that works, what broke along the way, and the uncomfortable result at the end.&lt;/p&gt;

&lt;h2&gt;
  
  
  The convention is doing the heavy lifting
&lt;/h2&gt;

&lt;p&gt;When a chart says "dealer gamma", it means someone decided which side of every open contract the dealer is on. The standard convention says customers buy calls and buy puts, so dealers are short both, except the sign is flipped for puts to make the arithmetic come out. Reasonable as a prior. Completely untested per strike, per day.&lt;/p&gt;

&lt;p&gt;The conventional book is still worth drawing — a lot of people trade off it, so it moves markets whether or not it is right. But it should not be the only book on screen.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fp4qz0u2bz5n29jefa88c.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fp4qz0u2bz5n29jefa88c.jpg" alt="The OI book: open interest under the conventional dealer-short-calls sign" width="799" height="426"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Signing prints instead of assuming
&lt;/h2&gt;

&lt;p&gt;The measured book starts from the 0DTE tape and asks, for every print: did this trade at the bid or the ask? Buyer-initiated at the ask, seller-initiated at the bid, dealer takes the other side.&lt;/p&gt;

&lt;p&gt;That is the Lee-Ready quote rule, and it has a known failure mode: prints that land exactly at the midpoint are unclassifiable. The textbook fix is a tick rule fallback. The fix that actually mattered here was different.&lt;/p&gt;

&lt;p&gt;SPXW quotes sit on a 0.05/0.10 grid. On an odd-tick spread, a print at the exact arithmetic mid is mechanically impossible — the price simply cannot land there. A strict at-mid test therefore under-produces at-mid volume compared to the published benchmarks, not because the market behaves differently but because of the tick grid. So the exact-mid test becomes a band:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;MID_BAND_F&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mf"&gt;0.20&lt;/span&gt;   &lt;span class="c1"&gt;# unclassified if |px - mid| &amp;lt; f * half_spread
&lt;/span&gt;&lt;span class="n"&gt;TICK_EPS&lt;/span&gt;   &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mf"&gt;0.01&lt;/span&gt;

&lt;span class="n"&gt;mid&lt;/span&gt;  &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mf"&gt;0.5&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;ask&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="n"&gt;bid&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;half&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mf"&gt;0.5&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;ask&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="n"&gt;bid&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;dev&lt;/span&gt;  &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;abs&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;price&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="n"&gt;mid&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="n"&gt;in_band&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;dev&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt; &lt;span class="n"&gt;MID_BAND_F&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="n"&gt;half&lt;/span&gt;          &lt;span class="c1"&gt;# too close to call
&lt;/span&gt;&lt;span class="n"&gt;at_ask&lt;/span&gt;  &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="o"&gt;~&lt;/span&gt;&lt;span class="n"&gt;in_band&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;price&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;=&lt;/span&gt; &lt;span class="n"&gt;ask&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="n"&gt;TICK_EPS&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;at_bid&lt;/span&gt;  &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="o"&gt;~&lt;/span&gt;&lt;span class="n"&gt;in_band&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;price&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;=&lt;/span&gt; &lt;span class="n"&gt;bid&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="n"&gt;TICK_EPS&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;A fifth of the half-spread. Prints inside the band are marked unclassifiable rather than guessed at, which matters more than it sounds — a wrong sign is worse than a missing one, because it moves the number in the opposite direction.&lt;/p&gt;

&lt;h2&gt;
  
  
  The part that quietly ruins everything: multi-leg orders
&lt;/h2&gt;

&lt;p&gt;Sign prints one at a time and you will get spreads catastrophically wrong.&lt;/p&gt;

&lt;p&gt;A trader sells a call spread. Two legs hit the tape. One leg prints at the ask, the other at the bid. Signed independently, you record a customer buy and a customer sell, and the dealer's net position barely moves. In reality the customer put on a single directional structure and the dealer took the whole thing.&lt;/p&gt;

&lt;p&gt;So prints get grouped into packages before anything is signed. A condition is treated as multi-leg when at least 80% of its prints share an exchange sequence number:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;ML_SHARE_THRESH&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mf"&gt;0.80&lt;/span&gt;      &lt;span class="c1"&gt;# multi-leg if &amp;gt;=80% of a condition's prints
&lt;/span&gt;                            &lt;span class="c1"&gt;# share an exchange sequence with another leg
&lt;/span&gt;&lt;span class="n"&gt;PKG_KEEP_STATUS&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;ok&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,)&lt;/span&gt;   &lt;span class="c1"&gt;# only packages that reconcile cleanly are kept
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The package is signed as one order, and its customer quantity is only kept when the package reconciles. Packages that do not reconcile are dropped rather than half-counted. Again: a hole beats a lie.&lt;/p&gt;

&lt;h2&gt;
  
  
  Three books, side by side
&lt;/h2&gt;

&lt;p&gt;The result is three different views of the same expiry, and the honest way to present them is next to each other instead of picking a winner.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;VOLUME&lt;/strong&gt; is cumulative session volume by strike under the conventional sign. It shows where today's activity concentrated.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;OI&lt;/strong&gt; is open interest under the usual dealer-short-calls convention — the chart everyone else draws.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;MEASURED&lt;/strong&gt; is net dealer position signed print by print from the tape as described above.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F3ty506jo9ajb75ny9l9b.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F3ty506jo9ajb75ny9l9b.jpg" alt="The measured book: net dealer position signed print by print from the 0DTE tape" width="799" height="426"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;When the three agree, the level is probably real. When they diverge, that divergence is itself the information, and hiding it behind a single blended number would be the least useful thing to do with it.&lt;/p&gt;

&lt;h2&gt;
  
  
  What gets drawn on top
&lt;/h2&gt;

&lt;p&gt;Once there is a book, the derived levels follow: the zero-gamma flip where net dealer gamma crosses zero, the call wall and put wall at the largest concentrations, a dealer hold band, and the session's net-gamma percentile against every prior session. Then delta and vega exposure profiles, and vanna, charm and 25-delta skew overlays.&lt;/p&gt;

&lt;p&gt;All of it recomputes every second while the market is open.&lt;/p&gt;

&lt;h2&gt;
  
  
  The uncomfortable part
&lt;/h2&gt;

&lt;p&gt;Here is where the writeup stops being a victory lap.&lt;/p&gt;

&lt;p&gt;I built a backtesting harness over the full archive and tested whether these levels predict direction — three separate formulations, all of them out of sample. None survived. Not one directional edge cleared an honest bar.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fdqi3w0ly5l14ci94786z.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fdqi3w0ly5l14ci94786z.jpg" alt="The Lab: compile an idea, run it across the whole archive, get an out-of-sample verdict" width="799" height="426"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;That result shipped. The product has no buy or sell signals, no price targets, no arrows, and the site says why: there is nothing honest to put in them. The levels describe where hedging pressure plausibly sits. They do not tell you what happens next, and a tool that always says yes would just be selling you your own confirmation bias.&lt;/p&gt;

&lt;p&gt;This is, commercially, a stupid thing to publish. It is also the only version I would use myself.&lt;/p&gt;

&lt;h2&gt;
  
  
  Engineering notes
&lt;/h2&gt;

&lt;p&gt;A few decisions that turned out to matter more than expected:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The terminal is the homepage.&lt;/strong&gt; No marketing splash, no "see how it works" funnel. You land on &lt;code&gt;/&lt;/code&gt; and the product is already running. There is a second door at &lt;code&gt;/about&lt;/code&gt; for people who want to read first, but the root is the tool.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The server has zero dependencies.&lt;/strong&gt; One Node file, no framework, the same file locally and in the container. A finished session snapshot is about 5.7 MB of JSON, almost all of it 23,400-long arrays, which gzips roughly 7.7x. So publish writes a pre-compressed twin next to the plain file and the server hands it over whenever the client accepts gzip. Nothing is compressed per request — that cost is paid once, at publish time.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The archive is public on purpose.&lt;/strong&gt; Every finished session since April 2022 replays in full, with no account and no card. That is 1,083 sessions as of writing. Only the current day is behind the paywall. It sounds like giving away the product; it is actually the only honest way to sell a measurement tool — every level the terminal draws can be checked against a thousand days of history before anyone pays anything.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;There is an MCP server&lt;/strong&gt;, so the same sessions and levels can be queried from an AI assistant conversationally instead of through the UI.&lt;/p&gt;

&lt;h2&gt;
  
  
  Try it, or don't
&lt;/h2&gt;

&lt;p&gt;The archive is at &lt;a href="https://gex.live" rel="noopener noreferrer"&gt;gex.live&lt;/a&gt; — open it, pick any past session, and watch the three books argue with each other. No signup wall. If the measured book and the conventional book agree on a day you remember, that is mildly interesting. If they don't, that is the whole reason the thing exists.&lt;/p&gt;

&lt;p&gt;And if you build market-data tooling: the two things I would do differently from the start are grouping packages before signing anything, and being willing to mark data unclassifiable. Both cost you coverage. Both are worth it.&lt;/p&gt;

</description>
      <category>python</category>
      <category>datascience</category>
      <category>showdev</category>
      <category>finance</category>
    </item>
  </channel>
</rss>
