← Alle Insights

C++ für Latenz-kritisches Trading: wann es sich wirklich lohnt.

C++ ist die Standardsprache der Hochfrequenz-Branche. Jane Street, Hudson River Trading, Citadel Securities, Optiver — sie alle schreiben ihre Order-Engines, Market-Maker und Risk-Modules in C++. Daraus den Schluss zu ziehen, dass jede ernsthafte Trading-Strategie in C++ gehört, ist einer der teuersten Denkfehler, die ich bei ambitionierten Retail-Tradern sehe. Dieser Artikel zieht die Linie zwischen „lohnt sich" und „verbrennt Monate ohne Gegenwert".

Warum C++ der HFT-Standard ist.

Vier technische Eigenschaften unterscheiden C++ von Python, Java oder C#:

Der Punkt ist nicht „C++ ist schnell". Der Punkt ist: in C++ können Sie Latenz budgetieren. Eine Funktion, die 800 ns braucht, wird auch in 99,99 % aller Aufrufe 800 ns brauchen. Diese Vorhersagbarkeit ist das, was HFT-Firmen kaufen.

Was C++ teuer macht.

Was selten erwähnt wird, wenn jemand mit „wir nutzen C++" wirbt:

Wann sich C++ konkret lohnt.

Meine Faustregeln, mit denen ich Mandanten berate:

Wann sich C++ nicht lohnt.

Genauso wichtig — und hier mache ich Mandanten regelmäßig Geld, indem ich sie davon abhalte:

Eine ehrliche Performance-Rechnung.

Ein realistisches Beispiel aus der Praxis: Eine Mean-Reversion-Strategie, die alle 100 ms ein Signal prüft. Python (mit Numba für die Hot-Loop) braucht ca. 350 µs pro Iteration, ein C++-Port liegt bei ca. 25 µs. Klingt nach einem Faktor 14 — aber die Order-Latenz zum Broker beträgt 8 ms. Das gesamte tick-to-trade verbessert sich von 8,35 ms auf 8,025 ms. Eine Verbesserung um 4 %. Für die zwei Monate Entwicklungszeit.

Anders gerechnet: Bei einem Latency-Sensitive-Market-Maker, der pro Tag 50 000 Quotes updated, sparen 100 µs pro Quote 5 Sekunden pro Tag. Klingt nichts — aber in diesen 5 Sekunden würden Sie 0,3 % toxischer Fills weniger einsammeln. Auf 250 Handelstagen multipliziert. Dort lohnt C++.

Konkretes Beispiel: Order-Book-Reconstruction.

Eine der häufigsten Komponenten, bei der C++ wirklich glänzt: ein In-Memory-Limit-Order-Book, das aus einem Multicast-Feed live rekonstruiert wird. Die Datenstruktur ist eine sortierte Map von Preisleveln, mit Verkettungen pro Order. Naiv in Python: zu langsam. In C++ mit Flat-Maps und intrusiven Listen:

struct PriceLevel {
    int64_t price_ticks;
    uint64_t total_qty;
    boost::intrusive::list<Order> orders;
};

class OrderBook {
    boost::container::flat_map<int64_t, PriceLevel> bids_;
    boost::container::flat_map<int64_t, PriceLevel> asks_;
public:
    void on_add(const AddMsg& m) noexcept {
        auto& side = m.is_bid ? bids_ : asks_;
        auto [it, inserted] = side.try_emplace(m.price);
        it->second.total_qty += m.qty;
        it->second.orders.push_back(*pool_.allocate(m));
    }
    int64_t best_bid() const noexcept {
        return bids_.empty() ? 0 : bids_.rbegin()->first;
    }
};

Drei Details, die in C++ messbar sind und in Python verloren gehen: noexcept verhindert Exception-Handling-Overhead in der Hot-Path, flat_map hält die Daten cache-freundlich kontiguent, und der Object-Pool vermeidet Allokationen pro Order. Das ist die Art von Tuning, die in Co-Location-Setups 200 ns pro Update kostet — gegenüber 5–20 µs für eine naive Implementierung.

Lehren von Jane Street, HRT und Citadel.

Wer öffentliche Talks und Engineering-Blogs dieser Firmen liest, lernt drei Dinge:

Wer C++ ohne diese Begleit-Infrastruktur einsetzt, erbt die Komplexität ohne den Vorteil.

Meine Praxis: kein C++.

Ich schreibe meine eigenen Strategien in Python, mit gezielten Numba- und Rust-Bausteinen, wo es spürbar ist. Der Grund ist simpel: meine Strategien handeln auf 1-Minuten- bis Tages-Bars. Meine tick-to-trade-Anforderung liegt bei ca. 200 ms. Ein C++-Port würde mir null Edge verschaffen — und die Iterationsgeschwindigkeit halbieren.

Bei Mandanten empfehle ich C++ in den letzten zehn Jahren genau zweimal gemacht: einmal für einen institutionellen Market-Maker im DAX-Future-Bereich, einmal für eine Latency-Arb-Strategie mit eigener Cross-Connect. Beide Male war die Frage nicht „C++ oder Python", sondern „Welche Komponente in C++, welche in Python". Diese Mischarchitektur — schneller Kern, schnelle Forschung drumherum — ist meistens das richtige Modell.

Sie stehen vor der Frage, ob Ihre Strategie wirklich C++ braucht — oder ob Sie an der falschen Stelle optimieren? Erstgespräch buchen — wir prüfen die Latenz-Anforderung ehrlich gegen Ihre tatsächliche Strategie.