update to where files are stored
This commit is contained in:
41
sources/2026-08-11-SFY-IC-Debrief.md
Normal file
41
sources/2026-08-11-SFY-IC-Debrief.md
Normal file
@@ -0,0 +1,41 @@
|
||||
# SPY Iron Condor Debrief — 2026-08-11
|
||||
|
||||
## Trade Summary
|
||||
- **Ticker:** SPY
|
||||
- **Structure:** Iron Condor (8/14 expiry)
|
||||
- 770P/760P (put side)
|
||||
- 780C/785C (call side)
|
||||
- **Credit:** $2.44/contract
|
||||
- **Entry:** ~$773.70 at ~10:29 AM ET
|
||||
- **Exit:** ~11:30 AM ET (time exit)
|
||||
- **Result:** -$6 net loss
|
||||
|
||||
## Plan
|
||||
- **Target:** 25% profit ($1.83 buyback)
|
||||
- **Time Exit:** 11:30 AM ET
|
||||
- **Guard:** Close if approaching breakevens ($768.44 / $782.44)
|
||||
|
||||
## Observations
|
||||
- **Asymmetric Structure:** 10-wide put side, 5-wide call side
|
||||
- Riskier put wing got more buffer
|
||||
- Better credit optimization on the closer strike
|
||||
- **NL3 Feed Issue:** Institutional prints showing zero throughout session
|
||||
- Feed likely stale/disconnected
|
||||
- Normal SPY volume should show dozens of prints by 10:30 AM
|
||||
- **Price Action:** SPY drifted from $773.70 to around exit
|
||||
- Put side was always the danger zone ($3.70 vs $6.30 to calls)
|
||||
- Theta grind on 3-day 0DTE can be unforgiving
|
||||
|
||||
## Key Takeaways
|
||||
1. **Asymmetric IC Design:** Good structure — wider put side matched the closer risk
|
||||
2. **Time Management:** Respected the 11:30 exit window cleanly
|
||||
3. **NL3 Reliability:** Feed issues need monitoring — toggle off/on when zero prints show
|
||||
4. **Small Losses:** -$6 on a $2.44 credit is noise, not strategy failure
|
||||
|
||||
## Next Time
|
||||
- Consider waiting for more theta decay before entry
|
||||
- Monitor NL3 feed health at session start
|
||||
- Stick to the plan — execution was clean, just unfavorable drift
|
||||
|
||||
---
|
||||
*Auto-debrief generated at exit*
|
||||
58
sources/260731-1330-credit-spread.md
Normal file
58
sources/260731-1330-credit-spread.md
Normal file
@@ -0,0 +1,58 @@
|
||||
# SPY Bull Put Credit Spread — 2026-07-31 1:30 PM ET
|
||||
|
||||
**Date:** 2026-07-31
|
||||
**Session time:** 1:30 PM ET
|
||||
**Asset:** SPY
|
||||
**Expiration:** July 31, 2026 (0DTE)
|
||||
**Direction:** Bullish — slow grind higher
|
||||
|
||||
---
|
||||
|
||||
## Trade specs
|
||||
|
||||
| Field | Value |
|
||||
|---|---|
|
||||
| Strategy | Bull Put Credit Spread |
|
||||
| Short put (sell) | $740 |
|
||||
| Long put (buy) | $738 |
|
||||
| Width | $2 |
|
||||
| Credit target | ~$0.40–$0.60 |
|
||||
| Max profit | credit received (20-30%+ of width with 0DTE theta) |
|
||||
| Breakeven | $739.40–$739.60 |
|
||||
| SPY price at time | $744.72 |
|
||||
| Day range | $737.68 – $746.30 |
|
||||
| Time remaining | ~2h 50m |
|
||||
|
||||
## Thesis
|
||||
|
||||
SPY is holding the upper 80% of today's range on low volume (39% of average). Low volume + upper register holding often prints a slow grind higher rather than rejection. A credit spread is preferred because theta works in our favor — every minute of 0DTE decay adds to profit. We don't need SPY to rally; we just need it to stay above $740.
|
||||
|
||||
## Key levels
|
||||
|
||||
- **Resistance:** $746.30 (today's high), $748 (mid-week), $750 (psychological)
|
||||
- **Support:** $741.69 (yesterday's close), $737.68 (today's low)
|
||||
|
||||
## Entry
|
||||
|
||||
- Sell $740 / Buy $738 put spread
|
||||
- Target credit: $0.40–$0.60 (20-30%+ of width)
|
||||
|
||||
## Exit plan
|
||||
|
||||
- **20% profit:** credit of ~$0.50 → sell 50% at 20% back (~$0.10 credit retained)
|
||||
- **Runner:** trail remaining 50%, close if bid drops toward breakeven
|
||||
- **Stop / defense:** SPY closes below $739 → consider early exit or roll
|
||||
- **Max risk:** width minus credit (~$1.40–$1.60/contract)
|
||||
|
||||
## Why credit spread over debit spread
|
||||
|
||||
- **Theta works for us** — 0DTE decay accelerates all day, especially after ~3:30 PM
|
||||
- Higher probability — spread is well OTM below yesterday's close ($741.69)
|
||||
- We profit from the grind *and* from the standstill
|
||||
- Debit spread needed active upside; credit spread profits from not failing
|
||||
|
||||
## Notes
|
||||
|
||||
- Low volume today may cap upside speed but also reduces downside momentum
|
||||
- Theta accelerates sharply in final 2 hours — monitor decay rate after 3:30 PM
|
||||
- If volume spikes downward, reassess the $740 support level
|
||||
237
sources/HANDOFF_scan_workflow_scripts.md
Normal file
237
sources/HANDOFF_scan_workflow_scripts.md
Normal 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.
|
||||
55
sources/cha-martin-watchlist.ms.csv
Normal file
55
sources/cha-martin-watchlist.ms.csv
Normal 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
|
||||
|
26
sources/iron-condor-45dte.md
Normal file
26
sources/iron-condor-45dte.md
Normal file
@@ -0,0 +1,26 @@
|
||||
```
|
||||
Iron Condor 45dte Trade Plan
|
||||
```
|
||||
|
||||
Trade plan request:
|
||||
|
||||
Execute an iron condor on SPX through my Schwab broker session.
|
||||
|
||||
Underlying: SPX Broker: Schwab Strategy: Iron Condor (4 legs) Entry DTE: ~45 days Wing width: 30 points Spread legs:
|
||||
|
||||
Short put: [strike]
|
||||
Long put: [strike]
|
||||
Short call: [strike]
|
||||
Long call: [strike] Net credit: $[] Max loss: $[]
|
||||
Exit rules:
|
||||
|
||||
Profit target: Close all 4 legs at 25% of net credit
|
||||
Stop loss: Close all 4 legs at 50% loss of max loss
|
||||
Time exit: Close all 4 legs unconditionally on [date — 21 calendar days from entry]
|
||||
Broker hard stop: Set a Schwab-side stop order at 50% loss as offline protection. Cancel automatically once MARI closes the position.
|
||||
Monitoring cadence: Swing pace — check net position P&L multiple times per trading day. No intra-second polling needed.
|
||||
|
||||
Close all 4 legs together. Do not roll or manage legs individually.
|
||||
|
||||
Review the plan with me before execution. Confirm buying power and order preview before placing.
|
||||
|
||||
16
sources/servers.md
Normal file
16
sources/servers.md
Normal file
@@ -0,0 +1,16 @@
|
||||
- chrome-devtools
|
||||
- mari-cell
|
||||
- ttg-benzinga
|
||||
- ttg-chat
|
||||
- ttg-crypto
|
||||
- ttg-economy
|
||||
- ttg-finviz-elite
|
||||
- ttg-forex
|
||||
- ttg-futures
|
||||
- ttg-holygrail
|
||||
- ttg-indices
|
||||
- ttg-options
|
||||
- ttg-platform
|
||||
- ttg-stocks
|
||||
- ttg-uw
|
||||
|
||||
90
sources/xpon-squeeze-2026-08-24.md
Normal file
90
sources/xpon-squeeze-2026-08-24.md
Normal 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)
|
||||
Reference in New Issue
Block a user