Oracle3
Open-source trading engine and MCP server for prediction markets. Fee-aware no-arbitrage trading across related contracts, live on Kalshi, Polymarket and Solana or on paper.
Automated pre-market news brief for US equities, macro and AI/tech: LLM-triaged news tiers, sector heatmap and a full-market momentum scanner, rendered daily.
FinancePython · HTMLGitHub @400-tangOnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
No updates detected yet. GitHub releases will appear here.
Owners of public repositories under a personal GitHub account can sign in to verify ownership and manage the introduction themselves. No administrator approval is needed.
Sign in, generate a verification file, and commit it to this repository’s default branch within 30 minutes. Files on other branches or forks do not count. Then check the file below to manage the project without administrator approval. Keep the file to retain your access.
If needed, you will go to sign-in. After signing in, return here and press your chosen verification button again.
Run /nomorevibe verify in your project folder to verify ownership and manage the introduction yourself.
Verify in one minuteAsk about other verification options
Loading the full README. The saved excerpt is shown below.
An automated pre-market news brief for US equities, macro and AI/tech.
Every trading day at 6:00 AM PT it scans global financial and tech news, merges
duplicate stories, ranks them into three tiers, explains why each one matters,
and publishes a web dashboard plus a Markdown archive.Read the full README ↗English · 中文
An automated pre-market news brief for US equities, macro and AI/tech. Every trading day at 6:00 AM PT it scans global financial and tech news, merges duplicate stories, ranks them into three tiers, explains why each one matters, and publishes a web dashboard plus a Markdown archive.
It's inspired by Taurient, the in-house tool at the Australian hedge fund Minotaur Capital that uses several LLMs to scan about 35,000 news articles a week for investment ideas. Taurient Lite covers only the information-compression part of that. It doesn't pick stocks or give advice. Its job is to tell you what you need to know before the open in a few minutes of reading.
→ Live brief: taurient-lite-backend.onrender.com (The brief itself is written in Chinese. Free-tier hosting, so the first load may take a few seconds.)
GitHub Actions ──► market data (Yahoo, FINRA, full-market momentum scan) ──► data/*.json
│
Claude Code routine ──► scan news, dedupe, tier, write "why it matters" ──► briefs/YYYY-MM-DD.json ← single source of truth
│
taurient_lite/ (pure-stdlib renderer) ──► validate JSON ──► HTML dashboard + Markdown archive
│
backend/ (FastAPI on Render) ──► serves the latest brief with live quotes, stock pages, accounts
theme.py. Changing news coverage touches only
config.json.schema → components → renderers → pipeline, so each
layer can be tested on its own.More detail is in docs/architecture.md and docs/frontend-architecture.md (in Chinese).
News is a lagging signal. By the time a catalyst makes the headlines, much of the move has usually happened already. The scanner reads only price and volume (OHLCV) and asks how far into its move a stock is:
| Stage | Meaning |
|---|---|
| Early | Broke a 50-day high within the last 3 days, on volume ≥ 2.5× the 20-day median |
| Continuation | Within two weeks of the breakout. The trend holds, but the best entry has passed |
| Base | Not broken out yet, range tightening. A watchlist candidate |
| Extended | > 35% above the 20-day MA, or > 10 days since the breakout, or doubled off its base |
This is not a trading signal. The full backtest covered 2,515 liquid US stocks over two years and 5,090 early-stage signals:
The stages are there to state facts about where a stock is in its move, not to predict returns. What the scanner gives you is time. It flagged BE as early stage at $23.92 on 2025-06-30, months before it became a headline. The stock is now around $258. The scanner didn't predict that. It saw the move in price and volume before it reached the news. The full tables are in README.zh-CN.md.
git clone https://github.com/400-tang/taurient-lite.git
cd taurient-lite
# Re-render an existing brief (no dependencies needed)
python3 render.py 2026-09-18 # → site/index.html + briefs/2026-09-18.md
# Run the test suite (standard library only)
python3 -m unittest discover -s tests -t .
# Run the web backend locally
pip install -r backend/requirements.txt
uvicorn backend.server:app --reload # → http://127.0.0.1:8000
Other entry points:
python3 scan_momentum.py # daily momentum scan over data/universe.txt
python3 scan_momentum.py --refresh-universe # rebuild the liquid-stock universe (weekly)
python3 apply_momentum.py <date> # merge scan results into a day's brief
python3 fetch_sectors.py # sector map + market caps for the heatmap
python3 fetch_short_interest.py # official FINRA short interest
python3 import_watchlist.py # import a TradingView watchlist export
To generate a full brief with Claude Code: claude "Generate today's brief following RUNBOOK.md".
taurient-lite/
├── RUNBOOK.md Daily procedure the scheduled agent follows
├── config.json Coverage, item targets, freshness limits, watchlist
├── taurient_lite/ Rendering pipeline (zero third-party deps)
│ ├── schema.py Data model and validation
│ ├── components/ UI components
│ ├── theme.py Design tokens and stylesheet (light and dark)
│ ├── momentum.py Momentum stage logic (pure functions)
│ ├── treemap.py Treemap layout (pure geometry)
│ └── ...
├── backend/ FastAPI service on Render (live quotes, stock pages, Supabase auth)
├── tests/ 381 tests, standard library only
├── briefs/ Daily JSON (source of truth) and Markdown archive
├── data/ Market snapshots produced by GitHub Actions
└── .github/workflows/ Scheduled market-snapshot and momentum-scan jobs
0 13,14 * * 1-5
(UTC), and a time gate in the prompt makes only the run after 6:00 AM Pacific
do any work. That handles daylight-saving time without editing the cron twice a
year.backend/ from render.yaml
(New → Blueprint in the Render dashboard).The layout is modeled on a morning newsletter rather than a trading terminal: a single column about 65 characters wide, Newsreader for headlines, IBM Plex Sans for body text and IBM Plex Mono for every number. Cobalt blue is used for structure and interaction only. Red and green are reserved for market direction. The up/down colors were checked for color-blind readability. In dark mode, arrows, signed values and intensity bars mark direction as well as color.
This is a news-summary tool, not investment advice. It makes no buy or sell recommendations and no price predictions. Every number in a brief has to trace back to a cited source, and numbers that can't be verified are left out.