← Zurück zu den Projekten
Marktplätze & FinTech Fallstudie

Tendex — Investmentplattform für den Markt für digitale Assets

Entwicklung und Weiterentwicklung der Investmentplattform des Schweizer Fonds Tendex (FINMA-reguliert): komplettes Redesign, Verwaltung von Investmentplänen, Nutzer- und Referral-System. Stack: Symfony, ElasticSearch, RabbitMQ, Redis, Twig.

Verfügbare Sprachen
Technologien 7
PHP
Symfony
JavaScript
PostgreSQL
Redis
Elasticsearch
RabbitMQ
Tendex — Investmentplattform für den Markt für digitale Assets
Ausgezeichnetes Projekt ↗

Über das Projekt

Tendex ist ein Schweizer Investmentfonds unter FINMA-Regulierung, der seit 2019 quantitative Analyse und proprietäre Algorithmen einsetzt, um stabile und unkorrelierte Renditen auf dem Markt für digitale Assets zu erzielen. Die Plattform verarbeitet über 100 Milliarden Marktparameter und gewährleistet eine automatische Steuerung von Trades und Risiken im 24/7-Betrieb.

Ich war als Full-Stack-Entwickler (Symfony + Twig) am Projekt beteiligt: verantwortlich für das komplette Redesign des Frontends sowie für die Weiterentwicklung zentraler Geschäftsprozesse — Verwaltung von Investmentplänen, Einfrieren und verzögerter Start, erzwungene Beendigung, Löschen von Nutzern und Bearbeitung der Referral-Struktur. Ich habe mit einer hochlastigen Architektur auf Basis von ElasticSearch, RabbitMQ und Redis gearbeitet.

Tendex — Investmentplattform für den Markt für digitale Assets

Tendex ist ein Schweizer Investmentfonds unter FINMA-Regulierung, der seit 2019 modernste Technologien und quantitative Analyse einsetzt, um stabile und unkorrelierte Renditen auf dem Markt für digitale Assets zu erzielen.

Der zentrale Vorteil des Fonds ist das tiefgehende Marktmonitoring auf Basis von mehr als 100 Milliarden Parametern sowie proprietäre Algorithmen, die eine automatische Steuerung von Trades und Risiken im 24/7-Betrieb gewährleisten. Ziel der Plattform ist es, Risiken zu minimieren und Anlegern ein hohes Wachstumspotenzial zu bieten — mit zuverlässigen Lösungen zur Diversifizierung und zum Schutz des Kapitals in einer Welt voller Unsicherheit.

Meine Rolle im Projekt

Full-Stack-Entwickler: Symfony (Backend), Twig (Templates). Verantwortlich für das Redesign des Kundenbereichs und des Frontends sowie für die Weiterentwicklung zentraler Geschäftsprozesse der Investmentplattform.

Technologie-Stack

  • Backend: Symfony (PHP)
  • Frontend: Twig
  • Suche und Analytik: ElasticSearch
  • Queues: RabbitMQ
  • Cache und Sessions: Redis
  • Infrastruktur: Hintergrund-Worker für die asynchrone Verarbeitung von Investment-Events

Zentrale Aufgaben

  • Komplettes Redesign der Website und des Kundenbereichs für Anleger
  • Mechanik zur erzwungenen Beendigung eines Investmentplans
  • Korrektes Löschen von Nutzern unter Wahrung der Integrität der Finanzdaten
  • Funktionalität zum Einfrieren von Investmentplänen
  • Funktionalität für den verzögerten Start eines Investmentplans
  • Bearbeitung der Referral-Struktur
  • Asynchrone Verarbeitung von Events über RabbitMQ
  • Indexierung und Suche über ElasticSearch

Ergebnis

Die Plattform erhielt ein modernes, aktualisiertes Interface und einen erweiterten Funktionsumfang zur Verwaltung von Investmentplänen. Das erhöhte den Komfort für Anleger und entlastete den Support. Die asynchrone Architektur auf Basis von RabbitMQ und ElasticSearch gewährleistete stabilen Betrieb unter Last und schnellen Zugriff auf die Analytik.

Was ich geliefert habe

01

Das bestehende Interface der Plattform war veraltet, für Anleger unbequem und spiegelte ni...

Die Herausforderung

Das bestehende Interface der Plattform war veraltet, für Anleger unbequem und spiegelte nicht den Status eines regulierten Schweizer Fonds wider. Es war erforderlich, den visuellen Teil und die UX zu erneuern, ohne die Funktionalität zu verlieren und ohne laufende Geschäftsprozesse zu beeinträchtigen.

Lösung

  • Audit der bestehenden Twig-Templates und Identifikation wiederverwendbarer Komponenten.
  • Entwicklung eines neuen Design-Systems: Grid, Typografie, UI-Komponenten.
  • Seiten unter Verwendung von Twig sowie Integration von Twig-Komponenten für interaktive Elemente (Diagramme, Tabellen, Formulare).
  • Sicherstellung von Responsivität und korrekter Darstellung auf mobilen Geräten.

Ergebnisse

  • Modernes, aktualisiertes Interface, das der Positionierung des Fonds entspricht.
  • Verbesserte UX im Kundenbereich für Anleger.
  • Reduzierung der Support-Anfragen zu Navigationsfragen.

02

Anleger oder Administratoren sollten einen Investmentplan vorzeitig beenden können, mit ko...

Die Herausforderung

Anleger oder Administratoren sollten einen Investmentplan vorzeitig beenden können, mit korrekter Neuberechnung von Rendite, Gebühren und Rückzahlung. Eine Datenunsynchronisierung bei parallelen Operationen musste vermieden werden.

Lösung

  • Entwurf eines Domänenmodells für die Planbeendigung unter Berücksichtigung aller Zustände (aktiv, eingefroren, in Warteschlange).
  • Implementierung eines Service zur Berechnung der finalen Rendite und Gebühren.
  • Auslagerung schwerer Operationen in asynchrone Tasks über RabbitMQ.
  • Idempotenz der Operationen und Sperren über Redis.

Ergebnisse

  • Korrekte und vorhersehbare Beendigung von Plänen in jedem Zustand.
  • Keine Doppelabbuchungen und keine Datenunsynchronisierung.
  • Transparente Operationshistorie für den Anleger.

03

Einfaches Löschen von Nutzern brach verbundene Entitäten (Investmentpläne, Transaktionen,...

Die Herausforderung

Einfaches Löschen von Nutzern brach verbundene Entitäten (Investmentpläne, Transaktionen, Referrals). Es musste ein sicheres Löschen unter Wahrung der Finanzhistorie und der Regulatoranforderungen implementiert werden.

Lösung

  • Einführung eines Soft-Delete-Mechanismus für Nutzer unter Wahrung der Beziehungen.
  • Kaskadenverarbeitung: Anonymisierung personenbezogener Daten, Erhalt der Transaktionshistorie.
  • Implementierung eines Hintergrund-Tasks zur Bereinigung verbundener Entitäten über RabbitMQ.
  • Logging und Audit der Löschoperationen.

Ergebnisse

  • Sicheres Löschen ohne Verletzung der Datenintegrität.
  • Einhaltung der Regulatoranforderungen zur Aufbewahrung der Finanzhistorie.
  • Reduzierung des Fehlerrisikos bei manuellen Eingriffen.

04

Anleger benötigten die Möglichkeit, die Renditeakkumulation eines Plans vorübergehend ausz...

Die Herausforderung

Anleger benötigten die Möglichkeit, die Renditeakkumulation eines Plans vorübergehend auszusetzen, ohne ihn zu schließen — beispielsweise bei Marktinstabilität. Solche Zeiträume mussten in den Berechnungen korrekt berücksichtigt werden.

Lösung

  • Hinzufügen des Zustands „eingefroren" in den Lebenszyklus des Investmentplans.
  • Implementierung der Logik für Pausierung der Akkumulation und korrekte Wiederaufnahme.
  • Aktualisierung der Renditeberechnung unter Berücksichtigung der Einfrierung.
  • Benachrichtigungen an den Anleger über den Planstatus.

Ergebnisse

  • Flexible Planverwaltung ohne Verlust der Historie.
  • Präzise Renditeberechnungen unter Berücksichtigung der Einfrierperioden.
  • Höheres Vertrauen der Anleger in das Instrument.

05

Anleger wollten einen Plan im Voraus erstellen, der automatisch zu einem festgelegten Datu...

Die Herausforderung

Anleger wollten einen Plan im Voraus erstellen, der automatisch zu einem festgelegten Datum startet. Eine zuverlässige Aufgabenplanung war erforderlich, robust gegen Ausfälle und Neustarts von Services.

Lösung

  • Implementierung des verzögerten Starts über den Symfony-Scheduler + RabbitMQ Delayed Messages.
  • Idempotente Verarbeitung des Starts (Schutz vor Doppelstart).
  • Monitoring verzögerter Tasks und Logging.
  • Benachrichtigungen an den Anleger über den Start.

Ergebnisse

  • Zuverlässiger verzögerter Start ohne manuellen Eingriff.
  • Keine Duplikate und keine verpassten Starts.
  • Komfortables Planungstool für Anleger.

06

Das Referral-System erforderte Flexibilität: Administratoren sollten die Zuordnung von Ref...

Die Herausforderung

Das Referral-System erforderte Flexibilität: Administratoren sollten die Zuordnung von Referrals ändern können, und Anleger die aktuelle Struktur sehen. Die bestehende Implementierung erlaubte keine Bearbeitung der Zuordnungen ohne Verlust der Akkumulationshistorie.

Lösung

  • Entwurf eines Modells für Referral-Beziehungen mit Versionierung.
  • Implementierung eines Bearbeitungsinterfaces für Referrals für Administratoren.
  • Erhalt der Akkumulationshistorie bei Änderung der Zuordnungen.
  • Validierung auf zyklische Abhängigkeiten.

Ergebnisse

  • Flexible Verwaltung der Referral-Struktur.
  • Erhalt der Historie und Korrektheit der Akkumulationen.
  • Reduzierung manueller Support-Arbeit.

07

Wachsende Last und Anzahl an Operationen (Akkumulationen, Start/Stopp von Plänen, Benachri...

Die Herausforderung

Wachsende Last und Anzahl an Operationen (Akkumulationen, Start/Stopp von Plänen, Benachrichtigungen) erforderten die Auslagerung schwerer Operationen aus dem synchronen HTTP-Zyklus, um Nutzeranfragen nicht zu blockieren.

Lösung

  • Entwurf einer Event-Queue für zentrale Domänenoperationen.
  • Implementierung von Workern mit Symfony Messenger + RabbitMQ.
  • Retry-Policies, Dead-Letter-Queue und Monitoring.
  • Idempotenz der Handler.

Ergebnisse

  • Schnelle Interface-Reaktion unabhängig von Hintergrundoperationen.
  • Ausfallsicherheit durch Retry und DLQ.
  • Skalierbarkeit der Verarbeitung unter Last.

08

Schnelle Suche über große Datenmengen (Transaktionen, Pläne, Nutzer) und Aufbau von Analyt...

Die Herausforderung

Schnelle Suche über große Datenmengen (Transaktionen, Pläne, Nutzer) und Aufbau von Analytik erforderten eine spezialisierte Suchmaschine statt schwerer SQL-Abfragen.

Lösung

  • Konfiguration von ElasticSearch-Indizes für zentrale Entitäten.
  • Implementierung der Datensynchronisation über RabbitMQ-Events.
  • Suchabfragen mit Filtern und Aggregationen für die Analytik.
  • Optimierung von Mappings und Reindexierung.

Ergebnisse

  • Schnelle Suche über große Datenmengen.
  • Flexible Analytik für Administratoren und Anleger.
  • Reduzierung der Last auf der Hauptdatenbank.

09

Hohe Frequenz von Zugriffen auf häufig genutzte Daten und Notwendigkeit des Schutzes vor R...

Die Herausforderung

Hohe Frequenz von Zugriffen auf häufig genutzte Daten und Notwendigkeit des Schutzes vor Race Conditions bei parallelen Operationen erforderten zuverlässigen Cache und Sperrmechanismus.

Lösung

  • Einführung von Caching heißer Daten und Aggregate in Redis.
  • Implementierung verteilter Sperren für kritische Operationen (Start/Beendigung von Plänen).
  • Konfiguration der Cache-Invalidierung über Events.
  • Monitoring von Hit/Miss und Antwortzeiten.

Ergebnisse

  • Reduzierung der Antwortzeit zentraler Seiten.
  • Schutz vor Race Conditions und Doppeloperationen.
  • Geringere Last auf der Datenbank.

10

Ein regulierter Fonds erfordert vollständiges Audit aller Finanzoperationen: wer, wann, wa...

Die Herausforderung

Ein regulierter Fonds erfordert vollständiges Audit aller Finanzoperationen: wer, wann, was und auf welcher Grundlage. Es musste ein Audit-System aufgebaut werden, das die Hauptprozesse nicht verlangsamt.

Lösung

  • Entwurf eines Audit-Log-Schemas mit Verknüpfung zu Nutzer, Plan und Transaktion.
  • Implementierung asynchroner Audit-Schreibung über RabbitMQ.
  • Tools zur Suche und zum Export von Audit-Logs für Administratoren (ElasticSearch).
  • Sicherstellung der Unveränderlichkeit der Einträge.

Ergebnisse

  • Vollständiges Audit der Finanzoperationen.
  • Einhaltung der Regulatoranforderungen.
  • Schneller Zugriff auf die Historie über die Suche.

11

Die Investmentplattform arbeitet im 24/7-Betrieb, und jede Verzögerung bei der Event-Verar...

Die Herausforderung

Die Investmentplattform arbeitet im 24/7-Betrieb, und jede Verzögerung bei der Event-Verarbeitung oder ein Worker-Ausfall ist kritisch. Es war ein System zum Monitoring zentraler Metriken und für Benachrichtigungen erforderlich.

Lösung

  • Einrichtung der Erfassung von Metriken zu Queues (RabbitMQ), Redis, ElasticSearch und zentralen Geschäftsevents.
  • Implementierung von Alerts bei Anomalien (Wachstum der DLQ, Verzögerungen, Worker-Fehler).
  • Dashboards für das Team.
  • Integration von Logging kritischer Operationen.

Ergebnisse

  • Schnelles Erkennen und Reagieren auf Incidents.
  • Reduzierung der Ausfallzeiten.
  • Transparenz des Plattformzustands für das Team.

Technologien & Themen

Projekt-Tags

#Symfony #PHP #Twig #ElasticSearch #RabbitMQ #Redis #Fintech #Investmentplattform #Krypto #REST API #Symfony Messenger #High Load #Asynchrone Verarbeitung #Redesign #Referral-System #Audit-Logging
04
Ein Projekt starten

Brauchen Sie einen ähnlichen technischen Ansatz?

Lassen Sie uns Ihr Projekt, die Architektur und den besten Technologie-Stack dafür besprechen.

Lassen Sie uns sprechen ↗