Zhiyuan Song
← Home

TSLA Options War Room

An AI-backed TSLA short-dated options decision stack: not a single mega-prompt, not a classic trading bot. Users see one senior trading advisor; behind the scenes are adversarial multi-role debates, local market snapshots, trade logs, and performance tracking—complexity stays invisible.

Primary underlier TSLA with QQQ / SPY for beta context; horizon 7–10 DTE; user-facing output is Chinese in the skill defaults (this English page describes behavior); no emoji in the skill output spec.

Skill metadata

  • name tsla-options-war-room
  • description (English, matches SKILL) Use when user asks about TSLA options trading, position management, entry/exit decisions, strike selection, or any question about their TSLA put/call positions. Also triggers on questions about QQQ/SPY context for TSLA trades, option simulation needs, or colloquial risk prompts (exact multilingual trigger strings are listed verbatim in the repository SKILL.md).
  • description (plain-language summary) TSLA options: positions, entries/exits, strikes; QQQ/SPY context; simulations; plus spoken triggers such as “should I do it?”, “sell or hold?”, “add size?”, “take profit?”, “stop loss?”, “what’s the bias now?” (including common Chinese phrasing preserved in the SKILL trigger list).

Motivation & novelty

What is actually hard in short-dated options

Not only “calling direction,” but entering at sensible prices (chasing is a major loss source), hand discipline (size creep and bag-holding), and fast intraday judgment (windows are short; no 30-minute essays). This system productizes three threads: adversarial direction checks, hard-coded sizing and TP/SL rules, and on-demand snapshots (seconds, not minutes).

Where it is novel

  • Committee metaphor + single voice: parallel roles backstage, but the user always reads one advisor tone—no agents, steps, or tool logs exposed.
  • Progressive depth: default “good enough” medium depth; the full seven-part report only when the user explicitly asks to expand / full analysis / plan—avoid “one question, three thousand words.”
  • Rules decoupled from the model: max size, second-contract purpose, time review, structure vs contract stops are document-level hard rules to keep emotion from overriding math.
  • Data trust tiers: volume/RVOL conclusions only on full Robinhood prints; REST / KLineLens for price/structure—no pseudo-RVOL from broken volume feeds.
  • Auditable loop: entries log prediction fields; exits capture actual fills and reasons; journals support “forecast vs outcome” for win-rate and directional accuracy later.

Engineering stance

  • Product over theater: LLMs narrate well, but directional calls must survive a bear case; adversarial flow is baked in, not bolted on.
  • Timeframe discipline: live lessons (e.g., fading only short-term signals against a bullish daily) become “daily sets bias, hourly sets structure, intraday sets entries; conflicts resolve to daily,” to stop repeating the same mistake.
  • Honest data boundaries: if an API cannot supply trustworthy volume, skip volume narratives—no fake precision.
  • Streaming with perceived progress: full analyses stream token-by-token in the main process; if sub-agents must run, add a natural-language bridge so users know “what the desk is calculating.”
  • Conversation as state machine: trade_state and journals bind “do I have size? why did I enter? what did I predict? how did I exit?”—inspectable lifecycle, not one-off chat.

Compared with typical trading bots

Dimension Common trading bot War Room
Direction Often single-model, one-sided Bear/bull debate before a view; deeper modes surface the debate more explicitly
Interaction Fixed templates Natural language; light → medium → full report progression
Risk Simple stop lines Structure stops + contract drawdown + time review + hard sizing rules
Context Often stateless Positions, logs, historical EXIT stats queryable
Voice Research-report tone Reads like an experienced trader: conclusion first, short paragraphs, high information density

System architecture

Logical topology: natural language → Claude Code loads the skill → read/refresh market + memory on demand → lead advisor integrates.

You ask
   |
   v
+---------------------------+
| Claude Code Skill         |  10 role agents: structure / macro /
| (War Room)                |  bear-bull debate / execution / options / risk … (hidden)
+---------------------------+
   |
   +-----------+-------------+
   |                       |
   v                       v
+-------------+    +----------------+
| Market      |    | Trade Memory   |
| Service     |    | positions + log|
| REST snap   |    +----------------+
+-------------+
   |
   v
+-------------+
| Twelve Data |  TSLA / QQQ / SPY (API key required)
+-------------+

On-demand pulls, no daemon: check latest_snapshot.json timestamp; if fresh, reuse; if stale, silently run python3 fetch_now.py (~3–5s). Without API keys, rely on user screenshots for structure reads.

Agent committee (backstage)

Each agent’s full brief lives in agents/*.md; scheduling is invisible. The lead advisor merges into a single voice.

Role File Typical use
Market scout market-monitor.md Medium depth+: fast tape facts
Research coordinator clarifier.md Information gaps: ask for screenshots or data in natural language
Structure analyst market-structure.md Trend, pressure/support, chase risk
Beta risk advisor macro-context.md When QQQ data exists: does the tape support the trade direction
Bear lead bear-continuation.md Full analysis / entry: argue for PUTs
Bull reversal trader bull-reversal.md Full analysis / entry: argue for CALLs
Execution planner pullback-entry.md Full analysis: translate bias into entry zones and conditions
Options structure advisor options-strategy.md Strikes, cost bands, theta/gamma/IV narrative
Risk lead risk-manager.md Full analysis + position management: enforce hard rules
Lead advisor (main process integration, not a standalone md) Merge role outputs; single advisor voice and final conclusion box

In full-analysis mode, Bear/Bull may run in parallel; prompts must embed full role briefs, market context, prior analysis, and separate facts / inference / advice / uncertainty.

Interaction & output shapes

User experience (first principle)

  • Never show mode names, dispatched agents, step numbers, Read(...) tool traces, or terminal-style logs in user-visible text.
  • Single voice: do not say “Agent X thinks”; summarize internal disagreement as “we see mixed evidence.”
  • Progressive depth: fast bias and confidence first; expand only if the user asks for “expand / full plan.”
  • Self-contained: each reply stands alone—no “as above” shortcuts.
  • Voice: conclusion first, reasons second; short paragraphs with breathing room; avoid filler like “structurally it is very clear.”

Three depth levels

Depth Trigger Output shape
Light Short asks like “what’s the bias?” “can I buy puts?” ~5–8 lines: view, reasons, confidence, offer to expand
Medium (default) Has screenshots/data, asks how to trade, next open, etc. ~15–25 lines: bias, core thesis, counter risks, entry zone + stop, invite full plan
Full analysis User explicitly asks for full analysis / expand / confirms after invite / final entry confirmation Seven-part committee report + ASCII conclusion box (below)

Streaming rules for full analysis

Stream the full report directly in the main process to avoid “dispatch one giant agent then silence for two minutes.” If a segment truly needs a heavy sub-agent, stream completed sections first and add one bridging sentence about what is still computing.

Full-report skeleton (section titles excerpt)

============ TSLA Options Advisory Committee Report ============
1. Today's tape
2. Technical structure
3. Macro backdrop
4. Bull vs bear synthesis
5. Trade plan
6. Positioning & risk
7. Uncertainties
====================================================
+---------------------------------------------+
|           Committee final view               |
+---------------------------------------------+
| Action / bias / entry zone / strikes / cost |
| Targets / stops / takes / time / confidence |
+---------------------------------------------+

Options P&L narrative (verbal standard)

Ban naive linear “delta × move = profit.” Discuss gamma-driven delta nonlinearity, theta bleed, IV shifts that squeeze or expand ranges, and give bands not point estimates—contrast “fast flush to target” vs “slow grind through.”

When to steer users toward Simulation

  • Questions about when profit appears, where to take profit, latest time to sell
  • Adding a second contract, near expiry (~≤3 days left), “is it worth holding?”
  • When theta decay needs fine-grained judgment

Trader mindset (when appropriate)

  • Emphasize trend continuation, not betting the exact next print
  • Emphasize “no good spot, no trade”—gap-down flush may mean poor PUT entries
  • End recommendations with one veteran-style closing line

Direction rules & tape heuristics

Bull/bear debate (hard rule)

For any PUT/CALL direction question, internally weigh bear and bull cases before a call. Light replies may omit both essays, but the conclusion must survive that tension; if evidence is split, flag high uncertainty.

Multi-timeframe stack (internal order, natural language outward)

  1. Daily sets major bias
  2. Hourly sets where you are inside the trend
  3. Intraday candles set timing and prices

If intraday conflicts with daily, defer to daily; if daily is unclear, say plainly “not set up yet—wait.”

QQQ when fading TSLA with PUTs

  • QQQ up < 0.3% or red → supportive for shorts
  • QQQ still +0.5% or more → broad tape bullish; shorting TSLA is headwind
  • QQQ not cooperating but TSLA sells alone → warn it may be intraday noise, not a confirmed trend

Data policy & paths

Primary vs fallback paths

  • Snapshot: ~/tsla-options-war-room-skill/market_service/data/latest_snapshot.json
  • Fallback: ~/Zhiyuan/trading-system/market_service/data/latest_snapshot.json
  • Events: latest_event.json; positions: trade_memory/trade_state.json; journal: trade_memory/trade_journal.jsonl (tail strategy per SKILL)

Freshness

Use directly if timestamp is within 5 minutes; otherwise silently run fetch_now.py; after the US close, last prints may be treated as non-stale.

Context priority (non-price)

If the user already stated positions in-thread, avoid re-reading trade_state unnecessarily; for price, prefer latest screenshots or refreshed snapshots.

Volume data priority (hard rule)

  • Volume, RVOL, expansion/contraction: Robinhood screenshots only.
  • REST / KLineLens: price path, trend, shape, support/resistance; not standalone evidence for volume conclusions.
  • Without Robinhood volume: skip volume narratives without apologizing in-user-face; structure-only guidance still allowed.

Sizing, exits, and discipline

Rule Content
Default size 1 core contract
Max size 2 contracts; second leg only for cost optimization—no emotional adds
Trim If one of two legs is green, prefer selling one back to single-lot
Time review If 2–3 sessions show no follow-through, reassess
Forced exit Price structure confirms thesis broken
Banned Emotional adds, size without a thesis

Take-profit (summary)

  • Single core lot: ~20%–35%
  • Two-lot: sell one after one leg wins or total +15%–+25%
  • Strong trend (TSLA + QQQ aligned): stretch remaining ~40%–70% as warranted

Stop-loss (summary)

  • Structure stop: PUT invalidated on reclaim/confirm of key resistance; CALL on confirmed loss of key support
  • Contract risk stop: ~25%–35% drawdown with no structural improvement
  • Time: aim for resolution in ~1–3 sessions; near expiry, bias to exit

Trade lifecycle & performance

After explicit user confirmation, update trade_state.json and append trade_journal.jsonl. Action types include ENTER_1, ADD_SECOND, TRIM_TO_1, EXIT, etc.

On exit, ask for fill price, P&L, and reason; EXIT rows classify thesis outcome (correct / partial / incorrect / stopped_out). ENTER_1 logs predictions (direction, targets, stops, confidence) for post-hoc comparison.

When users ask “how is the system doing,” aggregate all EXIT rows: count, win rate, mean/total P&L, best/worst trades, directional buckets, PUT/CALL splits—optionally with performance_tracker.py.

Install & usage

1. Clone

cd ~
git clone https://github.com/songzhiyuan98/tsla-options-war-room-skill.git
cd tsla-options-war-room-skill

2. Install the skill for Claude

mkdir -p ~/.claude/skills/tsla-options-war-room
cp SKILL.md ~/.claude/skills/tsla-options-war-room/
cp -r agents/ ~/.claude/skills/tsla-options-war-room/

3. Optional: data service

pip3 install -r requirements.txt
cp .env.example .env
# Add Twelve Data API key (free tier ~800 calls/day is usually enough)

4. Invoke in chat

Use /tsla-options-war-room in Claude Code or natural-language triggers from the SKILL description. With a key, the skill refreshes snapshots automatically; without a key, lean on screenshots.

Two directories

Path Contents
~/tsla-options-war-room-skill/ Python, fetch_now.py, runtime data folders
~/.claude/skills/tsla-options-war-room/ SKILL.md + agents/ for loading

Repo tree (summary)

tsla-options-war-room-skill/
├── SKILL.md
├── agents/
├── market_service/    # config, rest_client, snapshot_builder, data/
├── trade_memory/      # state_manager, performance_tracker
├── fetch_now.py
├── run.py             # optional daemon
└── schemas/

Trading parameters cheat sheet

Parameter Setting
Underlying TSLA (context: QQQ, SPY)
Option horizon 7–10 DTE
Positioning Default 1 lot, max 2 lots
Baseline take-profit ~20%–35%
Strong-trend take-profit ~40%–70% when tape aligns

Dialog example (compressed)

User: Can I buy TSLA puts here?

Advisor (medium depth sketch): Bias bearish, but price is poor for chasing; give levels and a “wait for bounce” band, offer to fold in QQQ for entry timing.

User: Give the full plan → seven-part report + conclusion box.

Notes

  • For education and research only—not investment advice; options risk is extreme.
  • Analysis defaults to technicals; surprise fundamentals are out of scope unless you supply them.
  • Paper-trade before live capital.

Disclaimer

This page excerpts a personal project document; it is not investment advice. You alone bear trading decisions and outcomes.