FinTech

Quant-Research-Terminal

Aktienresearch, Makrodaten und KI-Investorenpersonas — nur Research

Gebaut von Rogue AI · Research-Terminal, keine Orderausführung · Self-hosted

Begann Anfang 2026 als Watchlist- und Yahoo-Quote-Viewer. Der Analytik-Kern (DCF, Risiko, Optimierung) und die Makro-Schicht entstanden als bewusster Python-nach-TypeScript-Port über Q2 2026, damit die Mathematik unit-getestet und in-process laufen kann. Zuletzt: der Signal-Scanner und das Investorenpersona-Panel.

Das Problem

Research-Tools für Privatanleger sperren entweder die nützliche Analytik hinter ein Abo oder liefern eine Zahl, ohne dass man die Annahmen dahinter sehen kann. Ich wollte ein Terminal, in dem die DCF-Eingaben mir gehören, die Risikokennzahlen aus echten Renditereihen berechnet werden und eine KI-Zweitmeinung an denselben Fundamentaldaten verankert ist — ohne mein Portfolio an Dritte zu senden oder irgendetwas zu verdrahten, das eine Order auslösen könnte.

Was ich gebaut habe

Ein Aktienresearch- und Analyse-Terminal. Es screent und chartet Aktien, importiert Broker-Positionen (IBKR und Trading-212-CSV), rechnet ein Mehrwährungs-Portfolio in eine Basiswährung um und führt eine Analytik-Suite aus — annahmengetriebenes DCF, Risikokennzahlen und Portfolio-Optimierung mit Effizienzgrenze — geschrieben als reines TypeScript. Eine Makro-Sektion zieht schlüssellose Reihen von FRED, Weltbank, IWF und DBnomics; ein Signal-Scanner rankt Ticker aus Trend, RSI, MACD und Bollinger %B; und ein KI-Panel erzeugt fünf Investorenpersona-Lesarten eines Werts. Es ist reines Research.

Architektur

  • Analytik-Kern

    Reines, seiteneffektfreies TypeScript: Renditen, Sharpe/Sortino/VaR/CVaR/Max-Drawdown, DCF, Mean-Variance-Optimierung + Effizienzgrenze — voll unit-getestet mit Vitest

  • Marktdaten

    Yahoo Finance für Quotes und Historie, FMP für Fundamentaldaten und Screening, hinter einem 3-stufigen Cache (Redis → PostgreSQL → Fetch)

  • Makro-Schicht

    Schlüssellose Adapter für FRED, Weltbank, IWF SDMX und DBnomics, 24 Stunden gecacht

  • Signal-Scanner

    Komposit aus SMA-Cross, RSI, MACD und Bollinger %B mit einem Score von -100..+100 und lesbaren Begründungen; flüchtig, pro Nutzer Redis-gecacht

  • KI-Panel

    Fünf Investorenpersonas über eine umschaltbare Bridge (lokales Ollama oder Claude), Prompts an den abgerufenen Fundamentaldaten verankert

  • Auth & Daten

    Custom-JWT (jose)-Sessions, Prisma 7 mit PrismaPg-Adapter, Watchlists, Portfolios und Alerts pro Nutzer

Tech-Stack

Next.js 16React 19Prisma 7PostgreSQL 16Redis 7TypeScriptVitestOllama / Claude-Bridge

Was zuerst gebrochen ist

  • Den Optimierer von scipy SLSQP auf einen reinen TS-Projected-Gradient-Solver zu portieren war der schwierige Teil — die Long-only-Nebenbedingung bindet anders, also kennzeichne ich die Methode in der UI, statt so zu tun, als wären die Gewichte identisch zur Python-Referenz.

  • Yahoo Finance drosselt hart. Ein naiver Abruf pro Ticker scheiterte an einer Watchlist mit 20 Namen; ein 3-stufiger Cache (Redis 5 Min → DB 24 h → Fetch) plus parallelitätsbegrenzte Batches haben es gelöst.

  • Die Investorenpersonas sind nur so ehrlich wie ihr Disclaimer. Sie lesen dieselben Fundamentaldaten auf fünf Arten; ich halte den Prompt an den tatsächlichen Zahlen verankert und kennzeichne es als Analyse, nie als Beratung.

Ergebnis

Ein einzelnes self-hosted Terminal, in dem jede Analytik nachvollziehbar ist: DCF-Annahmen sind editierbar, Risikozahlen stammen aus echten Renditereihen, und das KI-Panel argumentiert einen Wert auf fünf Arten, verankert an den Fundamentaldaten. Keine Orderausführung, keine Portfoliodaten, die den Host verlassen.

Ehrliche Grenzen

Nur Research — es gibt keinen Schreibpfad zum Broker, und in diesem Build wird es ihn nie geben. Makro-Serien werden 24 h gecacht, Intraday-Makro ist also außen vor. Der Optimierer ist Mean-Variance mit Long-only-Projected-Gradient, kein Ersatz für ein echtes Risk-Desk. Persona-Ausgaben sind LLM-Kommentar, ausdrücklich nicht-treuhänderisch.

Rogue AI • Production Systems •