>_ DevTrendsnl

Taal

Home

Talen

Secties

Frontend Backend Mobiel DevOps AI / ML GameDev Blockchain Embedded Beveiliging
Python

Hoe bouw je een persoonlijke kwantitatieve analyseterminal met Polars en DuckDB

Elke ontwikkelaar die ooit heeft geprobeerd aandelenkoersen met code te analyseren, heeft onvermijdelijk hetzelfde scenario doorgemaakt. Eerst open je een Jupyter Notebook, verbind je Pandas en haal je historische candles op via een willekeurige gratis API. Binnen een paar dagen groeit de notebook tot honderden onleesbare cellen, beginnen indicatorberekeningen minutenlang te bevriezen, en in plaats van een fatsoenlijke interface moet je je ogen tot spleetjes knijpen naar Matplotlib-grafieken.

Onlangs stuitte ik op het project shy3130/tick-stock-panel op GitHub. De auteur bouwde een compleet open-source platform voor kwantitatieve analyse, backtesting en aandelenbewaking dat je lokaal kunt draaien in een enkele Docker-container. Het project is oorspronkelijk gericht op de Chinese A-shares markt, maar de architectuurbeslissingen en tech stack verdienen een aparte bespreking, ongeacht welke activa je handelt.

Wat zit erin en hoe het werkt

Het belangrijkste probleem met de meeste zelfgemaakte screeners is prestaties. Als je voortschrijdende gemiddelden, MACD, RSI en Bollinger Bands berekent voor duizenden tickers in een lus via Pandas, raakt de machine snel overbelast.

In tick-stock-panel is dit probleem opgelost met een moderne data stack:

  • Polars verwerkt parallelle indicatorberekeningen en marktbrede screening in fracties van een seconde.
  • Parquet wordt gebruikt als lokaal opslagformaat voor verrijkte tabellen.
  • DuckDB voert snelle analytische queries uit bovenop Parquet direct op schijf zonder zware databases op te starten.
  • vectorbt wordt gebruikt in een geïsoleerde backtesting module.
  • FastAPI en sse-starlette serveren data en streamen de voortgang van zware berekeningen via Server-Sent Events.
  • React 18 met Lightweight Charts en ECharts libraries vormt een clean controlepaneel.

De architectuur is compact: de backend en gebundelde frontend worden verpakt in een two-stage Dockerfile. De applicatie heeft geen externe PostgreSQL of Redis nodig—de hele database wordt lokaal gehouden.

Belangrijkste platformfuncties

De ontwikkelaar heeft de functionaliteit verdeeld in vier belangrijke blokken: filteren, hypothese-toetsing, marktvolging en individuele asset-analyse.

Dashboard Strategie Screener
Statuspaneel Strategieën
Backtesting Factor zoeken
Backtest Factoren

Screener en ingebouwde strategieën

Het systeem bevat 18 kant-en-klare aandelenselectiestrategieën. Het filtermechanisme draait op Polars: na sluiting van de markt berekent de pipeline een verrijkte dataset, en controleert de query van de gebruiker condities over de hele ticker-tabel. Je kunt standaard indicatoren, volumes en candlestick-patronen combineren of je eigen signalen schrijven.

Backtesting en alfa-factor zoeken

Testen is verdeeld in twee modi:

  1. Individuele factor-evaluatie met IC en IR metric-berekeningen, quantile returns en long-short spreads. Dit helpt ruis uit te filteren voordat je een handelssysteem bouwt.
  2. Volledige strategie backtesting met T+1 afwikkelingsregels, slippage, brokercommissies en stop-losses.

De factor mining module is interessant geïmplementeerd. Het systeem zoekt naar rank-combinaties op de trainingsset, filtert gecorreleerde metrics en valideert resultaten op out-of-sample data. Echter, de ontdekte regels worden niet blind toegepast: de kandidaat wordt opgeslagen in concepten en vereist handmatige bevestiging voordat deze aan de werkende pool wordt toegevoegd.

Monitoring Center Limieten ladder
Monitor Limieten
Sector Analyse Watchlists
Sectoren Watchlist

Real-time monitoring en anomalieën

Het dashboard bevat een live monitoring module. Je kunt trigger-regels instellen op basis van prijsniveaus, indicatoren of afwijkingen van gemiddelden. Wanneer een event plaatsvindt, stuurt het paneel een webhook, toont een browsernotificatie en spreekt zelfs de ticker hardop uit via de Web Speech API.

Taalmodellen integreren

Het project voegde LLM-integratie toe via een OpenAI-compatibele interface. Je kunt Ollama, DeepSeek of gesloten API's verbinden. De modellen dienen twee praktische rollen: het genereren van screener-regelcode uit tekstbeschrijvingen en het samenstellen van een avondrapport met sectorbewegingsanalyse na sluiting van de markt.

Hoe te deployen en draaien

De snelste manier om het project te starten is via Docker Compose:

cp .env.example .env
docker compose up --build

Na het bouwen opent het paneel op http://localhost:3018.

Voor lokale ontwikkeling heb je Python 3.11+, Node.js 20, package managers uv en pnpm nodig:

cp .env.example .env
./dev.sh

Het script zal de omgeving controleren, backend dependencies installeren via uv en frontend via pnpm, en vervolgens FastAPI starten op poort 3018 en de Vite dev server op 3011.

Configuratie wordt ingesteld in het .env bestand:

TICKFLOW_API_KEY=              # Ключ источника данных TickFlow (можно оставить пустым для базового режима)
AI_API_KEY=                    # Ключ LLM-провайдера для генерации стратегий
PORT=3018                      # Порт приложения

Je eigen databronnen verbinden

Het basisproject is geconfigureerd voor de Chinese TickFlow service SDK, maar de ontwikkelaar heeft de data-laag pluggable gemaakt. De repository bevat een Node.js plugin stock-sdk en voorbeelden van declaratieve bronbeschrijvingen via YAML.

Als je het paneel wilt aanpassen voor MOEX, crypto exchanges of Yahoo Finance, hoef je alleen de daily bar provider interface te implementeren en ze in Parquet-formaat te voeden. Alle andere mechanismen—voortschrijdende gemiddelde berekeningen, backtesting engine, Lightweight Charts-grafieken en alert-systeem—blijven ongewijzigd werken.

Is het de moeite waard om te proberen

Het tick-stock-panel project is interessant vooral vanwege zijn architectonische netheid. De auteur liet zware relationele databases vallen ten gunste van Polars + DuckDB + Parquet, wat het systeem laat vliegen op een gewone laptop.

Als je op de Chinese markt handelt, kan het project worden gebruikt als een kant-en-klare werktool uit de doos. Als je interesse ligt in andere beurzen, zal de repository codebase dienen als een uitstekend template voor het bouwen van je eigen analytics terminal.

Gerelateerde projecten