Private beta · Q3 2026

Algorithmic trading signals,
delivered to your phone.

T BOT scans markets in parallel — Kalshi prediction markets, IBKR equities, Kraken crypto — runs a multi-model AI prediction pipeline, and pushes high-edge signals to a desktop and mobile app you control. Profits compound into a long-hold investment sleeve. Your broker, your funds, your call. We never touch your money.

2 / 6
Surfaces live · 3 paper · 1 retired
600s
Signal TTL
15%
On realized profit only
$0
Custody of subscriber funds
T BOT · LIVE FEED
polling every 30s · 2 live · 3 paper · sample feed
ST12s ago
ATL Low Temp 73-74°F
NO station-verified lock rest 97¢
GTC maker · rests until close✓ RESTING 20ct
ST2m ago
NYC High Temp 78-83°F
YES edge +9.1% conf 68%
routed to Kalshi✓ FILLED 38¢
STK14m ago
NVDA
LONG edge +2.1% conf 61%
sector: tech (2/2)SKIPPED · cluster cap
CR28m ago
BTC/USD dip-buy
BUY edge +0.3% net conf 58%
Kraken · paperSKIPPED · under 0.8% fee floor
ST42m ago
CHI High Temp 76-81°F
NO edge +11.2% conf 71%
RESOLVED · win+$8.40
tbot.trade — operator console · illustrative
Today's P&L
+$12.93
▲ 2.3% bankroll
Open positions
6
live (ST)
Resolved (7d)
71
49% win · last-20 WR 70%
Signals issued
147
8 stale, 12 capped
Per-surface · last 7 days
Kalshi ST · weather LIVE+$44.60
INVEST · long-hold sleeve LIVE+$8.10
Kalshi LT · macro paper−$31.10
IBKR Equities paper−$4.50
Risk monitor
Daily loss circuit breaker● Armed · −1.3% / −10% threshold
Concentration caps (STK / ST cities)● 2/2 tech · 3-leg city cap
Signal staleness● All surfaces < 7d audit

How it works 3 steps

No funds custody. No regulated advice. Just signals + your own broker.

+--------------------------+ +--------------------------+ +--------------------------+ | 1. T BOT finds it | ----> | 2. Signal hits app | ----> | 3. Your broker fills | +--------------------------+ +--------------------------+ +--------------------------+ | Scans 4 markets, runs | | Your app receives the | | Kalshi . OANDA . IBKR | | multi-model AI predict | | signal in < 30s, shows | | Order placed on YOUR | | pipeline, publishes a | | edge/confidence/size, | | account with YOUR keys | | signal with edge >= 8%, | | routes to your broker | | T BOT never sees them | | confidence >= 55% | | adapter (you opt-in) | | | +--------------------------+ +--------------------------+ +--------------------------+ ~60 seconds 30s polling cycle Broker fill time
🛰

Multi-market coverage

6 surfaces: Kalshi short-term (weather, live), the INVEST long-hold sleeve (live — 25% of realized trading profit sweeps into index + quality holdings), Kalshi long-term (political/macro), IBKR US equities, and Kraken crypto in paper validation — and OANDA forex, retired after audits found no measurable edge (we publish that, not bury it).

🧠

AI prediction pipeline

Each candidate goes through scan → research → predict. The predict layer uses Claude Sonnet for probability estimation, validated against an ensemble of GPT-4o and Gemini for non-Kalshi markets.

🔒

Your keys, your funds

T BOT operator never holds subscriber broker credentials and never executes against subscriber accounts. The client runs on your machine, signs orders with your own broker API keys.

Surface-isolated risk

Each surface has its own bankroll, position cap, and circuit breaker. A losing streak on FX can't drain your STK allocation.

📊

Calibrated sizing

Verbatim Kelly fraction per signal (capped at 5% per trade). Your client multiplies that against your bankroll to compute dollar size. Two subscribers with different account sizes take the same signal at proportionally different amounts.

💰

Pay only on realized profit

15% commission, crystallized at withdrawal, with high-water mark and loss carryover. No monthly mark-to-market. Beta period (first 90 days) is free.


● Production · v6.5.8

Backend deep-dive

The architecture that runs every signal. Public on purpose — opacity in a trading system is a red flag, not a feature.

System topology

One DigitalOcean droplet runs 6 PM2-managed processes. Each surface has its own loop, its own env file, its own bankroll state. The dashboard is a separate FastAPI service on the same box.

DigitalOcean droplet (Ubuntu) +-----------------------------------------------------------------+ | PM2 process supervisor | | | | st-bot-loop --> Kalshi ST (scan->predict->execute) | | st-lt-loop --> Kalshi LT (scan->predict->execute) | | st-crypto-loop --> Crypto (paper validation) | | st-stocks-loop --> IBKR STK (scan->predict->execute) | | st-lt-resolver --> Resolves LT settlements | | st-dashboard --> FastAPI . subscriber feed . UI | | | | Surface env isolation: st.env lt.env fx.env stk.env | | Shared: shared.env (API keys only) | +-----------------------------------------------------------------+ | | publishes to v +-----------------------------------------------------------------+ | /api/signals/feed (long-poll, cursor-paginated) | | /api/signals/{id}/ack <--+ | | /api/signals/{id}/executed <--+ subscriber callbacks | | /api/signals/{id}/resolved <--+ | +-----------------------------------------------------------------+ | v N subscriber clients (your phone, laptop, or VPS)

The six surfaces

Two surfaces trade live on operator capital today — Kalshi ST and the INVEST long-hold sleeve. Three run in paper validation, accumulating net-of-fees edge data before any live funding. One (forex) was retired when audits found no measurable edge — retirement is a published outcome here, not a buried one.

Kalshi ST live

Short-term prediction markets. Weather (NWS-verified), crypto daily settlements, sports parlays. Cash-settled at market close.
Min edge8% Min confidence55% Max positions8 concurrent Hold timehours → days

INVEST · long-hold live

The compounding sleeve (operator capital, Wealthsimple): 25% of realized trading profit sweeps into a 70% index / 30% quality-stock allocation. DCA in, hold, benchmark against buy-and-hold SPY. Not a signal product — it's where trading profits go to compound.
Allocation70% index · 30% quality Funding25% profit sweep CadenceDCA + hold BenchmarkSPY

Kalshi LT paper

Long-term political and macro events. Fed decisions, election cycles, monetary policy. Lower velocity, higher conviction.
Min edge4% Min confidence55% Max positions30 concurrent Hold timeweeks → months

OANDA Forex retired

8 major pairs, ATR-based bracket orders, correlation-cluster caps. Traded live, then audited: profit factor 0.97, signal-vs-outcome correlation ~0 — no measurable edge. Retired 2026-06 and the capital redeployed. Killing a surface on evidence is the system working, not failing.
Verdictno edge (PF 0.97) Statusretired 2026-06 Capitalredeployed Lessonpublished

IBKR Equities paper

US equities via Interactive Brokers (ibeam gateway). Long-only 200-day trend follower, benchmarked to buy-and-hold SPY. Sector-capped (GICS, 11 sectors).
Min edge8% Min confidence55% Max positions4 concurrent Sector cap2 per GICS

Kraken Crypto paper

Crypto dip-buy on major pairs. Currently halted to paper — measured edge (~18 bps) sat under round-trip fees (~80 bps), so it stays in validation until a proven >0.8% net edge.
Min edge0.8% net Min confidence55% Max positions4 concurrent Statushalted → paper

Risk gate chain (Kalshi ST shown)

Every candidate signal traverses a chain of gates before reaching the broker. Failure at any gate logs the rejection reason and skips. Most candidates are skipped. That's the design — the gates are tuned for selectivity, not volume.

1
STOP file checkManual kill switch in the surface's working directory. Operator hits a UI button → file appears → loop reads it on next tick and halts.
2
DeduplicationIf a position on the same market in the same direction is already open (or already dry-filled this session), skip. Prevents loop-tick re-firing.
3
Per-market position capNo more than N contracts on a single Kalshi market regardless of how many signals fire for it.
4
Direction filterAudit-validated; some surfaces have one-sided edges (e.g. ST currently favors NO).
5
Suspended categoriesCategories with degraded recent performance get auto-suspended by the audit tooling.
6
Risk validationKelly sizing, exposure limits, daily loss cap (10% bankroll / 24h), drawdown cap.
7
Slippage checkReject if market has moved more than 3% from the signal price during the predict cycle.
8
Minimum edgeHard floor: 8% on Kalshi ST, 4% on LT, 8% on STK. Tuned per surface from historical calibration.
9
Minimum confidenceHard floor on model confidence. Low-confidence predictions never execute, regardless of edge.
10
API cost capDaily limit on Claude/Anthropic spend ($50/day). Stops the bot before research costs eat the day's gains.

Signal pipeline (weather example)

SCAN --> Kalshi events API . filter to KXHIGH{NYC,CHI,MIA,...} Apply: vol >= 200, spread <= 5c, 4h <= hours_to_expiry <= 48h Output: ~80 candidate markets | v RESEARCH --> NOAA NWS API: gridpoint forecast + Area Forecast Discussion Compute baseline probability via normal CDF (sigma scaled by horizon: 1.5F at 12h --> 4F at 72h) Output: forecast_high + baseline_p + AFD excerpt | v PREDICT --> Claude Sonnet 4.6 Input: market context + NWS forecast + AFD text + baseline Output: refined p_model + confidence + reasoning | v DECIDE --> edge = p_model - market_price If edge >= 8% AND confidence >= 55%: actionable = True --> fall through gate chain Else: actionable = False --> shadow log only (for calibration) | v EXECUTE --> Pass risk gates (1-10 above) Place Kalshi limit order (operator-side) OR Publish signal to feed (subscriber-side) Write trade record with: edge, confidence, eta_hours, atr, resolution_source tag for forward-only audit clarity | v PUBLISH --> Signal feed entry: { signal_id, surface, market_id, direction, edge, confidence, p_model, kelly_size_pct, ttl_sec: 600, expires_at, metadata: {city, bracket, forecast, ...} } Cursor-paginated, long-poll, 401 on revoked token | v RESOLVE --> 4h after market close (weather): query NWS station observations For Kalshi resolution: poll Kalshi /markets/{id}/result Compute outcome + PnL (Kalshi cash-settlement math) Write resolved=true, resolution_source="nws_observation"

Subscriber feed architecture

The hardest part of multi-tenant signal delivery is making it both fast and idempotent. T BOT uses cursor-paginated long-polling against an append-only JSONL log. Each subscriber tracks the last signal_id they processed; the server replays everything after that cursor (modulo TTL).

Operator side Subscriber side (your client) --------------------- ------------------------------ signal_publisher.py feed.py | | | appends one JSONL row | every 30s: v with TTL=600s | GET /api/signals/feed signal_feed.jsonl | ?since=<last_cursor> | | &token=<subscriber_token> | | | served by v v router.py /api/signals/feed | (cursor-paginated, drops | for each new signal: expired signals server-side) | 1. dedup check (state.json) | 2. surface enabled? sized? | 3. POST ack (accepted/filtered) | v adapters/{kalshi,oanda,ibkr}.py | | place_order(signal, size_usd) | --> returns fill_price + order_id | | POST executed (fill, size, broker_id) | POST resolved (outcome, pnl) on close | v subscriber_callbacks.jsonl <---------- append-only audit trail (operator) | | aggregated by v /api/subscribers/aggregate --> win rate, total PnL, per-surface breakdown (no per-name attribution -- operator sees pool only)

Audit & calibration

Every surface has its own audit tool that compares model predictions against realized outcomes. The audit can scope to a date range (--since 2026-05-01) so post-cutover metrics aren't polluted by historical dry-run noise.

📐

Calibration audit

Bins predictions by confidence band, checks if 70%-confident predictions actually resolved 70% of the time. Detects systematic over/under-confidence.

ETA calibration

Compares predicted time-to-resolution (computed from ATR × distance-to-stop) against actual resolved_at - timestamp. Detects volatility-implied ETAs that are systematically too short or too long.

🧾

Audit-frequency reminder

Dashboard surfaces an amber chip when any surface hasn't been audited in 7+ days. Operator click → opens audit drawer for that surface.


Trust & safety non-negotiable

The structural choices that make this an honest signal service rather than a fund.

Your keys, your funds

Subscriber broker credentials never leave the subscriber's machine. T BOT operator runs the signal generator; the subscriber's client places the orders. There is no surface where operator-side compromise can drain subscriber accounts.

Open-source client

The subscriber client is a small Python program you can audit yourself. Polling logic, sizing, routing, callbacks — all visible. No obfuscated trade execution.

High-water mark commission

15% commission only on profits above your previous high-water mark. Crystallized at withdrawal, not monthly mark-to-market. Loss carryover means a losing period doesn't reset your HWM downward.

Not investment advice

T BOT is not a registered investment advisor (no RIA, no CIRO, no FCA). Signals are the output of an automated quantitative system. The decision to act on them and all consequences of those actions are yours.

Audit transparency

The operator publishes aggregate performance — total subscribers, aggregate win rate, per-surface PnL — but never per-name attribution. Your individual performance is yours to see, no one else's.

Cancel any time

Revoke your token from the operator panel or email request. Signal feed stops on your client's next poll (typically 30s). Open positions stay in your broker — T BOT has no exit obligation.


FAQ

What does the actual app look like today?
The desktop/mobile app shown in mockups above is the Q3 2026 target. Today, in private beta, the client is a Python CLI that runs on your laptop, VPS, or (with effort) phone via Termux. It works end-to-end against live operator infrastructure — polling, sizing, routing, callbacks all functional. The polished native app comes after the beta cohort proves the signal stream is worth packaging.
How does T BOT make money if there's no commission for 90 days?
Operator runs the same signals on their own broker accounts. The bot has been profitable for the operator before any subscriber existed. The 15% commission on subscriber realized profits is upside, not the operating funding source. Beta period is genuinely free to lower the friction of finding people willing to put real money on what's still an experimental product.
What if T BOT goes down or stops generating signals?
Your open positions stay with your broker. Kalshi positions cash-settle at market close automatically. FX/STK positions have hard TP/SL brackets attached to the entry order — the broker manages exits whether T BOT is online or not. T BOT going dark means no new signals; it does not leave existing positions unmanaged.
What if a signal is wrong and I lose money?
Some signals will lose. Kalshi short-term win rate sits around 55-60%; FX around 60%; long-term political around 65%. Drawdowns are normal. The sizing methodology (Kelly fraction with a 5% per-trade cap) is calibrated to survive realistic loss streaks. Your worst-case on any individual trade is 5% of that surface's bankroll. The system is designed for sustained edge over hundreds of trades, not certainty on any single one.
How many surfaces should I subscribe to?
Start with the one that exists: the live copy-trade pilot mirrors the Kalshi ST weather surface — the only surface trading real money today. LT, equities and crypto are in paper validation and open up only when their edges prove out (forex was retired 2026-06-16 when its edge didn't). Feedback is daily: ST settles every nially. Add surfaces once you've gotten comfortable with one. The allocation guide (sent with your welcome email) covers funding suggestions per appetite tier.
Can I tweak the sizing?
Yes — your client supports a size_multiplier per surface (default 1.0 = verbatim). Set it to 0.5 to take half the recommended position. You cannot loosen the operator's caps (per-trade Kelly ceiling, concurrent position limit, daily loss circuit breaker), only tighten them.
What happens to my data if I cancel?
Operator retains your ack/executed/resolved callbacks indefinitely for aggregate reporting, but with no per-name attribution after cancellation. Your token is revoked, your name leaves the active subscriber list. Any withdrawal within 30 days of cancellation is billed under the existing terms; after 30 days the commercial relationship is closed.
Where can I see the source code?
The subscriber client is open-source (will be linked here at beta start). The operator-side bot is private — that's where the strategy IP lives. The public-facing API (/api/signals/feed, callback endpoints) is fully documented; you can audit exactly what your client sends and receives.

Private beta · invite only

Want in on the beta?

First 10 subscribers, hand-onboarded. No commission for 90 days. You bring your own broker accounts; we bring the signals. We talk before you fund anything — make sure this is a fit for you.

Email the operator →

No subscription form. Just a real conversation.