Everything an options trader keeps ten browser tabs open for, in one terminal.
Live positions & Greeks · P/L and risk · exit discipline · paper trading with option and stock legs · a four-source news desk · stock picker · earnings & SEC filings · an honest trade journal. Connect tastytrade, Alpaca or Public, or upload a CSV from any broker. It runs entirely on your own computer, in 中文 / 双语 / English.
🌐 Website · 中文说明 → README_zh.md · 🚀 Quick start · What's new · All features · User manual · Contributing
The trades in the tour are made up; quotes, news and charts are real data from the day it was recorded.
🚀 Quick start
git clone https://github.com/jackson-cmd/zeus-options-terminal
cd zeus-options-terminal
./start.sh # macOS / Linux (Windows: double-click start.bat)
The first run installs everything into a local virtual environment (Python 3.10+) and opens http://localhost:8765. Then:
- Press Load the sample to try every page with a sample portfolio priced from today's quotes, or
- open ⚙ Settings → Broker & data and connect tastytrade, Alpaca or Public (each has a Test connection button), or upload a CSV of your trades.
- News sources, AI and e-mail alerts are optional, in the same Settings page. Nothing is edited by hand.
Port 8765 taken? Run PORT=8790 ./start.sh. Where each broker's keys come from: Connect your broker.
📦 Install with pipx
One command and no clone. pipx puts ZEUS in an environment of its own (Python 3.10+):
pipx install zeus-options-terminal
zeus # opens http://localhost:8765 (zeus --port 8790 for another port)
Settings and data stay in ~/.zeus-terminal, so pipx upgrade zeus-options-terminal keeps them. pip install zeus-options-terminal inside a virtual environment works too. More in manual §1.8.
🐳 Run with Docker
No Python needed. The image is on GitHub Packages for Intel and AMD (amd64) and for ARM (arm64, such as Apple silicon and Raspberry Pi):
docker run -d --name zeus --restart unless-stopped \
-p 127.0.0.1:8765:8765 -v zeus-data:/data \
ghcr.io/jackson-cmd/zeus-options-terminal:latest
Then open http://localhost:8765. Your settings, trades and caches stay in the zeus-data volume. To update, run docker pull ghcr.io/jackson-cmd/zeus-options-terminal:latest and docker rm -f zeus, then the same docker run; nothing is lost. Keep 127.0.0.1: in -p: ZEUS has no login, so its port must stay on your own computer. Your time zone, AI agents, a Compose file and what the image leaves out: manual §1.7.
Is it for you?
- You trade options: verticals, iron condors, calendars, covered calls, short puts. You want every position's P/L, Greeks and risk on one screen.
- Your broker is tastytrade, Alpaca or Public, or any broker that exports your fills as a CSV.
- Your positions and keys should stay on your computer: no cloud account, no subscription, no telemetry.
- You read market news in English or Chinese, or both.
- You want rules that keep you honest: take-profit lights, an alarm for spreads without a closing order, a pre-trade checkup, and a journal that does not flatter you.
If you were looking for a self-hosted options trading dashboard, an options profit calculator with live Greeks, a tastytrade, Alpaca or Public portfolio tracker, an options trading journal, a paper-trading simulator for spreads, a stock screener with support and resistance, or a bilingual US stock market news desk: it is all here, in one app.
Contents
- 🚀 Quick start · 🐳 Run with Docker · Is it for you? · 🆕 What's new · The story · Four ways in
- 🗺️ Feature tour: Positions · Discipline engine · Picker · Paper trade · Market brief · Digest · Events · Trade journal · Three languages · Bring your own AI · Your agents (MCP)
- 📸 Screenshots · 🔌 Connect your broker · 🔑 What each setting unlocks · 📄 Manual trades: the CSV
- 🔒 Privacy & security · 🏗️ Under the hood · ❓ FAQ · 🤝 Contributing · 📜 License
🆕 What's new
Latest release 0.6.0 (2026-11-12). The full history is in the changelog.
| New in 0.6.0, 0.5.x, 0.4.x, 0.3.x and 0.2.x | |
|---|---|
📦 pip and pipx: pipx install zeus-options-terminal, then zeus, installs and starts ZEUS without cloning the code; pipx upgrade keeps your settings and trades. Install with pipx → |
|
🐳 Run with Docker: one docker run starts ZEUS from GitHub Packages on Intel, AMD and ARM. Your settings and trades stay in a volume, the port stays on your own computer, and AI agents connect through docker exec. How to run it → |
|
| 🔌 Alpaca and Public: connect an Alpaca account (free, paper trading included) or a Public account for live positions, fills, working orders and quotes with Greeks. Positions and quotes are separate choices, so you can also keep your uploaded trades and take quotes from Alpaca. ZEUS only reads; it never places an order. Connect a broker → | |
| 🧪 Sample portfolio: on a fresh install, one click loads six positions and a closed trade priced with today's real option quotes, so you can try every page before connecting anything. One click removes it. How to start → | |
| ❓ Help on every page: a small ? beside the columns, scores and cards opens a plain explanation of what the item is, how it is calculated and how to use it, and the ? in the top bar lists every button and number on the page. How it works → | |
| 🔌 Plug in your own AI agents (MCP): Claude Code, Claude Desktop, GPT through Codex, Gemini CLI or an agent you build can read your positions, run the pre-trade checkup, price spreads, and read the news and your journal. If you allow it, they can also paper trade. ZEUS is a local MCP server, so no API key is needed. Connect an agent → | |
| 🟩 Heatmap: the picker's heatmap is back, one click away from the K-line chart wall. How to use it → | |
| 🧪 Paper Trade: build any strategy on the live option chain with option and stock legs, save it as a simulated trade and follow its P/L. How to use it → | |
| 📧 E-mail alerts: every desktop alert can also arrive in your inbox, on macOS and on Linux. How to set it up → | |
| 🔄 Sector rotation: 80 industry groups ranked by momentum and trend, and 🎲 options sentiment works out of the box. How to use it → | |
| ∞ Exact max profit and loss: short puts and stock are measured down to zero, and unlimited strategies show ∞. How it is calculated → | |
| 🌐 English everywhere: the TA screener and single-ticker page now follow 中文 / 双语 / English. Languages → | |
| 📚 A complete user manual and a feature checklist, in English and Chinese, with clickable contents. Open the manual → |
The story
I built ZEUS Terminal for myself over about six months, on and off, and I have traded with it every day for more than a year.
It started as a P/L viewer for my tastytrade spreads. It grew, one real trading problem at a time, into a complete options trading terminal that I run on my own machine: every position priced live with Greeks and probabilities, exit rules that catch me before I make the same mistake twice, a news desk that reads Benzinga, Finviz, The Wall Street Journal and MarketWatch in two languages, a stock picker built on charts I actually look at, earnings and SEC filings in one place, and a trade journal that tells me the truth about my own trading.
I have lived inside this tool through rallies, crashes and earnings seasons, and I have fixed almost every bug I ran into. Now I am handing it over. Nothing of mine is inside — no accounts, no trades, no keys. You bring your own; they stay on your computer.
Free wherever possible. Most of what traders usually pay for, such as option quotes, a news terminal, a screener and journal software, runs here locally for free: option data from Cboe's delayed feed, news from Finviz, WSJ and MarketWatch, and your trades from a plain CSV. A tastytrade or Benzinga account makes it smoother, but neither is required.
Beyond automation, play the game yourself. Trading agents are automating more and more of trading. Alongside them, you can still step in and play the game yourself: think about what the other players are doing and what the price has already absorbed, then make your own call. After more than a year with this tool, my strongest lesson is that decision discipline and risk control matter more than finding the next great setup: when to take profit, when to admit a mistake, how much one position may lose. Much of ZEUS exists for exactly that, from the exit rules and the pre-trade checkup to the stress tests and the trade journal.
Why ZEUS? Options are priced by the Greeks — Delta, Gamma, Theta, Vega — and Zeus is the king of the Greek gods. This terminal is where you rule them.
Positions — every strategy with live P/L, max profit/loss, chance of profit and DTE |
Strategy detail — P/L across prices and dates, Greeks, chance of profit |
Picker — the K-line chart wall with support/resistance and EMA 50/200 |
Trade journal — win rate, profit factor, monthly targets, equity curve |
All trades and positions in the screenshots are made up (free manual mode); quotes, news and SEC filings are live public data from the day they were taken. Every view is in 📸 Screenshots.
Four ways in
| tastytrade API — the smoothest | Alpaca — free, with a paper account | Public | Free mode — no broker account | |
|---|---|---|---|---|
| Positions | Pulled live from your account | Pulled live from your paper or live account | Pulled live from your account | Upload a CSV or type trades in (stocks and options) |
| Quotes | Real-time DXLink streaming, sub-second | Free data: IEX stock prices in real time; options at Alpaca's indicative prices with Greeks and IV | Real-time quotes, option chains and Greeks | Options from Cboe delayed quotes (free, ~15 min delayed; after the close they keep the closing bid/ask, IV and Greeks), stocks from Yahoo Finance, automatically switching to Finviz when Yahoo rate-limits |
| Fills, expirations, assignments | Booked automatically | Read from your fills | Read from your history | Replayed FIFO from your fills; expired options settle at intrinsic value |
| Trade journal | Syncs every hour by itself | Rebuilt from your fills every hour | Rebuilt from your history every hour | Rebuilt instantly from your uploads |
| Buying power, live orders, missing take-profit orders | ✅ | ✅ | ✅ | — |
| Everything else (picker, digest, events, journal analytics, AI…) | ✅ | ✅ | ✅ | ✅ |
If you have a tastytrade account, connect it. The whole terminal was designed around that feed and it shows: streaming P/L that moves with every tick, real fills, nothing to maintain. Alpaca is the free way to get a live account feed, paper trading included, and Public works for Public customers. ZEUS only reads from them and never places an order. Free mode is there so that anyone, with any broker, can still use it. Positions and quotes are two separate choices in Settings: you can, say, keep uploading your trades and take quotes from Alpaca.
Just looking? On the empty Positions page press Load the sample: six positions and one closed trade, priced with that moment's real option quotes, so every page has something to show. One click removes it.
Benzinga is optional too. With a Benzinga Pro login you get the live Benzinga wire, pre-market commentary, market events and real-time signals. Without it, the Digest runs on the free bilingual wire: Finviz + WSJ + MarketWatch.
🗺️ Feature tour
This tour covers the highlights. ZEUS does far more than fits on one page: the complete feature checklist lists every page, button, alert and background job, and the user manual explains how to use every one of them, with clickable contents.
⚔️ Positions — the command center
- Every strategy recognized automatically: verticals, calendars, diagonals, iron condors, butterflies, naked and covered legs, stock. Legs are grouped by the order that opened them, so spreads stay together even when you leg in or roll.
- Live P/L that matches your broker: mark-to-market per leg, today's P/L from the official previous close, total return in $ and %.
- Risk at a glance: max profit, max loss (∞ when unlimited), breakevens, distance to breakeven, probability of profit, days to expiry and a progress bar toward max profit — for every position, in one sortable table.
- Status lights: 🔴 deep loss · 🔵 take profit · 🟡 near target · 🟢 hold. One click filters the board.
- Detail view per strategy: a full P/L table across prices and dates, a P/L graph, implied-volatility override, mid/natural pricing, a TradingView chart, and per-leg Greeks (Δ Γ Θ Vega) with a skew-aware, vega-weighted spread IV.
- Stress test: 1σ / 2σ moves, VaR 95 %, CVaR 95 %, worst case, an expiry calendar, scenario sliders and P/L probabilities for the whole book.
- Privacy blur (one key) for screen sharing, compact and freeze views, installable as a desktop app (PWA).
🩺 Discipline engine — the part that saves money
- Exit advisor with a regime-adaptive take-profit: take ~70–80 % of max profit in a bull regime, ~50–60 % when the market is choppy, never sit on a winner until expiry.
- Missing take-profit order alarm (tastytrade): a red bar the moment a position has no working GTC exit.
- Credit-spread mistake detector, concentration, correlation and liquidity checks, position sizing as % of NLV, cash-reserve guard.
- Pre-trade checkup — a four-layer gate you run before opening (
/pretrade-checkup): trend → touch of support/resistance → IV & earnings → macro calendar. It exists to create friction on purpose. The 🩺 button on Positions adds a checkup panel: correlation with what you hold, concentration, a mirror of your past mistakes, spread suggestions and a liquidity scan. - Risk radar: today's news risk, event density for the next 30 days and a landmine calendar.
- Desktop and e-mail alerts for take-profit hits, support/resistance touches, risk-radar spikes and big movers. Desktop notifications (macOS) fire even when the browser is closed, and with e-mail set up every alert also arrives in your inbox (macOS and Linux).
🎯 Picker — find the next trade
- K-line chart wall: a wall of daily candles with EMA 50/200, multi-timeframe support/resistance, gold zones and badges; sort by market cap, today's change or TA score, filter by earnings date and by bullish / bearish setup.
- TA scan of the whole universe on trading days (MACD, RSI, volume, EMA breaks, with walk-forward win rates); the full table lives at
/ta/. - AI picker — trend-following and dip-buying candidates with strikes, chance of profit and ready-to-paste orders; with an AI provider set, an AI pass over news and earnings re-ranks them.
- Barchart lists (optional, your own Barchart account): intersect or union saved screeners and signal pages.
- Single-ticker deep dive: chart, fundamentals, bull/bear narratives from recent news, company profile, earnings history.
🧪 Paper trade — practice before real money
- An OptionStrat-style builder on the live chain: type a ticker, pick an expiration on the timeline, drag legs along the strike bar, or start from 23 one-click strategies, from long calls and verticals to iron condors, butterflies, straddles, strangles, ratio backspreads and jade lizards.
- Option legs and stock legs: buy or sell shares next to your options, so covered calls, protective puts and collars are priced correctly.
- Everything before you commit: net debit or credit, exact max profit and max loss (∞ when unlimited), breakeven, chance of profit, Greeks, and a P/L table and chart across prices and dates with range, price and IV controls.
- Save Paper Trade records a simulated fill at the mid price. Nothing is ever sent to a broker.
- Saved trades with live P/L: open trades are marked to market from the terminal's own quotes, with total return, today's return and a summary of open, today's and realized P/L. Groups, sorting, close at market, CSV export.
- ⚡ from the TA screener: the recommended spread on a ticker's detail page opens here with one click.
🧭 Market brief — the big picture, without the drama
- AI market judgement: how bad the news is versus how much price has already priced in, crash probability against historical base rates, three layers of support, and what would prove the view wrong. No bull/bear labels — probabilities and falsifiers.
- Sector rotation: 80 industry groups (575 tickers) ranked by their moves over 5 days to a year, with each group's trend and the share of its stocks above the 50- and 200-day averages.
- Options sentiment by sector: IV percentile, 25-delta skew percentile, put/call volume and open-interest percentiles, each against its own history. It reads the daily option-chain archive (run it from the
/ta/page), so the percentiles need a few weeks of history.
📋 Digest — four wires, two languages
- Benzinga (Pro login): the live wire pushed in real time, pre-market commentary and options-flow reports, Benzinga's own categories.
- Free bilingual wire: Finviz (free page or your Elite token), WSJ (Markets, Business, Tech, World) and MarketWatch — refreshed every five minutes, every headline translated into Chinese.
- Source chips to mix the wires, must-read filter for strong catalysts and big macro, de-noise filter for clickbait templates, watchlist-only mode, sentiment filters, category and ticker filters.
- AI summary of the day (or of any filter) that merges duplicates into a two-minute read; incremental updates when new stories land.
- Tickers view: news counts per ticker over 1/3/7/30 days with live prices; positions news: only what touches what you hold.
- Calendar & history search across every stored day; ❤️ liked stories that survive across days.
- Market chart: SPY/QQQ full-history candles with every major turning point marked — click a pivot and the AI explains which news drove it.
📅 Events
- Earnings calendar for your universe and positions, with before/after-market timing and high-impact macro dates.
- Corporate events (Benzinga): IPOs, M&A, secondary offerings, splits, unusual options activity.
- SEC filings reader: 10-K / 10-Q / 8-K straight from EDGAR, bilingual side-by-side, plus earnings-call transcripts (from public call recordings, needs
yt-dlp). - Risk radar from any tab.
📓 Trade journal — the honest mirror
- Overview: win rate, profit factor, average trade, max drawdown, closed vs open P/L, fees, monthly targets, equity curve.
- Calendar, all trades (every leg, every fill), analysis (P/L by symbol, by holding time, by setup; distribution; cumulative curves).
- What-if engine: would taking profit earlier, later or never have paid off — on your own trades?
- AI review: an AI coach reads your trades and your notes and tells you what you keep doing wrong.
- Decision log: record the thesis, confidence, emotion and signal source for every opening and closing decision, attach screenshots, see the price path after you acted, and get reminded to fill in what you skipped.
🌐 Three interface languages: 中文 · 双语 · English
- 中文 — the original interface: explanations, tips and news translations in Chinese, while trading tables such as Positions, the strategy detail, Paper Trade and the journal keep the usual English labels (Max Profit, Win Rate…).
- 双语 Bilingual — the Chinese interface with the English term beside Chinese tabs, buttons, headers and labels, and English inside tooltips. Made for learning the market vocabulary in both languages.
- English — the interface in English, the TA screener and single-ticker page included; a few labels may still show Chinese.
- Switch in the top bar at any time. News arrives in English with a Chinese translation under every headline (hidden by default in English mode, one click to show). AI answers follow your language.
🤖 Bring your own AI
Use whichever you have: Claude Code CLI (your Claude subscription), an Anthropic API key, or any OpenAI-compatible endpoint (OpenAI, DeepSeek, OpenRouter, a local Ollama…). With nothing configured, ZEUS simply runs without the AI buttons.
🔌 Plug in your own agents (MCP)
It works the other way round too: ZEUS is an MCP server. Point Claude Code, Claude Desktop, Codex (GPT), Gemini CLI or your own agent at http://127.0.0.1:8765/mcp. It gets 18 tools backed by ZEUS's own numbers: positions with exact max profit and loss, breakevens, Greeks and exit advice, what-if pricing of any strategy, the four-gate checkup, liquidity, news, events, sector rotation and your journal. Then ask something like "which of my positions should I take profit on, and what earnings land before they expire?" It is read-only unless you let agents paper trade, it answers only programs on this computer, and it never touches a real order. Connect an agent →
📸 Screenshots
Made-up demo trades in free (manual) mode; quotes, news and filings are live public data.
Positions — live P/L, breakeven distance, max profit / loss, chance of profit, progress |
Strategy detail — P/L table across prices and dates, Greeks |
Risk analysis — stress test, VaR / CVaR, beta-weighted Greeks for the whole book |
Pre-trade checkup — spread suggestions ranked by liquidity and reward / risk |
Picker — K-line chart wall with support / resistance and EMA 50/200 |
AI picker — trend and dip candidates with strikes and ready-to-paste orders, works without AI too |
Paper trades — simulated option and stock trades with total, today's and realized P/L |
Paper trade builder — a covered call (100 shares + a short call): exact max profit and loss, P/L by price and date |
Single-ticker page — chart, Finviz technicals and fundamentals, news |
Digest — Finviz, WSJ and MarketWatch, plus Benzinga with a login |
Market chart — SPY / QQQ full-history candles |
Calendar — earnings and high-impact macro dates |
SEC filings reader — 10-K / 10-Q / 8-K straight from EDGAR |
Risk radar — today's news risk and a 30-day landmine calendar |
Trade journal — win rate, profit factor, monthly targets, equity curve |
Journal analysis — what works and what doesn't, from your own trades |
Settings — everything is entered in the browser; saved secrets are write-only |
AI agents (MCP) — connect Claude, GPT (Codex), Gemini or your own agent; no API key |
🔌 Connect your broker
Everything is set in the browser, in ⚙ Settings → Broker & data: one block per broker, each with a Test connection button. Positions and quotes are separate choices, and anything a broker does not carry comes from the free sources. ZEUS only reads; it never places an order.
Where to get the tastytrade credentials
my.tastytrade.com → Manage → API Access → OAuth Applications → create an application (keep the client secret) → Manage → Create Grant (all scopes) → copy the refresh token. Paste both into Settings and press Test connection.
Where to get Alpaca and Public keys
Alpaca: sign up at alpaca.markets (free) → your Paper Trading account → API Keys → Generate → copy the key ID (starts with PK) and the secret. For a live account, generate them there (AK…) and set Alpaca paper account to off. Public: public.com → Account → Settings → API → generate a secret key. Step by step in the manual.
🔑 What each setting unlocks
| Setting | Unlocks | Free? |
|---|---|---|
| tastytrade OAuth (client secret + refresh token) | Live positions, streaming quotes, automatic journal, buying power, working orders | free with a tastytrade account |
| Alpaca key ID + secret | Live positions from your paper or live account, fills, working orders; free IEX stock prices and indicative option quotes with Greeks | ✅ free account and data |
| Public secret key | Live positions, history, working orders, real-time quotes, option chains and Greeks | free with a Public account |
| Positions come from / Quotes come from | Pick the account source and the quote source separately; anything a broker lacks comes from the free sources | ✅ |
| Manual trades (CSV / form) | Positions, P/L, journal and analytics without any broker connection | ✅ |
| Benzinga Pro cookies | Benzinga live digest, pre-market, market events, history | Benzinga Pro subscription |
| Benzinga data API key | Real-time signals feed, scanner | from your Benzinga Pro session |
| Finviz Elite token | Finviz news through the official export (otherwise the free page) | optional |
| AI provider | AI summaries, market brief, AI picker, AI journal review, position review | your own |
| Barchart login | Barchart screener and signal lists | Barchart account |
| E-mail (SMTP) | Every alert also by e-mail, with a test button (macOS and Linux) | ✅ |
| AI agents (MCP) | Your own agents (Claude, GPT through Codex, Gemini…) use ZEUS as tools; on by default, paper trading by agents off | ✅ |
📄 Manual trades: the CSV
Download the template from Settings (or use examples/trades_template.csv):
date,symbol,asset,side,effect,qty,price,fees,option_type,strike,expiration,multiplier,order_id,note
2026-03-02 10:15,AAPL,stock,buy,open,50,231.40,0,,,,,,long stock
2026-03-03 11:02,NVDA,option,buy,open,1,12.50,1.10,C,180,2026-04-17,100,nvda-bcs-1,bull call spread long leg
2026-03-03 11:02,NVDA,option,sell,open,1,6.20,1.10,C,190,2026-04-17,100,nvda-bcs-1,bull call spread short leg
side: buy / sell — or broker shorthand BTO, STO, BTC, STC, "Buy to Open", "Sell to Close"…effect: open / close / (blank = decided automatically).- Options can also be given as one symbol: OCC (
AAPL 260618C00200000), compact (AAPL260618C200) or broker text (AAPL 06/18/2026 200.00 C). - Legs with the same
order_id(or the same minute) are shown as one strategy. - tastytrade CSV exports and most broker exports with date / symbol / side / quantity / price columns are recognized as is.
- Starting cash is inferred as the smallest account that could have funded your history; set your real number in Settings.
🔒 Privacy & security
- Everything stays on your machine. Tokens, cookies, passwords and uploaded trades live in
~/.zeus-terminal/(permission 600), never inside the repository — agit pushcannot leak them. - The code folder holds code only. Everything the terminal writes while running — position snapshots, the trade journal and its screenshots, news archives, caches, downloads, logs — goes to
~/.zeus-terminal/runtime/. The runtime folders inside the code are links to that place and are ignored by git. - Sharing safely. Publish with
git push, or build a zip withtools/export_clean_zip.sh; both contain code only. Do not drag the whole folder into a website or zip it by hand.tools/install_git_hook.shadds a local pre-commit check that refuses links, data files, anything shaped like a key or token, and your own home path, login name or git identity. - Saved secrets are write-only from the browser: the settings API reports set / not set and never sends a secret back.
- The MCP endpoint for AI agents answers only programs on this computer (in Docker they come in through
docker exec), and no MCP tool can place a real order or read a saved key. What an agent reads goes to that agent's model provider. - The server listens on 127.0.0.1 only by default, refuses foreign
Hostheaders (DNS rebinding), only accepts cross-origin calls from localhost, and write endpoints need a header that other websites cannot send. - In Docker the app runs as an ordinary user and cannot change its own code, your data stays in the
/datavolume, and the documented command publishes the port on 127.0.0.1 only. The localhost checks work exactly as they do without Docker. - No telemetry. The app only talks to the services you connect plus public market data (Cboe delayed quotes, Yahoo Finance, SEC EDGAR, Finviz, Dow Jones RSS).
- Free market data is rate-limit aware: company data (sector, industry, market cap) comes from Finviz in batches of 20 tickers, stock quotes fall back to Finviz whenever Yahoo Finance throttles, and a whole option chain is one Cboe request instead of one Yahoo request per expiration.
- Found a security problem? Please report it privately, as SECURITY.md explains, not in a public issue.
🏗️ Under the hood
Where things are:
zeus-options-terminal/
├── zeus/ all the code
│ ├── options_analyzer/ the server (optionstrat_server.py), positions, checkup, paper trade, page assets
│ ├── heatmap/ · ta_screener/ · ai_picks/ · stock_selector/ · barchart/ picker and screeners
│ ├── benzinga_digest/ · news_radar/ · market_brief/ · sec_filings/ … news, brief, events
│ ├── trade_journal/ · journal_review/ · journal_expiry_whatif/ the journal
│ ├── zeus_*.py · local_broker.py settings, brokers (Alpaca, Public), AI, news, MCP, e-mail
│ ├── Dockerfile the container image on ghcr.io (and Dockerfile.dockerignore)
│ └── defaults/ ticker lists seeded on the first start
├── docs/ user manual, feature list, screenshots, README images
├── site/ the project website (GitHub Pages)
├── tests/ offline tests: python -m pytest
├── tools/ privacy pre-commit hook, clean zip export, release notes, Docker image check
├── examples/ CSV template for manual trades
└── start.sh · start.command · start.bat · requirements.txt
How the pieces talk to each other (paths below are inside zeus/):
browser (PWA, 中文 / 双语 / English)
│ WebSocket + REST
▼
FastAPI server ── options_analyzer/optionstrat_server.py
├─ broker ........ tastytrade REST + DXLink stream │ local_broker.py (manual mode, Cboe + Yahoo)
│ │ zeus_brokers.py (Alpaca · Public, read-only)
├─ news .......... Benzinga (cookies / WS) │ zeus_news.py (Finviz · WSJ · MarketWatch)
├─ picker ........ heatmap/ · ta_screener/ · ai_picks/ · stock_selector/ · barchart/
├─ brief ......... market_brief/ · narratives/
├─ events ........ sec_filings/ · benzinga_market_events/ · trade_journal/calendar_events.py
├─ journal ....... trade_journal/ · journal_review/ · journal_expiry_whatif/
├─ discipline .... options_analyzer/checkup/ · pre_trade_checkup/ · sr_alert/
├─ paper trade ... options_analyzer/paper_trade.py · paper_trade_routes.py (simulated, never sent to a broker)
├─ AI ............ zeus_ai.py (Claude CLI · Anthropic · OpenAI-compatible)
└─ settings ...... zeus_config.py → ~/.zeus-terminal/config.json
Runtime data (candles, caches, digests) lives in ~/.zeus-terminal/runtime/; folders such as zeus/data/ inside the code are only links to it. Configuration can also come from environment variables (ZEUS_<KEY>, e.g. ZEUS_TT_REFRESH_TOKEN) and the settings folder can be moved with ZEUS_HOME.
❓ FAQ
Do I need tastytrade? No. Alpaca (free, with a paper account) and Public connect too, and free mode covers stocks and options from any broker through a CSV. tastytrade is simply the smoothest.
Can I try it without any account? Yes: press Load the sample on the Positions page. The picker, digest, events and TA screener run on free data anyway.
Do I need Benzinga? No. The Digest runs on Finviz + WSJ + MarketWatch for free.
Does it place orders? Not real ones. It only reads from tastytrade, Alpaca and Public. The 🧪 Paper Trade tab records simulated trades for practice; real trades happen in your broker.
Does it work on Windows / Linux? The core does. Desktop notifications are macOS only; on Linux, set up e-mail alerts instead.
Can I run it in Docker? Yes: Run with Docker. The image runs on Intel, AMD and ARM. Desktop notifications are not in it; e-mail alerts are.
Where are my settings? ~/.zeus-terminal/config.json (in Docker, the zeus-data volume). Delete the folder to forget everything.
First launch after the close and the picker shows 0 quotes? Press Refresh on the picker; the last session's closing prices fill in within seconds.
🤝 Contributing
ZEUS has far more features than this page can show, and it keeps growing; new features may be added over time. Pull requests are welcome: a bug fix, a new data source or broker, a translation, better docs, or one of the parts not wired up yet. Read CONTRIBUTING.md first. Every pull request runs the test suite on Linux, macOS and Windows, and main only accepts pull requests whose checks pass.
Questions and ideas go to Discussions, bugs to Issues, and security problems to a private report (SECURITY.md). Everyone here follows the code of conduct.
📜 License: non-commercial
ZEUS Terminal is released under the PolyForm Noncommercial License 1.0.0.
- ✅ Personal use, study, research, hobby trading, non-profit use.
- ❌ Commercial use is prohibited — no selling it, no paid services built on it, no use inside a company's business.
Rights holders: if you believe anything in this repository infringes your rights (trademarks, data, terms of service or anything else), open an issue and the material will be removed promptly.
Disclaimer. This is a personal tool shared as is, without any warranty. It is not investment advice. Options involve substantial risk of loss. You are responsible for your own trades and for complying with the terms of every data provider and broker you connect. ZEUS Terminal is not affiliated with or endorsed by tastytrade, Alpaca, Public, Benzinga, Cboe, Finviz, Dow Jones / The Wall Street Journal / MarketWatch, Barchart, Yahoo or Anthropic; all names belong to their owners.
Metadata
Release files for zeus-options-terminal 0.7.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| zeus_options_terminal-0.7.0.tar.gz | 1.6 MB | With provenance | Details for zeus_options_terminal-0.7.0.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| zeus_options_terminal-0.7.0-py3-none-any.whl | Python 3 | none | any | Details for zeus_options_terminal-0.7.0-py3-none-any.whl |
Total release size: 3.3 MB
Release files / zeus_options_terminal-0.7.0.tar.gz
| Download URL | zeus_options_terminal-0.7.0.tar.gz |
|---|---|
| Size | 1.6 MB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
53a43512b72f4875723c9af8e3d0c0490cee8307e32fc3f7a9e82fbbd037cd93
|
|
BLAKE2b-256 checksum How to use checksums |
b15e3cf558fd1d5a03292f8dd355afc7f50834634c353d58ae63ca7c330408ed
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.16
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Nov 13, 2026.
Transparency logRelease files / zeus_options_terminal-0.7.0-py3-none-any.whl
| Download URL | zeus_options_terminal-0.7.0-py3-none-any.whl |
|---|---|
| Size | 1.7 MB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
9381a30df8090c5863f668169f28892898d80cf9076a5c7efd226a999a5665d8
|
|
BLAKE2b-256 checksum How to use checksums |
fc5353641625ff08fcfe030b62fedd13df6ecec416e510fbe49a5336488f01f7
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.16
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Nov 13, 2026.
Transparency logSecurity for zeus-options-terminal 0.7.0
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
Full provenance
Both files in this release have been uploaded with provenance metadata.
Attestation for zeus_options_terminal-0.7.0.tar.gz
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Nov 13, 2026.
Transparency logA note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.