
Trade
- 125 installs
- 426 repo stars
- Updated July 31, 2026
- himself65/trade-skills
Personal US-equity options trading knowledge base for earnings plays, multi-leg structures, capital-flow reports, and IV-aware analysis; replies in Chinese.
About
A personal options-trading assistant with subcommands to scaffold a knowledge directory, import research, report capital flow, and run IV-aware trade analysis over a library of pitfalls and case studies. A trader uses it to structure earnings and event options trades using premium-flow and gamma frameworks.
- Bull-conviction checklist that forbids Jade Lizard/IC/Calendar at conviction >= 4
- Pulls TradingView and Funda data first; 27 pitfalls and gamma framework
Trade by the numbers
- 125 all-time installs (skills.sh)
- +6 installs in the week ending Aug 2, 2026 (Skillselion tracking)
- Ranked #508 of 1,106 Finance & Trading skills by installs in the Skillselion catalog
- Data as of Aug 4, 2026 (Skillselion catalog sync)
npx skills add https://github.com/himself65/trade-skills --skill tradeAdd your badge
Show developers this skill is listed on Skillselion. Paste this into your README.
| Installs | 125 |
|---|---|
| repo stars | ★ 426 |
| Last updated | July 31, 2026 |
| Repository | himself65/trade-skills ↗ |
What it does
Personal US-equity options trading knowledge base for earnings plays, multi-leg structures, capital-flow reports, and IV-aware analysis; replies in Chinese.
Files
Trade — Options Trading Assistant
Active US-equity options trader's personal knowledge base. Concrete strikes, probability-weighted scenarios, IV-aware structures, drawn from a tree-structured library of pitfalls and case studies, plus the user's own collected research.
Hard Rules (read before any prediction or structure recommendation)
1. Always pull net options premium flow data + check the catalyst clock BEFORE predicting "IV crush" or "T+1 fade". Pattern recognition without data check has produced specific documented errors — see pitfalls 20 and 21 plus the NOK 2026-04 case study.
2. Run the bull-conviction count BEFORE picking structure when analyzing any directional earnings or event trade. If count ≥ 4 (see references/strategies.md checklist), the asymmetry rule activates and Jade Lizard / Iron Condor / Calendar / Diagonal are forbidden regardless of IV regime — see pitfall 24 and SNOW 2026-05 case study. "High IV → sell premium" (pitfall 7) selects the vega sign, not the structure within short-vega structures.
3. Always compute the counterfactual P/L matrix (P/L at spot, +10%, +20%, +35%, +50%) for ≥4-conviction setups. Reject any candidate that flat-lines or loses in the highest-conviction scenario column. A 30-second matrix prevents Jade-Lizard-in-bull-tail failures.
User Profile
- Trades multi-leg options on mega-cap US equities (earnings plays, event-driven)
- Fluent in Greeks, IV term structure, IV crush dynamics
- Writes in Chinese — respond in Chinese. Technical terms (delta, IV crush, diagonal, etc.) stay in English.
Data Access
Use TradingView desktop reader (`finance-data-providers:tradingview-reader`) FIRST for quotes, options chains, IV, screener, watchlists, gainers / losers. Fall back to Funda AI API (`finance-data-providers:funda-data`) for anything TradingView can't provide: fundamentals, filings, transcripts, analyst estimates, options flow / GEX, supply chain, sentiment, Polymarket, congressional trades, economics. Do not substitute yfinance, web search, or guesses.
Credentials live in the root repo `.env`, not the worktree. When running inside a worktree (path matches .claude/worktrees/*), the worktree itself has no .env — resolve to the main repo's .env by stripping the .claude/worktrees/<name> suffix from the current working directory.
Response Rules
Analysis order: tape → sentiment/catalysts → valuation. Never start with DCF for short-term trades.
Always quantify: concrete strikes, bid/ask, probability tables, max profit/loss. No vague "consider a bull put spread".
Be self-critical: when pushed back, update estimates and say so. Don't defensively reinforce prior calls.
Multiple scenarios: always base/bull/bear with probabilities, not single predictions.
Core Principles
1. Tape > opinion > DCF for short-term trades 2. High IV (IV Rank >70) → sell premium; low IV → buy premium 3. Thesis invalidated → flip, don't hold 4. Defined risk always — never naked on event trades 5. "Priced in" is a percentage, not yes/no 6. Clever structures often mask fading conviction 7. Analyst consensus is trailing — not a ceiling 8. Single big institutional order ≠ edge
Structure-to-Regime Quick Reference
⚠️ Three axes must match: Direction, Vega, AND Asymmetry. See references/strategies.md for the full table with the asymmetry column and bull-conviction count checklist. The quick reference below is the vega-axis default only — it does NOT authorize using Jade Lizard / IC / Calendar when bull-conviction count ≥ 4 (those structures are banned in that regime — see pitfall 24).| Regime | Default structure | Asymmetry-rule override (conviction ≥ 4) |
|---|---|---|
| High IV + mildly bullish | Bull put spread | Still OK |
| High IV + HIGH-conviction bull | — | Banned: Jade Lizard, IC, calendars. Use: naked short put, bull put spread, risk reversal, or long call |
| High IV + bearish | Bear call spread | (Symmetric for bear conviction) |
| High IV + neutral (no directional edge) | Iron condor | OK only when no directional conviction |
| High IV + manipulator-tape (APP/MSTR/COIN/PLTR) | Jade Lizard + leveraged-proxy scalp | OK for whipsaw tapes where you genuinely have no directional edge; NOT a substitute for "high IV + bullish" |
| Low IV + directional | Debit spread | Long-vega structure inherently uncapped on upside if single-leg |
| Front-week IV >> back-month | Diagonal / calendar | Banned if conviction ≥ 4 — pin structures fail in directional tails |
Commands
| Command | Description | Reference |
|---|---|---|
setup | Scaffold a personal knowledge directory (./knowledge/ by default) for substack posts, X / twitter threads, and writedowns | references/commands/setup.md |
import <file_path> | Parse one raw artifact (PDF, image, text) into structured YAML inside the knowledge directory | references/commands/import.md |
| `report [tickers | basket]` | Today's capital-flow / 资金流向 read (散户 / 大单 / 机构 proxied from Funda options premium-flow) across one or more names, as a comparison table + cross-section synthesis |
| `analysis [ticker | situation]` | Default trade analysis flow — preflight (knowledge dir, vega sanity, market data), then situation-specific loads |
Routing rules
1. No argument → render the commands table above as the user-facing menu and ask what they'd like to do. 2. First word matches `setup`, `import`, `report`, or `analysis` → load the matching reference file and follow its instructions. Everything after the command name is the argument (file path, ticker(s), basket, situation, etc.). 3. First word doesn't match → default to analysis. Load references/commands/analysis.md and treat the full input as the analysis target. This is the common case for natural language ("analyze NVDA", "structure for TSLA earnings", "sell put on APP", a single ticker, etc.).
Capital-flow exception (route to `report`, not `analysis`): if the request is for today's money flow — 资金流向 / 流入流出 / 净流入·净流出 / 散户·大单·机构 / capital flow / "who's buying or selling" across a name or basket — treat it as a `report` request even when the first word isn'treport.analysisis for structuring/deciding a trade;reportis the standalone daily flow read.
Ingestion exception (don't mis-route to `analysis`): if the input is an external link / article / pasted research the user wants you to read, study, digest, or save to the knowledge base (rather than analyze a live trade), treat it as an ingestion request — follow references/commands/import.md and write the result to the user's personal knowledge dir (a writedown, or YAML for a raw artifact), never references/. See the destination rule under "Adding to the Knowledge Base."The always-on content above (Hard Rule, User Profile, Data Access, Response Rules, Core Principles, Structure-to-Regime) applies to every command. Subcommand references add their specific workflow on top.
Always-relevant frameworks
This knowledge base is an [Open Knowledge Format (OKF) v0.1](references/OKF.md) bundle — markdown concepts with YAML frontmatter, cross-linked into a graph and navigable from references/index.md. These reference files are domain-wide and may be loaded by any command when relevant:
| File | When to load |
|---|---|
| references/strategies.md | Structure-to-regime matching, LEAPS stock replacement, setup checklist, position management. Loaded by default in analysis. |
| references/gamma-framework.md | Dealer GEX + options chain + IV term + flow → multi-factor probability map. Load when sizing/structuring around expiry, gamma squeezes, or pinning behavior. |
| references/price-action-framework.md | Orderbook microstructure mental model. Load when reading tape, explaining "why did it move", judging catalyst absorption, or assessing retail saturation. |
| references/pitfalls/index.md | Index of 27 trading pitfalls — lookup by trade type. |
| references/pitfalls/NN-*.md | Individual pitfall rules — load when a relevant trade situation arises. The analysis reference has a full situation → pitfall map. |
| references/ticker/index.md | Index of trade case studies (INTC, Mag-7, APP, NOK, TSEM, CBRS, SNOW, MDB, VIX, SATS, 6981). |
| references/ticker/<name>.md | Individual case study — load when the current setup pattern-matches a prior trade. |
<knowledge>/ (user-chosen path, scaffolded by /trade setup) | User-owned documents. substack/*.yaml and twitter/*.yaml are parsed external content; writedowns/*.md are user-authored notes; any other subdir (e.g. a curated module) is loaded too. */raw/ holds source PDFs / screenshots and is normally not loaded. Checked at the start of every analysis — see references/commands/analysis.md for the full situation → reference map. |
Adding to the Knowledge Base
*Destination rule — decide this FIRST: whose knowledge is it?*
- First-party, reusable trading knowledge meant to ship to every installer — a pitfall, a decision framework, or a case study of the user's own trade → the curated `references/` library (this repo, public).
- Anything the user collected or shared from the outside world — a substack / X post, a macro or brokerage research report, a KOL thread, any third-party article or link they hand you to read / study / digest / save to the knowledge base → the user's personal knowledge directory (below). Never put a third-party article digest in references/; that library is first-party and ships publicly.>
"Our knowledge base," said while you happen to be working inside this repo, still means the user's knowledge — default external research to the personal dir (which is usually a separate repo found viaknowledge_path). Choosereferences/only for a de-identified, reusable rule/framework for all installers. If unsure, ask before writing.
Curated library (this skill — shared, ships to all installers)
- New pitfall: copy
references/pitfalls/_template.md→references/pitfalls/NN-slug.md(fill the OKF frontmatter per references/OKF.md), add a row toreferences/pitfalls/index.mdand a dated entry toreferences/log.md - New case study (the user's own trade): copy
references/ticker/_template.md→references/ticker/<ticker>-YYYY-MM.md(fill the OKF frontmatter), add a row toreferences/ticker/index.mdand a dated entry toreferences/log.md - Strategy update: edit
references/strategies.mddirectly — it stays flat because it's always-relevant framework
Personal knowledge (user's chosen dir — private; default ./knowledge/, often a separate repo found via knowledge_path)
For anything the user collects or shares from outside (substack posts, X threads, macro / brokerage research, articles, links) plus their own notes:
- Run
/trade setuponce to scaffold the knowledge directory (user chooses the path; default./knowledge/). - Raw artifact (PDF / screenshot / text file) → run
/trade import <file_path>to parse it into structured YAML insubstack/ortwitter/. - *A shared link / article you read and synthesize* (a macro thesis, a research report — anything that isn't a clean platform post) → write a writedown** markdown digest at
<knowledge>/writedowns/YYYY-MM-DD-<topic>.md, in the user's language, with source attribution, a "not independently verified" caveat, and a bear case. See references/commands/import.md. - Author the user's own writedowns directly as markdown in
<knowledge>/writedowns/.
The analysis command auto-loads matching files from the knowledge dir on every invocation — see references/commands/analysis.md.
Trade
Multi-leg options trading assistant — concrete strikes, IV-aware structures, probability-weighted scenarios. Single skill with three subcommands, modeled on the `pbakaus/impeccable` pattern.
Commands
/trade setup # scaffold a personal knowledge directory
/trade import <file_path> # parse one PDF / screenshot / text artifact into YAML
/trade analysis [ticker | situation] # default — trade analysis flow
/trade <natural language> # any unrecognized first word routes to analysisEach subcommand has its own reference file under references/commands/. The main SKILL.md carries always-on context (Hard Rule, Response Rules, Core Principles, Structure-to-Regime matrix) plus the routing logic.
Triggers
- Trade analysis requests, options strategy recommendations, post-mortems
- Mentions of multi-leg structures: Jade Lizard, bull put / bear call spread, iron condor, diagonal, calendar
- Earnings positioning, IV / IV crush, channel checks, AH price action
- Any single-stock options play in a US-equity context
- Personal-knowledge management: "save this substack post", "parse this tweet screenshot", "set up my trade knowledge"
Full trigger list in the description field of SKILL.md.
Platform
CLI only — primary market data via TradingView desktop reader (finance-data-providers:tradingview-reader); fallback to Funda AI API (finance-data-providers:funda-data) for fundamentals, options flow / GEX, transcripts, sentiment, etc.
Setup
1. Install the `finance-skills` plugin marketplace and the finance-data-providers:tradingview-reader and finance-data-providers:funda-data skills. 2. Set the Funda API key (read from repo-root .env so worktrees inherit):
export FUNDA_API_KEY="your-funda-api-key"3. (Optional) Run /trade setup once to scaffold a personal knowledge directory for substack posts, X / twitter threads, and writedowns.
Reference Files
Always-relevant frameworks
| File | Description |
|---|---|
references/strategies.md | Structure-to-regime matching, LEAPS stock replacement, setup checklist, position management |
references/gamma-framework.md | Dealer GEX + options chain + IV term + flow → multi-factor probability map |
references/price-action-framework.md | Orderbook microstructure mental model — buy/sell imbalance, vacuum zones, consensus shifts |
Subcommand references (lazy-loaded by the router)
| File | Subcommand |
|---|---|
references/commands/setup.md | /trade setup workflow |
references/commands/import.md | /trade import workflow (raw artifact → YAML) |
references/commands/analysis.md | Default analysis preflight + situation → reference map |
Lazy-loaded library
| File | Description |
|---|---|
references/pitfalls/README.md | Index of 21 trading pitfalls (severity-tagged, lookup by trade type) |
references/pitfalls/NN-*.md | One file per pitfall — loaded only when relevant |
references/ticker/README.md | Index of closed trade case studies |
references/ticker/<name>.md | One file per case study (INTC, Mag-7, APP, NOK, TSEM, CBRS) |
Templates (used by /trade setup)
| File | Copied to |
|---|---|
references/commands/templates/knowledge-README.md | <knowledge>/README.md |
references/commands/templates/substack-template.yaml | <knowledge>/substack/_template.yaml |
references/commands/templates/twitter-template.yaml | <knowledge>/twitter/_template.yaml |
references/commands/templates/writedown-template.md | <knowledge>/writedowns/_template.md |
Coverage
- 21 analytical pitfalls covering consensus anchoring, flow misreading, IV crush traps, T+1 reverse drift, LEAPS vega tax, manipulator-tape recognition, channel-check sample bias, AH order-book fades, demand-IV vs event-IV, vega-axis sanity checks, and more.
- 6 detailed case studies (INTC, Mag-7, APP, NOK, TSEM, CBRS) showing thesis evolution, structure selection, and post-mortem lessons.
- Structure-to-regime quick reference covering high/low IV regimes paired with directional / neutral / manipulator-tape views.
- Personal-knowledge layer for the user's own substack / X / writedown collection, auto-loaded on every analysis.
/trade analysis [ticker | situation]
The default flow. Runs whenever the user invokes /trade analysis ... or when the first argument doesn't match a known subcommand (e.g., "analyze NVDA", "structure for TSLA earnings", "sell put on APP", a ticker in a trading context).
First, check this isn't an ingestion request. A pasted link / article / research the user wants you to read, study, digest, or save to the knowledge base is not a trade-analysis target even though it lands here by default (its first word doesn't match a subcommand). Route it to `import.md` and write the result to the user's personal knowledge dir (a writedown), never the curated references/ library. Only proceed with the analysis flow below when the user actually wants a trade analyzed.Preflight (always run, in order)
1. Locate and scan the personal knowledge directory. Resolve its path in this order — first one that exists wins: 1. $TRADE_KNOWLEDGE_DIR (environment variable), if set. 2. A knowledge_path: line in the nearest CLAUDE.md (project root, then ~/.claude/CLAUDE.md) — an absolute or ~-path. This is how a knowledge dir kept in a _different_ repo (e.g. a private notes repo) is found regardless of the current working directory. 3. ./knowledge/ relative to the current working directory.
If none resolves to an existing directory, skip this step. Once located:
- If
<knowledge>/index.md(or a legacyREADME.md) exists, read it as the user's personal index. - Skim every subdir of
<knowledge>/(e.g.substack/,twitter/,writedowns/, and any curated module dir such asfrank/) for filenames matching the current ticker / handle / topic, and load matches — parse.yaml, read.md. *Always ignore `/raw/`.**
2. Always load `../strategies.md` — structure-to-regime matching and setup checklist.
3. Always load `../pitfalls/19-direction-vega-independent-axes.md` — vega-axis sanity check. Wrong net vega sign (credit spread at low IVR, debit spread at high IVR) is the dominant directional-structure failure mode.
4. Pull market data via the finance-data-providers:tradingview-reader skill first (quotes, options chain, IV, screener). Fall back to finance-data-providers:funda-data for anything TradingView doesn't cover (fundamentals, filings, transcripts, analyst estimates, options flow/GEX, supply chain, sentiment, Polymarket, congressional trades, economics). Do not substitute yfinance, web search, or guesses.
5. Before predicting "IV crush" or "T+1 fade" — pull net options premium flow data and check the catalyst clock. Required by the Hard Rule. See pitfalls 20 and 21.
Situation → load index
| Situation | Files to load |
|---|---|
| Reading tape / explaining a move / vacuum-zone identification | `../price-action-framework.md` |
| Entry timing / pullback or retest entry / dip-buying a runner / chasing extension or a blow-off candle | `../pitfalls/27-retest-entry-confirmation.md` (buy the volume-confirmed hold, not the touch; quantify extension — the nearest MA can be −20%; don't chase a new-ATH wick); `../price-action-framework.md`; `../ticker/6981-2026-06.md` |
| "Why did the stock react this way to news?" | `../price-action-framework.md`; `../pitfalls/08-priced-in-not-binary.md` |
| Retail saturation / KOL-amplified setup / social-media-saturation check | `../price-action-framework.md` (float composition); `../pitfalls/20-post-earnings-momentum-vs-fade.md`, `../pitfalls/21-event-iv-vs-demand-iv.md`; `../ticker/nok-2026-04.md` |
| Earnings play | `../pitfalls/05-priced-in-percentage.md`, `../pitfalls/07-iv-crush-favors-short.md`, `../pitfalls/09-preconditions-not-direction.md`, `../pitfalls/10-t-plus-1-reverse-drift.md`, `../pitfalls/11-leaps-vega-tax.md`, `../pitfalls/20-post-earnings-momentum-vs-fade.md`, `../pitfalls/21-event-iv-vs-demand-iv.md` |
| Channel-check-driven thesis | `../pitfalls/14-channel-check-sample-bias.md`, `../pitfalls/24-capped-upside-vs-bull-conviction.md` (confluence ≥ 3 sources overrides single-source discount → activates the asymmetry rule); `../ticker/mdb-2026-05.md` (bull-conviction count needs a quality / inversion overlay) |
| High-vol single name (APP/MSTR/COIN/PLTR) | `../pitfalls/12-manipulator-tape.md`, `../pitfalls/13-take-profit-discipline.md`, `../pitfalls/15-orderbook-fade-signal.md`; `../ticker/app-2026-05.md` |
| Sell-the-news fade attempt | `../pitfalls/01-consensus-not-bearish.md`, `../pitfalls/02-single-flow-not-smart-money.md`, `../pitfalls/03-tape-over-dcf.md`, `../pitfalls/04-flip-on-invalidation.md`, `../pitfalls/20-post-earnings-momentum-vs-fade.md`; `../ticker/intc-2026-04.md`, `../ticker/nok-2026-04.md` |
| Multi-name cluster earnings | `../pitfalls/09-preconditions-not-direction.md`, `../pitfalls/10-t-plus-1-reverse-drift.md`, `../pitfalls/11-leaps-vega-tax.md`; `../ticker/mag7-2026-q1.md` |
| LEAPS / stock-replacement thesis | `../strategies.md` (LEAPS section); `../pitfalls/11-leaps-vega-tax.md`, `../pitfalls/16-bsm-drift-vs-vol.md`, `../pitfalls/18-roll-frequency-vs-iv-thesis.md`, `../pitfalls/21-event-iv-vs-demand-iv.md` |
| Vol-mispricing / IV-thesis claim | `../pitfalls/16-bsm-drift-vs-vol.md`, `../pitfalls/18-roll-frequency-vs-iv-thesis.md`, `../pitfalls/21-event-iv-vs-demand-iv.md` |
| Expiry-day / gamma squeeze / pinning | `../gamma-framework.md`; `../pitfalls/17-dealer-flow-not-retail.md` |
| Dealer flow / options market structure question | `../pitfalls/17-dealer-flow-not-retail.md`, `../pitfalls/21-event-iv-vs-demand-iv.md`; `../gamma-framework.md` |
| Post-earnings gap-up + intraday fade (consider holding vs reversal) | `../pitfalls/20-post-earnings-momentum-vs-fade.md`, `../pitfalls/10-t-plus-1-reverse-drift.md`; `../ticker/nok-2026-04.md` |
| High IV but no near-term event (>30 days to earnings) | `../pitfalls/21-event-iv-vs-demand-iv.md`, `../pitfalls/07-iv-crush-favors-short.md`; `../ticker/nok-2026-04.md` |
| Thematic re-rate / sector co-rally / KOL-amplified setup | `../pitfalls/20-post-earnings-momentum-vs-fade.md`, `../pitfalls/21-event-iv-vs-demand-iv.md`, `../pitfalls/24-capped-upside-vs-bull-conviction.md`; `../ticker/nok-2026-04.md`, `../ticker/snow-2026-05.md` |
| About to call "IV crush coming" or "fade incoming" | MANDATORY: `../pitfalls/20-post-earnings-momentum-vs-fade.md`, `../pitfalls/21-event-iv-vs-demand-iv.md` — pull flow data + catalyst clock BEFORE publishing the prediction |
| Hot IPO / pre-options-listing / lock-up front-run | `../ticker/cbrs-2026-05.md`; `../pitfalls/12-manipulator-tape.md`, `../pitfalls/13-take-profit-discipline.md`, `../pitfalls/15-orderbook-fade-signal.md` |
| Exit / take-profit decision — "let it run to target" vs book now | `../pitfalls/13-take-profit-discipline.md`, `../pitfalls/23-hazard-rate-discounting.md` (hazard rate sets the optimal exit threshold) |
| Rates / yields cited as the cause of an equity move | `../pitfalls/22-yields-not-causal.md` (yields are a coincident read, not the causal driver) |
| About to recommend Jade Lizard / Iron Condor / Calendar / Diagonal | MANDATORY: `../pitfalls/24-capped-upside-vs-bull-conviction.md`; `../ticker/snow-2026-05.md`, `../ticker/tsem-2026-05.md` — run the bull-conviction count + counterfactual P/L matrix FIRST. If count ≥ 4, these structures are forbidden. |
| High-conviction bull setup (channel confluence + thematic re-rate + de-risked stock) | `../pitfalls/24-capped-upside-vs-bull-conviction.md`; `../ticker/snow-2026-05.md`; `../strategies.md` (asymmetry-rule section) — use naked short put / bull put spread / risk reversal / long call, NOT Jade Lizard or IC |
| Structure choice for directional conviction (high or low gap to consensus) | `../ticker/tsem-2026-05.md`, `../ticker/snow-2026-05.md`; `../pitfalls/24-capped-upside-vs-bull-conviction.md`, `../pitfalls/19-direction-vega-independent-axes.md`, `../pitfalls/06-clever-structures-fading-conviction.md` |
| VIX / volatility hedge / "short the market" via VIX / tail-crash hedge | MANDATORY: `../pitfalls/25-vix-options-futures-mechanics.md` (anchor to the future not spot; contango bleed; beta < 1; debit-spread skew bite); `../strategies.md` (VIX section); `../ticker/vix-2026-06.md` — pull the VIX term structure (VIX9D / VIX / VIX3M / VIX6M) and model P/L off the future, never spot |
| M&A / spin / sum-of-parts / "discounted proxy for a private or to-be-listed co" / any stock-based deal consideration | MANDATORY: `../pitfalls/26-stock-consideration-share-vs-dollar-anchored.md` (share-anchored vs dollar-anchored — a fixed reference price = a fixed share count that marks to market; normalize the split basis; cross-check the tape) + `../ticker/sats-2026-06.md`; `../pitfalls/23-hazard-rate-discounting.md` (why a locked/undelivered stake trades at a discount), `../pitfalls/08-priced-in-not-binary.md` — verify the consideration mechanism from the primary 8-K/10-K BEFORE concluding whether the target's stock flows through |
Output rules (reminders)
- Analysis order: tape → sentiment/catalysts → valuation. Never start with DCF for short-term trades.
- Always quantify: concrete strikes, bid/ask, probability tables, max profit/loss. No vague "consider a bull put spread".
- Be self-critical: when pushed back, update estimates and say so. Don't defensively reinforce prior calls.
- Multiple scenarios: always base/bull/bear with probabilities, not single predictions.
- Defined risk always on event trades — never naked.
- Vega sanity check before publishing any directional structure recommendation.
/trade import <file_path | url>
Ingest one external trading-knowledge item into the user's personal knowledge directory — two shapes:
- A clean platform post (a substack post, or an X / twitter post / thread), as a raw artifact or a link → parse per the matching template into structured YAML in
substack/ortwitter/. - Other external research (a macro / brokerage report, a blog or WeChat article, a pasted thesis — anything you must read and synthesize rather than mechanically extract) → write a writedown markdown digest in
writedowns/.
Destination — read first. Output always lands in the user's personal knowledge dir (resolved the wayanalysisdoes:$TRADE_KNOWLEDGE_DIR→ aknowledge_path:line inCLAUDE.md→./knowledge/). A third-party article digest is the user's collected research — it does NOT go in this repo's curatedreferences/library, even if the user says "our knowledge base."references/is first-party content that ships to every installer; see the destination rule inSKILL.md→ "Adding to the Knowledge Base." If you genuinely can't tell which is meant, ask before writing.
Workflow
1. Resolve the source
The argument is a single item — a file path or a URL / shared link. Accept:
- Absolute paths; paths relative to cwd; paths relative to the knowledge dir (e.g.,
substack/raw/foo.pdf) - A URL (substack / X / WeChat / blog / research link) — read it with the web reader (
finance-social-readers:opencli-reader'sweb read, orWebFetch). If the page is paywalled or unreadable, ask the user for a PDF / screenshot / paste instead.
For a file, verify it exists and is a supported type:
| Type | Extensions | Read with |
|---|---|---|
.pdf | Read tool (use pages arg if >10 pages) | |
| Image | .png, .jpg, .jpeg, .webp | Read tool |
| Text | .txt, .md | Read tool |
If a file doesn't exist or the type isn't supported, stop and report — do not guess.
2. Locate the knowledge directory
Find the user's knowledge tree by checking, in order:
1. If the source path is inside a recognizable */{substack,twitter}/raw/ subtree, walk up to that knowledge root. 2. Otherwise, check ./knowledge/ in the cwd. 3. Otherwise, walk up from cwd looking for a directory containing index.md (or a legacy README.md) with # Personal Trade Knowledge as the heading. 4. If none found, stop and tell the user to run /trade setup first (or pass --knowledge-dir=<path> — accept this as an optional inline flag if the user provides it).
3. Detect content kind
Decide among three kinds: substack post, X / twitter post / thread, or research digest (other external research → a writedown).
Strong signals (use without asking):
- Path contains
substack/raw/or URL onhttps://*.substack.com→ substack (YAML) - Path contains
twitter/raw/or URL onhttps://(twitter|x).com→ twitter (YAML)
Inference from content (if signals are absent):
- Long-form (>500 words), paragraphed prose, byline, "Subscribe" CTA → substack (YAML)
- Short numbered posts, @handle visible, like/retweet counts, "Quote" / "Reply" UI → twitter (YAML)
- Anything that isn't a clean substack/X post — a macro or brokerage research report, a WeChat / blog article, a long thesis you must read and synthesize (distilling viewpoints, not extracting a post's fields) → research digest → writedown (markdown, not YAML). This is the default for "read this article and save its viewpoints."
Ambiguous → ask the user. Present the options (substack / twitter / research-writedown / cancel) via AskUserQuestion. Never silently guess on ambiguous input.
For the research-digest kind, skip the YAML steps (4 & 6) and follow § Research-digest path below.
4. Read and parse
Read the file with the Read tool. Then extract every field defined in the matching template:
- Substack →
<knowledge>/substack/_template.yaml - X / twitter →
<knowledge>/twitter/_template.yaml
Field rules:
- Required fields (
author/handle,title/posts,date,tickers,body/posts): fill from the source. If a required field truly isn't present, setnulland note in your post-import summary which fields you couldn't extract. - Optional fields:
nullif not in the source. Do not invent. - Tickers: lowercase, comma-separated string, includes every ticker mentioned in the body.
- Body / posts text: verbatim from source. Drop nav, ads, paywall stubs, footer, UI chrome. Preserve paragraph breaks. Use YAML
|block scalar for multi-line strings. - Media description: if charts / screenshots are embedded, describe what they show in plain English. The model can't recall the image later from a YAML file.
- Provenance: always fill
raw_artifact:with the source path (relative to the knowledge root) andingested_at:with today's date inYYYY-MM-DD.
5. Choose the output path
Derive a slug from author/handle + a short title or topic, kebab-case, lowercase, ASCII.
| Kind | Path | Example |
|---|---|---|
| substack | <knowledge>/substack/<author-slug>-<title-slug>.yaml | substack/anonresearch-nvda-thesis.yaml |
<knowledge>/twitter/<handle-slug>-<topic-slug>.yaml | twitter/unusual_whales-nvda-gex-pin.yaml | |
| research (digest) | <knowledge>/writedowns/YYYY-MM-DD-<topic-slug>.md | writedowns/2026-06-14-warsh-ai-productivity-jcurve.md |
If a file at the target path already exists, do not overwrite. Append a numeric suffix (-2, -3, …) and report the rename, or ask whether to skip / overwrite — never silently overwrite.
6. Write the YAML
Write the parsed YAML. Validate it's valid YAML 1.2. Common gotchas:
- Multi-line strings: use
|(preserves newlines) or|-(strips trailing newline). Don't use>for body text — it folds newlines. - Strings with
:or leading-: quote them. - Empty lists / nulls:
[]andnull, not blank.
7. Summarize
Report to the user:
- The output file path
- Which fields were filled vs left
null - Any parsing concerns (multi-page PDF truncation, blurry image regions, ambiguous tickers)
- Suggested next step: review the YAML, fill
why_saved/my_take/relatedif not done
Do not delete or move the raw artifact. The user manages that themselves.
Research-digest path (writedown)
When step 3 classifies the item as research (not a clean substack/X post), don't force it into YAML — write a writedown that captures the viewpoints, not the layout.
1. Read fully (file or URL via the web reader). Distill the argument; don't translate verbatim. 2. Output path: <knowledge>/writedowns/YYYY-MM-DD-<topic-slug>.md (kebab-case, lowercase, ASCII). Never overwrite — suffix / ask. 3. Frontmatter (per <knowledge>/writedowns/_template.md): source: writedown, date, tickers (lowercase, comma-separated — the names the thesis bears on, for the analysis scan to match), tags, kind: research, status: watching. 4. Write in the user's language (match the existing writedowns — these are typically Chinese). 5. Structure: source attribution + a "data is the source's, not independently verified" caveat → TL;DR (the one-sentence bet + summary) → the argument (faithful to the source) → signposts (how to verify it plays out) → bear case / what would falsify it (always include — the user builds both sides) → trading implications clearly marked as your synthesis, not the source's claims → related cross-links (to references/ pitfalls/case-studies and other local knowledge). 6. Index: add a one-line entry to the knowledge dir's README.md (or index.md) under a "Macro thesis digests" / research section, mirroring existing entries. 7. Summarize to the user: the output path, the core viewpoints captured, and that data points are the source's (unverified).
Do not commit — the personal knowledge repo is version-tracked on purpose; leave staging to the user.
Constraints
- One file per invocation. Batch imports happen via multiple invocations — don't walk a directory.
- Output to the personal knowledge dir ONLY — never the curated `references/`. A third-party article/digest is the user's collected research, regardless of "our knowledge base" phrasing. See the destination callout at the top.
- Never modify the source file. Read-only.
- Never overwrite an existing file. Suffix, skip, or ask.
- Never invent data.
nullfor missing YAML fields; for digests, attribute figures to the source and flag them not-independently-verified. Note unfilled required fields in the summary. - Stop and ask on ambiguous kind. Don't guess among substack / twitter / research-writedown when signals are absent.
- Refuse if no knowledge dir exists. Direct the user to
/trade setup.
/trade report <tickers | basket>
A daily capital-flow / 资金流向 read across one or more names: who is buying vs selling today, split as a 散户 / 大单 / 机构 proxy, plus the price/volume context — rendered as a comparison table with a cross-section synthesis.
Runs whenever the user invokes /trade report ..., or asks for 资金流向 / 流入流出 / 净流入·净流出 / 散户·大单·机构 / capital flow / money flow / "who's buying" across a name or a basket.
Read the 口径 (data-source reality) FIRST — and state it in every reply. There is no stock-side "retail / large-order / institutional daily net inflow" feed available here. The moomoo / Futu three-layer stock flow needs a logged-in FutuOpenD gateway + the `futu-api` SDK (get_financial_unusual) — env-gated and usually not running. So this command builds the read from Funda options premium-flow as the proxy:>
- 大单 / 机构 (smart money) ← options bullish/bearish premium, net call/put premium, ask-vs-bid volume, and big-ticket flow alerts. Real institutional/large positioning shows up in options $ first.- 散户 (retail) ← news/sentiment tone (a weak proxy, not $ flow; coverage is thin on small / niche names).- 机构 stock-side daily net flow ← not available (Funda only has quarterly 13F ownership). Say so; don't fabricate it.>
If the user wants the true moomoo three-layer stock flow, point them to the Futu path:pip install futu-api+ start FutuOpenD on127.0.0.1:11111(you can install the SDK but cannot log in their gateway). Seefutu-capital-anomalyskill.
Arguments
- Explicit tickers (space- or comma-separated):
report COHR LITE MU→ run those. - A sector / theme word (e.g. "光" / optical, "存储" / memory, "光模块+存储"): confirm the ticker universe first (propose constituents + a market, ask via
AskUserQuestion) — don't silently guess a basket. Once confirmed, group the output by basket. - Optional date: default today. The endpoints return the latest session; if the user names a date, pass it through where the endpoint supports
date=. - Mixed baskets → render one table per basket so the cross-section reads cleanly.
Workflow
1. Resolve the data path
- Resolve the Funda key per the
finance-data-providers:funda-dataskill (envFUNDA_API_KEY, else.envat the repo root; this user's `.env` names it `FUNDA_AI_API_KEY` — seeSKILL.md→ Data Access). When inside a worktree, the key lives in the main repo.env. - All calls are
GET https://api.funda.ai/v1/...withAuthorization: Bearer $KEY. For more than ~3 tickers, batch them in one small script (loop + aggregate) rather than dozens of separate calls.
2. Pull, per ticker
| # | Endpoint | Gives | Use for |
|---|---|---|---|
| 1 | options/stock?ticker=<T>&type=options-volume | today's row: bullish_premium/bearish_premium, net_call_premium/net_put_premium, call/put_volume, *_volume_ask_side/*_bid_side, avg_7/30_day_*_volume, OI | 核心 — complete daily aggregate; the 大单/机构 direction |
| 2 | options/flow-alerts?ticker=<T>&min_premium=50000&limit=200 | big tickets: type (call/put), total_premium, total_ask_side_prem, has_sweep, next_earnings_date | 大单 detail + earnings date |
| 3 | stock-price?ticker=<T>&limit=2 | last 2 EOD rows (param is `ticker`, not symbol) | day % change = historical[0].close vs [1].close |
| 4 | news/sentiment?ticker=<T> | ticker_sentiment positive/negative/neutral counts + latest direction | 散户 tone proxy |
Quote-endpoint trap: /v1/quotes?type= rejects realtime-quotes / price-change / exchange-quotes (FMP 400). Use stock-price for day change. Mind market-holiday gaps when computing "vs prior close" (e.g. Juneteenth → prior trading day is not yesterday).
flow-alerts truncation — do not ignore: the call caps at limit (200). When a name returns exactly the limit, there are more big tickets than you fetched, so your call/put counts and summed premium are truncated — use them only as an activity signal and take direction from `options-volume` (the complete aggregate). If you bound coverage this way, say so.
3. Derive the per-ticker metrics
- 涨跌% — from #3.
- 净期权流向 (牛−熊) =
bullish_premium − bearish_premium($). Positive = net bullish smart-money $. - 净 Call 权利金 / 净 Put 权利金 =
net_call_premium/net_put_premium. Sign matters: positive = net bought (ask-side); negative call premium = calls net SOLD (bearish/distribution). - 放量倍数 =
call_volume / avg_30_day_call_volume(and puts). <1 = below average / quiet. - 盘口 —
call_ask_sidevscall_bid_side(ask>bid = aggressive call buying); same for puts (put ask>bid = put buying). Cross-check it agrees with the premium signs — that agreement IS your adversarial check. - 财报日 —
next_earnings_datefrom #2.
4. Classify each name (聪明钱判定)
| Label | Trigger |
|---|---|
| 🟢 多头确认 | price up and net flow bullish (牛>熊) and calls net bought (net_call_prem>0, call ask>bid) and puts net sold — ideally with call volume ≥ ~1× avg (放量). Clean, confirmed long. |
| 🔴 背离 / 派发 | price up but options bearish — calls net SOLD (net_call_prem<0, call ask<bid) and/or 熊>牛. The "价涨期权背离" tell; the relative weak name. |
| 🟡 价拉·期权没跟 | price up but options light (volume << avg) and net flow ~flat. Momentum not yet confirmed by smart money — needs follow-through. |
| ⚖️ 双押 / 事件 | both call and put premium strongly net-bought and earnings within ~1–2 weeks → earnings straddle positioning. Don't read the big "inflow" as single-direction conviction. |
Always flag earnings proximity (from #2): a name reporting in days explains two-sided premium; a name reporting weeks out gives a cleaner directional read.
5. Output
- One table per basket, columns:
票 | 涨跌% | 净期权流向 (牛−熊, $M) | 净Call $M | 净Put $M | Call量/30日 | 盘口 | 聪明钱判定. Premiums in$M, one decimal. - Then a cross-section synthesis: who's the clean long, who's diverging/distributing, who's price-only-unconfirmed, who's event-driven; and the basket vs basket comparison if more than one.
- A 散户 (news 情绪) line: counts + tone, with the thin-coverage caveat.
- Respond in the user's language (Chinese by default — see User Profile).
Constraints
- Read-only. This is data presentation, never a trade recommendation, price target, or buy/sell call. Close with a one-line 非投资建议 note.
- State the 口径 every time: options-flow proxy for 大单/机构 + news for 散户; no stock-side three-layer net flow; flow-alerts truncation; earnings-driven two-sided flow ≠ single-direction.
- A single big order ≠ smart money — read the aggregate premium, not one print. See `../pitfalls/02-single-flow-not-smart-money.md`.
- Options flow is dealer-/positioning-driven, not "retail money" — see `../pitfalls/17-dealer-flow-not-retail.md`.
- Don't fabricate numbers or a retail/institutional split the feed doesn't provide. If an endpoint errors or a name has no listed options, say so for that name and continue.
- This is a read, not the full structure flow — if the user then wants to act (size, pick a structure, model P/L), route to `analysis.md` and run the three-axes / bull-conviction checks there.
Related
- `../pitfalls/02-single-flow-not-smart-money.md` — one institutional order isn't edge.
- `../pitfalls/17-dealer-flow-not-retail.md` — options flow is dealer hedging, not retail direction.
- `../pitfalls/20-post-earnings-momentum-vs-fade.md` · `../pitfalls/21-event-iv-vs-demand-iv.md` — pull flow + check the catalyst clock before any "fade / IV crush" call.
- `../gamma-framework.md` — add GEX (
type=greek-exposure) for dealer-positioning context when asked. - `analysis.md` — when the read turns into an actual trade decision.
/trade setup
Scaffold a personal knowledge directory so the user can drop their own trading-related documents — substack posts, X / twitter threads, personal writedowns, screenshots, PDFs — that the trade skill loads alongside the curated pitfalls library and case studies.
External content (substack, X) is parsed into structured YAML at ingestion time via /trade import. User-authored writedowns stay as markdown.
Workflow
1. Ask for the target directory (REQUIRED)
Always ask first — never assume. Use AskUserQuestion (or a plain conversational ask if more natural). Default suggestion: ./knowledge relative to the current working directory.
Show the user the resolved absolute path before creating anything. If the path looks unsafe (resolves to /, /usr, /etc, a home directory root, or anywhere outside the cwd tree without explicit confirmation), refuse and ask again.
Accept either:
- A path relative to cwd (e.g.,
./knowledge,notes/trade-kb) - An absolute path (e.g.,
/Users/me/trade-knowledge)
2. Create the directory structure
<target>/
index.md # OKF navigable index + usage guide (from template)
README.md # One-line stub pointing to index.md (from template)
substack/
.gitkeep
raw/ # User drops PDFs / screenshots here
.gitkeep
_template.yaml # YAML schema for parsed substack posts
twitter/ # Covers X / twitter
.gitkeep
raw/
.gitkeep
_template.yaml # YAML schema for parsed X posts / threads
writedowns/
.gitkeep
_template.md # Markdown template — user authors directlyIdempotency rules:
- If a file already exists, do not overwrite. Skip silently.
- If a directory already exists, ensure templates and
.gitkeepfiles are present. - After running, list which files were created vs skipped.
3. Write the templates
Read each template file from references/commands/templates/ of this skill and write it to the corresponding location in the user's knowledge tree:
| Source (in skill) | Destination (in user's knowledge dir) |
|---|---|
references/commands/templates/knowledge-index.md | index.md |
references/commands/templates/knowledge-README.md | README.md |
references/commands/templates/substack-template.yaml | substack/_template.yaml |
references/commands/templates/twitter-template.yaml | twitter/_template.yaml |
references/commands/templates/writedown-template.md | writedowns/_template.md |
4. Add the knowledge dir to gitignore
The knowledge dir is always meant to stay local — it holds personal trade notes, copied substack content, screenshots, and writedowns that should never be committed back to a shared repo. Make sure it's ignored everywhere.
Always do both, in this order:
4a. Local project `.gitignore`. If a .gitignore exists in the project root (resolve via git rev-parse --show-toplevel), check whether it already ignores the knowledge dir. If not, append:
# Personal trade knowledge scaffolded by `/trade setup` — never commit.
<knowledge-dir-relative-to-repo-root>/If no git repo is detected, skip 4a silently.
4b. User's global gitignore. Resolve the path in this order:
1. git config --global --get core.excludesfile — if set, use that path. 2. Else $XDG_CONFIG_HOME/git/ignore. 3. Else $HOME/.config/git/ignore (the git default when XDG_CONFIG_HOME is unset).
Create the file (and parent directory) if it doesn't exist. Do not modify git config — when core.excludesfile is unset, git auto-uses ~/.config/git/ignore, so writing the file is enough.
Check whether the file already contains a knowledge/ (or equivalent) entry. If not, append:
# Personal trade knowledge scaffolded by `/trade setup` — never commit.
knowledge/The global entry is intentionally unanchored so it matches a knowledge/ directory at any depth in any project. If the user picked a non-default knowledge-dir name (e.g., notes/trade-kb), append both knowledge/ (for default) and the chosen pattern.
Idempotency: never duplicate entries. Skip and report if already present.
Report to the user which files were edited (project .gitignore, global gitignore) and which were already correct.
5. Tell the user how to add content
After scaffolding, explain the two ingestion paths:
External content (substack, X) — drop & import:
1. Drop the raw artifact (PDF / screenshot / .txt) into substack/raw/ or twitter/raw/. 2. Run /trade import <file_path> to parse it into structured YAML alongside the parsed-content folder. 3. Optional: move or delete the raw artifact after import. Nothing deletes raw files automatically.
User-authored writedowns — direct markdown:
1. Copy writedowns/_template.md → writedowns/YYYY-MM-DD-<topic>.md 2. Edit directly. No parsing needed.
6. If the knowledge dir is outside the current repo, record its path
analysis discovers the knowledge dir by, in order: $TRADE_KNOWLEDGE_DIR → a knowledge_path: line in the nearest CLAUDE.md → ./knowledge/. The default ./knowledge/ only works when you run from the repo that holds it.
So if the user chose a path outside the current working directory (e.g. a separate private notes repo like ~/code/notes/knowledge), tell them to make it discoverable from anywhere by either:
- adding
knowledge_path: <absolute-or-~-path>to their~/.claude/CLAUDE.md(global) or a projectCLAUDE.md, or - exporting
TRADE_KNOWLEDGE_DIR=<path>in their shell profile.
Offer to write the ~/.claude/CLAUDE.md line for them (append-only, deduped). If the chosen path is the default ./knowledge/ inside the current repo, skip this step.
Constraints
- Always ask for the directory first. Never assume a target path.
- Never write outside the user-confirmed directory — except the two gitignore files in step 4.
- Never overwrite existing files. Skip and report. Gitignore writes are append-only and deduped.
- Never modify `git config`. Step 4b creates
~/.config/git/ignoreif needed; git picks it up automatically.
Parsing rules (file types, field extraction, slug naming, idempotency) live in `import.md` — this command only handles scaffolding.
Personal Trade Knowledge
This directory holds your own trading research and notes. It sits alongside the curated trade skill library (pitfalls + case studies + frameworks) but is owned and edited entirely by you.
It is an Open Knowledge Format (OKF) bundle — the same portable markdown + YAML convention the curated library uses (see the skill's references/OKF.md). The trade skill automatically scans this directory for context that matches the current ticker, theme, or trade question. Filenames matter — put the ticker, author handle, or topic in the filename so the model can match.
Two ingestion paths
External content (substack, X) — drop & import
External posts usually start life as a PDF export or a screenshot. The flow:
1. Drop the raw artifact in substack/raw/ or twitter/raw/. Supported: .pdf, .png, .jpg, .jpeg, .webp, .txt, or a copy-pasted text file. 2. Run /trade import <file_path> (or ask in natural language: "import substack/raw/anonresearch-nvda.pdf"). 3. The import flow reads the artifact, extracts fields per _template.yaml, and writes a structured YAML alongside the raw folder. Example output: substack/anonresearch-nvda-thesis.yaml. 4. The raw artifact is never modified or deleted. Move or remove it yourself if you want to.
Parsed YAML artifacts are kept as structured-data OKF concepts. Their fields map to the OKF standard set: source → type, title → title, url → resource, date → timestamp, tags → tags.
User-authored writedowns — direct markdown
Writedowns are your own notes (trade journal, thesis docs, channel-check summaries, post-mortems). You write them yourself, no parsing needed — each is an OKF markdown concept with type: Writedown in its frontmatter.
1. Copy writedowns/_template.md → writedowns/YYYY-MM-DD-<topic>.md 2. Fill in the frontmatter and body 3. Commit / sync as you like
Layout
| Folder | Contents | Format |
|---|---|---|
substack/ | Parsed substack posts | .yaml |
substack/raw/ | Original PDFs / screenshots / clippings | binary / text |
twitter/ | Parsed X / twitter posts and threads | .yaml |
twitter/raw/ | Original screenshots / PDFs | binary / text |
writedowns/ | Your own notes | .md |
Naming convention
| Folder | Pattern | Example |
|---|---|---|
substack/ | <author-slug>-<short-title-slug>.yaml | anonresearch-nvda-thesis.yaml |
twitter/ | <handle>-<topic-or-date>.yaml | unusual_whales-nvda-gex-pin.yaml |
writedowns/ | YYYY-MM-DD-<topic>.md | 2026-05-15-cbrs-leg-management.md |
Slugs are kebab-case, lowercase, ASCII only. If a document is ticker-specific, include the ticker in lowercase somewhere in the filename so the model can match on it.
How the trade skill loads from here
When you ask a trade question, the model:
1. Locates this directory by resolving, in order: $TRADE_KNOWLEDGE_DIR → a knowledge_path: line in the nearest CLAUDE.md → ./knowledge/ in the current repo. (The first two let this dir live in a different repo and still be found from anywhere — see /trade setup step 6.) 2. Reads this index.md (the OKF index) if it exists. 3. Skims every subdir's filenames (substack, twitter, writedowns, and any curated module dir) for matches against the current ticker / theme, ignoring */raw/. 4. Loads matched files — YAML for parsed external content, markdown for writedowns / module docs.
User documents augment the curated library, they don't replace it. Pitfalls remain authoritative for framework rules; your knowledge adds primary sources and personal context.
Git tracking
/trade setup adds knowledge/ to both your project .gitignore and your global gitignore (~/.config/git/ignore) so it never gets committed by accident. This is the safe default — your trade notes stay on your machine.
If you actually want to version-track this directory in a specific repo, remove the entry from that repo's .gitignore (the global one will still keep it out of every other repo). If you want a partial setup — track parsed YAML but exclude the large raw artifacts — replace the project .gitignore entry with:
knowledge/*/raw/Re-running setup
Running /trade setup again is safe — it never overwrites existing files. It will only fill in missing scaffolding (subdirectories, templates, this index, gitignore entries).
Personal Trade Knowledge
See [`index.md`](index.md) — the OKF navigable index and usage guide for this knowledge bundle. This stub exists only for GitHub's directory rendering; index.md is canonical.
# Schema for a parsed substack post.
# Produced by Claude when ingesting a raw artifact from `substack/raw/`.
# Do not edit this file directly — copy it, then fill the fields from the
# source PDF / screenshot / clipping.
#
# OKF mapping (Open Knowledge Format v0.1): this YAML file is a structured-data
# concept in the personal knowledge OKF bundle. Its fields map to the OKF
# standard set as — source -> type, title -> title, url -> resource,
# date -> timestamp, tags -> tags. See the skill's references/OKF.md.
source: substack
# Required ----------------------------------------------------------------
# Author or publication name as it appears on the post.
author: null
# Canonical URL of the post. Use null if not present in the source.
url: null
# Article title, verbatim.
title: null
# Publication date in YYYY-MM-DD. Best-effort if only month is visible.
date: null
# Lowercase, comma-separated tickers mentioned anywhere in the body.
# Example: "nvda,amd,avgo"
tickers: null
# Full article body as a multi-line string. Use the `|` block scalar to
# preserve paragraph breaks. Drop nav, ads, paywall stubs, footer.
body: |
Paste the full article text here, line by line.
# Optional ----------------------------------------------------------------
# Comma-separated free-form tags. Examples: "ai-capex,supply-chain,iv-crush"
tags: null
# One-line note from the user on why this article matters.
why_saved: null
# Quotes the user found most load-bearing. Each item is a short verbatim
# excerpt (one or two sentences). Used by the model when scanning.
key_passages: []
# - "Verbatim quote one."
# - "Verbatim quote two."
# Description of any embedded charts / images. The model can't recall the
# images later from this YAML, so describe what they show.
media_description: null
# Cross-links to curated references or other knowledge entries.
related:
pitfalls: [] # e.g., ["references/pitfalls/19-direction-vega-independent-axes.md"]
case_studies: [] # e.g., ["references/ticker/cbrs-2026-05.md"]
knowledge: [] # e.g., ["../twitter/unusual_whales-nvda-gex.yaml"]
# User's own reaction. Markdown allowed in this string.
my_take: null
# Provenance — which raw artifact this was parsed from.
raw_artifact: null # e.g., "substack/raw/2026-05-15-anonresearch-nvda.pdf"
ingested_at: null # YYYY-MM-DD when the parse happened
# Schema for a parsed X / twitter post or thread.
# Produced by Claude when ingesting a raw artifact from `twitter/raw/`.
# Do not edit this file directly — copy it, then fill the fields from the
# source screenshot / PDF / clipping.
#
# OKF mapping (Open Knowledge Format v0.1): this YAML file is a structured-data
# concept in the personal knowledge OKF bundle. Its fields map to the OKF
# standard set as — source -> type, handle -> title, url -> resource,
# date -> timestamp, tags -> tags. See the skill's references/OKF.md.
source: twitter
# Required ----------------------------------------------------------------
# Handle as written, including the leading @. Example: "@unusual_whales"
handle: null
# URL of the root post (or first tweet of a thread). Use null if not visible.
url: null
# tweet | thread | reply
kind: null
# Date of the root post in YYYY-MM-DD. Best-effort from visible timestamps.
date: null
# Lowercase, comma-separated tickers mentioned anywhere in the posts.
# Example: "nvda,smci,arm"
tickers: null
# Ordered list of posts. For a single tweet, one entry. For a thread,
# preserve the original order.
posts:
- index: 1
text: |
Verbatim text of the first tweet.
timestamp: null # ISO 8601 if visible, else null
metrics:
replies: null
retweets: null
likes: null
views: null
# Optional ----------------------------------------------------------------
tags: null # comma-separated free-form tags
why_saved: null # one-line note from the user
# Description of attached charts / screenshots / videos. The model can't
# recall the images later from this YAML, so describe what they show
# (e.g., "GEX chart — biggest positive gamma at 145 strike, 0DTE").
media_description: null
# Cross-links.
related:
pitfalls: [] # e.g., ["references/pitfalls/02-single-flow-not-smart-money.md"]
case_studies: []
knowledge: []
my_take: null # user reaction, markdown allowed in this string
# Provenance.
raw_artifact: null # e.g., "twitter/raw/unusual_whales-nvda-gex.png"
ingested_at: null # YYYY-MM-DD
{YYYY-MM-DD} — {Topic}
TL;DR
One paragraph. State the conclusion first. If this is a trade thesis, name the ticker, direction, structure, and rough sizing in this paragraph.
---
Context
- What prompted this writedown? (catalyst, news, channel check, vibe shift, etc.)
- Where are we in the cycle? (event clock — earnings T-N days, post-event, mid-quarter)
- Stock state: price, recent move, IV rank
- Sentiment state: sell-side, social, channel checks
Thesis
Step-by-step argument. Be falsifiable — what would make you wrong?
1. ... 2. ... 3. ...
Structure (if trading)
- Setup: strikes, expiry, debit/credit, max profit/loss
- Vega sign: long vega / short vega / neutral (sanity-check against IVR)
- Catalyst alignment: does the expiry cover the catalyst?
- Exit plan: when to take, when to flip, when to cut
What could invalidate this
- ...
- ...
Open questions
- ...
---
Related
- Pitfall:
references/pitfalls/NN-*.md - Case study:
references/ticker/<name>.md - Other knowledge:
../substack/<file>.md,../twitter/<file>.md
---
Updates
YYYY-MM-DD
Update text — what changed, did the thesis hold, what did you learn.
Gamma + Options Structure Framework
Multi-factor confluence framework using dealer gamma, options chain structure, IV term changes, and flow to build short-term price probability maps.
Critical rule: This framework outputs probability + key levels, not direction predictions. Use it to size and structure trades, not to decide direction. Direction comes from tape + catalysts. Inverting this — letting gamma decide direction — fades dealer hedge flow with retail-style "market structure" interpretation.
---
Signal Effectiveness Triage
| Signal | Effectiveness | Notes |
|---|---|---|
| Dealer GEX (Gamma Exposure) | HIGH | Net short gamma → dealers chase (amplify); net long → dealers fade (pin) |
| Zero gamma flip level | HIGH | Crossing this level reverses dealer hedge sign — real regime change |
| Call wall / put wall | MEDIUM | OI clusters act as magnets/resistance; broken when catalyst hits |
| IV term structure shifts | MEDIUM | Far IV rising before near IV = market pricing mid-term catalyst |
| Skew shift (put-call IV) | MEDIUM | Sudden put-skew steepening often leads downside |
| Unusual flow (sweeps, blocks) | LOW-MED | Need confluence; single flow is noise unless multi-strike same-direction |
| Max pain | LOW | Statistically weak; only weak edge in long-gamma + no-catalyst windows |
| P/C ratio | LOW | Hedging and directional flow blended; too coarse |
---
The Confluence Stack (5 Layers)
Read top-down. Each layer constrains the next.
Layer 1 — Regime
- VIX level: low VIX = breakouts extend; high VIX = breakouts fade
- Sector cohort direction: single-name breakouts amplified by cohort confirm; faded by cohort reverse
- Macro catalyst proximity: Fed/CPI within 24h erodes gamma signal (cross-asset flow displaces dealer hedge book)
Layer 2 — Gamma Structure
- Current price vs zero-gamma flip:
- Above flip + dealers long gamma → breakouts compressed, mean-revert
- Below flip + dealers short gamma → breakouts amplified (gamma squeeze mechanic)
- Nearest call wall: resistance trigger (broken call wall → dealers re-hedge upward)
- Nearest put wall: support floor (broken put wall → dealers re-hedge downward)
Layer 3 — IV / Vol
- IVR < 30: long premium / debit structure favored (vol has room to expand)
- IVR > 70: short premium / credit structure favored (vol has room to compress)
- Term backwardation (near > far): trade short end, near catalyst dominates
- Term contango (near < far): trade longer-dated, mid-term catalyst pricing
Layer 4 — Flow
- Same-direction multi-strike sweeps: confluence signal (not single-block)
- Block trades: distinguish single-desk positioning vs multi-institution flow
- Dark pool / ETF rebalance: end-of-day directional pressure indicators
Layer 5 — Tape
- Volume vs 5-day average at key levels
- Number of prior tests of resistance/support (3rd test breakout > 1st test)
- HVN / LVN volume profile: high-volume nodes are sticky; low-volume nodes get traversed fast
---
Output Format
NOT: "stock will hit $X" INSTEAD: probability + levels + triggers + invalidations + structure recommendation
Template
Direction probability: up 65% / down 25% / range 10%
Key levels:
- Breakout trigger: $108 (call wall + zero gamma confluence)
- Acceleration: $112 (next call wall, dealer flips short gamma)
- Resistance cap: $118 (far-month OI peak)
- Drawdown invalidation: $103 (put wall break)
Trigger conditions (ALL must hold):
- Break $108 with volume > 1.5× 5D avg
- Sector cohort not down >1% same day
- VIX not above 22
Failure conditions (ANY triggers exit):
- No close above $108 within 30 min of break → fade trade
- Cohort reverses → quick stop
Expected move speed:
- Short-gamma regime: $112 within 2-4 hours of break
- Long-gamma regime: choppy, 48 hours to advance
Position structure:
- IVR 65 → debit call spread > naked long call (vega halved)
- Sizing: 1× normal (no event proximity)---
When the Framework Works
1. Liquid large-caps — public GEX data approximation acceptable 2. No major catalyst within 48h — gamma not overridden by fundamental shift 3. Short-to-mid horizon (1–5 days) 4. As confluence input, not standalone signal
When It Fails
1. Earnings windows — IV crush invalidates model; fundamental shift overrides gamma. Skip framework. 2. Macro shocks (Fed surprise, CPI surprise) — cross-asset flow displaces dealer book 3. Small-caps / low-liquidity — public GEX data error too high to trust 4. Regime change days — yesterday's OI doesn't reflect today's hedge book 5. 0DTE-dominated names (SPX, QQQ) — public GEX undercounts intraday gamma flow
---
Public GEX Data Caveats
Public dealer gamma estimates (SpotGamma, Tier1Alpha, etc.) carry meaningful model error:
- Don't know which dealers hold positions (different risk appetites)
- Don't know if hedges are dynamic vs static
- Don't know how much OI is covered (paired with underlying) vs naked
- Lagged 1 day (yesterday's close OI)
Treat public GEX as reasonable approximation, not precision tool. Confluence with tape + flow > raw GEX number.
---
Practical Workflow for Mag-7 / Earnings Trader
| Window | Use of gamma framework |
|---|---|
| Pre-earnings | Find entry price + structure (NOT direction). Gamma identifies low-risk entry levels and wall resistance. |
| Earnings T-0 AH | Skip framework. IV crush invalidates model; tape/news leads. |
| T+1 morning | Best window. Re-build the map. Dealer hedge book has reset post-IV-crush. New levels form, exploitable. |
| T+1 to T+5 drift | Use to identify exit / reload levels along the post-earnings drift. |
| Range-bound non-event week | Combine with max-pain (only context where max pain has weak measurable edge). |
| Trend day | Tape leads; gamma confirms or denies. Don't fight tape with gamma. |
---
Anti-Patterns (Don't Do This)
- Single-signal trades: "GEX flipped negative, buy" — needs Layer 1 (regime) + Layer 5 (tape) confluence
- Max-pain pinning bets outside the narrow conditions above
- Retail-psychology explanations for moves the framework can't explain (see pitfall 17)
- Catalyst-window gamma plays — IV crush + fundamental shift dominate; gamma noise overwhelms
- Decoupling structure from regime: trading short-gamma squeeze structures in a long-gamma environment
---
Cross-References
- Pitfall 17 — dealer flow drives prices, not retail psychology
- Pitfall 03 — tape > opinion (tape-leads-direction principle)
- Pitfall 11 — LEAPS vega tax (gamma framework ignores vega risk in long-dated structures)
- strategies.md — structure-to-regime matching for execution
Trade Knowledge Base
The curated, shared knowledge bundle behind the trade skill. It is an [Open Knowledge Format (OKF) v0.1](OKF.md) bundle: a graph of markdown concept files with YAML frontmatter, loaded lazily via the situation → reference map in `commands/analysis.md`. The single entry point and always-on context is `../SKILL.md`.
Conformance
- [`OKF.md`](OKF.md) — Open Knowledge Format conformance & mapping (type vocabulary, frontmatter schema, bundle conventions).
- [`log.md`](log.md) — chronological change history of this knowledge base.
Always-relevant frameworks
| File | Type | What it covers |
|---|---|---|
| `strategies.md` | Framework | Structure-to-regime matching, the three axes (direction / vega / asymmetry), LEAPS stock replacement, setup checklist, position management. |
| `gamma-framework.md` | Framework | Dealer GEX + options chain + IV term + flow → multi-factor probability map. |
| `price-action-framework.md` | Framework | Orderbook microstructure mental model — why the same news lands differently. |
Pitfalls
[`pitfalls/index.md`](pitfalls/index.md) — 27 analytical biases (Trading Pitfall), one file per rule, with lookup-by-trade-type. Load individual pitfalls/NN-*.md files when a matching situation arises.
Case studies
[`ticker/index.md`](ticker/index.md) — closed/in-progress trade post-mortems (Trade Case Study): INTC, Mag-7, APP, NOK, TSEM, CBRS, SNOW, MDB, VIX, SATS, 6981. Load when the current setup pattern-matches a prior trade.
Command references
| File | Command | What it does |
|---|---|---|
| `commands/setup.md` | /trade setup | Scaffold the user's personal knowledge OKF bundle. |
| `commands/import.md` | /trade import | Parse one raw artifact into a structured knowledge file. |
| `commands/report.md` | /trade report | Daily capital-flow / 资金流向 read (散户 / 大单 / 机构 proxied from options premium-flow). |
| `commands/analysis.md` | /trade analysis | Default analysis flow — preflight + situation → reference map. |
User-private knowledge bundle
/trade setup scaffolds a second OKF bundle in a user-chosen directory (default ./knowledge/) for substack posts, X threads, and writedowns. It is never committed back here. Its index template is `commands/templates/knowledge-index.md`.
Change Log
OKF reserved log.md — chronological history of this knowledge bundle, most recent first. Seeded from git history; append a dated entry whenever you add or materially revise a concept (see `OKF.md` conformance checklist).
2026-06-22 — /trade report subcommand (daily capital-flow read)
- Added `commands/report.md` — a standalone
/trade report [tickers | basket]flow that builds a daily 资金流向 (散户 / 大单 / 机构) read from Funda options premium-flow (options-volumebullish/bearish premium, net call/put premium, ask-vs-bid volume,flow-alerts) +news/sentiment, because no stock-side three-layer net-flow feed is available here (the moomoo / Futu three-layer flow needs a logged-in FutuOpenD gateway +futu-api). Encodes the 口径 caveats, the 聪明钱 classification (🟢 confirmed long / 🔴 价涨期权背离-distribution / 🟡 price-only-unconfirmed / ⚖️ earnings two-sided), theflow-alerts200-row truncation trap, and the quote-endpoint trap (usestock-price?ticker=for day change;quotes?type=realtime/price-change400s). - Wired into `../SKILL.md`: new Commands-table row,
reportadded to routing rule 2, a capital-flow routing exception (资金流向 / 流入流出 →report, notanalysis), and a refreshed frontmatter description/triggers (kept under the 1024-charskill-lintcap). Indexed in `index.md`. Cross-linked to pitfalls 02 (single flow ≠ smart money) and 17 (dealer flow ≠ retail).
2026-06-18 — Pitfall 27 + 6981 case study (retest entry-timing)
- Added `pitfalls/27-retest-entry-confirmation.md` — a pullback entry is the volume-confirmed hold, not the touch; a pullback is a Schelling-point retest (key MA / prior high / gap), not an indicator; on extended/parabolic names the nearest real support can be −15 to −25%, so quantify extension first; a blow-off long-upper-wick at a new high is exhaustion, not an entry. The execution layer of the price-action framework (P4 / P5 / P6 / P8).
- Added `ticker/6981-2026-06.md` — Murata's 2026-06-18 new-ATH blow-off (+187% over its 200-day; ~1-ATR upper wick on 174% volume); worked example of the 3-zone retest ladder, with the honest data caveat that OSE flow / IV were not pullable via TradingView / Funda.
- Cross-linked pitfall 27 into `commands/analysis.md` (a new entry-timing / pullback / chasing-extension row) and `price-action-framework.md` (cross-references).
2026-06-15 — Pitfall 26 + SATS case study
- Added `pitfalls/26-stock-consideration-share-vs-dollar-anchored.md` — for stock-based deal consideration, verify share-anchored vs dollar-anchored (and normalize the split basis) from the primary agreement before pricing flow-through; a fixed reference price means a fixed share count that marks to market.
- Added `ticker/sats-2026-06.md` — EchoStar (SATS) SpaceX/AT&T spectrum-sale SOTP; an analyst-side error (share-anchored consideration mis-read as dollar-fixed → ~5x NAV error) caught by the tape and corrected from primary filings.
- Cross-linked pitfall 26 into `commands/analysis.md` via a new M&A / SOTP / stock-consideration situation row.
2026-06-13 — OKF v0.1 alignment
- Adopted Open Knowledge Format v0.1: added OKF-standard frontmatter (
type,title,description,tags,timestamp) to every pitfall, case study, and framework, preserving existing domain extension fields. - Added the reserved `index.md` bundle root, per-directory
index.mdindexes (with one-lineREADME.mdstubs), `log.md`, and the `OKF.md` conformance & mapping document. - The user-private knowledge directory (scaffolded by
/trade setup) is now described as a second OKF bundle.
2026-06-05 — Pitfall 25 + VIX case study
- Added `pitfalls/25-vix-options-futures-mechanics.md` — VIX options price off VIX futures, not spot (contango bleed, sub-1 futures beta, debit-spread skew bite).
- Added `ticker/vix-2026-06.md` — VIX call spreads track the future, not spot.
- Extended `strategies.md` with the VIX section.
2026-05-29 — MDB case study
- Added `ticker/mdb-2026-05.md` — the SNOW asymmetry lesson applied correctly the next day; the bull-conviction count needs a quality/inversion overlay, not just a tally.
2026-05-27 — Pitfall 24 + SNOW case study (asymmetry axis)
- Added `pitfalls/24-capped-upside-vs-bull-conviction.md` — capped-upside structures are forbidden in high-conviction bull setups; asymmetry is a third axis beyond direction and vega.
- Added `ticker/snow-2026-05.md` — canonical Jade-Lizard-in-a-bull-tail failure.
2026-05-25 — Pitfall 23 + CBRS update
- Added `pitfalls/23-hazard-rate-discounting.md` — discounting is a hazard rate, not just time-value.
- Updated `ticker/cbrs-2026-05.md` — Day-1 long stock cut for a loss.
2026-05-19 — Pitfall 22
- Added `pitfalls/22-yields-not-causal.md` — bond yields don't "cause" equity moves.
2026-05-15 — CBRS IPO case study
- Added `ticker/cbrs-2026-05.md` — hot AI IPO modeling and the lock-up front-run framework.
2026-05-13 — Price-action framework + TSEM case study
- Added `price-action-framework.md` — orderbook microstructure mental model.
- Added `ticker/tsem-2026-05.md` — structure-selection lessons (right direction, wrong structure).
2026-05-11 — Pitfalls 20-21 + NOK case study
- Added `pitfalls/20-post-earnings-momentum-vs-fade.md` and `pitfalls/21-event-iv-vs-demand-iv.md`.
- Added `ticker/nok-2026-04.md` — post-earnings momentum continuation + demand-driven IV.
2026-05-10 — Pitfall 19
- Added `pitfalls/19-direction-vega-independent-axes.md` — direction and vega are independent axes; match both to regime.
2026-05-08 — Foundation
- Initial curated library: pitfalls 01-18, `strategies.md` (incl. LEAPS stock replacement), `gamma-framework.md`, and the first case studies (`ticker/intc-2026-04.md`, `ticker/mag7-2026-q1.md`, `ticker/app-2026-05.md`).
- Converted the repo into the
/tradeskill with the tree-structured reference layout.
Open Knowledge Format (OKF) Conformance
This knowledge base conforms to [Open Knowledge Format (OKF) v0.1](https://github.com/GoogleCloudPlatform/knowledge-catalog/tree/main/okf) — an open, vendor-neutral standard for portable, agent- and human-readable knowledge. An OKF bundle is a directory of markdown "concept" files, each carrying YAML frontmatter, cross-linked into a graph via relative markdown links, and navigated through reserved index.md files. No SDK, runtime, or proprietary account is required to produce or consume it.
Background: How the Open Knowledge Format can improve data sharing (Google Cloud).
What is the bundle?
The references/ tree is the curated, shared OKF bundle that ships with this skill. The user-private knowledge directory scaffolded by `/trade setup` (default ./knowledge/) is a second OKF bundle built on the same conventions. Both are plain markdown + YAML — version-controllable, renderable on GitHub, and parseable by any agent.
Why OKF fits this repo
The skill was already built on the OKF design pattern before adopting the name:
- Concept = file. Each pitfall, case study, and framework is one markdown file; its path is its identity (URI).
- Cross-linked graph. Pitfalls ↔ case studies ↔ frameworks reference each other with relative markdown links.
- Progressive disclosure.
SKILL.md→ directoryindex.md→ individual concepts, loaded lazily only when relevant. This is OKF'sindex.mdnavigation model.
Adopting OKF v0.1 formalizes this: it adds the OKF-standard frontmatter fields, the reserved index.md / log.md filenames, and this conformance contract.
Frontmatter schema
Every concept file carries a YAML frontmatter block. OKF v0.1 requires only type; this repo additionally always sets OKF's recommended fields (title, description, tags, timestamp) plus domain-specific extension fields. OKF is minimally opinionated — producers may define their own content model, so the extension fields coexist with the standard ones.
| Field | OKF role | Set here | Notes |
|---|---|---|---|
type | required | always | Concept type — see the vocabulary below |
title | recommended | always | Human-readable title |
description | recommended | always | One-line relevance summary; this is what an agent reads to decide whether to load the file |
| (extension fields) | producer-defined | varies | e.g. severity, appliesTo on pitfalls; ticker, event, date, status, result, structures on case studies |
tags | recommended | always | YAML array, e.g. [earnings, iv-crush] |
timestamp | recommended | always | ISO 8601 UTC — the document's last-updated time (sourced from git history) |
resource | recommended | conditional | URL of the underlying real-world resource. Omitted for self-describing curated concepts; set on imported substack/X documents (their source url) |
Field order is: type, title, description, then extension fields, then tags, timestamp (and resource where present).
Type vocabulary
type | Concept | Location |
|---|---|---|
Trading Pitfall | analytical-bias rule | pitfalls/NN-*.md |
Trade Case Study | closed/in-progress trade post-mortem | ticker/*.md |
Framework | always-relevant decision framework | strategies.md, gamma-framework.md, price-action-framework.md |
Command Reference | subcommand workflow | commands/*.md |
Index | directory navigation index | index.md (every directory) |
Changelog | chronological change history | log.md |
Specification | this document | OKF.md |
Writedown | user-authored note | <knowledge>/writedowns/*.md |
The user-private substack/X artifacts stay as .yaml structured-data concepts (machine-extracted data is a valid OKF producer content model). Their fields map to OKF as: source → type, title → title, url → resource, date → timestamp, tags → tags. See `commands/templates/substack-template.yaml`.
Bundle conventions
- Identity = path. A file's path is its concept URI. Links between concepts are relative markdown links (e.g.
../ticker/snow-2026-05.md), forming the knowledge graph. - `index.md` is the canonical navigable index (OKF reserved name). To preserve GitHub's directory-level rendering without duplicating content, each directory also keeps a one-line
README.mdstub that points to itsindex.md. - `log.md` (OKF reserved name) records the knowledge base's chronological evolution — see `log.md`.
- Bundle entry point is `index.md` at the
references/root, which links out to every sub-area. - Portable. The bundle ships as a git repo / tarball; nothing here depends on a specific cloud, model provider, or agent framework.
Conformance checklist (new concept)
When adding a pitfall, case study, framework, or writedown:
- [ ] File has YAML frontmatter with at least
type. - [ ]
title,description,tags(array), andtimestamp(ISO 8601) are set. - [ ] Extension fields for the type are filled (see
_template.mdin the directory). - [ ] Cross-links to related concepts use relative markdown links.
- [ ] A row is added to the directory's
index.md. - [ ] A dated entry is added to `log.md`.
OKF spec & tooling
- Spec, reference bundles, and tooling: https://github.com/GoogleCloudPlatform/knowledge-catalog/tree/main/okf
- Announcement: https://cloud.google.com/blog/products/data-analytics/how-the-open-knowledge-format-can-improve-data-sharing/
- Lineage OKF cites: Karpathy's LLM-wiki gist, Obsidian vaults, and the
AGENTS.md/CLAUDE.mdconvention.
Rule Title Here
Severity: HIGH (one-line impact summary)
Brief explanation of the rule and why it matters in 1–3 sentences. State the trading consequence concretely.
Why it matters: One short paragraph on the underlying mechanism. Cite a real trade if applicable.
How to apply:
- Concrete bullet steps a trader can run mechanically
- Quantitative thresholds where possible (IV %, beat %, days, etc.)
- Reference the relevant case study via
../ticker/<ticker>-YYYY-MM.md
Don't treat "price at analyst consensus" as a bearish signal
Analyst consensus is a trailing indicator. Price leads analysts, not the reverse. When stock reaches consensus target, consensus is usually being revised higher.
Why it matters: Anchoring bearish because "price = consensus" ignores that the consensus itself has been rising. If last-month avg >> last-quarter avg, analysts are catching up to momentum, not capping it.
How to apply:
- Check the velocity of consensus revisions, not just the level
- Rising consensus + rising price = trend intact, not exhaustion
- Pull
analyst price-target-summaryand compare 1M vs 1Q vs 1Y averages
Reference: ../ticker/intc-2026-04.md — anchored bearish on $66 = $66 consensus, ignored consensus rising $47 → $55 → $66 in 3 months.
A single large options trade ≠ "smart money" signal
One big institutional order reflects one desk's positioning, not market consensus. Institutions lose too.
Why it matters: A $800k+ LEAP call seller can be wrong. Using "they sold big at strike X" as a directional edge is flawed when the underlying fundamentals shift.
How to apply:
- Require confluence — multiple institutions same direction + price action same direction
- Aggressive sweeps > sitting orders
- Options flow is a positioning snapshot, not a directional prediction
- Track outcome of the position over the next 1–2 weeks; note how often the "smart" trade is underwater
Reference: ../ticker/intc-2026-04.md — $837k LEAP $72.5C seller ended up $2.5M underwater after Tesla news.
Tape > opinion > DCF for short-term trades
For trades held <30 days, prioritize: 1. Price action (what the tape is doing) 2. Sentiment / catalysts (what's driving flow) 3. Valuation (DCF, multiples)
Why it matters: Starting with DCF and forcing the tape to fit leads to fighting trends. A stock can stay "overvalued" for months on momentum.
How to apply:
- Open every short-term analysis by describing the tape first (last 3 daily closes, volume profile, support/resistance)
- Then layer sentiment (recent news, sector mood, flow)
- Only then layer valuation
- For trades >60 days, valuation moves up the priority order
Reference: ../ticker/intc-2026-04.md — DCF said $40-48 fair value while stock printed at $66; bear thesis fought momentum and was wrong.
When thesis premise is invalidated, FLIP — don't hold
If the precondition for your thesis stops being true, exit or reverse. Holding through invalidation is sunk-cost bias.
Why it matters: Example — "sell-the-news" requires weak tape. If the stock holds strong through expected weakness, the setup is dead. Flipping early > stubborn holding.
How to apply:
- Write down the thesis preconditions at entry
- Review them each time new info arrives
- If a precondition breaks, trigger position review immediately
- Reversing a position is not weakness — it's the highest-order trading skill
Reference: ../ticker/intc-2026-04.md — Apr 23 morning: tape didn't fade as required by sell-the-news thesis. Flipping bear → bull put captured +$3.78 swing vs holding the dead thesis.
Don't overreact to a single news event — check if it's priced in
Post-market news that moves stock <3% is often already 60-80% priced in. A small reaction doesn't mean the news is unimportant — it means the market already expected it.
Why it matters: Flipping strategies based on "big news" that the market barely responds to is overreaction. The magnitude of reaction tells you how much was unexpected.
How to apply:
- Estimate NPV of news → compare to actual price reaction
- If reaction ≈ NPV, news is correctly priced
- Recommend action only if reaction is materially off
- A 2% AH move on a 10% NPV event = 20% priced in (still 80% to play)
Reference: ../ticker/intc-2026-04.md — Tesla-Intel news +2.7% AH was already ~70% priced in; user correctly pushed back on overweighting it.
"Finding clever structures" signals fading conviction
When your instinct shifts from vanilla spreads to ratio spreads, butterflies, diagonals, ask: Am I being clever because the simple structure is optimal, or because my conviction is dropping?
Why it matters: Complex structures can mask uncertainty. Better to reduce size or close than dress up diminishing conviction in sophistication.
How to apply:
- When recommending a complex structure, explicitly check: "Is this really optimal, or am I hedging for a thesis I no longer fully believe?"
- If the latter, close instead of restructure
- Acceptable complex structures: explicit IV term skew → diagonal/calendar; defined-event → Jade Lizard. Otherwise vanilla credit/debit spread.
Reference: ../ticker/intc-2026-04.md — Stage 2 diagonal upgrade was partially masking declining bearish conviction; should have closed not restructured.
IV crush benefits SHORT premium structures, not long ones
High IV Rank (>70) favors selling premium (credit spreads, short puts, iron condors). It hurts long premium (debit spreads, naked long options), even if direction is right.
Why it matters: A long put at IV 95% with IV crush to 50% can lose money even on a correct bearish call. Direction right + structure wrong = loss.
How to apply:
- High IV Rank + directional view → default to credit structures (sell premium)
- Only buy premium when IV is low OR directional conviction is very high
- Always ask: "Does my structure benefit from or suffer from IV crush?"
- Pre-earnings IV >100% → never buy naked options through the print
Reference: ../ticker/app-2026-05.md — IV Rank 50% pre-earnings + 150% on 5/8 weeklies → Jade Lizard captured the IV crush instead of paying it.
"Priced in" is not binary — estimate the percentage
Events are partially priced in. Use "what % is priced in" framing rather than "is it priced in yes/no".
Why it matters: 70% priced in is very different from 100% priced in. The 30% residual uncertainty still drives multi-day price action.
How to apply:
- For any news event:
- Estimate theoretical NPV of the news
- Compare to actual price reaction
- If reaction ≈ NPV × X%, then (100 - X)% is still unpriced
- Size positions to the residual uncertainty, not the nominal news magnitude
- Pre-earnings drift up of +5% with implied move ±7% means ~70% of expected beat is already in
Preconditions met ≠ stock direction
Hitting all your fundamental preconditions does NOT guarantee positive stock reaction. Sentiment, forward guidance, and sector mood are independent variables that can override fundamentals in the short term.
Why it matters: A name can print every metric above the threshold you set in advance and still fall on the print. "Thesis correct" and "stock will go up" are different claims. The market trades on a blend of fundamentals + forward expectations + cohort mood, not fundamentals alone.
How to apply:
- Track two precondition sets: fundamental AND sentiment
- Add forward guidance preconditions, not just current-quarter (e.g., "next-quarter segment growth must be guided ≥ X%")
- Add sector mood preconditions (e.g., "cohort bellwether not down ≥ N% on earnings day")
- When buy-side previews are widely circulated, treat them as the new consensus and raise thresholds 10-20% above their stated levels
Reference: ../ticker/mag7-2026-q1.md — MSFT hit all fundamental thresholds but stock fell on AI capex sentiment + buy-side bar inflation.
T+1 reverse drift — AH price doesn't predict next-day open
Initial AH reaction (16:00-20:00 earnings night) often reverses by next-day open. Sell-side notes drop overnight, rating actions hit pre-market, and T+1 sentiment can flip the AH read entirely.
Why it matters: A stock that recovers from a sharp AH dip to nearly flat by 21:00 EST can still gap down the next morning and drift further intraday. Extrapolating "AH stabilization" forward leads to over-confident hold decisions overnight.
How to apply:
- Don't anchor decisions on 16:00-17:00 AH (still active price discovery)
- 18:00-20:00 AH is more informative but still only ~50% of the eventual T+1 reaction
- Plan for a 2-day window: T+0 AH + T+1 open. T+1 morning is the "real" price discovery moment
- Sell-side downgrades typically post 6-9 PM EST and hit pre-market
- Default exit/reload decisions to T+1 morning unless a position is already at structural max profit (in which case lock at T+0 AH)
Reference: ../ticker/mag7-2026-q1.md — MSFT recovered intraday AH but gapped down on T+1, costing thesis-correct holders.
LEAPS through earnings = unhedged vega tax
Long-dated long options carry meaningful vega. Earnings IV crush represents a guaranteed loss component independent of direction. Holding a LEAPS through earnings without hedging is implicitly a short-vol bet.
Why it matters: A LEAPS with vega ~1.4/share loses ~$140 per 1pp of IV crush per contract. Earnings IV crush of 4-6pp on LEAPS = ~$500-800 of guaranteed bleed per contract regardless of stock direction. The stock has to rally meaningfully just to break even on the IV component before any direction P&L kicks in.
How to apply:
- Calculate vega tax explicitly before earnings:
vega × 100 × estimated IV crush in pp - Choose one explicit response:
1. Buy short-dated put as vega-tax insurance (cheap relative to vega bleed if direction goes wrong) 2. Convert LEAPS to diagonal (sell front-week call against LEAPS) — short call IV crush partially offsets 3. Close LEAPS pre-earnings, re-enter post-IV-crush at lower IV 4. Accept the bleed and reduce sizing
- Never hold LEAPS through earnings without consciously choosing one of these
- Sector mood + capex panic can compound vega tax with delta loss → catastrophic LEAPS days exist
Reference: ../ticker/mag7-2026-q1.md — MSFT LEAPS held through earnings hit by combined vega tax + AI capex sentiment loss.
Recognize "manipulator-tape" names — sell premium, don't buy direction
Some high-IV names trade with heavy market-maker / large-trader pump-dump patterns. Frequent ±3% intraday swings without news, $10–20 AH wicks on thin liquidity, and programmatic algo selling on specific keywords. For these names, premium-selling and oscillation-scalping outperform directional buying.
Why it matters: A correct directional thesis can still lose money in a manipulator tape because the price oscillates faster than your conviction window. Buying calls in these names is paying for vol that will be harvested by the next pump-dump cycle.
How to apply:
- Tickers that fit the pattern (initial list, expand over time): APP, MSTR, COIN, PLTR, DJT, TSLA (occasional)
- Default structure: Jade Lizard / Iron Condor / Bull Put Spread (sell premium)
- Pair with: scalp leveraged proxy (APPX for APP, MSTU for MSTR, etc.) on the oscillation
- Avoid: Long-dated call buying — vol will be harvested out from under you
Reference: ../ticker/app-2026-05.md — APP earnings: Jade Lizard captured premium, APPX scalped 3 round trips on oscillation. Net profitable despite no directional alpha.
Take-profit discipline beats target-price obsession
In manipulator/high-vol names, book 60–70% of expected move rather than waiting for full target. The marginal last 30% of expected move is rarely worth the hold-time risk.
Why it matters: APP case (May 2026): I quoted $510 6M target. User exited APPX at $490 — left ~$20 on the table but avoided 3+ days of pump-dump risk. Each subsequent round-trip earned more than the marginal $20 would have.
How to apply:
- For trades held days-to-weeks: book at 60–70% of expected move
- For credit spreads / Jade Lizards: close short legs at +50% of max credit (mechanical Tasty rule)
- For long premium: scale out — 1/3 at +50%, 1/3 at +100%, 1/3 trail with stop
- Never wait for theoretical max profit on event-driven structures
Reference: ../ticker/app-2026-05.md — closed Jade Lizard short legs at +50%, sold call spread at AH peak $500, exited APPX at $490 vs $510 target. All subscale exits beat full-target hold.
Single channel-check is a sample, not a population
One agency / one customer / one expert call is n=1. Aggressive growth signals from a single source are usually self-selection — agencies willing to take channel-check calls tend to be the ones with the most aggressive spending.
Why it matters: APP case — agency reported +19% QoQ Q4→Q1 spending; I extrapolated to APP-wide trend. Reality was +11% QoQ. The agency was a top-quartile spender, not a market average.
How to apply:
- Discount any single channel-check by 30–40% before using it as a base case
- Require 2–3 independent sources before lifting the base case
- Look for confirming sources from different demand profiles (large advertiser + small advertiser + agency, not 3 agencies)
- Never let a single call swing your beat estimate by more than 1pp
Reference: ../ticker/app-2026-05.md — over-weighted +19% QoQ from one agency vs market actual +11% QoQ.
AH order-book lopsidedness is a fade signal at extremes
When AH bid/ask size ratio exceeds 5:1 in either direction at a price extreme (within 1% of AH high or low), the move is being driven by thin liquidity and is highly likely to revert.
Why it matters: APP case — AH peak $483.5 had ask size 310 vs bid size 30 (10:1). Reverted to $476 within 40 minutes. Selling Call Spread or shorting leveraged proxy at the lopsided extreme captures this reversion.
How to apply:
- Check bid/ask size ratio at AH extremes
- 5:1 ask-heavy at AH high → fade with short call spread or leveraged-proxy short
- 5:1 bid-heavy at AH low → fade with bull put spread or leveraged-proxy long
- Best between 18:00–20:00 ET (book is real but retail asleep — good signal-to-noise)
- Not a position trade — book within 30–60 minutes
Reference: ../ticker/app-2026-05.md — fade at $483.5 AH peak captured ~$5 reversion within 40 min.
Don't conflate drift with vol; BSM already prices log-normal paths
Arguments like "long-dated IV is too cheap because stocks grow exponentially" or "BSM assumes normal distribution so far-dated vol is mispriced" are technically wrong and get rejected on first contact. BSM assumes log-normal price distribution — exponential growth paths are already priced in. IV measures the volatility of returns, not the directional drift.
Why it matters: Building a thesis on this misconception leads to over-allocating to long-dated long options to "capture mispriced vol." When the alleged mispricing doesn't exist, you're paying full vol risk premium and full theta on a thesis that has no edge. Worse, the strategy that follows ("DCA + roll LEAPS") doesn't actually exploit the alleged mispricing even if it were real (see pitfall 18).
How to apply:
- Reject "BSM uses normal distribution" as an argument. It uses log-normal. This stops the discussion if you say it.
- A stock that smoothly compounds 50%/yr can have lower realized vol than a stock that ranges ±30%. Drift ≠ vol.
- If you actually want to argue long-dated vol is cheap on a name, compare historical realized vol on cycle peaks vs current implied vol — not distribution shape.
- The honest defensible version: "in cycle-on regimes, directional moves and vol expansion are correlated, so long-dated calls have a built-in vol kicker if my direction is right." This is conditional on cycle phase, not a permanent edge.
- Vol risk premium normally makes implied > realized on average. Claiming "implied is systematically too low" reverses the long-run pattern — needs strong evidence.
Cross-ref: pitfall 11 (LEAPS vega tax), pitfall 18 (roll frequency vs IV thesis).
Dealer flow + 0DTE drive options-related price moves, not retail psychology
Stories like "CC sellers will buy back to avoid taxes" or "put buyers won't sell stock" describe retail behavior, not market drivers. Market makers and systematic short-vol funds dominate options supply — they delta-hedge dynamically, are agnostic to assignment and taxes, and price IV based on hedging cost + risk premium. Retail flow is a price-taker on large-caps.
Why it matters: Trading on retail-psychology stories ("expiry day will pump because CC sellers buy back") systematically loses to dealer gamma flow. The mechanism described is real-but-small; the actual mechanism (dealer gamma + 0DTE) is real-and-large and often opposite in direction.
How to apply:
- Naked premium exists at scale on the dealer side. "Nobody sells naked" is wrong — it ignores the largest seller (market makers).
- CC buyback flow is small on large-caps. MU/AAPL daily volume in millions of shares; a few thousand retail CC buybacks don't move price.
- Put buyer ≠ stock holder. Directional speculators have no underlying to "not want to sell." Conflating hedger and speculator put flow is a logic error.
- Expiry-day moves: look at dealer gamma sign first, 0DTE positioning second, ETF rebalance third. Retail position management is a footnote.
- Net short gamma + price away from pin → dealers chase (amplifies move)
- Net long gamma → dealers fade (pins price near max OI strike)
- Tax argument is real but bounded: only matters for short-term holdings, and the EV calc against assignment is closer than it looks (buyback realizes a call loss; assignment realizes the larger stock gain — buyback is deferral, not avoidance).
- Reserve retail-psychology explanations for low-liquidity small-caps where retail flow actually dominates the book.
Cross-ref: references/gamma-framework.md for the proper dealer-flow framework. Pitfall 15 (AH order-book lopsidedness).
Roll frequency is independent from IV thesis — over-rolling kills the alpha
If your thesis is "long-dated IV is cheap, lock it in via LEAPS," the optimal expression is buy-and-hold. Each ITM → ATM roll resets vega exposure (ATM has highest extrinsic), cuts delta in half (0.85 → 0.5), and pays bid-ask twice. The more you roll, the less of the alleged IV alpha you actually capture. Roll is a capital management decision, not an alpha generator.
Why it matters: The internal contradiction: "I believe far-dated vol is underpriced" + "I'll continuously reset to ATM" cancels itself out. Each roll says "I no longer want the cheap-IV exposure I locked in; give me a new ATM contract at current IV." If current IV is no longer the bargain you bought into, the roll is paying retail for what you thought was wholesale.
How to apply:
- Ask honestly before rolling: am I capturing IV alpha, or just taking profit because delta got high?
- Take-profit is fine — but call it that. Don't dress it up as an alpha capture.
- If you genuinely believe far-dated IV is cheap → buy the deep ITM LEAPS once and hold until thesis changes. Let delta drift.
- Roll only when:
- Delta > 0.95 (no more directional growth from same contract)
- Stock has moved enough that strike is far below current price (capital tied up in intrinsic, no leverage left)
- Thesis duration extension required (rolling out in time, not strike)
- ATM roll cost ≈ 30-40% of contract value as new extrinsic in high-IVR names. In current MU/SNDK regime, this is brutal.
- Tactical near-term puts around catalysts are a separate edge — independent timing alpha. Don't bundle "roll frequency" with "tactical hedge" as one strategy. Evaluate the put-timing hit rate on its own merits.
Cross-ref: pitfall 06 (clever structures = fading conviction — over-rolling is its own clever structure), pitfall 16 (drift vs vol), pitfall 11 (LEAPS vega tax).
Direction and vega are independent axes — match BOTH to regime
A bullish view ≠ a bullish structure. Direction (long/short delta) and vega (long/short premium) are two separate axes that must each match the current regime. The same directional view can be expressed by structures with opposite vega — picking the wrong vega side is direction right + structure wrong.
Why it matters: A "bullish" label hides which side of vega you're on. Four common bullish structures, four different vega signs:
| Structure | Net delta | Net vega | Net theta |
|---|---|---|---|
| Bull call debit spread | + | + (long vega) | small − |
| Bull put credit spread | + | − (short vega) | + |
| Long call | + | + | − |
| Short put | + | − | + |
At low IVR (<30), long vega is favored — IV mean-reverts upward, debit structures gain on both axes. At high IVR (>70), short vega is favored — IV mean-reverts downward, credit structures gain on both axes. Selecting a short-vega structure at low IV (or vice versa) means you can lose money even when direction is right, because the vega leg works against you.
Concrete failure (ISRG 2026-05-10): bullish view at IVR 26 → bull put credit spread recommended. Direction correct; vega wrong. Credit collected ($1.35) was suppressed by low IV, but max loss ($8.65) was fixed by strike distance — yielding 1:6.4 R/R. The corresponding bull call debit spread at 455/475 had R/R 1:1.5 and was long vega (IV expansion would have added to the win). Same direction, completely different trade.
How to apply:
1. After picking direction, re-derive the structure from the IV regime — do not skip this step.
- Low IVR (<30) → debit (long premium, long vega)
- High IVR (>70) → credit (short premium, short vega)
- Mid IVR (30–70) → either acceptable; prefer debit if you expect IV to rise into a catalyst, credit if you expect IV decay through a quiet window.
2. Read the credit/debit label, not the "bull/bear" label. "Bull put spread" sounds bullish but the premium side is short — verify by checking the net cash sign (credit = short premium, debit = long premium). 3. Sanity-check the net vega sign before submitting: long-vega structure at IVR <30 ✓, short-vega at IVR >70 ✓. Anything else needs an explicit written reason (e.g., "I expect IV to compress further because X"). 4. When pushed back on a structure, first ask: is the pushback about direction, vega, or both? Don't flip direction in response to a vega complaint — that creates two errors instead of one.
Cross-references:
- Pitfall 7 — IV crush benefits short premium (the high-IV mirror of this rule)
- Pitfall 6 — clever structures signal fading conviction (don't rationalize a wrong-vega pick with strike geometry)
../strategies.md— Structure-to-regime matching table
Post-earnings momentum continuation overrides intraday fade pattern when fundamentals + sector + flow align
A gap-up earnings reaction with intraday fade ("exhaustion gap") looks like a multi-day top, but multi-day momentum continuation is the default outcome when (a) fundamentals confirmed decisively, (b) sector is in a thematic bull regime, and (c) net options flow is bullish. Calling for a 1-3 day pullback on the technical pattern alone overrides the more powerful underlying setup.
Why it matters: A "gap up → fade to close below VWAP → distribution day" pattern is a real signal in isolated names. But in a stock that just printed a fundamental beat + raised guidance + sits in a sector co-rally, the same intraday shape often resolves as mid-day profit-taking absorbed by next-day continuation. Predicting "60-70% probability of retest of the gap fill" against this combined tailwind systematically underperforms holding into the drift.
Concrete failure (NOK 2026-04-23 → 04-30): NOK reported Q1 with NI guidance raised from 6-8% → 12-14%, Optical +20%, AI&Cloud customers +49%. Gap-up open $10.78, intraday high $10.86, faded to close $10.33. I called 60-70% probability of T+1 fade to $10.00-10.10 — based on closing below VWAP $10.52, distribution-day volume 176M (3x average), and "exhaustion gap" formation. NOK never traded below $10.31 again; closed +25% in 5 sessions (to $12.92 by 4/30) and +41% in 13 sessions (to $13.87 by 5/11). The intraday fade was real but bounded to that single session.
How to apply:
1. Before calling a multi-day fade, run the 4-factor confirmation check:
- Did fundamentals confirm thesis decisively? (beat + raised guidance, or just beat?)
- Is the sector co-moving? (peers up >5% same day = continuation; peers flat/down = isolated)
- Net options premium flow direction? (call-side dominance = continuation)
- Short interest level? (high SI = squeeze risk amplifies continuation)
3 of 4 bullish → DO NOT predict fade. Hold or add.
2. Distinguish "exhaustion gap" from "first-leg pause":
- Exhaustion gap: stock had multi-day run into earnings, IV peaked, no new info delivered → fade probable
- First-leg pause: stock at relative low going into earnings, surprise beat unlocks new thesis tier → continuation default
- Check the 5-day trailing % move before earnings. <+10% in 5 days = first-leg setup, not exhaustion.
3. Read intraday fade as intra-session profit-taking, not multi-day reversal:
- "Close below VWAP" is one-day information, not three-day forecast
- Distribution-day volume on the FIRST day post-thesis-confirmation is often institutional rotation IN, mis-labeled as distribution
- Wait for T+1 to T+2 closing action before declaring a top
4. The strategies.md "post-earnings drift T+1 to T+5" rule outranks pattern-recognition:
- Default to drift continuation 3-5 days unless tape clearly reverses (close below T+0 low on T+1)
- "High open, low close" on T+0 is consistent with the drift framework when next-day open recovers
5. Sector co-move is the loudest signal: If 3+ peers in the same theme print fresh highs the same week (e.g., LITE +16%, COHR +13%, CIEN +7% alongside NOK +8% on 5/11), single-name technical patterns are noise. Theme rotation overrides single-stock topology.
When the rule does NOT apply (legitimate fade setups):
- Stock already +30%+ in 30 days into earnings (priced-in exhaustion)
- Beat but guidance LOWERED — gap-up was reflex, will fade
- Sector breaking down same week — isolated bid
- Net options flow turning negative T+1 (institutional distribution real)
Cross-references:
- Pitfall 8 — "priced in" is a percentage, not yes/no (estimate how much of the beat was already in the tape)
- Pitfall 10 — T+1 reverse drift covers AH→open reversal (different window, complementary not contradictory)
- Pitfall 21 — distinguishing demand-IV from event-IV (often the same misread)
../strategies.md§ "Recurring Setups for Mega-Cap High-Momentum Earnings Plays"../ticker/nok-2026-04.md— the failed-fade case study
Trading Pitfalls
See [`index.md`](index.md) — the OKF navigable index for this directory (27 pitfalls, lookup-by-trade-type, contributor guide). This stub exists only for GitHub's directory rendering; index.md is canonical.
Trade Knowledge Base
See [`index.md`](index.md) — the OKF v0.1 bundle root (frameworks, pitfalls, case studies, command references). Format and conventions: `OKF.md`. Change history: `log.md`. This stub exists only for GitHub's directory rendering; index.md is canonical.
{Ticker} {Event} Trade Case Study ({Month YYYY})
One-paragraph trade arc summary including net result and the key structural lesson.
---
Setup
- Ticker: TICKER
- Entry window: dates
- Event: date + AMC/BMO
- Starting context:
- Stock state (price, recent move, technicals)
- IV state (IV Rank, HV)
- Sentiment state (sell-side, channel checks, sector mood)
---
Strategy Evolution
Stage 1: <name> (date, $price)
Thesis: ... Structure: ... Flaw in hindsight: ...
Stage 2 ... etc.
---
Outcome
- Print result
- Stock reaction
- P&L by leg
- Net result vs plan
---
What Worked
1. ...
What I Got Wrong (Analyst Side)
1. ...
---
Lessons / Updates to Framework
- New rules added to
../pitfalls/(link by file name) - Updates to
../strategies.md
---
Reusable Framework: <Setup-Type> Plays
Step-by-step framework for similar future setups.
Ticker Case Studies
See [`index.md`](index.md) — the OKF navigable index for this directory (closed trade case studies, lookup-by-pattern, contributor guide). This stub exists only for GitHub's directory rendering; index.md is canonical.