Algo Trading Platform
Autonomous options-trading system with real-time risk controls, multi-channel alerts, and a live dashboard.

A cloud-hosted algorithmic trading platform that runs unattended against live market data on a fixed daily schedule, enforcing automated risk limits on every position it takes. Built for a single individual operator (not a multi-tenant product), with a companion web dashboard for monitoring performance and system health from anywhere.
Why it needed to exist
Manual discretionary trading is error-prone and emotionally driven, with no consistent enforcement of risk limits. This system replaces that with a rule-based engine that applies the same hard risk controls every time, and validates changes in a safe paper-trading mode before any real capital is involved.
Inside the product
Independent multi-instrument architecture
Three isolated engine instances run identical code against three separate instrument configs, sharing no state or journal between them.
Automated risk controls
Per-trade capital limits, daily loss/profit halts, max concurrent positions, and per-symbol cooldowns are enforced in code before any trade is allowed.
Fail-safe execution model
Any error, missing data, or ambiguous condition causes the system to skip the action entirely rather than take a speculative one.
Multi-channel alerting
A custom Telegram bot delivers real-time trade and health notifications, with automatic email fallback (AWS SES) if a Telegram send fails.
Live web dashboard
A Next.js + Supabase dashboard shows engine health, open positions, and filterable historical trade data in near real time.
Statistics-driven tuning advisor
A separate module mines historical trades for statistically-supported, confidence-scored tuning suggestions, advisory only, never applied automatically.
Config-change audit trail
Every parameter change is versioned with before/after values and cross-referenced against trade outcomes on a dashboard timeline.
Automated test suite
490+ automated tests cover the core engine, risk manager, and journaling logic.
End to end
- A scheduled job starts each trading engine at market open and authenticates it against the broker API.
- The engine streams live market data on fixed intervals and evaluates its entry rules on each cycle.
- Any qualifying signal passes through a risk-management layer that sizes and gates the position before execution.
- Every executed trade, rejected signal, and state change is logged to a local database for audit and analysis.
- Alerts fire in real time over Telegram/email, while background jobs sync the day's activity to the dashboard and generate an end-of-day report.
Irregular option-chain strikes
Live option-chain data from the broker isn't always uniformly spaced: some underlyings mix legacy, corporate-action-adjusted strikes (from old splits/bonuses) with the current listing grid at irregular intervals, so naive 'round to the nearest step' arithmetic could compute a strike that doesn't exist in the real chain at all, or land on a real-but-stale contract with no active market. The fix required switching strike selection to work off the broker's actual listed-strike data rather than assumed spacing, then adding a bounded, liveness-aware search that prefers a genuinely tradeable nearby strike over a numerically-closer but illiquid one, while falling back safely to an explicit 'no viable contract' state when nothing nearby is actually tradeable, so a bad chain never gets silently misread as a good one.
Where it stands
Deployed and running continuously on AWS EC2 across three parallel instrument configurations, with daily automated reporting. Currently operating in paper-trading mode (simulated fills against live market data) for validation, not yet trading real capital.
The full stack
- Python
- NumPy
- pandas
- pydantic
- Zerodha Kite Connect API
- SQLite
- pytest
- Next.js
- React
- TypeScript
- Tailwind CSS
- Supabase (PostgreSQL)
- SWR
- Telegram Bot API
- AWS SES
- AWS EC2
- systemd + cron
Continue along the river
Want something built like this?
This is one of several products shipped under Astal Creates. Tell me what you're building and I'll write back.