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.

System design

INGESTIONCORE (.NET)APISCLIENTSMTProtoTelegram channelssignal chatterpython-servicesFlask + TelethonTelegramParsersnormalize → eventsOrleans grainsper-symbol actorsHandlers / Bi.HandlersCQRS splitCrypto.APIRESTCrypto.BiApiBI queriesNuxt dashboardag-Grid · OIDCPublic UINuxt