If this edition helps you, I'd appreciate a small donation – thank you! ☕
Kleine Weboberfläche im Container: Aktie suchen, Chart ansehen, und auswerten lassen, wann in den vergangenen Jahren der günstigste Kauf- bzw. Verkaufsmonat lag – mit Signifikanztest, statt nur den schönsten Rückblick zu zeigen. Dazu Nachrichtenlage aus RSS-Feeds, Quartalstermine, Kosten- und Positionsrechnung und eine Reihenprüfung über ganze Indizes.
Alles auf Deutsch, dunkler Stil, keine Anmeldung, keine Cloud, keine Datenbank.
docker run -d --name aktien-prognose \
-p 8093:8081 \
-v ./config:/config \
-v ./data:/data \
-e TZ=Europe/Berlin \
andyxtreme/aktien-prognose:latest
Danach: http://localhost:8093
Mit Compose:
services:
prognose:
image: andyxtreme/aktien-prognose:1.11
container_name: aktien-prognose
environment:
- TZ=Europe/Berlin
# --- Sprachmodell (optional) --------------------------------------
# Angesprochen wird die OpenAI-Schnittstelle (/v1/chat/completions),
# also läuft hier Ollama ebenso wie llama.cpp, vLLM oder LM Studio.
# Einzutragen ist nur der Server, ohne Pfad – den hängt das Programm
# selbst an. "localhost" wäre aus dem Container heraus der Container
# selbst; es muss die LAN-Adresse sein.
#
# Was hier steht, schlägt die config.yaml, ohne sie zu verändern.
# Umgekehrt heißt das: Solange MODELL_ENABLED hier steht, ist diese
# Datei der Hebel, nicht die Einstellungsseite.
# - MODELL_URL=http://192.168.x.y:11434
# - MODELL_MODEL=qwen3:14b
# - MODELL_ENABLED=true
# - MODELL_API_KEY= # bei lokalen Servern leer lassen
# - MODELL_REASONING_EFFORT=none
volumes:
# Verzeichnis statt Einzeldatei: So wirken Änderungen an der
# Konfiguration ohne Neustart, und der Container kann sie beim ersten
# Start selbst anlegen.
- ./config:/config
# Kurs-Cache und Protokolle. Bleibt erhalten, damit nach einem Neustart
# nicht alle Kurse erneut bei Yahoo geholt werden müssen.
- ./data:/data
ports:
- "8093:8081"
restart: unless-stopped
CONFIG_PATH, DATA_PATH und PORT müssen nur gesetzt werden, wenn von den
Standardwerten abgewichen wird – siehe Tabelle unten.
| Port | 8081 im Container |
/config | Konfiguration und Watchlist. Beim ersten Start wird eine kommentierte Vorlage hineinkopiert, eine vorhandene Datei nie überschrieben. |
/data | Kurs-Cache, Reihenprüfung und die mitgeschriebenen Protokolle. Darf verloren gehen – Kurse werden dann neu geholt, ein Reihenlauf dauert allerdings eine gute Viertelstunde, und die Protokolle beginnen von vorn. |
| Healthcheck | ist im Image enthalten, prüft /health |
| Variable | Standard | Zweck |
|---|---|---|
TZ | UTC | Zeitzone – sonst stimmen Handelstage und Termine nicht |
PORT | 8081 | Port im Container |
CONFIG_PATH | /config/config.yaml | Ort der Konfiguration |
DATA_PATH | /data | Ort des Caches |
MODELL_URL | aus der Datei | Adresse des Sprachmodells |
MODELL_MODEL | aus der Datei | Modellname |
MODELL_ENABLED | aus der Datei | false schaltet das Sprachmodell ab |
MODELL_API_KEY | aus der Datei | Zugangsschlüssel, bei lokalen Servern leer |
MODELL_REASONING_EFFORT | none | Denkaufwand: none, minimal, low, medium, high |
Die MODELL_* schlagen die config.yaml, ohne sie zu verändern. Gedacht
für den Fall, dass das Image auf einem fremden Rechner startet, dessen
Sprachmodell woanders steht. Umgekehrt heißt das: Solange MODELL_ENABLED
gesetzt ist, ist die Compose-Datei der Hebel. Die alten Namen OLLAMA_URL,
OLLAMA_MODEL und OLLAMA_ENABLED gelten weiter.
Alles Übrige zum Modell – Denkaufwand, Zeitgrenzen, Zugangsschlüssel,
Zusatzfelder – steht in der Oberfläche unter /einstellungen, mit einem
Knopf, der die Verbindung prüft und den Fehler im Klartext nennt. Gewichte der
Ampel, Nachrichtenquellen, Gebührenmodell und Watchlist stehen in
/config/config.yaml; die Datei ist durchgehend kommentiert, Änderungen wirken
ohne Neustart.
Für den Lagebericht auf Knopfdruck und die Bewertung der Schlagzeilen kann ein Sprachmodell angebunden werden. Ohne läuft alles weiter – die Schlagzeilen werden dann über Wortlisten bewertet.
Angesprochen wird die OpenAI-Schnittstelle (/v1/chat/completions), es
läuft also Ollama ebenso wie llama.cpp, vLLM, LM Studio,
Jan oder LocalAI. Einzutragen ist nur die Serveradresse; den Pfad hängt das
Programm an. Was ein einzelner Server darüber hinaus braucht, kann als
Zusatzfeld durchgereicht werden.
Denkaufwand. Fünf Stufen von none bis high, dazu „nicht senden" für
Server, die das Feld nicht kennen. Der Standard ist bewusst none: In
eigenen Messungen lieferte Nachdenken bei beiden Aufgaben schlechtere
Ergebnisse – unvollständigere Lageberichte und erfundene Prozentzahlen – und
kostete das Zweieinhalbfache an Zeit. Wer über Ollama anbindet, sollte
außerdem wissen, dass die Zwischenstufen dort gar nicht ankommen: Ollama
ersetzt die Vorlage des Modells durch eine eigene, und die Dosierung steckt in
der verworfenen. Übrig bleibt an und aus.
Zwei Stolpersteine:
localhost ist aus dem Container heraus der Container selbst. Es muss die
LAN-Adresse des Ollama-Rechners sein.OLLAMA_HOST=0.0.0.0.fc.yahoo.com darf nicht blockiert seinKennzahlen, Quartalstermine und Analystendaten kommen über eine Yahoo-Endstelle,
die vorher ein Cookie von fc.yahoo.com braucht. Etliche DNS-Filter (Pi-hole,
AdGuard, NextDNS) sperren diesen Host als Werbedomain – die Kurse und Charts
laufen dann normal weiter, die Kennzahlen bleiben aber kommentarlos leer.
Prüfen:
docker exec aktien-prognose python -c "import socket;print(socket.gethostbyname('fc.yahoo.com'))"
Kommt 0.0.0.0 zurück, ist der Host gesperrt und gehört auf die Ausnahmeliste.
Alles Aufwendige läuft im Hintergrund: Ein Klick liest ab, was der Tageslauf vorbereitet hat. Ändert sich im Laufe des Tages der Kursstand, zeigt er das letzte fertige Ergebnis und die neue Rechnung läuft nebenher – gewartet wird nicht.
Kein Broker-Zugang, keine Orderfunktion, keine Anlageberatung. Das Programm rechnet Vergangenes nach und sagt, wie viel davon Zufall sein kann. Mehr nicht.
Zeilen im Score-Protokoll aus der Zeit vor 1.10, die während der laufenden
Börsensitzung entstanden sind, bleiben in /data/verlauf.jsonl stehen, zählen
aber nicht mehr mit. Löschen muss man nichts.
| Tag | |
|---|---|
latest | jeweils aktueller Stand |
1.11 | feste Version |
Vollständige Dokumentation – jede Kennzahl, jeder Test, jede
Konfigurationsoption – liegt als README.md im Quellverzeichnis des Projekts.
Content type
Image
Digest
sha256:e36a39f54…
Size
112.2 MB
Last updated
5 days ago
docker pull andyxtreme/aktien-prognose