Sollten Sie Ihren eigenen Backtester bauen?

Schriftsteller:Gutes, Erstellt: 2019-03-19 14:03:46, aktualisiert: 2019-03-19 14:08:48

Über diesen Beitrag

Der Beitrag ist für alle geeignet, die mit dem quantitativen Handel beginnen, sowie für diejenigen, die bereits Erfahrung mit dem Bereich haben.

Es wird auch die verschiedenen Arten von Backtesting-Mechanismen sowie die Software-Landschaft, die diese Ansätze implementiert, untersucht.

Schließlich diskutieren wir die Ein- und Ausgänge eines ereignisgesteuerten Backtesting-Systems, ein Thema, das ich in früheren Beiträgen häufig auf QuantStart behandelt habe.

Was ist ein Rücktest?

Ein Backtest ist die Anwendung von Handelsstrategieregeln auf eine Reihe historischer Preisdaten. Das heißt, wenn wir eine Reihe von Mechanismen für den Ein- und Ausstieg in ein Vermögenswertportfolio definieren und diese Regeln auf historische Preisdaten dieser Vermögenswerte anwenden, können wir versuchen, die Leistung dieser "Handelsstrategie" zu verstehen, die in der Vergangenheit erreicht worden sein könnte.

Es wurde einmal gesagt, dass alle Modelle falsch sind, aber einige sind nützlich. Dasselbe gilt für Backtests. Welchen Zweck dienen sie also?

Backtests helfen uns letztendlich zu entscheiden, ob es sich lohnt, eine Reihe von Strategieregeln live zu handeln. Es gibt uns eine Vorstellung davon, wie eine Strategie in der Vergangenheit funktioniert haben könnte. Im Wesentlichen ermöglicht es uns, schlechte Strategieregeln auszufiltern, bevor wir echtes Kapital zuweisen.

Es ist einfach, Backtests zu erzeugen. Leider sind Backtest-Ergebnisse keine Live-Handelsergebnisse. Sie sind stattdessen ein Modell der Realität. Ein Modell, das normalerweise viele Annahmen enthält.

Es gibt zwei Haupttypen von Software-Backtest - die for-Loop und die event-driven Systeme.

Bei der Entwicklung von Backtesting-Software gibt es immer einen Kompromiss zwischen Genauigkeit und Implementierungskomplexität.

Fallstricke bei der Rückprüfung

Es gibt viele Fallstricke, die mit dem Backtesting verbunden sind. Sie alle beziehen sich auf die Tatsache, dass ein Backtest nur ein Modell der Realität ist.

  • In-Sample-Testing - Dies geschieht, wenn Sie die gleichen Daten nutzen, um Ihre Handelsmodelle zu trainieren und zu testen. Es erhöht fast immer die Leistung einer Strategie über das hinaus, was im Live-Handel zu sehen wäre. Dies liegt daran, dass sie nicht auf ungesehenen Daten validiert wurde, die sich wahrscheinlich deutlich von den Trainingsdaten unterscheiden werden. Im Wesentlichen ist es eine Form der Überanpassung.
  • Überlebensverzerrung - Für Börsenindizes wie den S&P500 tritt ein periodischer Prozess der Notierung und De-Listierung auf, der die Zusammensetzung im Laufe der Zeit ändert. Durch die Nichtbeachtung dieser sich ändernden Zusammensetzung über einen Backtest hinweg werden Handelsstrategien automatisch die Gewinner auswählen, da alle Unternehmen, die aufgrund der niedrigen Marktkapitalisierung aus dem Index gefallen sind, ignoriert werden. Daher ist es immer notwendig, bei der Durchführung von längerfristigen Backtests überlebensverzerrungsfreie Daten zu verwenden.
  • Look-Ahead-Bias - Zukunftsdaten können sich auf sehr subtile Weise in Backtests einschleichen. Betrachten Sie die Berechnung eines linearen Regressionsverhältnisses über einen bestimmten Zeitrahmen. Wenn dieses Verhältnis dann in derselben Stichprobe verwendet wird, haben wir implizit zukünftige Daten eingebracht und werden daher wahrscheinlich die Leistung erhöht haben. Ereignisgesteuerte Backtests lösen dieses Problem weitgehend, wie wir unten diskutieren werden.
  • Marktveränderung - Dies betrifft die Tatsache, dass die Parameter des Aktienmarktes nicht stationär sind. Das heißt, der zugrunde liegende Prozess, der Aktienbewegungen erzeugt, muss keine Parameter haben, die zeitlich konstant bleiben. Dies erschwert die Verallgemeinerung von parametrierten Modellen (von denen viele Handelsstrategien Beispiele sind) und somit ist die Leistung bei Backtests wahrscheinlich höher als beim Live-Handel.
  • Transaktionskosten - Viele For-Loop-Backtests berücksichtigen nicht einmal die grundlegenden Transaktionskosten, wie Gebühren oder Provisionen. Dies gilt insbesondere für akademische Arbeiten, in denen Backtests weitgehend ohne Transaktionskosten durchgeführt werden. Leider ist es allzu einfach, Strategien zu finden, die ohne Transaktionskosten sehr profitabel sind, aber erhebliche Verluste verursachen, wenn sie einem realen Markt ausgesetzt sind. Zu den typischen Kosten gehören Spread, Marktwirkung und Slippage. All dies sollte in realistischen Backtests berücksichtigt werden.

Es gibt einige subtilere Probleme mit dem Backtesting, die nicht so oft diskutiert werden, aber trotzdem unglaublich wichtig zu berücksichtigen sind.

  • OHLC-Daten - OHLC-Daten, also die Art von täglichen Daten, die von kostenlosen Websites wie Yahoo Finance entnommen werden, sind oft eine Fusion mehrerer Börsenfeeds. Daher ist es unwahrscheinlich, dass einige der extremeren Werte (einschließlich des High- und Low-Preises des Tages) wahrscheinlich durch ein Live-Handelssystem erhalten würden. Solche Order-Routing muss als Teil eines Modells betrachtet werden.
  • Kapazitätsbeschränkungen - Beim Backtesting ist es leicht, einen unendlichen Geldpot zu nutzen. In Wirklichkeit ist jedoch das Kapital sowie die Marge stark eingeschränkt. Es ist auch notwendig, über die Grenzen des durchschnittlichen täglichen Volumens (ADV) nachzudenken, insbesondere für Aktien mit geringer Kapitalkapitalisierung, bei denen es möglich ist, dass unsere Trades den Markt tatsächlich bewegen können. Solche Marktwirkungseffekte müssten für Risikomanagementzwecke berücksichtigt werden.
  • Benchmark-Auswahl - Ist die Wahl der Benchmark, gegen die die zurückgetestete Strategie gemessen wird, eine gute? Zum Beispiel, wenn Sie mit Rohstoff-Futures handeln und dem US-Aktienindex S&P500 neutral gegenüberstehen, ist es wirklich sinnvoll, den S&P500 als Benchmark zu verwenden?
  • Robustheit - Wenn Sie die Startzeit Ihrer Strategie innerhalb Ihres Backtests variieren, ändern sich die Ergebnisse dramatisch? Es sollte für eine längerfristige Strategie keine Rolle spielen, ob der Backtest an einem Montag oder einem Donnerstag gestartet wird.
  • Überfitting/Bias-Variance Tradeoff - Wir haben dies etwas oben im In-Sample-Testing-Punkt besprochen. Überfitting ist jedoch ein breiteres Problem für alle (überwachten) Machine-Learning-Methoden. Der einzige wirkliche Weg, dieses Problem zu lösen, ist durch sorgfältigen Einsatz von Cross-Validierungstechniken. Selbst dann sollten wir äußerst vorsichtig sein, dass wir unsere Handelsstrategien nicht einfach auf Lärm im Trainings-Set angepasst haben.
  • Psychologische Toleranz - Psychologie wird oft in der Quant Finance ignoriert, weil sie (angeblich) durch die Erstellung eines algorithmischen Systems entfernt wird. Allerdings schleicht sie sich immer ein, weil Quanten die Tendenz haben, das System einmal live eingesetzt zu überwinden. Darüber hinaus könnte das, was in einem Backtest tolerierbar erscheinen mag, im Live-Trading magisch sein. Wenn Ihre zurückgetestete Aktienkurve zu irgendeinem Zeitpunkt in ihrer Handelsgeschichte einen Rückgang von 50% zeigt, könnten Sie dies auch in einem Live-Trading-Szenario durchmachen?

Es wurde viel über die Probleme des Backtesting geschrieben.

For-Loop-Backtest-Systeme

Ein For-Loop Backtester ist die einfachste Art von Backtesting-System und die Variante, die am häufigsten in Quant-Blog-Posts zu sehen ist, rein wegen ihrer Einfachheit und Transparenz.

Im Wesentlichen wird das For-Loop-System über jeden Handelstag (oder OHLC-Bar) wiederholt, führt eine Berechnung im Zusammenhang mit dem Preis der Vermögenswerte durch, wie z. B. einen gleitenden Durchschnitt des Schließens, und geht dann lang oder kurz einen bestimmten Vermögenswert (oft zum gleichen Schließpreis, aber manchmal am Tag darauf). Die Iteration geht dann weiter. Die ganze Zeit wird das Gesamtkapital verfolgt und gespeichert, um später eine Eigenkapitalkurve zu erzeugen.

Hier ist der Pseudo-Code für einen solchen Algorithmus:

for each trading bar:
    do_something_with_prices();
    buy_sell_or_hold_something();
    next_bar();PythonCopy

Wie Sie sehen können, ist das Design eines solchen Systems unglaublich einfach. Dies macht es attraktiv, um einen ersten Blick auf die Leistung eines bestimmten Strategie-Regels zu werfen.

Vorteile

For-Loop-Backtester sind in fast jeder Programmiersprache einfach zu implementieren und sehr schnell auszuführen.

Nachteile

Der Hauptnachteil von For-Loop-Backtestern ist, dass sie ziemlich unrealistisch sind. Sie haben oft keine Transaktionskostenfähigkeit, es sei denn, sie werden speziell hinzugefügt. Normalerweise werden Aufträge sofort auf dem Markt mit dem Mittelkurs ausgefüllt. Daher wird oft kein Spread berücksichtigt.

Es gibt eine minimale Code-Wiederverwendung zwischen dem Backtesting-System und dem Live-Trading-System. Dies bedeutet, dass der Code oft zweimal geschrieben werden muss, was die Möglichkeit mehrer Fehler einführt.

For-Loop-Backtester sind anfällig für Look-Ahead-Bias aufgrund von Fehlern bei der Indexierung.

For-Loop-Backtester sollten wirklich nur als Filtermechanismus verwendet werden. Sie können sie verwenden, um die offensichtlich schlechten Strategien zu eliminieren, aber Sie sollten skeptisch gegenüber starker Performance bleiben. Weitere Forschung ist oft erforderlich. Strategien leisten selten besser im Live-Handel als in Backtests!

Ereignisgesteuerte Backtestsysteme

Event-Driven Backtesters liegen am anderen Ende des Spektrums. Sie sind viel mehr verwandt mit Live-Trading-Infrastrukturimplementierungen. Als solche sind sie oft realistischer im Unterschied zwischen Backtested und Live-Trading-Performance.

Solche Systeme laufen in einer großen while Schleife, die kontinuierlich nach Ereignissen verschiedener Typen in der Event-Warteschlange sucht.

  • Tick Ereignisse - Ankunft neuer Marktdaten
  • Signalereignisse - Erzeugung neuer Handelssignale
  • Auftragsereignisse - Aufträge, die bereit sind, an den Marktmakler gesendet zu werden
  • Ausfüllen von Ereignissen - Ausfüllen von Informationen des Marktmaklers

Wenn ein bestimmtes Ereignis identifiziert wird, wird es an die entsprechenden Module der Infrastruktur weitergeleitet, die das Ereignis verarbeiten und dann möglicherweise neue Ereignisse generieren, die in die Warteschlange zurückkehren.

Der Pseudo-Code für ein Event-Driven-Backtesting-System lautet wie folgt:

while event_queue_isnt_empty():
    event = get_latest_event_from_queue();
    if event.type == "tick":
        strategy.calculate_trading_signals(event);
    else if event.type == "signal":
        portfolio.handle_signal(event);
    else if event.type == "order":
        portfolio.handle_order(event);
    else if event.type == "fill":
        portfolio.handle_fill(event)
    sleep(600);  # Sleep for, say, 10 minsPythonCopy

Wie Sie sehen können, ist das Modul Portfolio-Handler stark abhängig.

Vorteile

Es gibt viele Vorteile, einen Event-Driven Backtester zu verwenden:

  • Beseitigung von Look-Ahead-Vorurteilen - Aufgrund ihres Nachrichten-Pass-Designs sind Event-Driven-Systeme in der Regel frei von Look-Ahead-Vorurteilen, zumindest auf der Handelsebene.
  • Code-Wiederverwendung - Für den Live-Handel ist es nur notwendig, die Datenverarbeitungs- und Ausführungsverarbeitungsmodule zu ersetzen. Alle Strategie-, Risikomanagement-/Positionsmanagement- und Leistungsmesscodes sind identisch. Dies bedeutet, dass normalerweise viel weniger Fehler zu beheben sind.
  • Portfolioniveau - Mit einem Event-Driven-System ist es viel einfacher, auf Portfolioniveau zu denken.
  • Richtiges Risikomanagement/Positionsmanagement - Kann das Risikomanagement und das Positionsmanagement leicht modularisieren. Kann leicht Hebelwirkung und Methoden wie das Kelly-Kriterium einführen. Kann auch leicht Warnungen über das Sektorexposure, ADV-Grenzen, Volatilitätsgrenzen und Illiquiditätswarnungen enthalten.
  • Remote Deployment/Monitoring - Modulärer Charakter des Codes erleichtert die Bereitstellung in die Cloud oder die Ko-Location der Software in der Nähe eines Austauschs auf einem virtualisierten System.

Nachteile

Während die Vorteile klar sind, gibt es auch einige erhebliche Nachteile bei der Verwendung eines solch komplexen Systems:

  • Schwierig zu programmieren - Der Aufbau eines vollständig getesteten Event-Driven-Systems wird wahrscheinlich Wochen oder Monate Vollzeitarbeit in Anspruch nehmen.
  • Objektorientierung erforderlich - Ein modulares Design erfordert die Verwendung von objektorientierten Programmierprinzipien (OOP) und somit eine Sprache, die OOP leicht unterstützen kann.
  • Software-Engineering - Es ist wahrscheinlicher, dass gute Software-Engineering-Kenntnisse und Fähigkeiten wie Logging, Unit-Tests, Versionskontrolle und kontinuierliche Integration erforderlich sind.
  • Langsame Ausführung - Die Nachrichtenübertragung des Codes macht die Ausführung im Vergleich zu einem vektorisierten For-Loop-Ansatz viel langsamer.

Die Software-Landschaft

In diesem Abschnitt werden wir Software (sowohl Open-Source- als auch kommerzielle) betrachten, die sowohl für For-Loop- als auch für Event-Driven-Systeme existiert.

Für For-Loop-Backtester sind die wichtigsten verwendeten Programmiersprachen/Software Python (mit der Pandas-Bibliothek), R (und der Quantmod-Bibliothek) und MatLab.

Der Markt für Event-Driven-Systeme ist viel größer, da Kunden/Nutzer oft wünschen, dass die Software sowohl Backtesting als auch Live-Handel in einem Paket ermöglicht.

Zu den teuren kommerziellen Angeboten gehören Deltix und QuantHouse.

Quantpian ist ein Beispiel für eine ausgereifte webbasierte Einrichtung für Backtesting und Live-Handel.

Institutionelle Quanten entwickeln häufig auch eigene Software, was auf eine Mischung aus regulatorischen Einschränkungen, Investor-Beziehungen/Berichterstattung und Prüfbarkeit zurückzuführen ist.

Einzelhandelsquants haben die Wahl zwischen der Verwendung des cloud+data-Ansatzes von Quantopian oder rolling their own mit einem Cloud-Anbieter wie Amazon Web Services, Rackspace Cloud oder Microsoft Azure, zusammen mit einem geeigneten Datenanbieter wie DTN IQFeed oder QuantQuote.

In Bezug auf Open-Source-Software gibt es viele Bibliotheken. Sie sind meist in Python geschrieben (aus Gründen, die ich unten skizzieren werde) und umfassen Zipline (Quantopian), PyAlgoTrade, PySystemTrade (Rob Carver/Investment Idiocy) und QSTrader (QuantStart eigener Backtester).

Einer der wichtigsten Aspekte ist jedoch, dass unabhängig davon, welche Software Sie letztendlich verwenden, sie mit einer gleich soliden Quelle finanzieller Daten kombiniert werden muss.

Programmiersprachen

Während Software sich um die Details für uns kümmert, verbirgt sie uns viele Implementierungsdetails, die oft entscheidend sind, wenn wir unsere Komplexität unserer Handelsstrategie erweitern möchten.

Trotz meines Hintergrunds als quantitativer Softwareentwickler interessiere ich mich nicht persönlich für Sprachkriege. Es gibt nur so viele Stunden am Tag und als Quanten müssen wir die Dinge erledigen - nicht Zeit damit verbringen, über Sprachdesign auf Internetforen zu diskutieren!

Wir sollten uns nur für das interessieren, was funktioniert.

Python

Python ist eine extrem einfach zu erlernende Programmiersprache und oft die erste Sprache, mit der Menschen in Kontakt kommen, wenn sie sich entscheiden, Programmieren zu lernen.

Es verfügt über einige außergewöhnliche Quant/Data Science/Machine Learning (ML) -Bibliotheken in NumPy, SciPy, Pandas, Scikit-Learn, Matplotlib, PyMC3 und Statsmodels.

Es ist ideal für den Aufbau von For-Loop- und Event-Driven-Backtesting-Systemen. In der Tat ist es vielleicht eine der wenigen Sprachen, die end-to-end-Recherche, Backtesting, Bereitstellung, Live-Handel, Berichterstattung und Überwachung ermöglicht.

Sein größter Nachteil ist vielleicht, dass er im Vergleich zu anderen Sprachen wie C++ recht langsam ausgeführt wird. Allerdings wird daran gearbeitet, dieses Problem zu verbessern, und mit der Zeit wird Python schneller.

R

R ist eine statistische Programmierumgebung, eher als eine vollwertige First-Class-Programmiersprache (obwohl manche vielleicht anders argumentieren!). Es wurde hauptsächlich für die Durchführung fortgeschrittener statistischer Analysen für Zeitreihen, klassische/frequentistische Statistiken, bayesische Statistiken, maschinelles Lernen und explorative Datenanalyse entwickelt.

Es wird häufig für For-Loop-Backtesting verwendet, oft über die Quantmod-Bibliothek, ist jedoch nicht besonders gut für Event-Driven-Systeme oder Live-Handel geeignet.

C++

C++ hat den Ruf, extrem schnell zu sein. Fast alle wissenschaftlichen Hochleistungsrechner werden entweder in Fortran oder C++ durchgeführt. Dies ist sein Hauptvorteil. Wenn Sie also den Hochfrequenzhandel in Betracht ziehen oder an älteren Systemen in großen Organisationen arbeiten, dann ist C++ wahrscheinlich eine Notwendigkeit.

Leider ist es schmerzhaft für die Durchführung von Strategieforschung. Aufgrund der statischen Typisierung ist es ziemlich schwierig, Daten im Vergleich zu Python oder R leicht zu laden, zu lesen und zu formatieren.

Trotz des verhältnismäßigen Alters wurde es mit der Einführung von C++11/C++14 und weiteren Standardverbesserungen in letzter Zeit wesentlich modernisiert.

- Andere?

Vielleicht möchten Sie sich auch Java, Scala, C#, Julia und viele der funktionellen Sprachen ansehen.

Sollten Sie Ihren eigenen (ereignisorientierten) Backtester schreiben?

Antwort: Ja!

Es ist eine großartige Lernerfahrung, ein eigenes Event-Driven-Backtesting-System zu schreiben. Erstens zwingt es Sie, alle Aspekte Ihrer Handelsinfrastruktur zu berücksichtigen, nicht nur stundenlang an einer bestimmten Strategie zu arbeiten.

Selbst wenn Sie das System nicht für den Live-Handel verwenden, wird es Ihnen eine große Anzahl von Fragen geben, die Sie Ihren kommerziellen oder FOSS-Backtesting-Anbietern stellen sollten.

Zum Beispiel: Wie unterscheidet sich Ihr aktuelles Live-System von Ihrer Backtest-Simulation in Bezug auf:

  • Algorithmische Ausführung und Befehlsverleitung?
  • Spread, Gebühren, Verschiebungen und Auswirkungen auf den Markt?
  • Risikomanagement und Positionsgröße?

Während Event-Driven-Systeme nicht schnell oder einfach zu schreiben sind, wird die Erfahrung später in Ihrer Quant-Trading-Karriere enorme pädagogische Dividenden zahlen.

Ereignisgesteuerte Backtestkonzeption 101

Wie schreibt man ein solches System?

Der beste Weg, um damit anzufangen, ist einfach Zipline, QSTrader, PyAlgoTrade, PySystemTrade usw. herunterzuladen und die Dokumentation und den Code zu lesen. Sie sind alle in Python geschrieben (wegen der Gründe, die ich oben beschrieben habe) und zum Glück ist Python sehr ähnlich wie das Lesen von Pseudo-Code. Das heißt, es ist sehr einfach zu folgen.

Ich habe auch viele Artikel über Event-Driven Backtest Design geschrieben, die Sie hier finden können, die Sie durch die Entwicklung jedes Moduls des Systems führen.

Denken Sie daran, dass Sie an Tag 1 kein Experte sein müssen. Sie können es langsam, Tag für Tag, Modul für Modul machen. Wenn Sie Hilfe benötigen, können Sie mich oder andere bereitwillige Quant-Blogger kontaktieren. Siehe Ende des Artikels für meine Kontakt-E-Mail.

Ich werde nun die Module diskutieren, die häufig in vielen Event-Driven-Backtesting-Systemen zu finden sind.

Wertpapier-Stammdatenbank

Hier werden alle historischen Preisdaten gespeichert, zusammen mit Ihrer Handelsgeschichte, sobald Sie live sind.

Stattdessen verwenden wir eine first class Datenbank oder ein Dateisystem, wie PostgreSQL, MySQL, SQL Server oder HDF5.

Idealerweise wollen wir Tick-Level-Daten erhalten und speichern, da dies uns eine Vorstellung von Handelsspreads gibt.

Wir sollten uns stets der Handhabung von Unternehmensaktionen (z. B. Aktienspaltungen und Dividenden), Überlebensverzerrungen (Aktienentfernung) sowie der Verfolgung der Zeitzonenunterschiede zwischen verschiedenen Börsen bewusst sein.

Einzelpersonen/Einzelhändler können hier konkurrieren, da viele Datenbanktechnologien mit Produktionsqualität ausgereift, kostenlos und Open Source sind.

Es gibt immer noch viele Märkte und Strategien, die zu klein sind, um von den großen Fonds interessiert zu sein.

Handelsstrategien

Das Handelsstrategie-Modul in einem Event-Driven-System führt im Allgemeinen eine Art Vorhersage- oder Filtermechanismus auf neue Marktdaten aus.

Es erhält Bar- oder Tickdaten und verwendet diese Mechanismen dann, um ein Handelssignal zu produzieren, um einen Vermögenswert zu longen oder zu shorten.

95% der Quant-Blog-Diskussion dreht sich in der Regel um Handelsstrategien. Ich persönlich glaube, dass es mehr wie 20% sein sollte. Dies liegt daran, dass ich denke, dass es viel einfacher ist, die erwarteten Renditen zu erhöhen, indem man die Kosten durch ein angemessenes Risikomanagement und eine Positionsgröße reduziert, anstatt Strategien mit mehr Alpha zu verfolgen.

Portfolio- und Auftragsmanagement

Das Herzstück eines Event-Driven Backtesters ist das Portfolio & Order Management-System.

Ziel dieses Systems ist es, vom aktuellen Portfolio zum gewünschten Portfolio zu gelangen, wobei das Risiko und die Transaktionskosten minimiert werden.

Das Modul verknüpft die Strategie, das Risiko, die Positionsgröße und die Auftragsausführungsfähigkeiten des Systems und bearbeitet die Positionsberechnungen während des Backtestings, um die eigenen Berechnungen einer Brokerage nachzuahmen.

Der Hauptvorteil der Verwendung eines solchen komplexen Systems besteht darin, dass eine Vielzahl von Finanzinstrumenten unter einem einzigen Portfolio gehandhabt werden kann. Dies ist für institutionelle Portfolios mit Absicherung notwendig. Eine solche Komplexität ist sehr schwierig in einem For-Loop-Backtesting-System zu programmieren.

Risikomanagement und Positionsmanagement

Das Modul kann Bestellungen, die aus dem Portfolio gesendet werden, ändern, hinzufügen oder ein Veto einlegen.

Insbesondere kann das Risikomodul Absicherungen hinzufügen, um die Marktneutralität zu erhalten. Es kann die Auftragsgrößen aufgrund von Sektorenexposition oder ADV-Limits reduzieren. Es kann einen Handel vollständig verweigern, wenn der Spread zu groß ist oder die Gebühren im Verhältnis zur Handelsgröße zu groß sind.

Ein separates Positionsgrößenmodul kann Volatilitätsschätzung und Positionsgrößenregeln wie Kelly-Leverage implementieren.

Solche Themen sind in der Quant-Blogosphäre nicht gut vertreten. Dies ist jedoch wahrscheinlich der größte Unterschied zwischen der Art und Weise, wie Institutionen und einige Einzelhändler über ihren Handel nachdenken.

Ausführung

Im wirklichen Leben ist es nie garantiert, dass wir einen Markt in der Mitte haben!

Wir müssen Transaktionsfragen wie Kapazität, Spread, Gebühren, Schlupf, Marktwirkung und andere algorithmische Ausführungsbedenken berücksichtigen, sonst werden unsere Rückprüfungsergebnisse wahrscheinlich stark überbewertet sein.

Der modulare Ansatz eines Event-Driven-Systems ermöglicht es uns, den BacktestExecutionHandler leicht mit dem LiveExecutionHandler auszuwechseln und auf den Remote-Server zu implementieren.

Wir können auch leicht mehrere Brokerages hinzufügen, die das OOP-Konzept von inheritance verwenden. Dies geht natürlich davon aus, dass die genannten Brokerages eine einfache Application Programming Interface (API) haben und uns nicht zwingen, eine Graphische Benutzeroberfläche (GUI) zu verwenden, um mit ihrem System zu interagieren.

Es gibt viele solche Module, die es leicht machen, mit Maklern zu sprechen, aber es ist notwendig, eigene Tests durchzuführen. Stellen Sie sicher, dass Sie mit diesen Bibliotheken vollkommen zufrieden sind, bevor Sie umfangreiches Kapital investieren, sonst könnten Sie einfach aufgrund von Fehlern in diesen Modulen viel Geld verlieren.

Leistung und Berichterstattung

Einzelhandelsquanten können und sollten die von institutionellen quanten verwendeten anspruchsvollen Berichtstechniken übernehmen. Zu diesen Instrumenten gehören Live-Dashboards des Portfolios und der entsprechenden Risiken, eine Backtest-Eigenkapital-Verschiedenheit oder Delta-Differenz oder Live-Eigenkapital-Differenz, sowie alle üblichen Kennzahlen wie Kosten pro Handel, Renditeverteilung, hohe Wassermarke (HWM), maximale Auslastung, durchschnittliche Handelslatenz sowie Alpha/Beta gegenüber einem Benchmark.

Es sollte eine konsequente schrittweise Verbesserung dieser Infrastruktur vorgenommen werden. Dies kann die langfristigen Renditen wirklich verbessern, indem einfach Fehler beseitigt und Probleme wie die Handelsverzögerung verbessert werden.

Die WGS wird schließlich aufgrund von alpha-Zersetzung erodieren. Andere werden schließlich den Rand entdecken und die Renditen abschwächen. Eine robuste Handelsinfrastruktur, eine solide Strategieforschungspipeline und kontinuierliches Lernen sind jedoch gute Möglichkeiten, dieses Schicksal zu vermeiden.

Die Optimierung der Infrastruktur mag zwar "langweiliger" sein als die Strategieentwicklung, aber sie wird deutlich weniger langweilig, wenn die Renditen verbessert werden!

Einsatz und Überwachung

Die Bereitstellung eines Remote-Servers und die umfangreiche Überwachung dieses Remote-Systems sind für institutionelle Systeme von entscheidender Bedeutung.

Ein robustes System muss entfernt in der Cloud bereitgestellt oder in der Nähe einer Börse platziert werden. Zuhause Breitband, Stromversorgung und andere Faktoren bedeuten, dass die Verwendung eines Heimdesktops / Laptops zu unzuverlässig ist. Oft versagen die Dinge genau zu der schlimmsten Zeit und führen zu erheblichen Verlusten.

Zu den Hauptproblemen bei der Berücksichtigung einer Remote-Bereitstellung gehören: Überwachung von Hardware wie CPU, RAM/Swap, Festplatten- und Netzwerk-E/Ausgabe, hohe Verfügbarkeit und Redundanz von Systemen, ein gut durchdachter Backup- UND Wiederherstellungsplan, umfangreiche Protokollierung aller Aspekte des Systems sowie kontinuierliche Integration, Unit-Tests und Versionskontrollen.

Erinnern Sie sich an Murphys Gesetz. Wenn es scheitern kann, wird es scheitern.

Es gibt viele Anbieter, die relativ einfache Cloud-Bereitstellungen anbieten, darunter Amazon Web Services, Microsoft Azure, Google und Rackspace.

Abschließende Gedanken

Leider gibt es im Quant-Trading keine "schnelle Lösung". Es erfordert viel harte Arbeit und Lernen, um erfolgreich zu sein.

Ein großer Stolperstein für Anfänger (und einige Zwischenquanten!) ist vielleicht, dass sie sich zu sehr auf die beste Strategie konzentrieren. Solche Strategien erliegen immer schließlich dem Alpha-Verfall und werden somit unrentabel. Daher ist es notwendig, ständig nach neuen Strategien zu suchen, um ein Portfolio hinzuzufügen. Im Wesentlichen sollte die Strategie-Pipeline immer voll sein.

Es lohnt sich auch, viel Zeit in Ihre Handelsinfrastruktur zu investieren. Verbringen Sie Zeit mit Themen wie Bereitstellung und Überwachung. Versuchen Sie immer, die Transaktionskosten zu reduzieren, da die Rentabilität ebenso viel mit der Reduzierung der Kosten zu tun hat wie mit der Gewinnung von Handelsumsätzen.

Ich empfehle, ein eigenes Backtesting-System zu schreiben, um es einfach zu lernen. Sie können es entweder verwenden und kontinuierlich verbessern oder Sie können einen Anbieter finden und ihm dann alle Fragen stellen, die Sie entdeckt haben, als Sie Ihr eigenes erstellt haben.

Schließlich, immer lesen, lernen und verbessern. Es gibt eine Fülle von Lehrbüchern, Fachzeitschriften, akademischen Zeitschriften, Quant Blogs, Foren und Zeitschriften, die alle Aspekte des Handels diskutieren. Für fortschrittlichere Strategie-Ideen empfehle ich SSRN und arXiv - Quantitative Finance.


Mehr