Telegram bot · Claude API · FastAPI

An AI market analyst that lives in Telegram.

Send a ticker, get live indicators and a concise analysis written by Claude, grounded only in numbers the bot computed itself. A web dashboard tracks a watchlist with rule-based Buy / Hold / Sell signals.

Try /analyze NVDA: everyone gets 3 free AI analyses a day.

5commands
107automated tests
8threat classes defended
Globalstocks, crypto, FX, TASE
Nadavbot
/analyze NVDA
NVIDIA Corporation (NVDA) 🟢 233.95 USD (+1.34% today) 1M +4.37% · 3M +19.77% 52W 164.79 – 235.20 (-0.53% from high) RSI(14) 63.0 · Vol(30d) 38.5% SMA 20/50/200: 223.75 / 218.12 / 200.38 As of 2026-10-02 📈 Trend NVDA at 233.95 USD sits above all three averages: SMA 20 (223.75, +4.6%), SMA 50 (218.12, +7.3%) and SMA 200 (200.38, +16.8%). The averages are stacked in bullish order (20 > 50 > 200). The 1M move is +4.37% and the 3M move is +19.77%, so most of the gain came earlier in the window. ⚡ Momentum RSI(14) is 63.01: firm, but below the 70 overbought mark. Volume is 1.23x its 20-day average, so today's +1.34% move came with above-average participation. 🌊 Risk 30-day volatility is 38.53%, which is elevated. Price is only 0.53% below the 52-week high of 235.2 and about 42% above the 52-week low of 164.79. 🧭 Bottom line A strong, well-supported uptrend trading right at its yearly high, with momentum and volume confirming. Watch the 235.2 52-week high: a close above it on solid volume would extend the trend. Not financial advice. Data from Yahoo Finance, may be delayed.

Features

Everything a quick market check needs

Works with US and Tel Aviv stocks, indices, crypto and FX. Minor-unit quotes are converted, so TASE prices read in shekels, not agorot.

/analyze NVDA AI

Indicator card plus a Claude-written read on trend, momentum and risk, citing only the computed numbers.

/price TEVA.TA

Instant indicator card: price, 1M / 3M moves, 52-week range, RSI(14), volatility and moving averages.

/compare AAPL MSFT AI

Side-by-side on 2–4 tickers, ending with which shows the stronger technical setup and why.

/market

Pulse of the S&P 500, Nasdaq, Dow, VIX and TA-125, with AI commentary on top.

btc-usd

Just type a ticker: it's a shortcut for /analyze, and works with Hebrew keyboards too.

Watchlist dashboard

A live web view of every tracked ticker, with signals, a 1–5 score and a stance. Open to view; only the owner can edit.

Dashboard

Watchlist with rule-based signals

Each ticker gets technical signals computed in code, a 1–5 score and a Buy / Hold / Sell stance. Click a column to sort, hover a signal to see its weight.

Tracking
–
Buy
–
Hold
–
Sell
–
Instrument Price 1D 3M RSI vs 52W high Score Stance Signals
Loading demo data…

Demo built from real market data as of October 2, 2026. The live dashboard runs on the bot's server with current prices (on the free plan it can take a minute to wake up).

How it works

Deterministic math, generative narrative

The model never sees raw prices or the internet. Python computes the indicators; Claude only turns that small, auditable snapshot into words.

TelegramUser sends a ticker
FastAPI + botAccess gates, rate limits
Market layeryfinance → RSI, SMA, volatility, volume
Claude APIReasons only over the JSON snapshot
ReplyCard + grounded analysis

Grounded by design

Every claim in the analysis traces back to a field in the snapshot. Prompts are small, cheap and can't invent news, earnings or price targets.

Stances from rules, not the LLM

Buy / Hold / Sell comes from fixed, unit-tested conditions, so every stance can be explained. Claude describes the setup and never prescribes trades.

Graceful degradation

If Claude is down or the daily AI budget is used up, users still get the full indicator card instantly.

How the score is built

Signals: price vs. SMA 200, stacked averages, RSI extremes, 3-month momentum, distance from the 52-week high, heavy volume. Each bullish signal counts +1, each bearish −1, and every 2 net points move the score one step from a neutral 3, since the trend signals overlap.

1Sell
2Sell
3Hold
4Buy
5Buy

Security

Built assuming hostile users

The bot is open to anyone on Telegram and the server has a public URL. Every defense is covered by tests, and an independent security review's findings are fixed.

✓Strangers running up the AI bill

Each visitor gets 3 free AI analyses a day and all visitors share a daily cap, separate from the owner's quota, plus a hard monthly spend limit.

✓Forged Telegram updates

Webhook secret compared in constant time; the app refuses to start with a placeholder or short secret.

✓Editing the watchlist or abusing the API

The dashboard is read-only for visitors; edits and the raw API need the owner's password. API docs off in production.

✓Malicious sites using the owner's browser

A custom request header blocks CSRF; a localhost-only Host check blocks DNS rebinding.

✓XSS and injection

Escaped output, textContent-only rendering, a hash-based CSP, parameterized SQL, strict ticker validation.

✓Flooding the bot or server

Per-user rate limits, concurrent update handling, capped Yahoo fetches, request size limits, bounded caches.

✓Leaking secrets

Secrets only in env vars, kept out of git and images; logging that would expose the bot token is silenced.

✓Supply chain

Non-root container, read-only CI token, pip-audit on every push, weekly Dependabot updates.

Stack

Built with

Python 3.12python-telegram-botClaude APIFastAPI yfinancepandasSQLitepytestRuff GitHub ActionsDocker

Try it, or read the code

Indicator cards are open to everyone. The full source, tests and design notes are on GitHub.