Dienstag, 11. Mai 2010

Robocup am Finanzmarkt

Algo Trading (automatisierter Handel von Aktien durch Programme) hat dieser Tage einen schlechten Ruf bekommen. Kritiker argumentieren, dass der plötzliche Kurzsturz von letzter Woche auf Algo Trading zurückzuführen sei. Insbesondere High Frequency Trading (Algo Trading im Millisekundenbereich) wird als Verursacher betrachtet. High Frequency Trading sei Betrug, moderne Wegelagerei am Finanzmarkt.

Trotzdem fasziniert mich als Informatiker Algo Trading im Allgemeinen und High Frequency Trading im Speziellen unheimlich. Man schreibt Programme, die unabhängig am Finanzmarkt agieren nach einer zuvor konzipierten Strategie. Man kann sich richtig austoben und allen möglichen Schnickschnack ausprobieren, so lange es Resultate liefert (genetische Algorithmen, Datamining, neuronale Netze, ...). Man hat heftigste Performanzanforderungen und optimiert deshalb um jede Millisekunde. Sogar die Länge der LAN-Kabel wird berücksichtigt, weshalb die Rechner möglichst nah am Börsenserver platziert werden. Und gut bezahlt wird man für diesen Spaß auch noch. Hey, Durchschnittsnerds programmieren Robocup. Als Hobby. Für lau.


Auf dem Papier hat Algo Trading auch viele fachliche Vorteile:
  • Programme haben keine Gefühle, sondern agieren strikt nach Regeln. Ein Programm drückt sich nicht davor, mit Verlust zu verkaufen.
  • Programme entscheiden sich schneller. Statt in Minuten treffen sie ihre Entscheidungen in Millisekunden. Das kann beispielsweise Verluste bei einem Kurzsturz verringern. Oder Arbitrage (risikofreie Gewinne) überhaupt erst ermöglichen, wie es beim High Frequency Trading der Fall ist.
  • Aufwendige Handelstrategien können durch Programme realisiert werden. So kann man z.B. eine große Order in viele kleine splitten, um Kosten zu senken.
  • Programme sind billiger als menschliche Händler.
Für mich der plakativste Vorteil von Algo Trading ist die Überprüfbarkeit der Programme. Einerseits kann man sie aufmachen und in ihr Gehirn, den Quelltext, schauen, um genau nachvollziehen, was, wie und warum passiert. Jedenfalls so lange das Programm nicht in Brainfuck Assembler programmiert wurde, keine neuronalen Netze verwendet oder proprietärer Code einer Softwarefirma ist.

Andererseits kann man Programme ausgiebig testen. Mit historischen Daten kann man überprüfen, welche Ergebnisse das Programm früher erzielt hätte. Z.B. kann man die Durchschnittsrendite des Programms für die letzten zehn Jahre bestimmen. Und mit Szenarien kann man simulieren, wie sich das Programm in bestimmten Marktsituationen schlägt (Kurseinbruch DAX 5%).

Ich klinge jetzt etwas wie der Autobauer, der sich über die tollen PS-Zahlen eines Porsche Cayennes freut. Oder der Geologe, dem eine vor zehn Jahren noch unmöglich geglaubte Tiefseebohrung im Golf von Mexiko gelingt. Aber technisch (nicht fachlich) finde ich das eben spannend. Mir macht aber die suggerierte Sicherheit der Verfahren Angst. "Wir haben doch die letzten zwanzig Jahre erfolgreich getestet, was soll schon schiefgehen?"

Aus der Vergangenheit die Zukunft abzuleiten, ist an sich keine tolle Idee (s. Taleb). Aus Informatik-Sicht steht man vor der Frage, wie repräsentativ die verfügbaren Testfälle eigentlich sind. Arbeitet man mit historischen Daten, klammert man ein wesentliches Merkmal heutiger Märkte aus: Algo Trading. 2008 hatten Programme bereits einen Anteil von 40% am DAX-Handel, Tendenz stark steigend. Ob historische Marktdaten aus einer Phase vor dem Algo Trading noch repräsentativ sind, wage ich zu bezweifeln. Die fallen also weg und damit ein Großteil der verfügbaren historischen Daten.

Bleiben noch Simulationen als Tests. Wer realistisch simulieren will, kommt nicht umhin die anderen Marktteilnehmer zu berücksichtigen, insbesondere die Programme. Effektiv interagieren hier unzählige unabhängige, einander unbekannte Software-Komponenten in einem großen Netzwerk miteinander. Wer sich die Hölle eines (Software-)Testers vorstellen will, das käme ziemlich dicht ran.

Noch ein Gedanke zum Schluss. Es müsste doch möglich sein, Algo-Viren zu schreiben, die den Algos falsche Kauf- und Verkaufsimpulse geben und sie so in die Verlustzone steuern?

1 Kommentar:

  1. Du weißt sicherlich wie man eine Brownsche Bewegung erzeugt. Ich meine dieses step-by-step Münzwurfspielchen. Nun seien die Münzwürfe die Algos (Anstatt vieler Münzwürfe nacheinander, sind es hier viele Münzwürfe zu einem Zeitpunkt). Zu einem bestimmten Zeitpunkt werfen alle Algos ihre Münze (Zahl/Zahl, Buy/Sell). In Wirklichkeit ist es kein Zeitpunkt, sondern eine sehr kleine Zeitspanne (Also bekommen wird den Zeitpfad wieder zurück). Wenn alle Algos ihre Münze werfen und eine Order einstellen, existiert dennoch eine Reihenfolge (Praktisch ist es unmöglich, dass zeitgleiche Order vorliegen). Nun rattern die ganzen Order/Münzwürfe (=Buy/sell, Kopf/Zahl) durch 1 Auktion und werden gemäß ihrer Reihenfolge bedient.

    Erstens, wenn die Algo echte Münzwürfe machen, dann kommt prinzipiell dann wird der neue Feststellungspreis irgendwo in einer Varianz liegen.

    Zweitens, bei Auktionen werden i.d.R. nicht alle Order bedient (Preis zu hoch, Preis zu niedrig usw). Die Brownsche Bewegung bricht vorher ab! Ergo ist dann auch die Varianz der vorher BEOBACHTETEN Feststellungspreise niedriger als theoretisch möglich.

    Wie kommt es dann zu extremen Kursbewegungen?

    Erstens, besonders viele Order waren anreizkompatibel (==> Ein schöner langer Zufallspfad ==> Theoretisch mögliche Varianz wird möglich).
    Zweitens, die ganzen anreizkompatiblen Order landen trotz niedriger Wahrscheinlichkeit an den Extremwerten.

    Das war eine vereinfachte Erklärung, wie es zu heftigen Kursausschlägen kommen kann, wobei angenommen wurde, dass Algos reine Zufallsgeneratoren seien. Nun muss man noch die diversen (deterministischen) Strategien der Algos zumixen, um zu gucken warum es letztens so geknallt hat. Nur denke ich, dass es einer SEC nicht möglich sein wird, weil "die Hölle dieses Software-Tests" extrem heiß ist.

    AntwortenLöschen