>_ DevTrendsnl

Taal

Home

Talen

Secties

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

Hoe nieuws te koppelen aan aandelenkoersen en marktbewegingen begrijpen

Iedereen die ooit een tradingterminal heeft geopend, heeft dit gezien. Een aandeel daalt plotseling 8% in één sessie, de grafiek tekent een enge rode candle, en de financiële nieuwsfeed wordt overspoeld met tientallen verspreide artikelen. Om een specifieke gebeurtenis te koppelen aan een koersbeweging, breng je uiteindelijk een halve dag door met handmatig zoeken op datums.

De auteur van het open-source project PokieTicker heeft dit probleem voor zichzelf opgelost en de broncode vrijgegeven op GitHub. Het resultaat is een tool die gebeurtenissen direct overlayt op candlestick-grafieken, nieuws organiseert per onderwerp, en deze door een combinatie van taalmodellen en klassieke machine learning haalt.

PokieTicker interface

Wat de app kan doen

De interface is gebouwd rond een interactieve D3.js-grafiek. In plaats van een saaie terminal zie je een tijdlijn waarop elke dag met nieuws is gemarkeerd met een stip. Door op een stip te klikken opent een contextpaneel met details.

De belangrijkste dingen om te bekijken:

  • Interactieve gebeurtenismarkering op candlestick-grafieken. Je kunt direct zien op welke dag een kwartaalrapport of regelgevingsnieuws uitkwam en hoe de koers reageerde.
  • Thematische filtering. Nieuws wordt opgesplitst per categorie: resultaten, producten, regelgevende maatregelen, managementwijzigingen en algemene marktomstandigheden.
  • Historische analogiezoektocht. Het systeem vergelijkt de huidige nieuwsachtergrond met verleden perioden met behulp van cosinusgelijkenis van vectorembeddings en toont waar het aandeel in vergelijkbare situaties naartoe bewoog.
  • Verklaring van bewegingen via LLM. Je selecteert een datumbereik met je muis, en het model verzamelt de feiten en produceert een korte samenvatting van waarom de dip of piek plaatsvond.

Demo van functionaliteit

Architectuur en kostenefficiënte datapipeline

Werken met financiële tekst raakt je vaak met neural network API-kosten. Als je elke publicatie rechtstreeks aan Claude voedt, is je saldo binnen een paar uur op. De auteur bouwde een drielagige filterpipeline die onnodige kosten vermindert.

Ten eerste worden gegevens opgehaald van de Polygon API. Vervolgens komt Laag 0 in actie — een eenvoudige set Python-regels die spam, clickbait en nutteloze samenvattingen uitfiltert zoals "5 aandelen om te kopen in mei." Deze stap elimineert ongeveer 17% van de informatieruis gratis.

De overige artikelen gaan naar Laag 1. Hier wordt Claude Haiku gebruikt via de Batch API in batches van 50. Het model bepaalt sentiment, extraheert bullish of bearish argumenten en formuleert de kern van de discussie. Batchverwerking kost slechts 35 cent per 1.000 artikelen.

Ten slotte activeert Laag 2 op basis van Claude Sonnet alleen op direct gebruikersverzoek, wanneer een diepgaande analyse van een specifieke koerspiek voor een geselecteerde periode nodig is.

Hoe prijsbewegingsvoorspelling werkt

Op basis van nieuwssentiment en technische indicatoren werkt een op XGBoost gebaseerd model. De auteur probeert geen "trading graal" te bouwen en waarschuwt eerlijk in de beschrijving dat het project onderzoeksgericht is.

De featurevector bestaat uit 31 parameters:

  1. Nieuwsmetrieken: aantal artikelen per dag, gemiddelde sentimentscore, verhouding positief ten opzichte van negatief, voortschrijdende gemiddelden van sentiment over 3, 5 en 10 dagen, plus sentimentmomentum.
  2. Technische signalen: rendementen over 1, 3, 5 en 10 tradingdagen, volatiliteitsmaatstaf, handelsvolume-afwijkingen, RSI-14-indicator en voortschrijdende gemiddelde crossoverpunten.

XGBoost-classifiers worden getraind om de richting van koersbewegingen te voorspellen op horizon T+1, T+3 en T+5. De logica is eenvoudig: sterk nieuws triggert marktinertie die vaak één tot drie dagen aanhoudt, vooral als negatieve publicaties in series verschijnen.

De backend bevat ook een experimentele LSTM-module, hoewel gradient boosting de primaire werkende oplossing blijft.

Frontend (React + Vite + D3.js)          Backend (FastAPI + SQLite WAL)
+---------------------------------+      +----------------------------+
|  CandlestickChart (D3.js)       |----->|  /api/stocks/{sym}/ohlc    |
|  NewsPanel & Predictions        |<-----|  /api/news, /api/predict   |
+---------------------------------+      +----------------------------+

Snelle start zonder API-sleutelregistratie

Een leuk detail: om het project lokaal uit te proberen, hoef je niet meteen Polygon-abonnementen te kopen of een account te registreren bij Anthropic. De repository bevat al een kant-en-klaar archief met een SQLite-database met 51.000 candles en 61.000 nieuwsartikelen, plus getrainde modelgewichten.

Implementatie duurt vijf minuten:

git clone https://github.com/owengetinfo-design/PokieTicker.git
cd PokieTicker

# Распаковываем готовую базу и модели
gunzip -k pokieticker.db.gz
tar xzf models.tar.gz -C backend/ml/

# Настраиваем бэкенд на Python 3.10+
python -m venv venv
source venv/bin/activate
pip install -r requirements.txt

# Устанавливаем зависимости фронтенда
cd frontend && npm install && cd ..

Services worden gestart in twee terminaltabbladen. In de eerste brengen we FastAPI omhoog:

source venv/bin/activate
uvicorn backend.api.main:app --reload

In de tweede starten we Vite:

cd frontend && npm run dev

Daarna opent de interface in de browser op http://localhost:7777/PokieTicker/.

Als je verse gegevens van de beurs wilt ophalen, kopieer je .env.example naar .env, voeg je je gratis Polygon-sleutel en Anthropic-sleutel toe, en voer je vervolgens het python -m backend.weekly_update commando uit.

Impressies en conclusies

PokieTicker is interessant niet zozeer als tradingadviseur, maar als voorbeeld van een goed ontworpen full-stack applicatie. Er is veel van te leren:

  • Een schone FastAPI- en SQLite-configuratie in WAL-modus, wat meer dan voldoende is voor honderdduizenden records.
  • Efficiënt LLM-gebruik door voorafgaande op regels gebaseerde filtering en Batch API.
  • Financiële datavisualisatie in puur D3.js zonder zware widgets van derden.
  • Praktische combinatie van NLP-metrieken met klassieke tijdreeksanalyse.

De repository is nuttig voor ontwikkelaars die hun eigen analytische dashboards bouwen, experimenteren met tekstverwerking voor ML, of simpelweg de oorzaken van marktschommelingen willen begrijpen. De broncode is vrijgegeven onder de permissieve MIT-licentie.

Gerelateerde projecten