Fintech
Crypto BI
Wallex — signal backtesting & market intelligence
- Role
- Primary author
- Period
- 2022 – 2025
- Commits
- 500+ verified
- Repos
- 4 (backend, 2 UIs, python)
Overview
The crypto business-intelligence platform I built at Wallex, and my most heavily-authored codebase: a .NET analytics backend organized around Microsoft Orleans grains, two Nuxt front-ends (an internal dashboard and a public UI), and a Python service layer that ingests Telegram signal channels via Telethon.
The backend separates a public REST API from a dedicated BI query API, with command/query handlers on both paths. Telegram parser grains normalize channel chatter into structured signals; everything ships to Kubernetes via the manifests and Helm charts kept in-repo.
This page stands for a wider fintech line whose core is signal backtesting: Kafka + Orleans actor pipelines replaying the full signal set against point-in-time market data (5M+ events/day, 99.9% uptime after the Kafka migration), the TradeX BI data warehouse — Orleans aggregation grains behind a Next.js analytics dashboard — and TDX.bz, shortlisted among 35 of 1,043 startups for the Web Summit Qatar 2025 PITCH competition.
- crypto.NET solution — API, BI API, domain, Orleans grains
- uiNuxt internal dashboard (ag-Grid, Monaco, OIDC)
- public-uiNuxt public-facing UI
- python-servicesFlask + Telethon ingestion services
Tech stack
Backend
- .NET 6
- C#
- Microsoft Orleans
- CQRS handlers
Front-end
- Nuxt
- Vue
- Next.js
- ag-Grid Enterprise
- Monaco Editor
- OIDC
Messaging
- Apache Kafka
Data & ingestion
- Python
- Flask
- Telethon
- SQL Server
- SingleStore DB
- Redis
Ops
- Kubernetes
- Helm
- Docker
Design patterns
Actor model (Orleans)
Crypto.Runtime.Grains holds hot per-symbol/per-channel state as virtual actors, with contracts isolated in Runtime.Interfaces.
CQRS-style handlers
Separate Crypto.Handlers and Crypto.Bi.Handlers projects split the write path from BI reads, each behind its own API head.
Layered architecture
API → handlers → domain → infra; the domain project has its own test suite.
Anti-corruption ingestion
Telethon parsers normalize free-form Telegram signals into domain events before they touch the model.