Compare commits

...

3 Commits

28 changed files with 929 additions and 10 deletions

View File

@@ -6,15 +6,15 @@ This README catalogs the tools and resources in this directory. It is intended f
| Tool / Folder | Purpose | Key Files | When to Use | | Tool / Folder | Purpose | Key Files | When to Use |
| --- | --- | --- | --- | | --- | --- | --- | --- |
| `tool-catalog-maintainer/` | Creates and maintains catalog READMEs for directories of tools/resources. | `SKILL.md`, `CONTEXT.md`, `references/catalog-format.md` | Use when asked to catalog, index, or update documentation for a folder of tools. | | `workflows/tool-catalog-maintainer/` | Creates and maintains catalog READMEs for directories of tools/resources. | `SKILL.md`, `CONTEXT.md`, `references/catalog-format.md` | Use when asked to catalog, index, or update documentation for a folder of tools. |
| `research-dfns/` | DFNS research folder — alerts logs, chat log, and TODO tracking. | `TODO.md`, `AlertsLog_*.txt`, `ChatLog_*.txt` | Use when reviewing or continuing DFNS research. | | `workflows/research-dfns/` | DFNS research folder — alerts logs, chat log, and TODO tracking. | `TODO.md`, `AlertsLog_*.txt`, `ChatLog_*.txt` | Use when reviewing or continuing DFNS research. |
| `260731-1330-credit-spread.md` | SPY Bull Put Credit Spread trade plan (0DTE, July 31). | `260731-1330-credit-spread.md` | Use for today's SPY options trade — bullish slow grind thesis. | | `sources/260731-1330-credit-spread.md` | SPY Bull Put Credit Spread trade plan (0DTE, July 31). | `260731-1330-credit-spread.md` | Use for today's SPY options trade — bullish slow grind thesis. |
| `iron-condor-45dte.md` | SPX Iron Condor trade plan — 45DTE entry, 21DTE time exit, Schwab broker. | `iron-condor-45dte.md` | Use when setting up or managing SPX iron condor spreads. | | `sources/iron-condor-45dte.md` | SPX Iron Condor trade plan — 45DTE entry, 21DTE time exit, Schwab broker. | `iron-condor-45dte.md` | Use when setting up or managing SPX iron condor spreads. |
| `cha-martin-watchlist.ms.csv` | Cha Martin watchlist export (CSV). | `cha-martin-watchlist.ms.csv` | Use for ticker watchlist reference or scan filtering. | | `sources/cha-martin-watchlist.ms.csv` | Cha Martin watchlist export (CSV). | `cha-martin-watchlist.ms.csv` | Use for ticker watchlist reference or scan filtering. |
## Tools ## Tools
### `tool-catalog-maintainer/` ### `workflows/tool-catalog-maintainer/`
**Purpose:** **Purpose:**
Creates and maintains a `README.md` catalog for a directory containing subfolders of tools, prompts, scripts, docs, workflows, skills, or other reusable resources. The README is a living catalog that improves over time. Creates and maintains a `README.md` catalog for a directory containing subfolders of tools, prompts, scripts, docs, workflows, skills, or other reusable resources. The README is a living catalog that improves over time.
@@ -34,7 +34,7 @@ None noted. Works with file read/write tools.
**Notes:** **Notes:**
Always use this tool when asked to catalog a directory — inspect subfolders, read their key files, and write the README using `references/catalog-format.md`. Always use this tool when asked to catalog a directory — inspect subfolders, read their key files, and write the README using `references/catalog-format.md`.
### `research-dfns/` ### `workflows/research-dfns/`
**Purpose:** **Purpose:**
Research folder for DFNS (Digital Frontier Acquisition Corp.) — contains alert logs, chat transcripts, and tracking notes from July 27, 2026. Research folder for DFNS (Digital Frontier Acquisition Corp.) — contains alert logs, chat transcripts, and tracking notes from July 27, 2026.
@@ -50,7 +50,7 @@ Reviewing or continuing DFNS research. Note: per ticker tracking rule, DFNS shou
**Setup / dependencies:** **Setup / dependencies:**
None noted. None noted.
### `260731-1330-credit-spread.md` ### `sources/260731-1330-credit-spread.md`
**Purpose:** **Purpose:**
Active trade plan for a SPY Bull Put Credit Spread (0DTE, July 31, 2026). Sell $740 put / Buy $738 put spread, targeting 20%+ profit with bullish slow grind thesis. Active trade plan for a SPY Bull Put Credit Spread (0DTE, July 31, 2026). Sell $740 put / Buy $738 put spread, targeting 20%+ profit with bullish slow grind thesis.
@@ -61,7 +61,7 @@ Executing or monitoring today's SPY options trade.
**Setup / dependencies:** **Setup / dependencies:**
None noted. Trade-specific, not reusable. None noted. Trade-specific, not reusable.
### `iron-condor-45dte.md` ### `sources/iron-condor-45dte.md`
**Purpose:** **Purpose:**
Trade plan for SPX Iron Condor through Schwab broker. 45DTE entry, 30-point wings, forced close at 21DTE. Includes profit target (25% of net credit), stop loss (50% of max loss), and monitoring cadence. Trade plan for SPX Iron Condor through Schwab broker. 45DTE entry, 30-point wings, forced close at 21DTE. Includes profit target (25% of net credit), stop loss (50% of max loss), and monitoring cadence.
@@ -72,7 +72,7 @@ Setting up or managing SPX iron condor spreads with Schwab.
**Setup / dependencies:** **Setup / dependencies:**
Schwab broker session required. Schwab broker session required.
### `cha-martin-watchlist.ms.csv` ### `sources/cha-martin-watchlist.ms.csv`
**Purpose:** **Purpose:**
CSV export of a Cha Martin watchlist — likely contains tickers for scanning or monitoring. CSV export of a Cha Martin watchlist — likely contains tickers for scanning or monitoring.

View File

@@ -0,0 +1,237 @@
# HANDOFF — scan-watchlist-for-equities: mechanical data-fetch script
Written: Tue 2026-08-18 9:37 PM ET. Purpose: a fresh session can resume this
build without re-deriving anything. All API facts below were LIVE-VERIFIED
this session (not from memory).
## 1. What the member asked for
Gump: "I want to create scripts to do some of the work you're doing now and
stitch these into the workflow to avoid the inference work these stages
undertake on each run."
Follow-up approval: "yes build it and include Benzinga news pull" — then,
after the flaky Benzinga endpoint (HTTP 500) and dropped tool payloads:
"can you continue without benzinga angle?"
=> DECISION: **v1 script = price/volume/bars/S-R only (no Benzinga).**
News stays an optional agent MCP call at stage 01, exactly as before.
Benzinga re-add can be v2 once the endpoint proves stable.
## 2. Goal / design
One stdlib-only Python 3.11 script:
`workflows/scan-watchlist-for-equities/shared/scripts/fetch_scan_data.py`
CLI: python3 fetch_scan_data.py <watchlist.csv> [--out DIR]
[--regime SPY,QQQ] [--bars-days 80] [--news-since YYYY-MM-DD]
(news args drop in v2; ignore for v1)
It fetches, per watchlist ticker, DIRECTLY from TTG real-time data API
(via streamable-HTTP MCP JSON-RPC — see section 5):
- stocks_snapshot_ticker
- stocks_aggs_custom_bars daily (from = today-100d, to = today,
multiplier=1, timespan=day, limit=90)
- stocks_aggs_custom_bars 3-min (from/to = last trading day,
multiplier=3, timespan=minute, limit=400)
- calculate_support_resistance {ticker, timeframe: "daily"}
- calculate_support_resistance {ticker, timeframe: "3min"}
Plus SPY/QQQ regime snapshots.
It computes (mechanical, zero interpretation):
- session split of 3-min bars: PM (<09:30 ET), RS (09:30-16:00),
AH (>16:00 ET) — per session: o/h/l/c/v and vwap=sum(c*v)/sum(v)
- intraday high/low timestamps; volume by RS hour; first-15-min and
last-30-min RS moves
- MA20 / MA50 from daily closes + distance % (n/a if <20 bars: IPOs)
- period high/low from fetched daily bars
- vol vs prev-day volume (snapshot day.v / prevDay.v)
It writes into `stages/01_broad_filter/output/`:
- data_brief.md — formatted tables, the mechanical half of shortlist.md
- raw_data.json — every raw payload, audit trail
stdout: compact fetch summary + output paths. Exit 0/1.
Per-call: 1 retry, 2s backoff. Timestamps in bars are MILLISECONDS UTC —
convert to America/New_York (zoneinfo; fall back to local tz on error).
"Last trading day" for the 3-min fetch = max bar date from the daily bars
(handles weekend/pre-market runs).
Credentials: read at RUNTIME from env var MARI_MCP_CONFIG (machine-local
JSON; see section 4). NEVER hardcode keys or write them into the workflow
folder — the Cell syncs to Fleet.
## 3. Environment facts (verified this session)
- cwd = C:\Users\Eric\AppData\Roaming\MARI Desktop\localCell\accounts\
acct-c6fef984c60eb59b9c1c4202ababa059\workspace (git-bash paths use /c/...)
- Python 3.11.15 (pyenv) reachable from MARI bash; stdlib urllib HTTPS works
(proven by live calls below). Node is UNREACHABLE from MARI bash — use Python.
- MCP config: env var MARI_MCP_CONFIG ->
C:\Users\Eric\AppData\Roaming\MARI Desktop\mcp\acct-c6fef984...json
Shape: {"servers": {"ttg-stocks": {"transport":"streamablehttp",
"url":"https://rt.data.ttg.ai/stocks/mcp",
"auth":{"type":"header","headers":{"Authorization":"Bearer ***",
"X-User-ID":"27930"}}}, "ttg-benzinga": {...benzinga/mcp...}, ...}}
(Do not print the real bearer key in chat/output.)
- Workflow root: .mari/scratchpad/workflows/scan-watchlist-for-equities/
(Layer-3 scripts belong in shared/scripts/ per ICM Table 2; ICM.md is at
workflows/ICM.md — re-read on exec per member's predicate.)
- Watchlist CSVs live in shared/ (e.g. 260818.csv = "XOS, AMLX" one per line).
Script should resolve the CSV relative to shared/ (script_dir.parent).
## 4. MCP-over-HTTP protocol (proven working from Python)
Stateless on these servers: no Mcp-Session-Id returned. Sequence:
1) POST url {"jsonrpc":"2.0","id":1,"method":"initialize","params":
{"protocolVersion":"2025-03-26","capabilities":{},
"clientInfo":{"name":"fetch_scan_data","version":"1.0"}}}
2) POST {"jsonrpc":"2.0","method":"notifications/initialized"} (best-effort)
3) POST {"jsonrpc":"2.0","id":N,"method":"tools/call","params":
{"name":<tool>,"arguments":{...}}}
Headers for every POST: Content-Type: application/json,
Accept: application/json, text/event-stream, plus the server's auth headers.
Responses came back plain application/json (not SSE) in testing, but the
parser MUST handle both: if CT starts with text/event-stream, scan lines
starting "data:" and JSON-parse until one has the matching id.
Result text = d["result"]["content"][0]["text"] -> json.loads (it's a
JSON string). On JSON-RPC error object, raise with the message.
Minimal proven client (this exact code worked):
cfg = json.load(open(os.environ['MARI_MCP_CONFIG']))
srv = cfg['servers']['ttg-stocks']
headers = {'Content-Type':'application/json',
'Accept':'application/json, text/event-stream'}
headers.update(srv['auth']['headers'])
req = urllib.request.Request(srv['url'], data=json.dumps(payload).encode(),
headers=headers, method='POST')
body = urllib.request.urlopen(req, timeout=60).read().decode()
## 5. Verified response shapes (live, 8/18 evening)
stocks_snapshot_ticker {ticker:"SPY"} ->
{"ticker":{"ticker":"SPY","todaysChangePerc":-0.675,"todaysChange":-5.22,
"updated":1787097600000000000,"day":{"dv":43920901.2,"o":768.7,"h":769.5,
"l":766.92,"c":767.45,"v":...,"vw":768.52,...}, ...}}
(also has prevDay with c/v — code defensively with .get; the exact AH
sub-fields were not captured: rely on 3-min AH bars for after-hours shape,
not the snapshot.)
stocks_aggs_custom_bars {ticker,from,to,multiplier,timespan,limit} ->
{"ticker":...,"results":[{"v":22219.6,"vw":768.25,"o":769.21,"c":768.37,
"h":769.73,"l":767.8,"t":1787040000000,"n":446}],"next_url":...}
NOTE: 'multiplier' IS REQUIRED (missing it = "Missing required params").
Daily: multiplier=1 timespan=day. Intraday: multiplier=3 timespan=minute.
t = MILLISECONDS UTC.
calculate_support_resistance {ticker, timeframe:"daily"|"3min"} ->
{"timeframe":"daily","current_price":4.44,
"support_levels":{"minor":[{"price":1.92,"touches":1,
"description":"Swing low 3 weeks ago, 1 touch"}],
"major":[{"price":3.04,"touches":3,"description":"..."}, ...],
"key_references":{"pdl":4.01,"pdc":4.44,"period_low":1.65}},
"resistance_levels":{"minor":[...],"major":[...],
"key_references":{"pdh":4.95,"period_high":...}}}
benzinga_news (V2 ONLY — endpoint flaky, 500'd once this session):
ttg-benzinga execute {endpoint:"benzinga_news",
params:{"stocks":"AMLX","published.gte":"2026-08-18"}} ->
{"status":"OK","results":[{"benzinga_id":...,"author":"benzinga newsdesk",
"published":"2026-08-18T20:02:46Z","title":"Amylyx Pharmaceuticals
Announces $350M Common Stock Offering","url":"...","channels":[...],...}]}
Use ONLY minimal params (stocks + published.gte) — extra params
(limit/sort) coincided with the 500; retry once on failure.
## 6. data_brief.md format (mirror the mechanical sections of tonight's
shortlist.md so stage agents can drop them straight in)
# Data Brief — scan-watchlist-for-equities
Generated: <ts ET> | Watchlist: <file> | Tickers: ... | Regime: SPY, QQQ
(Mechanical fetch + compute only — interpretation is stage work.)
## 1. Market regime (SPY/QQQ)
| Ticker | Close | Chg % | O | H | L | VWAP | Vol | Vol vs prev | Closed vs VWAP |
## 2. Watchlist snapshot
| Ticker | Close | Chg % | O | H | L | VWAP(all-day) | VWAP(RS) |
| Vol | Vol vs prev | | | | | | |
## 3. Intraday shape — <ticker> (3-min bars, <date>)
Sessions PM/RS/AH: o/h/l/c/v/vwap each; high & low timestamps;
volume by RS hour; first-15-min and last-30-min moves.
## 4. Daily structure — <ticker>
Close | MA20 (dist%) | MA50 (dist%) | period high/low
## 5. Support/Resistance — <ticker>
daily + 3-min: major/minor levels w/ touches, key references
(pdh/pdl/pdc/period high-low).
## 6. (v2) Catalyst feed — Benzinga per ticker, ET-sorted, with
offering/dilution auto-flag (regex on title: offering|ATM|S-3|
underwrit|registered direct|share sale|financing|capital raise).
Format rules: prices 2dp (3dp if <2.0); volumes in M (1dp); facts only —
"closed below VWAP" is allowed (arithmetic), "risk-off" is NOT (judgment).
## 7. Stitching into CONTEXT.md (pending edits, after script works)
- stages/01_broad_filter/CONTEXT.md: replace the manual fetch steps with
"run `python3 shared/scripts/fetch_scan_data.py <watchlist csv from
user_preferences.md>`; read output/data_brief.md; do NOT re-pull data the
brief contains (fallback to MCP calls only if the script fails)".
Agent keeps: regime interpretation, triage, shortlist.md.
(Benzinga: keep the existing agent news step for v1, unchanged.)
- stages/02_confluence_analysis/CONTEXT.md: add input
../01_broad_filter/output/data_brief.md — factors read from brief.
- stages/03_trade_plan/CONTEXT.md: add same input — levels from brief.
- Root CONTEXT.md "Shared Resources": update shared/ line to mention
scripts/fetch_scan_data.py. CLAUDE.md: one-line note under shared/.
- Stages 00 and 04: UNTOUCHED (pure conversation/synthesis).
## 8. Verification targets (tonight 8/18 run — script output must match)
SPY 767.45 -0.68% VWAP 768.52 vol 43.9M | QQQ 717.51 -1.88% VWAP 719.73 vol 49.0M
XOS 4.44 +96.65% O4.53 H4.95 L4.01 VWAP 4.4281(vol 110.1M) AH last ~4.11
3-min SR: resistance cluster 4.25/4.30/4.32 | daily SR: 3.04/2.70/2.11,
res 8.27, pdl 4.01 pdc 4.44 period_low 1.65
AMLX 35.11 +63.42% O29.91 H35.39(ATH) L28.00 VWAP 31.4446 vol 24.0M AH ~35.02
3-min SR: support 35.02(48t)/34.90(28t), congestion 33.26/33.53
daily SR: 17.00/12.44 support, pdh 35.39
## 9. Pitfalls / failure modes learned this session
- file_write (and bash) DROP the payload when a single tool call carries a
very large content (~10KB+ observed failing). Symptom: "missing required
positional argument: 'content'". FIX: write in chunks of <= ~3KB
(file_write, or bash `cat > f <<'EOF'` then `cat >> f <<'EOF'`). Verified:
3 chunks landed cleanly.
- ttg-stocks execute: 'multiplier' param is REQUIRED (500-ish error w/o it).
- ttg-benzinga: HTTP 500 (HTML error page) occurred once; retry with
minimal params worked. Treat as flaky — never block the script on it.
- 3-min bar timestamps: MILLISECONDS (not nanoseconds/seconds).
- Node is unreachable from MARI bash (PATH isolation) — Python only.
- Weekend/pre-market: daily bars may lack today; 3-min fetch should target
the last trading day found in daily bars, and brief must say so.
- ICM standing rules (member's predicates): re-read ICM.md fresh every exec;
clear each stage's output/ before re-running the workflow; the workflow
folder is equities-only (options work was stripped 8/18 — do not re-add).
## 10. Resume checklist (fresh session)
1. Read this doc; read workflows/ICM.md (member predicate).
2. Build fetch_scan_data.py per section 2 spec, using the client from
section 4 and shapes from section 5. Write via chunked bash heredocs.
Keep it stdlib-only. v1 has NO Benzinga.
3. Run: python3 .../fetch_scan_data.py 260818.csv
4. Diff its data_brief.md numbers against section 8 targets (must match).
Inspect raw_data.json to confirm snapshot field extraction (esp.
prevDay.v) — adjust .get() chains if fields differ.
5. Make the CONTEXT.md stitch edits in section 7.
6. Report to Gump with: script path, brief preview, stage-edit list,
and the Benzinga-v2 note (why it was deferred: flaky 500).
7. Standing member rules: plan-first for consequential multi-step work;
visible progress updates; re-run = clear output/ first.
## 11. Current state
- Workflow folder: options work fully stripped (5 files edited 8/18,
verified clean). 8/18 evening run completed: all 5 stage outputs exist
in stages/*/output/ (shortlist, confluence, plans, summary card) with
AMLX primary / XOS conditional plans for Wed 8/19.
- fetch_scan_data.py: NOT YET WRITTEN (all large file_write attempts
dropped). Probes above are the only code verified this session.
- Nothing in the workflow folder is dirty beyond what 8/18 run wrote.

View File

@@ -0,0 +1,90 @@
# XPON Short Squeeze — Premarket Signal Reconstruction (2026-08-24)
## The Setup: What a Pre-Open Scanner Would Have Flagged
### 1. Extreme Float Restriction
- **Free float: 10,684,515 shares** (93.4% of share class)
- **Total shares outstanding: ~962,335** (weighted: 953,191)
- **Market cap: $3.27M** — deep micro-cap
- **22 employees**, listed 2022-04-01, NASDAQ (XNAS)
- **1-for-12 reverse split** (effective ~2026 Q2) to regain Nasdaq compliance
- A ~$3.30M market cap with 10.7M free float = tiny tradable universe. Any meaningful buy-side interest moves the tape fast.
### 2. 8/19 Volume Blowout — The "Accumulation Day"
| Metric | 8/19 (Thu) | Prior days (typical) |
|--------|-----------|---------------------|
| Close | $4.43 | $3.30–$3.74 |
| High | $4.90 | $3.30–$3.74 |
| Volume | **83,482 shares** | ~300–1,000 shares |
| $ Volume | $7.37M | <$5K |
- Volume was **~80–250x** the prior 10-day average (~300–700 shares/day).
- Price went from a 3-week range of $3.18–$3.89 to a **$4.90 intraday high** — a break above the established range.
- Close at $4.43 held well above the prior range — this is an **accumulation/reversal bar**, not a failed spike.
- The 8/20–8/22 follow-through: volume stayed elevated (3.8K, 1K, 680) vs. the prior 1K baseline, and price held above $3.60 — confirming the 8/19 move wasn't a one-day fluke.
### 3. Premarket 8/24: The Trigger
- **Pre-market high: $4.80** (09:24 ET, first 5-min bar: o:3.56 c:4.10 h:4.80 l:3.40, v:1,047,600)
- That's a **+8.5% gap** above the 8/23 close of $3.435.
- **Pre-market volume: ~1.94M shares in the first hour** (vs. 83K the prior full day) — **23x the prior day's total volume before the open**.
- The quote tape shows **bid/ask sizes at 100 shares** throughout pre-market — no institutional size was visible. This was **retail/momentum-driven**, not institutional.
- The 09:30 open printed at **$7.77** — a **126% gap** above prior close. The open was already 1.7x the premarket high.
### 4. The Squeeze Mechanics (First 2 Hours)
| Time (ET) | Price | Volume | Notes |
|-----------|-------|--------|-------|
| 09:25 | 3.40 → 4.80 | 1.0M | Pre-market trigger |
| 09:30 | 4.10 → 5.88 | 4.4M | Open + first 5 min |
| 09:35 | 5.90 → 6.45 | 3.3M | Acceleration |
| 09:40 | 6.17 → 6.18 | 1.7M | Consolidation |
| 09:45 | 6.18 → 7.58 | 3.8M | Second wave |
| 09:50 | 7.58 → 8.64 | 3.4M | **High: $9.03** |
| 09:55 | 8.67 → 8.18 | 2.0M | First fade |
| 10:00 | 8.20 → 8.70 | 1.6M | Retest |
| 10:05 | 8.70 → 9.84 | 2.4M | **High: $9.99** |
| 10:10 | 9.83 → 8.45 | 2.1M | Sharp reversal |
| 10:15 | 8.43 → 8.18 | 0.7M | Consolidation |
- **Intraday high: $9.99** (+191% from prior close) at ~10:05 AM ET
- **First 15 min volume: ~13M shares** — 150x the prior day's total
- The 10:05 high at $9.99 was a **psychological round number** — classic momentum exhaustion
- After 10:15, price faded to $6.31 by mid-morning (low of $6.31 at ~11:30)
- **Closed at $7.36** (+114% from prior close) — gave back ~26% of the gains
### 5. Why Mike Edwards Would Have Flagged This
A short-squeeze scanner (or discretionary premarket review) would have scored XPON high on:
1. **Float size**: $3.3M market cap, 10.7M free float — one of the most restricted floats in the market
2. **Volume spike**: 8/19 was 80–250x normal — the "something changed" signal
3. **Price range break**: 8/19 broke the 3-week $3.18–$3.89 range with a $4.90 high
4. **Follow-through**: 8/20–8/22 held above the prior range with elevated volume
5. **Premarket gap**: +8.5% gap to $4.80 before the open — confirming momentum
6. **Premarket volume**: 1.94M shares pre-market = 23x prior day — "the market is paying attention"
7. **Thin liquidity**: 100-share bid/ask sizes = no institutional selling wall, retail/momentum can drive price
8. **Reverse split**: Fresh off a 1-for-12 reverse split — stock was recently reset, new float, new retail interest
9. **Nasdaq compliance regained**: The reverse split was to fix compliance — "clean bill of health" for short-sellers (reduced short borrow risk)
10. **No options market**: No listed options = no hedging mechanism for short-sellers → they can only cover
### 6. What Went Wrong (Post-Open Fade)
- The 10:05 high at $9.99 was a **blow-off top** — no follow-through, sharp reversal
- $9.99 → $6.31 in ~90 minutes = **-37% from the high**
- The close at $7.36 held above the open ($7.77) — "strong" close for a +114% day, but gave back 26%
- **No fundamental catalyst**: Q2 revenue down 32% YoY, net loss, declining cash — this was pure momentum/squeeze, not a fundamental move
- The 8/19 volume spike may have been **positioning by a single entity or small group** rather than broad institutional interest
### 7. Risk Assessment for a Pre-Open Entry
- **Entry**: ~$4.10 (first 5-min close) to ~$5.88 (end of first 5 min)
- **Target**: $9.99 (10:05 high) = +70% to +140% from entry
- **Stop**: $3.40 (pre-market low) = -17% to -42% risk
- **R:R at $4.10 entry**: 70%/17% = 4.1:1 (excellent)
- **R:R at $5.88 entry**: 70%/42% = 1.7:1 (marginal)
- **Risk**: Squeeze stocks can reverse 50%+ in minutes. The 10:05→10:10 fade was $9.84→$8.45 = -14% in 5 minutes.
### 8. Key Takeaway
XPON was a **textbook micro-cap short squeeze setup**:
- Tiny float + volume spike + range break + premarket gap + thin liquidity
- The squeeze worked (191% intraday gain) but faded hard
- The **premarket signals were strong** — a scanner would have ranked this in the top 5-10 premarket names
- The **risk/reward was excellent** at pre-market prices but degraded fast once price ran
- **No fundamental catalyst** = the move was purely mechanical (short covering + momentum)

View File

@@ -0,0 +1,17 @@
# Scan Watchlist ICM Workspace
This workspace orchestrates a multi-stage watchlist confluence scan for trading ideas.
The agent follows the numbered stages to filter tickers, analyze confluence, construct trade plans, and produce a summary card.
Folder structure:
- CLAUDE.md (Layer 0): workspace identity
- CONTEXT.md (Layer 1): workspace-level routing
- stages/: numbered stage folders
- 00_clarify/: ask key questions
- 01_broad_filter/: broad filter across tickers
- 02_confluence_analysis/: confluence analysis on shortlist
- 03_trade_plan/: trade plan construction
- 04_summary_card/: summary card creation
- _config/: Layer 3 reference material (stable across runs)
- shared/: Layer 3 shared references
- Each stage's output/ holds Layer 4 working artifacts for handoff to next stage.

View File

@@ -0,0 +1,16 @@
# Workspace Context: Watchlist Confluence Scan
## Routing
Given the goal to scan tickers for trade setups with confluence, the workflow proceeds through stages:
1. **00_clarify** - Ask clarifying questions about long/short bias, time horizon, asset class focus.
2. **01_broad_filter** - Perform broad filter across all tickers to narrow candidates.
3. **02_confluence_analysis** - Analyze confluence factors for each candidate.
4. **03_trade_plan** - Construct detailed trade plans for top setups.
5. **04_summary_card** - Produce a structured summary card of setups and sitting-on-hands list.
## Shared Resources
- _config/: Contains references such as ticker list, default parameters.
- shared/: May contain common tools or scripts (if any).
The agent should read the stage's CONTEXT.md for detailed inputs, process, and outputs.

View File

@@ -0,0 +1,10 @@
# Trade Plan Template
**Symbol:**
**Side:** (Long/Short)
**Entry Zone:**
**Stop:**
**Targets:** T1: , T2: , T3:
**Time Horizon:**
**Rationale:**
**Invalidation Condition:**

View File

@@ -0,0 +1,5 @@
OAMI
IPST
IVF
EYPT
TRUG
1 OAMI
2 IPST
3 IVF
4 EYPT
5 TRUG

View File

@@ -0,0 +1,2 @@
XOS
AMLX
1 XOS
2 AMLX

View File

@@ -0,0 +1,10 @@
AAPL
UPS
UBER
TSM
TSLS
TSLA
TGT
TAN
SQQQ
1 AAPL
2 UPS
3 UBER
4 TSM
5 TSLS
6 TSLA
7 TGT
8 TAN
9 SQQQ

View File

@@ -0,0 +1,10 @@
SPX
SOXL
SEDG
SBUX
RUN
ROKU
RIVN
RBLX
QQQ
1 SPX
2 SOXL
3 SEDG
4 SBUX
5 RUN
6 ROKU
7 RIVN
8 RBLX
9 QQQ

View File

@@ -0,0 +1,55 @@
AAPL
UPS
UBER
TSM
TSLS
TSLA
TGT
TAN
SQQQ
SPY
SPX
SOXL
SEDG
SBUX
RUN
ROKU
RIVN
RBLX
QQQ
PYPL
PLTR
PINS
PANW
NVDA
NKE
NFLX
MU
MSFT
META
KRE
INTC
HOOD
HD
GOOGL
GOOG
FSLR
FDX
ETSY
ENPH
DIS
DE
DDOG
CRWD
CRM
COST
COIN
CAT
BITO
BABA
BA
ARKK
AMZN
AMD
AFRM
ADBE
1 AAPL
2 UPS
3 UBER
4 TSM
5 TSLS
6 TSLA
7 TGT
8 TAN
9 SQQQ
10 SPY
11 SPX
12 SOXL
13 SEDG
14 SBUX
15 RUN
16 ROKU
17 RIVN
18 RBLX
19 QQQ
20 PYPL
21 PLTR
22 PINS
23 PANW
24 NVDA
25 NKE
26 NFLX
27 MU
28 MSFT
29 META
30 KRE
31 INTC
32 HOOD
33 HD
34 GOOGL
35 GOOG
36 FSLR
37 FDX
38 ETSY
39 ENPH
40 DIS
41 DE
42 DDOG
43 CRWD
44 CRM
45 COST
46 COIN
47 CAT
48 BITO
49 BABA
50 BA
51 ARKK
52 AMZN
53 AMD
54 AFRM
55 ADBE

View File

@@ -0,0 +1,67 @@
## Plan: Watchlist Confluence Scan
### Phase 1 — Broad filter across all 54 tickers (~5-8 tool calls)
**1. Market context snapshot**
- Pull `SPY` and `QQQ` snapshots to establish the day's market regime (trend, range, key levels). Everything filters through this — no short setups in a strong uptrend day, no longs into a breakdown.
**2. Batch screen for daily structure**
- Run a Finviz scan (or equivalent) filtering for:
- Price within ~3% of the 50-day MA (your stated preference)
- Consolidation/base pattern or pullback setup
- Above/below VWAP context
- This narrows 54 → likely 10-15 candidates worth deeper review.
**3. Parallel ticker snapshots**
- Pull `snapshot` data for the ~10-15 candidates from Phase 2 to get:
- Current price, day range, volume vs average
- Pre-market action (gappers up/down)
- % change from 50MA (if available from scan data)
### Phase 2 — Confluence analysis on the shortlist (~3-4 calls per ticker × 5-8 tickers)
For each candidate, evaluate these confluence factors:
| Factor | Tool / Source | What I'm looking for |
|--------|--------------|----------------------|
| **Daily chart structure** | `chart_command` — load symbol, D timeframe | Trend direction, price vs 50MA/200MA, support/resistance zones, base/consolidation patterns |
| **Intraday setup** | `chart_command` — 3-min or 5-min chart | VWAP relationship, pre-market gap vs overnight range, opening range break potential |
| **Volume profile** | `chart_command` — volume indicator | Above-average volume confirming the move, or thin volume suggesting trap |
| **Relative strength** | Visual chart comparison | Is it holding while the sector/market sells? That's a Mike-style confluence flag |
### Phase 3 — Trade plan construction on top setups (2-4 tickers max)
For the 2-4 tickers with the strongest confluence:
**1. Chart the setup**
- Load the ticker on AI chart with overlays: VWAP, 50 EMA, key S/R levels drawn
- Identify the exact entry zone, stop level, and target levels (T1/T2/T3)
**2. Draft the trade plan**
- Symbol, side, entry zone, stop, targets, time horizon
- **Rationale**: confluence factors that align (daily structure + intraday trigger + volume confirmation)
- **What invalidates it**: the one condition that kills the thesis
### Phase 4 — Summary card
Deliver a structured card showing:
- Top 3-5 setups ranked by confluence score
- Each with: setup type, entry/stop/targets, key confluence factors, risk level
- The "sitting on hands" list — tickers that looked okay but lacked a decisive edge
---
### Estimated tool call count
- **Phase 1:** ~8-10 calls
- **Phase 2:** ~15-25 calls (depending on shortlist size)
- **Phase 3:** ~5-8 calls
- **Phase 4:** 1 card build call
**Total: ~30-45 tool calls** — this is a substantive scan. I'd recommend we do Phase 1 first to see the shortlist, then you can approve Phase 2 on the narrowed candidates rather than burning through credits on all 54.
### Key question before I proceed:
1. **Long only, or long + short?** You've expressed interest in both — what's the bias today?
2. **Time horizon:** Intraday scalps, or day/swing holds?
3. **Asset class focus:** Equities only, or include ETFs (SPY/QQQ/TAN/SOXL/SQQQ/KRE) in the confluence review?

View File

@@ -0,0 +1,16 @@
# Stage 00 Clarify: Ask Key Questions
## Inputs
- (none) - Start of workflow
## Process
Ask the user the following key questions to configure the scan:
1. Long only, or long + short? (Specify bias: long, short, or both)
2. Time horizon: intraday scalps, or day/swing holds?
3. Asset class focus: Equities only, or include ETFs (SPY/QQQ/TAN/SOXL/SQQQ/KRE) in the confluence review?
4. Watchlist file: Enter the CSV filename (without path) located in the shared/ folder (e.g., cha-martin-watchlist.ms.csv or 260818.csv).
Record the answers in a markdown file.
## Outputs
- user_preferences.md -> output/

View File

@@ -0,0 +1,28 @@
# Scan Preferences — run 2026-08-18 (Tue) evening, ~8:25 PM ET (post-close)
## Config (operator instruction 2026-08-18 ~8:25 PM ET)
1. **Bias:** LONGS ONLY (operator-specified).
2. **Time horizon:** Day/swing holds — post-close run, so all plans target the **next session (Wed 2026-08-19)**. Intraday-0DTE framing from the morning run does not apply to an equity-only, post-close scan. (Inferred from run timing — operator did not state a horizon.)
3. **Asset class focus:** Equities only (both list members are equities; no ETFs in this list).
4. **Watchlist file:** `260818.csv` (2 tickers) — operator wrote "26018.csv", resolved to the existing `260818.csv`.
## Tickers (2)
| Ticker | Type |
|--------|------|
| XOS | equity (micro-cap, ~$29.7M mkt cap) |
| AMLX | equity (mid-cap pharma, ~$2.3B mkt cap) |
## Standing preferences carried from memory
- VWAP is the standard intraday reference; pullbacks to VWAP in rising action = long trigger.
- Near-50MA confluence: tickers within ~1% of 50MA flagged as strong confluence (neither applies today — both gapped far above all MAs).
- Multi-target exits (T1/T2/T3) with partials; stop-tighten as targets hit.
- User polls for progress — keep status updates visible between stages.
## This run is equity-only
Per this workspace's stage specs (options work removed 2026-08-18), **no options evaluation** — no chain pulls, no strikes, no DTE work. Plans are single-instrument equity entries only.
## Notes
- Post-close run: all daily data is final for Tue 8/18. After-hours quotes captured at ~8:00–8:25 PM ET.
- List ≤15 → stage 01 passes full list through unchanged (no triage cut).

View File

@@ -0,0 +1,25 @@
# Stage 01 Broad Filter: Curated List Triage
Note: the input watchlist is always operator-curated (typically 5-50 tickers), never
a broad-market universe. This stage is a lightweight triage pass on that list, not
a market-wide scan — don't run Finviz-style universe screens here.
## Inputs
- Layer 4 (working): ../00_clarify/output/user_preferences.md
(contains the watchlist filename to use)
## Process
1. Read user preferences to determine bias, time horizon, and asset class focus.
2. Read the watchlist filename from user_preferences.md, then load the full curated ticker list from that CSV in the shared/ folder.
3. Establish market context by pulling snapshot data for SPY and QQQ to determine the day's regime (trend, range, key levels). Record this regime read in the output so stage 02 can reuse it instead of re-pulling.
4. Pull batch snapshot data (price vs 50-day MA, VWAP position, basic volume/range) for every ticker on the list in a single batch request — not one ticker at a time.
5. Decide whether triage is needed, based on list size:
- **List ≤15 tickers:** skip filtering. The operator has already curated it — pass the full list through unchanged as the shortlist.
- **List >15 tickers (up to ~50):** apply lightweight triage to cut to a working shortlist (target ~10-15) using:
* Price within ~3% of the 50-day MA, or a clear pullback/base pattern
* VWAP alignment with the stated bias (above VWAP for longs, below for shorts; either if both)
* Drop tickers with no clear structure / no signal
6. Record the resulting shortlist, with a one-line reason for any ticker dropped in the >15 case.
## Outputs
- shortlist.md -> output/ (includes the SPY/QQQ regime notes from step 3)

View File

@@ -0,0 +1,46 @@
# Broad Filter Output (Shortlist) — run 2026-08-18 (Tue) evening, ~8:25 PM ET (post-close)
Input: `shared/260818.csv` → **XOS, AMLX** (2 tickers).
List ≤ 15 → per workflow rule, **skip triage; full list passes through unchanged**.
Data as of Tue 8/18 close + AH through ~8:20 PM ET. All data TTG MCP only (`stocks_snapshot_ticker`, `stocks_aggs_custom_bars`, `calculate_support_resistance`) + Benzinga news for catalysts.
## Market regime (SPY/QQQ, Tue 8/18 close)
| Ticker | Close | Chg | Day O/H/L/C | VWAP | Volume | AH |
|---|---|---|---|---|---|---|
| SPY | 767.45 | **−0.68%** | 768.70 / 769.50 / 766.92 | 768.52 | 43.9M (vs 34.4M prev — above avg) | 767.02 (−0.05%) |
| QQQ | 717.51 | **−1.88%** | 720.21 / 722.13 / 715.92 | 719.73 | 49.0M (vs 26.5M prev — ~1.85x) | 716.18 (−0.19%) |
**Regime: risk-off, tech-led.** Both indices closed below VWAP on above-average volume — sellers in control; QQQ down ~2.8x SPY. AH quiet. Context for Wed 8/19: any new long in this list is fighting a weak tape — entry triggers must be conditional, not blind.
## Watchlist snapshot
| Ticker | Close | Chg | Day O/H/L/C | VWAP | Volume | AH last | AH chg | Regime fit |
|---|---|---|---|---|---|---|---|---|
| XOS | 4.44 | **+96.65%** | 4.53 / 4.95 / 4.01 | 4.4281 (reg-sess 4.35) | **110.1M sh** (~4x mkt cap) | 4.11 | **−7.4%** | Extreme idiosyncratic strength, fading AH |
| AMLX | 35.11 | **+63.42%** | 29.91 / 35.39 / 28.00 | 31.4446 (reg-sess 31.97) | **24.0M sh** (19x prev) | 35.02 | −0.3% | Extreme idiosyncratic strength, held AH |
## Catalyst check (Benzinga, `benzinga_news`, Tue 8/18)
- **XOS** — First US Air Force contract (prototype OTA for deployable mobile battery-energy-storage / EV-charging solution), announced Mon 8/17 after close. 8 articles today, **nothing new after 1:05 PM ET** — no after-close offering/financing news found. Micro-cap (~$29.7M mkt cap).
- **AMLX** — Phase 3 LUCIDITY topline 8:00 AM ET: **MET primary endpoint** (55% reduction in L2/L3 hypoglycemic events, p=0.000003), all secondary endpoints met, NDA planned by year-end, Breakthrough Therapy. Halted 6:55 AM, resumed 7:25 AM. **1:37 PM ET: HC Wainwright maintains Buy, PT raised $34 → $55.** ⚠️ **4:02 PM ET (after close): announces $350M common stock offering** — at ~$2.3B mkt cap that is ~15% dilution; price/terms not yet in the feed. This is the single most important Wed variable for this name.
## Daily structure (TTG bars + `calculate_support_resistance` daily)
| Ticker | Structure | Key levels |
|---|---|---|
| XOS | 6/3 IPO (8.27 high) → downtrend → 1.85 low (8/14) → 3-week base 1.85–2.75 → today +97% gap **through** all structure, close 4.44 = **inside June supply zone 3.58–4.64** | Daily S: 3.04 (3t), 2.70 (3t), 2.11 (4t). Daily R: 8.27. Today: PDH 4.95 / PDL 4.01. June supply above: 5.20–5.48 |
| AMLX | Multi-month uptrend 12.44 (7/1) → 24.60 (8/7 ATH) → pullback 21.28 (8/17) → today +63% **new ATH 35.39**, close 35.11 (99.2% of high) | Daily S: 17.00 (3t), 12.44. Old ATH 24.60 now far below. Open gap 21.43–28.00 wide open. PDH 35.39 (ATH) / PDL 28.00 |
## Intraday S/R (TTG `calculate_support_resistance`, 3-min, Tue 8/18)
- **XOS** — Resistance (heavy congestion): 4.25 (10t), 4.30 (13t), 4.32 (10t), 4.59, 4.73; today's PDH 4.95. Support: 4.01 (PDL). Pre-market opening range 3.33–3.89. **AH price 4.11 = below the 4.25–4.32 congestion, testing 4.01 from below.**
- **AMLX** — Late-day support cluster: 35.02 (48t), 34.90 (28t); resistance 35.09 (4t), 35.39 (ATH), 36.33 (AH high, 4:12 PM). Morning congestion (now support if pulled back to): 33.26 (17t), 33.53 (20t). Reg-sess low 28.00.
## Shortlist (pass-through, unchanged)
1. **XOS** — equity long only (catalyst: Air Force contract)
2. **AMLX** — equity long only (catalysts: LUCIDITY Phase 3 + $350M offering overhang)
Both pass to Stage 02. Nothing excluded.

View File

@@ -0,0 +1,20 @@
# Stage 02 Confluence Analysis: Evaluate Candidates
## Inputs
- Layer 4 (working): ../01_broad_filter/output/shortlist.md
- Layer 4 (working): ../00_clarify/output/user_preferences.md
(contains the watchlist filename to use)
## Process
For each ticker in the shortlist, evaluate the following confluence factors:
First, read the watchlist filename from user_preferences.md and load the full ticker list from shared/<filename> as reference (if needed).
1. Daily chart structure: load symbol, D timeframe to assess trend, price vs 50MA/200MA, support/resistance zones, base/consolidation patterns.
2. Intraday setup: load 3-min or 5-min chart to examine VWAP relationship, pre-market gap vs overnight range, opening range break potential.
3. Volume profile: check volume indicator for above-average volume confirming move or thin volume suggesting trap.
4. Relative strength: visually compare chart to sector/market to see if holding while sector/market sells.
Record analysis for each ticker, noting which factors align.
## Outputs
- confluence_analysis.md -> output/

View File

@@ -0,0 +1,61 @@
# Confluence Analysis — run 2026-08-18 (Tue) evening, ~8:25 PM ET (post-close)
Factors evaluated per workspace spec (equity-only): 1) daily structure, 2) intraday setup, 3) volume, 4) relative strength.
Bias: **longs only**. All data from stage 01 (`shortlist.md`) — no re-pulls.
---
## XOS (Xos, Inc.) — LONG candidate, HIGH RISK
### 1. Daily chart structure — NEGATIVE / mixed
- Post-IPO downtrend base (1.85–2.75, ~3 weeks) launched +97% into **June supply 3.58–4.64**; close 4.44 sits mid-supply, not at a clean level.
- No MA confluence — price is far above every moving average (extended, not confluent).
- First real test of the 4.64 upper supply edge came at 4.95 (10:57) and was sold.
- If it bases here, 4.64–4.95 is the resistance that defines the setup; below, 4.01 (PDL) is the floor of today's range.
### 2. Intraday setup — MIXED (fading)
- PM: 3.88 → 5.38 (7:15 AM) → open 4.53. Reg session: low **4.01 @ 10:24** (gap ~70% filled), high **4.95 @ 10:57**, close **4.44** — a full day of distribution after the spike: open high → low → bounce → drift.
- Closed just above reg-sess VWAP (4.44 vs 4.35) but **below all-day VWAP 4.4281? No — 4.44 > 4.4281, barely above**. Effectively closed at VWAP, far off the high (−10.5%).
- **AH: 4.45 → 4.80 (6:00 PM) → 4.11 (7:57 PM), low 4.06. AH −7.4%**, testing 4.01 (PDL) from below. Below the 4.25–4.32 heavy 3-min congestion (10–13 touches).
- Long trigger (Wed): PM/open **holds 4.01 and reclaims 4.25–4.32** on volume, or a 4.01–4.10 shelf that stops bleeding. Without that, no entry.
### 3. Volume — NEGATIVE lean
- **110.1M shares on a ~$29.7M mkt cap ≈ 4x market cap in one day.** Front-loaded: 14.4M in 9:00 hr, 12.0M in 10:00 hr, decay to 2.7–2.8M midday, 5.2M in 15:00 hr.
- The fade from 4.95 to 4.44 on that volume + AH bleed reads as **supply/distribution into the June zone**, not quiet accumulation.
### 4. Relative strength — EXTREME (catalyst-driven)
- +96.65% on a day SPY −0.68% / QQQ −1.88%. Pure idiosyncratic (first Air Force contract). No sector peer to compare; the tape is not helping it.
**Confluence: 2.5 / 4** — RS extreme, intraday neutral-fading, daily structure mid-supply, volume distributional. Viable only as a high-risk conditional long (see stage 03).
---
## AMLX (Amylyx Pharma) — LONG candidate, PRIMARY
### 1. Daily chart structure — POSITIVE
- Multi-month uptrend (12.44 → 24.60 ATH 8/7), orderly pullback to 21.28 (8/17), then +63% **new ATH 35.39**. Trend-aligned break, not an extended chase — the prior structure was broken *yesterday-to-today*, with the close at 99.2% of the high.
- 24.60 (old ATH) and the 21.43–28.00 gap are now far below; first real supports for a pullback are the 33.26–33.53 morning congestion and the 28.00 low.
### 2. Intraday setup — POSITIVE (textbook for a long)
- Open 29.91 (gap +39%), **one probe to 28.00 @ 9:42, then a clean all-day grind higher**; new high 15:33 (35.39), close 35.11.
- Close **+11.6% above reg-sess VWAP (31.97)** — the strongest possible VWAP relationship. Late-day effort: 15:00 hr volume 3.2M (highest of the afternoon) into the ATH.
- **AH: held 35.20 → tagged 36.33 (4:12 PM) → 35.02 (−0.3%)** — flat-to-firm in after-hours despite the 4:02 PM offering announcement (thin AH volume: 326K sh; reaction likely deferred to Wed PM/open).
- Wed long trigger: offer-priced action stabilizes — hold above 33.53 and/or reclaim 35.40 on volume.
### 3. Volume — POSITIVE in-session, NEGATIVE overhang
- 24.0M shares (19x prior day) with a close at the high = accumulation signature on the data print.
- **BUT the 4:02 PM ET $350M common stock offering (~15% of the ~$2.3B mkt cap) is a known supply event for Wed.** Price/terms not yet published at scan time. Expect gap-down risk to near the offering price, then a base. HC Wainwright PT $55 (1:37 PM) gives a post-offering valuation anchor.
### 4. Relative strength — EXTREME
- +63.4% on a day healthcare +1.6%, tech −2.1%. Idiosyncratic (Phase 3 primary endpoint met). Held its gain while the tape sold off — the pattern of a real institutional move.
**Confluence: 3 / 4** — daily trend-break + close-at-high, extreme RS, constructive intraday; volume factor split by the after-close offering. Best long of the list **if** Wed pricing of the offering is absorbed.
---
## Ranking
| Rank | Ticker | Score | Read |
|---|---|---|---|
| 1 | AMLX | 3/4 | Primary long — ATH close, VWAP +11.6%, offering = defined Wed risk to manage |
| 2 | XOS | 2.5/4 | Conditional high-risk long — must hold 4.01 and reclaim 4.25–4.32; AH fade is the enemy |

View File

@@ -0,0 +1,19 @@
# Stage 03 Trade Plan: Construct Detailed Trade Plans
## Inputs
- Layer 4 (working): ../02_confluence_analysis/output/confluence_analysis.md
- Layer 3 (reference): _config/trade_plan_template.md (optional template for structuring plans)
## Process
1. From the confluence analysis, select the top 2-4 tickers with the strongest confluence.
2. For each selected ticker:
- Load the ticker on AI chart with overlays: VWAP, 50 EMA, key support/resistance levels.
- Identify the exact entry zone, stop level, and target levels (T1/T2/T3).
- Draft a trade plan including:
* Symbol, side, entry zone, stop, targets, time horizon
* Rationale: confluence factors that align (daily structure + intraday trigger + volume confirmation)
* What invalidates it: the one condition that kills the thesis
3. Compile all trade plans into a single document.
## Outputs
- trade_plans.md -> output/

View File

@@ -0,0 +1,45 @@
# Trade Plans — run 2026-08-18 (Tue) evening, ~8:30 PM ET (post-close)
Config: **longs only, equities only** (no options work per workspace spec). All plans target **Wed 2026-08-19**.
Levels from stage 02 confluence analysis (TTG MCP data, Tue 8/18 close + AH).
---
## Plan 1 — AMLX (PRIMARY)
**Symbol:** AMLX (Amylyx Pharma) — equity long
**Side:** Long
**Thesis:** Phase 3 LUCIDITY winner — new ATH 35.39, closed 99.2% of high at +11.6% above VWAP, 19x volume, held after-hours. Wed risk is the after-close **$350M common offering (~15% dilution; price/terms pending at scan time)** — enter only on evidence it's being absorbed, never blind into the open.
**Entry zone (conditional, two triggers):**
- **T-A (preferred):** Wed PM/open stabilizes **above 33.53** (Tue morning congestion 33.26–33.53, 17–20 touches) and builds — bid the 33.53–34.20 zone, no chasing above 34.50.
- **T-B (stronger):** reclaim of **35.40** (Tue PDH/ATH) on volume → enter on the reclaim, offering absorbed.
- Skip entirely if: offering prints below ~$33 (deep discount) or Wed opens below 33.26.
**Stop:** **32.50** (below the 33.26–33.53 congestion cluster; from T-A entry ≈ −2.5 to −5%, from T-B entry ≈ −8%)
**Targets:** T1 **35.40** (PDH retest — take 1/3) · T2 **36.35** (Tue AH high) · T3 **37.50** (measured move off Tue range 28.00→35.39 from the open)
**Time horizon:** Day/swing — scale out by Fri if T3 not reached; holding over the offering's settlement week requires T1 hit or price > 35.40.
**Rationale (confluence):** trend-aligned daily break (new ATH) + close-at-high intraday + extreme relative strength (+63.4% vs health care +1.6%) + late-day volume effort.
**Invalidation:** Wed print below **33.26** = congestion failed, offering discount too deep — thesis dead, no entry. Broader biotech tape gap-down > 3% also voids T-A.
**Size note:** half normal size — dilution overhang + $2.3B name in a risk-off tape.
---
## Plan 2 — XOS (SECONDARY, HIGH RISK, CONDITIONAL)
**Symbol:** XOS (Xos, Inc.) — equity long
**Side:** Long
**Thesis:** First Air Force contract, +97% day — but closed mid-June-supply (3.58–4.64) after a distributional fade (4.95 → 4.44) and bled AH to 4.11 (−7.4%), testing 4.01. Only tradeable if the low holds and the tape reclaims congestion.
**Entry zone (conditional, two triggers):**
- **T-A:** Wed PM/open **holds 4.01** (Tue PDL) and reclaims **4.25–4.32** (10–13 touch 3-min congestion) on volume → bid 4.30–4.35.
- **T-B:** clean 4.01–4.10 shelf that stops bleeding (two+ failed lower tests) → enter off the shelf.
- Skip entirely if: AH/PM breaks 4.01 before any trigger (gap retrace toward 3.58 = thesis dead).
**Stop:** **3.85** (below 4.01 PDL; from 4.30 entry ≈ −10% — micro-cap stop; position size must be small, not the stop)
**Targets:** T1 **4.51** (VWAP cluster 4.43–4.51, 1/3) · T2 **4.95** (Tue PDH, 1/3) · T3 **5.25** (Tue PM high zone 5.25–5.38, balance)
**Time horizon:** Day/swing — if T1 unhit by Wed 2 PM, trim to starter size or out; do not hold a broken micro-cap overnight.
**Rationale (confluence):** extreme relative strength (+96.65% vs SPY −0.68%) + closed at reg-sess VWAP; offset by mid-supply daily location and 4x-mkt-cap distribution volume.
**Invalidation:** loss of **4.01** = the entire setup. One break, gone.
**Size note:** smallest size of the list — $29.7M mkt cap, 110M shares traded, wide AH spreads (4.10/4.11, but PM book was 4.66/4.67 at $0.01 — verify quotes at entry).
---
## Sizing rule (both plans)
Risk-based: fix risk per trade first (e.g., $250–500), derive share count from entry→stop distance. AMLX T-A: (33.53−32.50) ≈ $1.03/sh risk. XOS T-A: (4.30−3.85) = $0.45/sh risk but treat max position as half of AMLX's dollar risk.

View File

@@ -0,0 +1,20 @@
# Stage 04 Summary Card: Produce Final Scan Summary
## Inputs
- Layer 4 (working): ../03_trade_plan/output/trade_plans.md
- Layer 4 (working): ../02_confluence_analysis/output/confluence_analysis.md (for sitting-on-hands list)
- Layer 4 (working): ../01_broad_filter/output/shortlist.md (optional reference)
## Process
1. Review the trade plans and confluence analysis to rank setups by confluence score.
2. Select the top 3-5 setups.
3. For each selected setup, extract:
- Setup type (e.g., pullback, breakout, etc.)
- Entry zone, stop level, target levels (T1/T2/T3)
- Key confluence factors that aligned
- Risk level (based on stop distance, volatility, etc.)
4. Compile a "sitting on hands" list: tickers from the shortlist that showed some promise but lacked a decisive edge (note reasons).
5. Produce a structured summary card in markdown format.
## Outputs
- summary_card.md -> output/

View File

@@ -0,0 +1,30 @@
# Summary Card — Watchlist Confluence Scan (Equities)
**Run:** 2026-08-18 (Tue) ~8:30 PM ET, post-close · **Bias:** longs only · **Watchlist:** `260818.csv` (XOS, AMLX) · **Target session:** Wed 2026-08-19
**Tape context:** SPY −0.68% / QQQ −1.88%, both closed below VWAP on above-average volume — risk-off, tech-led. AH calm. Longs are fighting the tape; all entries below are conditional.
---
## 1) AMLX — LONG · Confluence 3/4 · Risk: MEDIUM
- **Setup:** Phase 3 data break — new ATH 35.39, closed at 99.2% of high, +11.6% above VWAP, 19x volume; held AH at 35.02.
- **Entry:** A) 33.53–34.20 if Wed holds above 33.53 · B) reclaim 35.40 on volume. **Skip if offering prints < ~$33 or open < 33.26.**
- **Stop:** 32.50 · **Targets:** 35.40 / 36.35 / 37.50 (thirds, tighten after T1)
- **Confluence aligned:** trend-aligned daily break · close-at-high intraday · extreme RS (+63.4% vs HC +1.6%)
- **Key risk:** after-close **$350M stock offering (~15% dilution**, price pending) — half size. HC Wainwright PT $55 = post-offering anchor.
## 2) XOS — LONG (conditional) · Confluence 2.5/4 · Risk: HIGH
- **Setup:** Air Force contract gap-up +96.7%, but faded 4.95 → 4.44 into June supply (3.58–4.64), AH −7.4% to 4.11 testing 4.01.
- **Entry:** A) hold 4.01 + reclaim 4.25–4.32 on volume → bid 4.30–4.35 · B) 4.01–4.10 shelf holds. **Skip if 4.01 breaks before any trigger.**
- **Stop:** 3.85 · **Targets:** 4.51 / 4.95 / 5.25 (thirds)
- **Confluence aligned:** extreme RS (+96.7% vs SPY −0.68%) · closed at VWAP
- **Key risk:** 110M sh ≈ 4x mkt cap = distribution into supply; $29.7M micro-cap. Smallest size.
---
## Sitting on hands
- **None** — 2-ticker list; both carry conditional plans. (XOS is the one to walk away from fast: one break of 4.01 and it's off the board.)
## Pre-open checklist (Wed 8/19)
1. **AMLX offering price/terms** (8-K/pricing announcement, likely pre-open) — the single most important input.
2. SPY/QQQ PM direction vs Tue's risk-off close.
3. XOS AH/PM: is 4.01 holding?

View File

@@ -0,0 +1,90 @@
# XPON Short Squeeze — Premarket Signal Reconstruction (2026-08-24)
## The Setup: What a Pre-Open Scanner Would Have Flagged
### 1. Extreme Float Restriction
- **Free float: 10,684,515 shares** (93.4% of share class)
- **Total shares outstanding: ~962,335** (weighted: 953,191)
- **Market cap: $3.27M** — deep micro-cap
- **22 employees**, listed 2022-04-01, NASDAQ (XNAS)
- **1-for-12 reverse split** (effective ~2026 Q2) to regain Nasdaq compliance
- A ~$3.30M market cap with 10.7M free float = tiny tradable universe. Any meaningful buy-side interest moves the tape fast.
### 2. 8/19 Volume Blowout — The "Accumulation Day"
| Metric | 8/19 (Thu) | Prior days (typical) |
|--------|-----------|---------------------|
| Close | $4.43 | $3.30–$3.74 |
| High | $4.90 | $3.30–$3.74 |
| Volume | **83,482 shares** | ~300–1,000 shares |
| $ Volume | $7.37M | <$5K |
- Volume was **~80–250x** the prior 10-day average (~300–700 shares/day).
- Price went from a 3-week range of $3.18–$3.89 to a **$4.90 intraday high** — a break above the established range.
- Close at $4.43 held well above the prior range — this is an **accumulation/reversal bar**, not a failed spike.
- The 8/20–8/22 follow-through: volume stayed elevated (3.8K, 1K, 680) vs. the prior 1K baseline, and price held above $3.60 — confirming the 8/19 move wasn't a one-day fluke.
### 3. Premarket 8/24: The Trigger
- **Pre-market high: $4.80** (09:24 ET, first 5-min bar: o:3.56 c:4.10 h:4.80 l:3.40, v:1,047,600)
- That's a **+8.5% gap** above the 8/23 close of $3.435.
- **Pre-market volume: ~1.94M shares in the first hour** (vs. 83K the prior full day) — **23x the prior day's total volume before the open**.
- The quote tape shows **bid/ask sizes at 100 shares** throughout pre-market — no institutional size was visible. This was **retail/momentum-driven**, not institutional.
- The 09:30 open printed at **$7.77** — a **126% gap** above prior close. The open was already 1.7x the premarket high.
### 4. The Squeeze Mechanics (First 2 Hours)
| Time (ET) | Price | Volume | Notes |
|-----------|-------|--------|-------|
| 09:25 | 3.40 → 4.80 | 1.0M | Pre-market trigger |
| 09:30 | 4.10 → 5.88 | 4.4M | Open + first 5 min |
| 09:35 | 5.90 → 6.45 | 3.3M | Acceleration |
| 09:40 | 6.17 → 6.18 | 1.7M | Consolidation |
| 09:45 | 6.18 → 7.58 | 3.8M | Second wave |
| 09:50 | 7.58 → 8.64 | 3.4M | **High: $9.03** |
| 09:55 | 8.67 → 8.18 | 2.0M | First fade |
| 10:00 | 8.20 → 8.70 | 1.6M | Retest |
| 10:05 | 8.70 → 9.84 | 2.4M | **High: $9.99** |
| 10:10 | 9.83 → 8.45 | 2.1M | Sharp reversal |
| 10:15 | 8.43 → 8.18 | 0.7M | Consolidation |
- **Intraday high: $9.99** (+191% from prior close) at ~10:05 AM ET
- **First 15 min volume: ~13M shares** — 150x the prior day's total
- The 10:05 high at $9.99 was a **psychological round number** — classic momentum exhaustion
- After 10:15, price faded to $6.31 by mid-morning (low of $6.31 at ~11:30)
- **Closed at $7.36** (+114% from prior close) — gave back ~26% of the gains
### 5. Why Mike Edwards Would Have Flagged This
A short-squeeze scanner (or discretionary premarket review) would have scored XPON high on:
1. **Float size**: $3.3M market cap, 10.7M free float — one of the most restricted floats in the market
2. **Volume spike**: 8/19 was 80–250x normal — the "something changed" signal
3. **Price range break**: 8/19 broke the 3-week $3.18–$3.89 range with a $4.90 high
4. **Follow-through**: 8/20–8/22 held above the prior range with elevated volume
5. **Premarket gap**: +8.5% gap to $4.80 before the open — confirming momentum
6. **Premarket volume**: 1.94M shares pre-market = 23x prior day — "the market is paying attention"
7. **Thin liquidity**: 100-share bid/ask sizes = no institutional selling wall, retail/momentum can drive price
8. **Reverse split**: Fresh off a 1-for-12 reverse split — stock was recently reset, new float, new retail interest
9. **Nasdaq compliance regained**: The reverse split was to fix compliance — "clean bill of health" for short-sellers (reduced short borrow risk)
10. **No options market**: No listed options = no hedging mechanism for short-sellers → they can only cover
### 6. What Went Wrong (Post-Open Fade)
- The 10:05 high at $9.99 was a **blow-off top** — no follow-through, sharp reversal
- $9.99 → $6.31 in ~90 minutes = **-37% from the high**
- The close at $7.36 held above the open ($7.77) — "strong" close for a +114% day, but gave back 26%
- **No fundamental catalyst**: Q2 revenue down 32% YoY, net loss, declining cash — this was pure momentum/squeeze, not a fundamental move
- The 8/19 volume spike may have been **positioning by a single entity or small group** rather than broad institutional interest
### 7. Risk Assessment for a Pre-Open Entry
- **Entry**: ~$4.10 (first 5-min close) to ~$5.88 (end of first 5 min)
- **Target**: $9.99 (10:05 high) = +70% to +140% from entry
- **Stop**: $3.40 (pre-market low) = -17% to -42% risk
- **R:R at $4.10 entry**: 70%/17% = 4.1:1 (excellent)
- **R:R at $5.88 entry**: 70%/42% = 1.7:1 (marginal)
- **Risk**: Squeeze stocks can reverse 50%+ in minutes. The 10:05→10:10 fade was $9.84→$8.45 = -14% in 5 minutes.
### 8. Key Takeaway
XPON was a **textbook micro-cap short squeeze setup**:
- Tiny float + volume spike + range break + premarket gap + thin liquidity
- The squeeze worked (191% intraday gain) but faded hard
- The **premarket signals were strong** — a scanner would have ranked this in the top 5-10 premarket names
- The **risk/reward was excellent** at pre-market prices but degraded fast once price ran
- **No fundamental catalyst** = the move was purely mechanical (short covering + momentum)