Type/to search
8
Follow
1363
Followers
Vom quantitativen Handel bis zum Asset Management – ​​CTA-Strategieentwicklung für absolute Renditen
Original
Created 2019-06-26 10:27:41  Updated 2023-10-30 20:30:50
 5
 7717

img

Vorwort

Warum diesen Kurs studieren?
Was haben Sie durch das Studium dieses Kurses gewonnen? Zunächst einmal basiert dieser Kurs auf den Programmiersprachen JavaScript und Python. Sprache ist nur eine Technologie, und irgendwann müssen wir diese Technologie noch in einer Branche anwenden. Quantitativer Handel ist eine aufstrebende Branche, die sich derzeit in einer Phase rasanter Entwicklung befindet und einen enormen Bedarf an talentierten Mitarbeitern hat.

Durch das systematische Studium dieses Kurses können Sie ein tieferes Verständnis des Bereichs des quantitativen Handels erlangen. Wenn Sie ein Student sind, der sich auf den Einstieg in den Bereich des quantitativen Handels vorbereitet, wird es auch für Sie hilfreich sein. Wenn Sie ein Aktien oder ein Enthusiast für Futures-Investitionen sind, dann kann quantitatives Trading Ihr subjektives Trading umfassend unterstützen. Durch die Entwicklung von Handelsstrategien können Sie auf dem Finanzmarkt Gewinne erzielen und Ihre Investitions- und Finanzmanagementkanäle und -plattformen erweitern.

Lassen Sie mich vorher über meine persönlichen Erfahrungen im Handel sprechen. Ich bin kein Finanzwissenschaftler, sondern Statistiker. Er begann bereits während seines Studiums mit dem subjektiven Aktienhandel. Später wurde er durch Zufall zum quantitativen Handelspraktiker eines inländischen Private-Equity-Fonds und beschäftigte sich hauptsächlich mit Strategieforschung und -entwicklung.

Ich bin seit mehr als zehn Jahren in der Handelsszene tätig und habe verschiedene Arten von Strategien entwickelt. Meine Anlagephilosophie lautet: Risikokontrolle geht über alles, Fokus auf absolute Rendite. Der Titel unseres Kurses lautet: Vom quantitativen Trading zum Asset Management – ​​CTA-Strategieentwicklung für absolute Renditen.

1. Die Logik, mit Futures-CTA-Strategien Geld zu verdienen

1.1 Futures-CTA verstehen

Manche Leute fragen sich vielleicht: Was ist CTA? Was genau ist CTA? CTA heißt im Ausland Commodity Trading Advisor und wird im Inland meist als Investment Manager bezeichnet. Traditionelle CTAs bündeln die Gelder einer großen Zahl von Anlegern, vertrauen sie dann professionellen Investmentinstituten an und investieren schließlich über Handelsberater (also CTAs) in Aktienindex-Futures, Rohstoff-Futures und Staatsanleihen-Futures.

Doch tatsächlich wächst und entwickelt sich der globale Terminmarkt weiter, und so wird auch das Konzept des CTA ständig erweitert, und sein Umfang geht weit über den traditioneller Termingeschäfte hinaus. Es kann nicht nur in den Terminmarkt investieren, sondern auch in den Zinsmarkt, den Aktienmarkt, den Devisenmarkt, den Optionsmarkt usw. Solange dieses Produkt über eine bestimmte Menge historischer Daten verfügt, kann die entsprechende CTA-Strategie basierend auf diesen historischen Daten entwickelt.

Vor den 1980er Jahren war die elektronische Handelstechnologie noch nicht sehr ausgereift. Damals beurteilten die meisten Händler den zukünftigen Trend der Rohstoff-Futures, indem sie manuell technische Indikatoren wie Williams-Indikatoren, KDJ, RSI, MACD, CCI usw. zeichneten. Später richteten einige Händler spezielle CTA-Fonds ein, um ihre Kunden bei der Vermögensverwaltung zu unterstützen. Erst mit der Popularisierung des elektronischen Handels in den 1980er Jahren begannen CTA-Fonds im eigentlichen Sinne aufzutauchen.

Änderungen in der CTA-Fondsverwaltungsskala
img
Einheit: Milliarden US-Dollar

Betrachtet man die Grafik oben, so ist insbesondere aufgrund des Anstiegs des quantitativen Handels festzustellen, dass sich das Volumen der weltweiten CTA-Fonds von 130,6 Milliarden US-Dollar im Jahr 2005 auf über 300 Milliarden US-Dollar im Jahr 2015 erhöht hat. Darüber hinaus ist die CTA-Strategie zu einer der gängigeren Anlagestrategien globaler Hedgefonds geworden.

Die Performance der CTA-Fonds hat sich zusammen mit ihrem Umfang ebenfalls verbessert. Werfen wir einen Blick auf den Barlake CTA Index in der folgenden Abbildung. Der Barlake CTA Index ist ein repräsentativer Branchen-Benchmark für globale Rohstoffhandelsberater. Von Ende 1979 bis Ende 2016 betrug die kumulierte Rendite des Barlake CTA Fund Index das 28,95-fache, mit einer annualisierten Rendite von 9,59 %, einer Sharpe-Ratio von 0,37 und einem maximalen Drawdown von 15,66 %.

Denn im Asset-Allocation-Portfolio weisen CTA-Strategien üblicherweise eine äußerst geringe Korrelation mit anderen Strategien auf. Wie im roten Kreis in der Abbildung unten dargestellt, ist der Barlake CTA Fund Index während des globalen Aktienbärenmarktes von 2000 bis 2002 und der globalen Subprime-Hypothekenkrise im Jahr 2008 nicht nur nicht gefallen, sondern hat sogar positive Renditen erzielt. Wenn Krisen auftreten in An den Aktien- und Anleihemärkten kann CTA hohe Erträge erzielen. Darüber hinaus können wir auch sehen, dass das Gewinnniveau des Barclays Commodity CTA Index seit 1980 immer höher war als das des S&P 500 und sein Rückgang auch viel geringer ist als der des S&P 500.

img

Die Entwicklung von CTA in meinem Land hat erst im letzten Jahrzehnt stattgefunden, aber die Dynamik ist sehr stark. Dies ist vor allem auf das relativ offene Handelsumfeld für inländische Rohstoff-Futures, die niedrige Handelskapitalschwelle und das Margensystem zurückzuführen, das Long- und Short-Positionen ermöglicht. -Wege-Handel und niedrige Transaktionsgebühren. Die technische Architektur der Börse ist weiter fortgeschritten als die von Aktien und der Handel im System ist einfacher usw.

Seit 2010 existieren CTA-Fonds überwiegend in der Form von Private Equity Fonds. Da die nationale Politik den Anlagespielraum von Fonds-Sonderkonten schrittweise erweitert, beginnen CTA-Fonds in Form von Fonds-Sonderkonten zu existieren. Ihre transparenteren und offeneren Betriebsmethoden sind auch für mehr Anleger zu einem notwendigen Instrument für die Vermögensallokation geworden.

img

Wie aus der obigen Abbildung hervorgeht, ist die CTA-Strategie sowohl hinsichtlich der Einstiegsschwierigkeit, der Kapitalschwelle, der Methode zur Ausführung der Handelsstrategie als auch des API-Dockings für einzelne Händler besser geeignet als andere Handelsstrategien. Inländische Terminkontrakte sind sehr klein. Beispielsweise kann eine Partie Mais oder Sojamehl für ein paar Tausend Yuan gehandelt werden, fast ohne Kapitalschwelle. Da einige CTA-Strategien aus der traditionellen technischen Analyse stammen, ist es im Vergleich relativ einfach zu anderen Strategien. .

img

Der Entwurfsprozess der CTA-Strategie ist ebenfalls relativ einfach. Zunächst werden die historischen Daten vorab verarbeitet und dann in das quantitative Modell eingegeben. Das quantitative Modell umfasst Handelsstrategien, die durch mathematische Modellierung, Programmierdesign und andere Tools erstellt werden, und generiert Handelssignale durch Berechnung und Analysieren dieser Daten. Natürlich ist es in der tatsächlichen Entwicklung nicht so einfach wie im obigen Bild. Dies dient nur dazu, allen ein Gesamtkonzept zu vermitteln.

1.2 Typen von Futures-CTA-Strategien

Aus der Perspektive der Handelsstrategien sind CTA-Strategien ebenfalls diversifiziert: Sie können Trendstrategien oder Arbitragestrategien sein; sie können mittel- und langfristige Strategien in großen Zyklen oder kurzfristige Strategien innerhalb eines Tages sein; die Strategielogik kann basieren auf technische Analyse oder Fundamentaldaten. Oberflächenanalyse; es kann subjektiver Handel oder systematischer Handel sein.

Es gibt verschiedene Klassifizierungsmethoden für CTA-Strategien. Je nach Handelsmethode kann man sie in subjektiven Handel und systematischen Handel unterteilen. Die Entwicklung von CTA-Strategien im Ausland ist relativ weit fortgeschritten, und die CTA-Strategie des systematischen Handels hat fast 100 % erreicht. Je nach Analysemethode kann man zwischen Fundamentalanalyse und technischer Analyse unterscheiden. Je nach Einnahmequelle kann man zwischen Trendtrading und Swingtrading unterscheiden.

Im Allgemeinen machen Trendstrategien auf dem gesamten Handelsmarkt etwa 70 % der CTA-Strategien aus, Mean-Reversion-Strategien etwa 25 % und Gegentrend- oder Trendumkehrstrategien etwa 5 %. Darunter kann die Trendstrategie, die den größten Anteil ausmacht, je nach Haltedauer in folgende Strategien unterteilt werden: Hochfrequenzhandel, Intraday-Handel, mittelfristiger bis kurzfristiger Handel und mittelfristiger bis langfristiger Handel.

Hochfrequenz-Market-Making-Strategie
Derzeit gibt es auf dem Markt zwei gängige Hochfrequenzhandelsstrategien: die Hochfrequenz-Market-Making-Strategie und die Hochfrequenz-Arbitrage-Strategie. Die Market-Making-Strategie besteht darin, für Liquidität auf dem Handelsmarkt zu sorgen. Das heißt, wenn auf einem Handelsmarkt mit Market Makern jemand kaufen oder verkaufen möchte, muss der Market Maker sicherstellen, dass sein Auftrag ausgeführt werden kann. Wenn die Liquidität auf dem Markt nicht ausreicht und die Order nicht ausgeführt werden kann, muss der Market Maker bei den Gegenparteien anderer Anbieter kaufen und verkaufen.

Hochfrequenz-Arbitrage-Strategien
Hochfrequenzarbitrage ist der Handel mit zwei stark korrelierten Aktien oder ETFs und ETF-Kombinationen. Basierend auf der Berechnungsmethode von ETFs kann die gleiche Methode zur Berechnung des erwarteten Preises eines ETFs verwendet werden. Der ETF-Indexpreis kann vom ETF-Erwartungspreis abgezogen werden, um eine Preisdifferenz zu erhalten. Normalerweise wird diese Preisdifferenz innerhalb eines Preiskanals wirken. Wenn die Preisdifferenz die oberen und unteren Kanäle durchbricht, können Sie diese Preisdifferenz handeln und warten um die Preisdifferenz auszugleichen und daraus Gewinne zu erzielen.

Intraday-Strategien
Wenn wir der wörtlichen Bedeutung folgen, kann man von einer Daytrading-Strategie sprechen, solange die Position nicht über Nacht gehalten wird. Da die Haltedauer beim Intraday-Handel relativ kurz ist, kann man nach dem Markteintritt in der Regel nicht sofort einen Gewinn erzielen und wird den Markt schnell wieder verlassen. Daher birgt diese Handelsmethode ein geringeres Marktrisiko. Da sich der Markt jedoch innerhalb kurzer Zeit rasch ändert, stellen Intraday-Strategien in der Regel höhere Anforderungen an die Händler.

Mittel- und langfristige Strategien
Theoretisch gilt: Je länger die Haltedauer, desto größer die Strategiekapazität und desto geringer das Risiko-Rendite-Verhältnis. Insbesondere bei institutionellen Transaktionen werden mehr mittel- und langfristige Strategien zugeteilt, da die Kapazität kurzfristiger Strategien begrenzt ist und große Fonds nicht innerhalb kurzer Zeit in den Markt ein- und austreten können. Meist beträgt die Haltedauer mehrere Tage, Monate oder auch länger.

CTA-Strategiedaten
Im Allgemeinen verwenden CTA-Strategien Minuten-, Stunden- und Tagesdaten als Forschungsobjekte, einschließlich Eröffnungskurs, Höchstkurs, Tiefstkurs, Schlusskurs, Handelsvolumen usw. Nur eine kleine Anzahl von CTA-Strategien verwendet Tick-Daten. Beispielsweise in- Tiefendaten wie Kaufpreis, Verkaufspreis, Kaufvolumen, Verkaufsvolumen usw. in L2-Daten.

img

Wenn es um die Grundideen von CTA-Strategien geht, denken wir zuerst an traditionelle technische Indikatoren, da es diesbezüglich mehr öffentliches Referenzmaterial gibt, die Logik normalerweise einfacher ist und die meisten von ihnen auf statistischen Prinzipien basieren. Zum Beispiel die verschiedenen technischen Indikatoren, die jeder kennt: MA, SMA, EMA, MACD, KDJ, RSI, BOLL, W&R, DMI, ATR, SAR, BIAS, OBV und so weiter.

Es gibt auch einige klassische Handelsmodelle auf dem Markt, die als Referenz verwendet und verbessert werden können, darunter: Kombination aus mehreren gleitenden Durchschnitten, DualThrust, R-Breaker, Turtle-Trading-Methode, Grid-Trading-Methode usw.

Bei allen oben genannten Strategien handelt es sich um Handelsstrategien, die auf traditioneller technischer Analyse basieren. Der Prozess besteht darin, Faktoren oder Kauf- und Verkaufsbedingungen mit Wahrscheinlichkeitsvorteilen auf der Grundlage historischer Daten und korrekter Handelskonzepte zu extrahieren und davon auszugehen, dass der Markt auch in Zukunft dieses Muster aufweisen wird. Verwenden Sie schließlich Code, implementieren Sie Handelsstrategien und automatisieren Sie Ihren Handel vollständig. Das Eröffnen einer Position, die Gewinnmitnahme, das Stoppen von Verlusten, das Hinzufügen von Positionen, das Reduzieren von Positionen usw. erfordert im Allgemeinen kein menschliches Eingreifen. Tatsächlich handelt es sich dabei um eine Strategie des Kaufens zu hohen und Verkaufens zu niedrigen Kursen, bei der man den positiven Autokorrelationskoeffizienten der Preiszeitreihe ausnutzt.

Der größte Vorteil der CTA-Strategie besteht darin, dass sie absolute Renditen erzielen kann, unabhängig davon, ob der aktuelle Markt steigt oder fällt, insbesondere wenn der Markt schnell zwischen Bullen- und Bärenmärkten wechselt oder wenn der Markttrend offensichtlich glatt ist. Der Vorteil von Diese Strategie ist sehr groß. Kurz gesagt, es gibt einen Trend. Und beim Gewinn gibt es einen. Wenn der Markt jedoch volatil ist oder der Trend nicht eindeutig erkennbar ist, kann diese Strategie dazu führen, dass zu Höchstpreisen gekauft und zu Tiefstpreisen verkauft wird, wobei ständig vor und zurück gehandelt wird, um Verluste zu vermeiden.

1.3 Gewinnprinzipien von Futures-CTA-Strategien

Der Grund, warum Futures-CTA-Strategien Geld einbringen können, liegt hauptsächlich in den folgenden Gründen:

  1. Preisbewegungen sind reflexartig und setzen sich stets in Form eines Trends fort. Wenn Anleger einen Preisanstieg feststellen, kaufen sie ein und sorgen so für einen weiteren Preisanstieg. Gleiches gilt für sinkende Preise. Da sich Anleger irrationaler verhalten, erleben wir manchmal, dass die Preise bei einem Kursanstieg auf ein anormales Niveau steigen, bzw. bei einem Kursrückgang auf ein anormales Niveau fallen.
  2. Jeder Anleger hat eine asymmetrische Toleranz gegenüber dem Gewinn- und Verlustverhältnis und verfügt über eine unterschiedliche Risikotoleranz. Die meisten Privatanleger bevorzugen eine konservativere, trendfolgende Handelsmethode und neigen eher dazu, einem Trend zu folgen.
  3. Die Preisbildung wird durch Transaktionen bestimmt, und Transaktionen werden von Menschen vorangetrieben. Die menschliche Natur lässt sich jedoch nur schwer ändern, weshalb feste Muster immer wieder auftreten. Die Strategie ist wirksam, wenn sie anhand historischer Daten zurückgetestet wird. Dies deutet darauf hin, dass sie wirksam sein könnte in der Zukunft.

Ein weiteres Merkmal des trendfolgenden Handels ist, dass Sie einen kleinen Geldbetrag verlieren, wenn es keinen Markt gibt, und viel Geld verdienen, wenn der Markt kommt. Jeder, der schon einmal gehandelt hat, weiß jedoch, dass der Markt in den meisten Fällen volatil ist. der Zeit, und nur in kurzer Zeit ist es ein Trend. Zitate. Daher weist die Trendfolgestrategie beim Handel eine geringere Gewinnquote auf, insgesamt sind jedoch Gewinn und Verlust jeder Transaktion relativ groß.

Da trendfolgende Strategien instabile Renditen aufweisen, bauen viele Investmentinstitute ein Anlageportfolio auf, das mehrere Varianten und Strategien umfasst, darunter auch eine gewisse Anzahl von Umkehrstrategien. Die Umkehrstrategie besteht darin, dass die Preiszeitreihe einen negativen Autokorrelationskoeffizienten aufweist, was bedeutet, dass hoch verkauft und niedrig gekauft wird.

Korrelation zwischen CTAs und traditionellen Vermögenswerten
img

Wenn wir uns das Diagramm oben ansehen, werden theoretisch mehrere Strategien mit unterschiedlichen Stilen oder geringen Korrelationen bei gleichzeitigen verschiedenen Marktpreisänderungen Handelssignale erzeugen, die manchmal gleich und manchmal unterschiedlich sind. Da sich mehrere Renditekurven überschneiden, ergänzen sich die Gesamtrenditen und die Renditekurve wird flacher, was wiederum die Volatilität der Renditen verringert.

Aus den oben genannten Gesichtspunkten lässt sich schlussfolgern, dass es besser ist, statt einer Strategie auf Master-Ebene mehrere mittelmäßige Unterstrategien zu entwickeln. Wie lassen sich diese Strategien also kontrollieren? Hier können wir uns auf den Random-Forest-Algorithmus im maschinellen Lernen beziehen. Random Forest ist kein unabhängiger Algorithmus, sondern ein Entscheidungsrahmen, der mehrere Entscheidungsbäume umfasst. Sie entspricht der übergeordneten Strategie über der Unterstrategie des Entscheidungsbaums. Organisieren und steuern Sie Cluster untergeordneter Richtlinien über übergeordnete Richtlinien.

Als nächstes müssen wir eine Masterstrategie entwerfen. Wir können die Liquidität, Rentabilität und Stabilität verschiedener Rohstoffe auf dem gesamten Rohstoffterminmarkt bewerten, Rohstoffterminportfolios mit geringer Volatilität aussortieren und dann branchenneutral vorgehen. Durch die diversifizierte Auswahl der Branche kann die Gesamtvolatilität weiter reduziert werden. Schließlich wird das eigentliche Rohstoff-Futures-Multivariate-Portfolio durch Marktwert-Matching für den Handel aufgebaut.

Jedes Produkt kann auch mit mehreren Parameterstrategien konfiguriert werden. Sie können eine Parameterkombination wählen, die eine gute Backtest-Performance aufweist. Wenn der Markttrend offensichtlich ist, funktionieren mehrere Parameterstrategien normalerweise konsistent, was dem Hinzufügen von Positionen entspricht. Wenn sich der Markt in einer In einem volatilen Markt können Strategien mit mehreren Parametern eingesetzt werden, um die Performance zu steigern. Strategien verhalten sich oft inkonsistent, sodass jede Strategie zur Risikoabsicherung entweder Long oder Short geht, was einer Reduzierung der Positionen gleichkommt. Dadurch kann die maximale Rendite des Portfolios weiter reduziert werden, während die Gesamtrendite unverändert bleibt.

2. Klassischer Futures-CTA-Strategiefall

Newton sagte einmal: „Wenn ich weiter sehen kann als andere, dann deshalb, weil ich auf den Schultern von Riesen stehe.“

Zu den öffentlich auf dem Markt verfügbaren CTA-Strategien gehören die gleitende Durchschnittsstrategie, die Bollinger-Band-Strategie, die Turtle-Trading-Methode, die Momentum-Strategie, die Arbitrage-Strategie usw. Quantitative Handelsstrategien haben alle eine Eigenschaft: Sie werden im Licht der Öffentlichkeit verschwinden. Sobald die Strategie öffentlich wird, wird sie allmählich wirkungslos. Dies hindert uns jedoch nicht daran, diese Strategien zu erlernen und ihr Wesen zu nutzen, sodass wir Probleme aus der Perspektive betrachten können, auf den Schultern von Riesen zu stehen.

2.1 Analyse der Futures-Fundamentaldaten (Bestand, Basis, Preis)

Bei der Fundamentalanalyse muss man sich nicht um kurzfristige Preistrends kümmern. Man geht davon aus, dass sich der Wert letztendlich im Preis widerspiegeln wird. Es geht eher darum, die Faktoren hinter dem Preis zu analysieren und zu beurteilen, wie viel diese Sorte wert ist. Im Allgemeinen wird eine Top-down-Analysemethode angewendet: von Makrofaktoren über Sortenfaktoren bis hin zu anderen Faktoren.

img

Betrachtet man das Bild oben, sieht man, dass es viele Faktoren gibt, die die Rohstoffpreise beeinflussen. Insgesamt sind es Dutzende von Artikeln. Wenn man sie weiter aufschlüsselt, sind es Dutzende mehr, und diese Daten ändern sich ständig. Es übersteigt die Fähigkeiten einzelner Privatanleger, derartige Datenmengen zu beschaffen, ganz zu schweigen von der Durchführung einer objektiven Analyse.

Tatsächlich bedeutet die Fundamentalanalyse von Rohstoff-Futures nicht, alle Faktoren zu analysieren. Wir müssen nur die Kernelemente der Fundamentalanalyse erfassen, um Muster aus den komplexen Informationen zu finden.

Makrofaktoren
Makroökonomische Daten sind komplex und veränderlich. Jeden Tag und in jedem Moment werden von Politikern, Zentralbanken und Investmentbanken in verschiedenen Ländern zahlreiche offizielle und inoffizielle Wirtschaftsdaten veröffentlicht. Abgesehen von politischen und wirtschaftlichen Krisen ist die Makroanalyse zwar gutes Gesprächsmaterial, aber nicht sehr praxistauglich. Peter Lynch, ein berühmter amerikanischer Experte für Fondsmanagement, drückte einmal seine Meinung aus: „Ich verbringe jedes Jahr nicht mehr als fünfzehn Minuten damit, Wirtschaftstrends zu analysieren.“

Sortenfaktoren
Bei der Fundamentalanalyse werden bei der Produktanalyse hauptsächlich Prämien und Rabatte, Angebots- und Nachfragebeziehungen, Warenbestände, Branchengewinne usw. analysiert. Man kann sagen, dass die Beherrschung der Analyse von Warenterminproduktfaktoren grundsätzlich die meisten Markttrends bestimmen kann.

Freunde, die bereits im Terminhandel tätig waren, wissen, dass sich inländische Rohstofftermingeschäfte einfach in Industrieprodukte und Agrarprodukte unterteilen lassen. Die Analysemethoden für Industrieprodukte und Agrarprodukte sind unterschiedlich. Wir werden dies anhand der beiden Aspekte Angebot und Nachfrage erklären. Bei Industrieprodukten ist das Angebot relativ stabil. Sofern es keinen großen technologischen Durchbruch gibt, ist es unwahrscheinlich, dass die Produktionskapazität kurzfristig steigen. Im Laufe der Zeit gibt es große Veränderungen, sodass der Faktor, der die Preise für Industrieprodukte beeinflusst, hauptsächlich die Nachfrage ist. Die Nachfrage nach landwirtschaftlichen Produkten ist relativ stabil. Langfristig gibt es Veränderungen in der Nachfrage nach landwirtschaftlichen Produkten, aber kurzfristig ist die Nachfrage nach landwirtschaftlichen Produkten tendenziell stabil. Daher ist der Faktor, der den Preis von landwirtschaftlichen Produkten beeinflusst, ist hauptsächlich Versorgung.

Daher bestimmt nach den Gesetzen der Ökonomie letztlich das Verhältnis von Angebot und Nachfrage den Preis einer Ware. Theoretisch können wir den zukünftigen Preis einer Ware beurteilen, solange wir Daten über Angebot und Nachfrage erhalten. Bei Industrieprodukten sind Angebotsdaten relativ leicht zu bekommen, Nachfragedaten hingegen sind schwierig zu bekommen. Bei Agrarprodukten sind Nachfragedaten relativ leicht zu bekommen, Angebotsdaten hingegen sind schwierig zu bekommen.

Tatsächlich können wir noch weiter gehen und eine Subtraktion vornehmen. Das wechselseitige Ergebnis von Angebot und Nachfrage auf dem Wirtschaftsmarkt ist der Lagerbestand. Wir können die Bestandsdaten verwenden, um die Stärke der Beziehung zwischen Marktangebot und -nachfrage zu beurteilen. Wenn der Bestand einer bestimmten Ware sehr hoch ist, bedeutet dies, dass das Angebot auf dem Markt größer ist als die Nachfrage, und der Preis der Ware wird fallen, wenn die äußeren Bedingungen unverändert bleiben. Wenn der Bestand einer bestimmten Ware sehr niedrig ist, bedeutet dies, dass die Kraft der Marktnachfrage größer ist als das Angebot und der Preis der Ware bald steigen wird, wenn die äußeren Bedingungen unverändert bleiben.

Neben der Analyse der Rohstoffbestände ist auch eine Analyse der Preisdifferenz zwischen dem Spotmarkt und dem Terminmarkt, der sogenannten Basis, erforderlich. Wenn der Futures-Preis höher ist als der Spot-Preis, nennen wir das eine Prämie; wenn der Futures-Preis niedriger ist als der Spot-Preis, nennen wir das einen Abschlag. Gemäß dem Futures-Liefersystem sollte der Futures-Preis am Futures-Liefertag dem Spot-Preis entsprechen.

img

Unabhängig davon, ob es sich um eine Prämie oder einen Rabatt handelt, sollte der Futures-Preis am Liefertag aufgrund der Beschränkungen des Futures-Liefersystems theoretisch dem Spotpreis entsprechen. Mit Näherrücken des Liefertermins tendieren Spotpreis und Futurepreis dazu, sich anzunähern; der eine ist die Rendite des Futures zum Spot, der andere die Rendite des Spots zum Future.

Basierend auf den oben genannten Prinzipien können wir Inventar und Basis verwenden, um gleichzeitig zukünftige Futures-Preise zu bestimmen. Wenn der Bestand einer Ware gering ist und der Futures-Preis deutlich unter dem Spot-Preis liegt, können wir davon ausgehen, dass die Nachfrage auf dem Spot-Markt größer ist als das Angebot und die Wahrscheinlichkeit künftiger Spot-Preissteigerungen hoch ist. Mit Näherrücken des Liefertermins steigen die Futures-Preise und entsprechen dem Spotpreis. Zudem ist die Wahrscheinlichkeit steigender Futures-Preise in der Zukunft größer.

Schließlich haben wir durch Bestandsaufnahme und Basis die wahrscheinlichste Richtung künftiger Preise ermittelt, genauere Kauf- und Verkaufspunkte gibt es jedoch nicht, sodass eine technische Analyse erforderlich ist, um klare Ein- und Ausstiegssignale zu geben. Der gesamte Rahmen der Fundamentalanalyse lautet: Niedriger Lagerbestand + hoher Rabatt + bullisches Signal der technischen Analyse = lang; hoher Lagerbestand + große Prämie + bärisches Signal der technischen Analyse = kurz.

2.2 Regeln für den Turtle-Handel

Wenn es um Handelsstrategien geht, müssen wir über die repräsentativen Turtle-Trading-Regeln sprechen. Die Turtle-Trading-Regeln gehen auf eines der berühmtesten Experimente der Handelsgeschichte zurück, bei dem der Rohstoffspekulant Richard Dennis herausfinden wollte, ob große Händler geboren oder gemacht werden. Zu diesem Zweck stellte er 1983 13 Personen ein und brachte ihnen die Grundkonzepte des Terminhandels sowie seine eigenen Handelsmethoden und -prinzipien bei. Diese Schüler werden „Meeresschildkröten“ genannt.

In den nächsten vier Jahren erzielten die Turtles eine durchschnittliche jährliche Rendite von 80 %. Dennis zeigte auch, dass Menschen mit wenig oder keiner Handelserfahrung mithilfe eines einfachen Systems und einfacher Regeln hervorragende Händler werden können. Allerdings verkaufen einige Turtles die Turtle Trading Rules auf der Website, um Gewinn zu machen. Um diesem Verhalten ein Ende zu setzen, beschlossen zwei der ursprünglichen Turtles, Curtis Faith und Arthur Maddock, die Turtle Trading Rules auf einer Website kostenlos der Öffentlichkeit zugänglich zu machen.

Nachdem die Wahrheit ans Licht kam, entdeckten die Leute, dass die Turtle Trading Rules einen optimierten Donchian Channel übernahmen und den ATR-Indikator für das Positionsmanagement verwendeten. Nach Jahrzehnten historischer Tests ist es zu einer Handelsmethode geworden, mit der normale Privatanleger leicht Geld verdienen können, und es ist für bestimmte Produkte immer noch effektiv.

Turtle-Grundprinzipien

  • Verschaffen Sie sich einen Vorteil: Finden Sie eine Handelsstrategie mit einem positiven Erwartungswert, da diese langfristig positive Erträge abwirft.
  • Managen Sie Risiken: Kontrollieren Sie die Risiken und bleiben Sie standhaft, sonst erleben Sie möglicherweise nicht mehr den Tag, an dem Sie Ergebnisse erzielen.
  • Unerschütterliches Engagement: Nur durch die unerschütterliche Umsetzung Ihrer Strategie können Sie wirklich systematische Ergebnisse erzielen.
  • Einfachheit und Klarheit: Einfache Systeme sind auf lange Sicht rentabler als komplexe Systeme.

Schauen wir uns als nächstes an, was die Turtle Trading Rules eigentlich besagen.

  1. Märkte - was zu kaufen und zu verkaufen ist, im Wesentlichen, auf welchen Märkten gehandelt werden soll. Die Turtles waren Futures-Händler und wählten nur Märkte mit großen Handelsvolumina und hoher Liquidität, da die Wahl von Märkten mit geringen Handelsvolumina das Verlustrisiko erhöhen würde Geld. Der zusätzliche Slippage beim Verlassen des Marktes wird auch dazu führen, dass Sie viele Trendchancen verpassen.
  2. Positionsgröße – Wie viel gekauft oder verkauft werden soll, ist ein sehr wichtiger Teil der gesamten Strategie, wird jedoch von den meisten Menschen ignoriert oder falsch behandelt. Die Turtle-Trading-Regeln verwenden ATR oder den Average True Range-Indikator, um Eröffnungspositionen, Additionssignale und Stop-Loss-Signale zu berechnen. Dies ist ein sehr cleveres Design, das die Positionsgröße entsprechend der absoluten Volatilität des Marktes anpassen soll. Wenn die Marktvolatilität stark ist, wird die Positionsgröße reduziert, und wenn die Marktvolatilität schwach ist, wird die Positionsgröße erhöht. . Zunächst wird eine Einheit definiert, deren Formel lautet: (Gesamtvermögen*1 %)/ATR. Die Anfangsposition beträgt 1 Einheit. Selbst wenn der Rückgang des Produkts an diesem Tag das ATR-Niveau erreicht, kann der Verlust an diesem Tag innerhalb von 1% des Gesamtvermögens kontrolliert werden. Bei einem Kursanstieg von 0,5 Einheiten wird die Long-Position um 1 Einheit erhöht, maximal jedoch um 4 Einheiten.
  3. Markteintritt - Der Markteintritt der Schildkröte stützt sich auf den Donchian Channel. Wenn der Preis über den höchsten Preis der vorherigen 20 oder 55 K-Linien steigt, betritt sie den Markt, um Long-Positionen einzugehen. Wenn der Preis unter den niedrigster Preis der vorherigen 20 oder 55 K-Linien, es betritt den Markt, um Long-Positionen einzugehen., betreten Sie einfach den Markt und gehen Sie Short-Positionen ein. Steigen Sie in den Handel ein, wenn das Signal erscheint, ohne auf die Schließung oder die nächste K-Linie zu warten.
  4. Stop-Loss – Auf lange Sicht sind Transaktionen ohne Stop-Loss nicht erfolgreich, die meisten Händler halten jedoch an Verlustpositionen fest, in der Hoffnung, dass sich der Markt dreht. Die Turtles hatten strenge Regeln, wann eine Verlustposition zu beenden war. Wenn eine Long-Position gehalten wurde und der Preis um 2 Einheiten fiel, wurde die Long-Position mit einem Stop-Loss geschlossen. Wenn Sie eine Short-Position halten und der Preis um 2 Einheiten steigt, wird die Short-Position mit einem Stop-Loss geschlossen.
  5. Gewinnmitnahme – Die Gewinnmitnahme der Turtle bedeutet den Verlust eines großen Teils der schwebenden Gewinne, was für viele Händler ebenfalls schwer zu akzeptieren ist. Wenn Sie derzeit eine Long-Position halten und der Preis unter die untere Linie des 10-tägigen Donchian-Kanals fällt, schließen Sie alle Long-Positionen; wenn Sie derzeit eine Short-Position halten und der Preis über die obere Linie des 10-tägigen Donchian-Kanal, schließen Sie alle Short-Positionen.

Daraus können wir erkennen, dass die Turtle Trading Rules zwar einfach aussehen, in Wirklichkeit aber den Prototyp eines echten Handelssystems darstellen. Sie decken alle Aspekte eines vollständigen Handelssystems ab und lassen keinen Raum für Händler. Es gibt Raum für subjektive Vorstellungskraft. und Entscheidungsfindung, wodurch die Vorteile des programmierten Betriebs des Systems hervorgehoben werden können. Einschließlich: Ein- und Ausstiegsregeln, Fondsverwaltung und Risikokontrolle usw.

Der größte Vorteil der Turtle-Trading-Methode besteht darin, dass sie uns hilft, eine effektive Handelsmethode zu etablieren. Es handelt sich um eine Strategie, die Batch-Eröffnung, dynamische Stop-Profit- und Stop-Loss-Strategien sowie Markttrendverfolgung kombiniert, insbesondere die Verwendung von ATR-Wert und -Position. Management. Das Konzept ist es wert, gelernt zu werden. Natürlich gibt es auch ein bei Trendfolgestrategien häufiges Problem, nämlich die Mitnahme nicht realisierter Gewinne. Die durch die Jagd nach dem Anstieg erzielten variablen Gewinne könnten durch den anschließenden starken Rückgang sehr wahrscheinlich wieder verloren gehen. Es ist im großen Trend sehr stark, zeigt aber in einem volatilen Markt eine schwache Performance.

3. Praktische Entwicklung zukünftiger CTA-Strategien

3.1 Entwicklung einer CTA-Trendstrategie basierend auf der Mai-Sprache

Ende des letzten Jahrhunderts begann in den Vereinigten Staaten eine magische Handelsmethode im Bereich der Finanzinvestitionen populär zu werden. Nachdem Tausende von Menschen sie praktiziert hatten, stellten die Menschen fest, dass diese Methode effektiv war und einen großen praktischen Wert hatte. Gleichzeitig , wurde es von vielen Anlageexperten anerkannt. Es wird von professionellen Händlern anerkannt und kann immer noch perfekt auf fast alle Bereiche der Finanzinvestition angewendet werden, sei es Devisen, Gold, Aktien, Futures, Rohöl oder Indizes und Anleihen. Dies ist die Chaos-Operationsmethode.

Das Wort Chaos bezieht sich ursprünglich auf die Beschreibung des chaotischen Zustands des Universums. Die Idee ist, dass das Ergebnis unvermeidlich ist, aber aufgrund des vorhandenen Wissens nicht berechnet werden kann, da die Berechnung selbst auch das Ergebnis verändert und das Maximum oder Minimum Am Ende kann ein Ergebnis eintreten, es ist jedoch nicht zwangsläufig ein Ergebnis. Dies ist dem Handel auf der Börse sehr ähnlich, wo die Teilnehmer den Markt verändern, indem sie ihn analysieren und Handelsgeschäfte tätigen. Der Markt ist ständig veränderlich. Wenn die Teilnehmer von einer neuen Marktform erfahren, erfährt auch der Markt, dass diese von den Teilnehmern anerkannt wird, und dann kommt es zu einer Mutation. Und er wird definitiv dazu neigen, in eine den Teilnehmern unbekannte Richtung zu mutieren. Er ist so weise, dass die Teilnehmer seine sich ändernden Muster nicht erfassen können. Mit anderen Worten: Der Markt ist nicht stabil, und das Verständnis der Marktvergangenheit kann nicht die Zukunft darstellen.

Die Chaos Operating Method ist ein vollständiger Satz von Anlageideen, Handelsstrategien sowie Ein- und Ausstiegssignalen, der von Bill Williams erfunden wurde. Derzeit nutzen viele internationale Investoren Methoden der Chaosoperation, um an Markttransaktionen teilzunehmen. Aufgrund der schleppenden Entwicklung des Finanzmarktes meines Landes und der Tatsache, dass die Chaostheorie eine relativ neue Idee ist, gibt es in China nur wenige Menschen, die Methoden der Chaosoperation studieren. Da die Chaos Operation-Methode eine äußerst universelle Handelsstrategie ist, die auf fast alle Bereiche der Finanzinvestitionen angewendet werden kann, darunter Aktien, Anleihen, Futures, Devisen und digitale Währungen, verwendet dieser Kurs eine vereinfachte Version der Chaos-Strategie als Ausgangspunkt. . Verbessern Sie das Anlageinteresse und die Rendite aller.

Wie der Name schon sagt, ist die theoretische Grundlage der Chaosoperationsmethode die Chaostheorie, die vom Meteorologen Edward Lorenz vorgeschlagen wurde und eine der größten wissenschaftlichen Entdeckungen des späten 20. Jahrhunderts darstellt. Er war derjenige, der den berühmten „Schmetterlingseffekt“ vorschlug. Bill Williams hat die Chaostheorie auf kreative Weise auf den Bereich der Finanzinvestitionen angewendet und sie mit fraktaler Geometrie, nichtlinearer Dynamik und anderen Disziplinen kombiniert, um eine Reihe äußerst wirksamer Indikatoren für die technische Analyse zu erstellen.

Die gesamte Chaos-Operationsmethode besteht aus fünf Dimensionen (technischen Indikatoren):

  • Alligator

  • Das Fraktal

  • Das Momentum

  • Beschleunigung

  • Die Balance-Linie

    img

Schauen wir uns das Bild oben an. Die Alligatorlinie ist eine Reihe von Balancelinien, die fraktale Geometrie und nichtlineare Dynamik verwenden. Ihr Wesen ist der erweiterte exponentiell gewichtete gleitende Durchschnitt, der eine Art gleitender Durchschnitt ist, aber die Berechnungsmethode ist etwas komplizierter als der gewöhnliche gleitende Durchschnitt. Einige. Als nächstes sehen wir uns an, wie die Alligatorlinie in der Mai-Sprache definiert wird:

// 参数 N1:=11; N2:=21; // 定义价格中线 N3:=N1+N2; N4:=N2+N3; HL:=(H+L)/2; // 鳄鱼线 Y^^SMA(REF(HL,N3),N4,1); R:=SMA(REF(HL,N2),N3,1); G:=SMA(REF(HL,N1),N2,1);

Zuerst definieren wir zwei externe Parameter N1 und N2 und berechnen dann den durchschnittlichen HL des höchsten und des niedrigsten Preises basierend auf den externen Parametern. Dann berechnen wir den durchschnittlichen HL mit jeweils unterschiedlichen Parametern. Für Lippenküsse ist es der kleiner Zyklus der Mittellinie. Um es noch einmal zu mitteln: Die Zähne sind der Durchschnitt der mittleren Periode der Mittellinie und der Kiefer ist der Durchschnitt der großen Periode der Mittellinie. Bei dieser Strategie verwenden wir die Kiefer.

Das Konzept des Fraktals wird in der Chaos Operation-Methode sehr anschaulich definiert. Wir können eine Analogie verwenden: Öffnen Sie Ihre Handfläche mit den Fingern nach oben. Der Mittelfinger ist das obere Fraktal, der kleine Finger und der Ringfinger auf der linken Seite und der Zeigefinger Finger und Daumen auf der rechten Seite stellen den unverletzten Bereich dar. K-Linie des neuen Hochs. Ein einfaches Fraktal besteht aus diesen 5 K-Linien. Anschließend können Sie mit dem folgenden Code ein Fraktal definieren:

// 分形 TOP_N:=BARSLAST(REF(H,2)=HHV(H,5))+2; BOTTOM_N:=BARSLAST(REF(L,2)=LLV(L,5))+2; TOP:=REF(H,TOP_N); BOTTOM:=REF(L,BOTTOM_N); MAX_YRG^^MAX(MAX(Y,R),G); MIN_YRG^^MIN(MIN(Y,R),G); TOP_FRACTAL^^VALUEWHEN(H>=MAX_YRG,TOP); BOTTOM_FRACTAL^^VALUEWHEN(L<=MIN_YRG,BOTTOM);

Nachdem wir die Alligatorlinie und das Fraktal berechnet haben, können wir eine einfache Chaosoperationsstrategie auf der Grundlage dieser beiden Bedingungen schreiben, wobei wir einen Satz exponentiell gewichteter gleitender Durchschnitte als Referenzpreis für die Berechnung der Alligatorlinie und der Fraktalindikatoren verwenden. Natürlich ist die ursprüngliche Chaos-Operationsstrategie komplizierter. Der Code lautet wie folgt:

// 如果当前无多单,并且收盘价升破上分形,并且上分形在鳄鱼线上方时,多头开仓 BKVOL=0 AND C>=TOP_FRACTAL AND TOP_FRACTAL>MAX_YRG,BPK(1); // 如果当前无空单,并且收盘价跌破下分形,并且下分形在鳄鱼线下方时,空头开仓 SKVOL=0 AND C<=BOTTOM_FRACTAL AND BOTTOM_FRACTAL<MIN_YRG,SPK(1); // 如果收盘价跌破鳄鱼的下巴时,多头平仓 C<Y,SP(BKVOL); // 如果收盘价升破鳄鱼的下巴时,空头平仓 C>Y,BP(SKVOL);

Zum besseren Verständnis habe ich ausführliche Kommentare in den Code aufgenommen. Wir können die Handelslogik dieser Strategie einfach wie folgt auflisten:

  • Eröffnen Sie eine Long-Position: Wenn derzeit keine Long-Order vorliegt, der Schlusskurs das obere Fraktal durchbricht und das obere Fraktal über der Alligatorlinie liegt.
  • Eröffnen Sie eine Short-Position: Wenn derzeit keine Short-Order vorliegt und der Schlusskurs unter das untere Fraktal fällt und das untere Fraktal unter der Alligator-Linie liegt.
  • Long-Position verlassen: Wenn der Schlusskurs unter das Maul des Alligators fällt.
  • Short-Position verlassen: Wenn der Schlusskurs über das Alligatorkieferstück steigt.

Als nächstes werfen wir einen Blick auf die Ergebnisse des Backtests dieser einfachen Chaos-Operation-Strategie. Um den Backtest näher an die reale Handelsumgebung heranzuführen, wird die Transaktionsgebühr auf das Doppelte der Börsengebühr festgelegt und für das Öffnen und Schließen von Positionen ein Slippage von 2 Sprüngen hinzugefügt. Der Datentyp für das Backtesting ist Rebar Index, der Handelstyp ist Rebar Main Continuous und die Eröffnungsposition ist auf 1 Lot festgelegt. Unten finden Sie einen vorläufigen Backtest-Leistungsbericht auf 1-Stunden-Ebene.

img
img
img

Gemessen an der Kapitalkurve und den Backtest-Performancedaten funktioniert die Strategie gut und die Gesamtkapitalkurve zeigt einen stetigen Aufwärtstrend. Allerdings haben sich die Markteigenschaften von Bewehrungsstäben seit Ende 2016 verändert und vom früheren einseitigen Trend hoher Volatilität zu einer großen Schwankungsbreite geführt. Gemessen an der Kapitalkurve ist seit 2017 eine deutliche Gewinnschwäche zu beobachten.

Kurz gesagt, das Wesentliche der Chaos-Operationsmethode besteht darin, den Wendepunkt zu finden. Sie müssen sich keine Gedanken darüber machen, wie der Markt verläuft oder ob der Durchbruch wahr oder falsch ist. Wenn das Fraktal gebrochen ist, können Sie in den Markt eintreten direkt. Versuchen Sie niemals, den Markt vorherzusagen, sondern seien Sie Beobachter und Mitverfolger.

3.2 Entwicklung einer CTA-Arbitrage-Strategie basierend auf der JavaScript-Sprache

In seinem 1987 verfassten Buch „Die Alchemie des Finanzwesens“ stellte Soros einmal eine wichtige These auf: „Ich glaube, dass die Marktpreise in dem Sinne immer falsch sind, dass sie zukunftsorientiert sind.“ Er glaubt, dass die Markteffizienzhypothese nur eine theoretische Annahme ist. Tatsächlich sind Marktteilnehmer nicht immer rational, und es ist den Teilnehmern zu jedem Zeitpunkt unmöglich, alle Informationen vollständig zu erhalten und objektiv zu interpretieren. Darüber hinaus, selbst wenn die gleiche Information, jeder hat ein anderes Feedback. Mit anderen Worten: Im Preis selbst sind die fehlerhaften Erwartungen der Marktteilnehmer bereits enthalten, sodass die Marktpreise ihrem Wesen nach immer falsch sind. Dies kann für Arbitrageure eine Gewinnquelle sein.

Aufgrund der oben genannten Grundsätze wissen wir, dass in einem ineffizienten Terminmarkt die Marktauswirkungen auf Lieferverträge in verschiedenen Zeiträumen nicht immer synchron erfolgen und ihre Preisgestaltung nicht völlig effektiv ist. Wenn dann auf der Grundlage der Liefervertragspreise desselben Handelsobjekts in verschiedenen Zeiträumen ein großer Preisunterschied zwischen den beiden Preisen besteht, können Sie Terminkontrakte verschiedener Zeiträume gleichzeitig kaufen und verkaufen, um zeitraumübergreifende Arbitrage durchzuführen.

Mit digitalen Währungen ist ebenso wie mit Rohstoff-Futures eine Kombination periodenübergreifender Arbitrageverträge verbunden. An der OkEX-Börse gibt es beispielsweise: ETC Weekly, ETC Biweekly und ETC Quarterly. Angenommen, der Preisunterschied zwischen dem wöchentlichen ETC und dem vierteljährlichen ETC bleibt für lange Zeit bei etwa 5. Wenn der Spread an einem bestimmten Tag 7 erreicht, erwarten wir, dass der Spread irgendwann in der Zukunft wieder auf 5 zurückkehrt. Dann können Sie ETC wöchentlich verkaufen und ETC vierteljährlich kaufen, um den Spread zu verkürzen. umgekehrt.

Obwohl dieser Preisunterschied besteht, ist manuelle Arbitrage aufgrund der zeitaufwändigen manuellen Vorgehensweise, der mangelnden Genauigkeit und der Auswirkungen von Preisänderungen häufig mit zahlreichen Unsicherheiten verbunden. Der Reiz der quantitativen Arbitrage liegt darin, Arbitragemöglichkeiten durch quantitative Modelle zu erfassen und Arbitrage-Handelsstrategien zu formulieren sowie durch programmierte Algorithmen automatisch Handelsaufträge an Börsen zu erteilen, um so Möglichkeiten schnell und präzise zu erfassen und effizient und stabil Gewinne zu erzielen.

In diesem Kurs lernen Sie, wie Sie die Inventor Quantitative Trading Platform und den ETC-Futures-Kontrakt an der OkEX-Börse im digitalen Devisenhandel nutzen und anhand einer einfachen Arbitrage-Strategie demonstrieren, wie Sie sofortige Arbitrage-Gelegenheiten nutzen und jede Gelegenheit nutzen können, um Gewinne zu erzielen, während Absicherung möglicher Risiken.

Erstellen einer Arbitragestrategie für Kryptowährungen über mehrere Perioden hinweg
Schwierigkeit: Normal
Strategisches Umfeld

  • Gegenstand der Transaktion: Ethereum Classic (ETC)
  • Preisdifferenzdaten: ETC wöchentlich – ETC vierteljährlich (Kointegrationstest ausgelassen)
  • Handelszyklus: 5 Minuten
  • Positionsübereinstimmung: 1:1
  • Transaktionstyp: Gleiches Produkt über mehrere Perioden hinweg

Strategielogik

  • Bedingungen für die Eröffnung eines langen Spreads: Wenn das Girokonto keine Positionen aufweist und der Spread kleiner als der untere Boll Track ist, gehen Sie eine Long-Position auf den Spread ein. Das heißt: Kaufen Sie ETC für die Woche und verkaufen Sie ETC für das Quartal.
  • Bedingungen für das Eröffnen einer Short-Spread-Position: Wenn das Girokonto keine Positionen aufweist und der Spread größer als der obere Boll-Track ist, shorten Sie den Spread. Das heißt: ETC für die Woche verkaufen und ETC für das Quartal kaufen.
  • Bedingungen zum Schließen eines Long Spreads: Wenn das Girokonto eine wöchentliche Long-Position in ETC und eine vierteljährliche Short-Position in ETC hält und der Spread größer als der mittlere Track von Boll ist, wird der Long Spread geschlossen. Das heißt: Verkaufen Sie ETC für die Woche und kaufen Sie ETC für das Quartal.
  • Bedingungen zum Schließen eines Short Spreads: Wenn das Girokonto diese Woche eine Short-Position für ETC und im Quartal eine Long-Position für ETC hält und der Spread kleiner als der mittlere Boll-Track ist, wird der Short Spread geschlossen. Das heißt: Kaufen Sie ETC für die Woche und verkaufen Sie ETC für das Quartal.

Das Obige ist eine einfache Beschreibung der Logik der Arbitragestrategie für digitale Währungen über mehrere Perioden hinweg. Wie setzen Sie also Ihre Ideen im Programm um? Wir haben zunächst versucht, das Framework auf der Inventor Quantitative Trading Platform aufzubauen.

function Data() {} // 基础数据函数 Data.prototype.mp = function () {} // 持仓函数 Data.prototype.boll = function () {} // 指标函数 Data.prototype.trade = function () {} // 下单函数 Data.prototype.cancelOrders = function () {} // 撤单函数 Data.prototype.isEven = function () {} // 处理单只合约函数 Data.prototype.drawingChart = function () {} // 画图函数 function onTick() { var data = new Data(tradeTypeA, tradeTypeB); // 创建一个基础数据对象 var accountStocks = data.accountData.Stocks; // 账户余额 var boll = data.boll(dataLength, timeCycle); // 计算boll技术指标 data.trade(); // 计算交易条件下单 data.cancelOrders(); // 撤单 data.drawingChart(boll); // 画图 data.isEven(); // 处理持有单个合约 } //入口函数 function main() { while (true) { // 进入轮询模式 onTick(); // 执行onTick函数 Sleep(500); // 休眠0.5秒 } }

Stellen Sie sich vor, wie unser Transaktionsprozess im Supervisor-Handel aussieht? Beim Systemhandel gibt es keinen wesentlichen Unterschied, es geht lediglich um die Datenbeschaffung, die Datenberechnung, die Auftragserteilung und die Abwicklung nach der Auftragserteilung. Dasselbe gilt für das Programm. Zuerst führt das Programm die Hauptfunktion in Zeile 20 aus. Dies ist eine Konvention. Wenn das Programm die Vorverarbeitung der Handelsstrategie (falls vorhanden) abgeschlossen hat, wechselt es in einen Endlosschleifenmodus, d. h. ein runder Polling-Modus. Im Polling-Modus wird die onTick-Funktion wiederholt ausgeführt.

Dann haben wir in der onTick-Funktion den Handelsprozess im subjektiven Handel: zuerst die grundlegenden Preisdaten abrufen, dann den Kontostand abrufen, dann den Indikator berechnen, dann mit der Berechnung der Handelsbedingungen beginnen und eine Bestellung aufgeben und schließlich die Verarbeitung nach der Platzierung der Bestellung, darunter: Bestellungen stornieren, Bilder zeichnen und einzelne Aufträge abwickeln.

Durch den Vergleich der strategischen Ideen und Handelsprozesse können Sie ganz einfach einen Strategierahmen erstellen. Die gesamte Strategie kann in drei Schritte vereinfacht werden:

  • Verarbeitung vor der Transaktion.
  • Daten abrufen und berechnen.
  • Geben Sie eine Bestellung auf und kümmern Sie sich um die Nachverfolgung.

Nachdem das Handelsstrategie-Framework erstellt wurde, müssen Sie basierend auf dem tatsächlichen Handelsprozess und den Transaktionsdetails den erforderlichen Detailcode in das Strategie-Framework einfügen.

1. Verarbeitung vor der Transaktion

1. Deklarieren Sie die erforderlichen globalen Variablen

  • Deklarieren Sie ein Diagrammobjekt, um das Diagramm zu konfigurieren
    var chart = {}
  • Rufen Sie die Chart-Funktion auf, um das Diagramm zu initialisieren
    var ObjChart = Chart ( chart )
  • Deklarieren Sie ein leeres Array zum Speichern der Preisdifferenzsequenz
    var bars = []
  • Deklarieren Sie eine Variable zum Aufzeichnen des Zeitstempels historischer Daten
    var oldTime = 0

2. Konfigurieren Sie externe Parameter der Strategie

var tradeTypeA = "this_week"; // 套利A合约 var tradeTypeB = "quarter"; // 套利B合约 var dataLength = 10; //指标周期长度 var timeCycle = 1; // K线周期 var name = "ETC"; // 币种 var unit = 1; // 下单量

3. Datenverarbeitungsfunktionen definieren

  • Basisdatenfunktion: Daten ( )
    Erstellen Sie einen Konstruktor „Data“ und definieren Sie seine internen Eigenschaften. Enthält: Kontodaten, Positionsdaten, Zeitstempel der K-Line-Daten, Geld-/Briefkurs des Arbitrage-A/B-Vertrags und Forward-/Reverse-Arbitrage-Spreads.
function Data(tradeTypeA, tradeTypeB) { // 传入套利A合约和套利B合约 this.accountData = _C(exchange.GetAccount); // 获取账户信息 this.positionData = _C(exchange.GetPosition); // 获取持仓信息 var recordsData = _C(exchange.GetRecords); //获取K线数据 exchange.SetContractType(tradeTypeA); // 订阅套利A合约 var depthDataA = _C(exchange.GetDepth); // 套利A合约深度数据 exchange.SetContractType(tradeTypeB); // 订阅套利B合约 var depthDataB = _C(exchange.GetDepth); // 套利B合约深度数据 this.time = recordsData[recordsData.length - 1].Time; // 获取最新数据时间 this.askA = depthDataA.Asks[0].Price; // 套利A合约卖一价 this.bidA = depthDataA.Bids[0].Price; // 套利A合约买一价 this.askB = depthDataB.Asks[0].Price; // 套利B合约卖一价 this.bidB = depthDataB.Bids[0].Price; // 套利B合约买一价 // 正套价差(合约A卖一价 - 合约B买一价) this.basb = depthDataA.Asks[0].Price - depthDataB.Bids[0].Price; // 反套价差(合约A买一价 - 合约B卖一价) this.sabb = depthDataA.Bids[0].Price - depthDataB.Asks[0].Price; }
  • Positionsfunktion abrufen: mp ( )
    Durchlaufen Sie das gesamte Positionsarray und geben Sie die Anzahl der Positionen des angegebenen Vertrags und der angegebenen Richtung zurück. Wenn keine vorhanden sind, geben Sie false zurück.
Data.prototype.mp = function (tradeType, type) { var positionData = this.positionData; // 获取持仓信息 for (var i = 0; i < positionData.length; i++) { if (positionData[i].ContractType == tradeType) { if (positionData[i].Type == type) { if (positionData[i].Amount > 0) { return positionData[i].Amount; } } } } return false; }
  • K-Linie und Indikatorfunktionen: boll ( )
    Synthetisieren Sie eine neue K-Line-Sequenz basierend auf den Forward/Reverse-Arbitrage-Spread-Daten. Und gibt die vom Boll-Indikator berechneten Daten zur oberen, mittleren und unteren Schiene zurück.
Data.prototype.boll = function (num, timeCycle) { var self = {}; // 临时对象 // 正套价差和反套价差中间值 self.Close = (this.basb + this.sabb) / 2; if (this.timeA == this.timeB) { self.Time = this.time; } // 对比两个深度数据时间戳 if (this.time - oldTime > timeCycle * 60000) { bars.push(self); oldTime = this.time; } // 根据指定时间周期,在K线数组里面传入价差数据对象 if (bars.length > num * 2) { bars.shift(); // 控制K线数组长度 } else { return; } var boll = TA.BOLL(bars, num, 2); // 调用talib库中的boll指标 return { up: boll[0][boll[0].length - 1], // boll指标上轨 middle: boll[1][boll[1].length - 1], // boll指标中轨 down: boll[2][boll[2].length - 1] // boll指标下轨 } // 返回一个处理好的boll指标数据 }
  • Orderfunktion: Handel ( )
    Geben Sie den Auftragsvertragsnamen und die Auftragsart ein, erteilen Sie anschließend eine Bestellung zum Gegenwertpreis und geben Sie das Ergebnis nach der Auftragserteilung zurück. Da es notwendig ist, gleichzeitig zwei Orders in unterschiedliche Richtungen zu platzieren, wird der Kauf-/Verkaufspreis innerhalb der Funktion entsprechend dem Orderkontraktnamen umgerechnet.
Data.prototype.trade = function (tradeType, type) { exchange.SetContractType(tradeType); // 下单前先重新订阅合约 var askPrice, bidPrice; if (tradeType == tradeTypeA) { // 如果是A合约下单 askPrice = this.askA; // 设置askPrice bidPrice = this.bidA; // 设置bidPrice } else if (tradeType == tradeTypeB) { // 如果是B合约下单 askPrice = this.askB; // 设置askPrice bidPrice = this.bidB; // 设置bidPrice } switch (type) { // 匹配下单模式 case "buy": exchange.SetDirection(type); // 设置下单模式 return exchange.Buy(askPrice, unit); case "sell": exchange.SetDirection(type); // 设置下单模式 return exchange.Sell(bidPrice, unit); case "closebuy": exchange.SetDirection(type); // 设置下单模式 return exchange.Sell(bidPrice, unit); case "closesell": exchange.SetDirection(type); // 设置下单模式 return exchange.Buy(askPrice, unit); default: return false; } }
  • Funktion zum Stornieren von Bestellungen: cancelOrders ()
    Erhalten Sie eine Übersicht aller nicht erfüllten Bestellungen und stornieren Sie diese nacheinander. Wenn eine nicht erfüllte Bestellung vorliegt, wird „Falsch“ zurückgegeben, und wenn keine nicht erfüllte Bestellung vorliegt, wird „Wahr“ zurückgegeben.
Data.prototype.cancelOrders = function () { Sleep(500); // 撤单前先延时,因为有些交易所你懂的 var orders = _C(exchange.GetOrders); // 获取未成交订单数组 if (orders.length > 0) { // 如果有未成交的订单 for (var i = 0; i < orders.length; i++) { //遍历未成交订单数组 exchange.CancelOrder(orders[i].Id); //逐个取消未成交的订单 Sleep(500); //延时0.5秒 } return false; // 如果取消了未成交的单子就返回false } return true; //如果没有未成交的订单就返回true }
  • Handhabung des Haltens eines einzelnen Vertrags: isEven()
    Wenn wir es beim Arbitragehandel mit einer Single-Leg-Situation zu tun haben, schließen wir einfach alle Positionen, um das Problem zu lösen. Selbstverständlich ist auch eine Umstellung auf eine Folgebestellart möglich.
Data.prototype.isEven = function () { var positionData = this.positionData; // 获取持仓信息 var type = null; // 转换持仓方向 // 如果持仓数组长度余2不等于0或者持仓数组长度不等于2 if (positionData.length % 2 != 0 || positionData.length != 2) { for (var i = 0; i < positionData.length; i++) { // 遍历持仓数组 if (positionData[i].Type == 0) { // 如果是多单 type = 10; // 设置下单参数 } else if (positionData[i].Type == 1) { // 如果是空单 type = -10; // 设置下单参数 } // 平掉所有仓位 this.trade(positionData[i].ContractType, type, positionData[i].Amount); } } }
  • Zeichenfunktion: drawingChart ( )
    Rufen Sie die Methode ObjChart.add() auf, um die erforderlichen Marktdaten und Indikatordaten in das Diagramm einzuzeichnen: obere Spur, mittlere Spur, untere Spur und positiver/negativer Spread.
Data.prototype.drawingChart = function (boll) { var nowTime = new Date().getTime(); ObjChart.add([0, [nowTime, boll.up]]); ObjChart.add([1, [nowTime, boll.middle]]); ObjChart.add([2, [nowTime, boll.down]]); ObjChart.add([3, [nowTime, this.basb]]); ObjChart.add([4, [nowTime, this.sabb]]); ObjChart.update(chart); }

4. Führen Sie in der Eingabefunktion main() den Vorverarbeitungscode vor der Transaktion aus. Dieser Code wird nach dem Programmstart nur einmal ausgeführt. enthalten:

  • Filtern Sie weniger wichtige Informationen in der KonsoleSetErrorFilter ( )
  • Legen Sie die zu handelnde digitale Währung festexchange.IO ( )
  • Löschen Sie das zuvor gezeichnete Diagramm, bevor das Programm startet.ObjChart.reset ( )
  • Löschen Sie die vorherigen Statusleisteninformationen, bevor das Programm gestartet wirdLogProfitReset ( )

Nachdem wir die oben beschriebene Vorverarbeitung vor dem Handel definiert haben, fahren wir mit dem nächsten Schritt fort, wechseln in den Polling-Modus und führen die Funktion onTick() wiederholt aus. Und legen Sie die Ruhezeit fest, wenn Sleep() eine Abfrage durchführt, da einige APIs für den Kryptowährungsaustausch über integrierte Zugriffsbeschränkungen innerhalb eines bestimmten Zeitraums verfügen.

function main() { // 过滤控制台中不是很重要的信息 SetErrorFilter("429|GetRecords:|GetOrders:|GetDepth:|GetAccount|:Buy|Sell|timeout|Futures_OP"); exchange.IO("currency", name + '_USDT'); //设置要交易的数字货币币种 ObjChart.reset(); //程序启动前清空之前绘制的图表 LogProfitReset(); //程序启动前清空之前的状态栏信息 while (true) { // 进入轮询模式 onTick(); // 执行onTick函数 Sleep(500); // 休眠0.5秒 } }

2. Daten beschaffen und berechnen

  1. Holen Sie sich grundlegende Datenobjekte, Kontostände und Boll-Indikatordaten zur Verwendung in der Handelslogik.
function onTick() { var data = new Data(tradeTypeA, tradeTypeB); // 创建一个基础数据对象 var accountStocks = data.accountData.Stocks; // 账户余额 var boll = data.boll(dataLength, timeCycle); // 获取boll指标数据 if (!boll) return; // 如果没有boll数据就返回 }

3. Eine Bestellung aufgeben und nachverfolgen

  1. Führen Sie Kauf- und Verkaufstransaktionen gemäß der oben beschriebenen Strategielogik durch. Zuerst wird ermittelt, ob die Preis- und Indikatorbedingungen erfüllt sind, dann wird ermittelt, ob die Positionsbedingungen erfüllt sind, und schließlich wird die Handelsauftragsfunktion () ausgeführt.
// 价差说明 // basb = (合约A卖一价 - 合约B买一价) // sabb = (合约A买一价 - 合约B卖一价) if (data.sabb > boll.middle && data.sabb < boll.up) { // 如果sabb高于中轨 if (data.mp(tradeTypeA, 0)) { // 下单前检测合约A是否有多单 data.trade(tradeTypeA, "closebuy"); // 合约A平多 } if (data.mp(tradeTypeB, 1)) { // 下单前检测合约B是否有空单 data.trade(tradeTypeB, "closesell"); // 合约B平空 } } else if (data.basb < boll.middle && data.basb > boll.down) { // 如果basb低于中轨 if (data.mp(tradeTypeA, 1)) { // 下单前检测合约A是否有空单 data.trade(tradeTypeA, "closesell"); // 合约A平空 } if (data.mp(tradeTypeB, 0)) { // 下单前检测合约B是否有多单 data.trade(tradeTypeB, "closebuy"); // 合约B平多 } } if (accountStocks * Math.max(data.askA, data.askB) > 1) { // 如果账户有余额 if (data.basb < boll.down) { // 如果basb价差低于下轨 if (!data.mp(tradeTypeA, 0)) { // 下单前检测合约A是否有多单 data.trade(tradeTypeA, "buy"); // 合约A开多 } if (!data.mp(tradeTypeB, 1)) { // 下单前检测合约B是否有空单 data.trade(tradeTypeB, "sell"); // 合约B开空 } } else if (data.sabb > boll.up) { // 如果sabb价差高于上轨 if (!data.mp(tradeTypeA, 1)) { // 下单前检测合约A是否有空单 data.trade(tradeTypeA, "sell"); // 合约A开空 } if (!data.mp(tradeTypeB, 0)) { // 下单前检测合约B是否有多单 data.trade(tradeTypeB, "buy"); // 合约B开多 } } }
  1. Nach der Auftragserteilung müssen ungewöhnliche Situationen wie nicht erfüllte Aufträge und das Halten eines Einzelvertrags bewältigt werden. und Diagramme zeichnen.
data.cancelOrders(); // 撤单 data.drawingChart(boll); // 画图 data.isEven(); // 处理持有单个合约

Oben haben wir in etwas mehr als 200 Zeilen eine einfache Interperioden-Arbitragestrategie für digitale Währungen erstellt. Der vollständige Code lautet wie folgt:

// 全局变量 // 声明一个配置图表的 chart 对象 var chart = { __isStock: true, tooltip: { xDateFormat: '%Y-%m-%d %H:%M:%S, %A' }, title: { text: '交易盈亏曲线图(详细)' }, rangeSelector: { buttons: [{ type: 'hour', count: 1, text: '1h' }, { type: 'hour', count: 2, text: '3h' }, { type: 'hour', count: 8, text: '8h' }, { type: 'all', text: 'All' }], selected: 0, inputEnabled: false }, xAxis: { type: 'datetime' }, yAxis: { title: { text: '价差' }, opposite: false, }, series: [{ name: "上轨", id: "线1,up", data: [] }, { name: "中轨", id: "线2,middle", data: [] }, { name: "下轨", id: "线3,down", data: [] }, { name: "basb", id: "线4,basb", data: [] }, { name: "sabb", id: "线5,sabb", data: [] }] }; var ObjChart = Chart(chart); // 画图对象 var bars = []; // 存储价差序列 var oldTime = 0; // 记录历史数据时间戳 // 参数 var tradeTypeA = "this_week"; // 套利A合约 var tradeTypeB = "quarter"; // 套利B合约 var dataLength = 10; //指标周期长度 var timeCycle = 1; // K线周期 var name = "ETC"; // 币种 var unit = 1; // 下单量 // 基础数据 function Data(tradeTypeA, tradeTypeB) { // 传入套利A合约和套利B合约 this.accountData = _C(exchange.GetAccount); // 获取账户信息 this.positionData = _C(exchange.GetPosition); // 获取持仓信息 var recordsData = _C(exchange.GetRecords); //获取K线数据 exchange.SetContractType(tradeTypeA); // 订阅套利A合约 var depthDataA = _C(exchange.GetDepth); // 套利A合约深度数据 exchange.SetContractType(tradeTypeB); // 订阅套利B合约 var depthDataB = _C(exchange.GetDepth); // 套利B合约深度数据 this.time = recordsData[recordsData.length - 1].Time; // 获取最新数据时间 this.askA = depthDataA.Asks[0].Price; // 套利A合约卖一价 this.bidA = depthDataA.Bids[0].Price; // 套利A合约买一价 this.askB = depthDataB.Asks[0].Price; // 套利B合约卖一价 this.bidB = depthDataB.Bids[0].Price; // 套利B合约买一价 // 正套价差(合约A卖一价 - 合约B买一价) this.basb = depthDataA.Asks[0].Price - depthDataB.Bids[0].Price; // 反套价差(合约A买一价 - 合约B卖一价) this.sabb = depthDataA.Bids[0].Price - depthDataB.Asks[0].Price; } // 获取持仓 Data.prototype.mp = function (tradeType, type) { var positionData = this.positionData; // 获取持仓信息 for (var i = 0; i < positionData.length; i++) { if (positionData[i].ContractType == tradeType) { if (positionData[i].Type == type) { if (positionData[i].Amount > 0) { return positionData[i].Amount; } } } } return false; } // 合成新K线数据和boll指标数据 Data.prototype.boll = function (num, timeCycle) { var self = {}; // 临时对象 // 正套价差和反套价差中间值 self.Close = (this.basb + this.sabb) / 2; if (this.timeA == this.timeB) { self.Time = this.time; } // 对比两个深度数据时间戳 if (this.time - oldTime > timeCycle * 60000) { bars.push(self); oldTime = this.time; } // 根据指定时间周期,在K线数组里面传入价差数据对象 if (bars.length > num * 2) { bars.shift(); // 控制K线数组长度 } else { return; } var boll = TA.BOLL(bars, num, 2); // 调用talib库中的boll指标 return { up: boll[0][boll[0].length - 1], // boll指标上轨 middle: boll[1][boll[1].length - 1], // boll指标中轨 down: boll[2][boll[2].length - 1] // boll指标下轨 } // 返回一个处理好的boll指标数据 } // 下单 Data.prototype.trade = function (tradeType, type) { exchange.SetContractType(tradeType); // 下单前先重新订阅合约 var askPrice, bidPrice; if (tradeType == tradeTypeA) { // 如果是A合约下单 askPrice = this.askA; // 设置askPrice bidPrice = this.bidA; // 设置bidPrice } else if (tradeType == tradeTypeB) { // 如果是B合约下单 askPrice = this.askB; // 设置askPrice bidPrice = this.bidB; // 设置bidPrice } switch (type) { // 匹配下单模式 case "buy": exchange.SetDirection(type); // 设置下单模式 return exchange.Buy(askPrice, unit); case "sell": exchange.SetDirection(type); // 设置下单模式 return exchange.Sell(bidPrice, unit); case "closebuy": exchange.SetDirection(type); // 设置下单模式 return exchange.Sell(bidPrice, unit); case "closesell": exchange.SetDirection(type); // 设置下单模式 return exchange.Buy(askPrice, unit); default: return false; } } // 取消订单 Data.prototype.cancelOrders = function () { Sleep(500); // 撤单前先延时,因为有些交易所你懂的 var orders = _C(exchange.GetOrders); // 获取未成交订单数组 if (orders.length > 0) { // 如果有未成交的订单 for (var i = 0; i < orders.length; i++) { //遍历未成交订单数组 exchange.CancelOrder(orders[i].Id); //逐个取消未成交的订单 Sleep(500); //延时0.5秒 } return false; // 如果取消了未成交的单子就返回false } return true; //如果没有未成交的订单就返回true } // 处理持有单个合约 Data.prototype.isEven = function () { var positionData = this.positionData; // 获取持仓信息 var type = null; // 转换持仓方向 // 如果持仓数组长度余2不等于0或者持仓数组长度不等于2 if (positionData.length % 2 != 0 || positionData.length != 2) { for (var i = 0; i < positionData.length; i++) { // 遍历持仓数组 if (positionData[i].Type == 0) { // 如果是多单 type = 10; // 设置下单参数 } else if (positionData[i].Type == 1) { // 如果是空单 type = -10; // 设置下单参数 } // 平掉所有仓位 this.trade(positionData[i].ContractType, type, positionData[i].Amount); } } } // 画图 Data.prototype.drawingChart = function (boll) { var nowTime = new Date().getTime(); ObjChart.add([0, [nowTime, boll.up]]); ObjChart.add([1, [nowTime, boll.middle]]); ObjChart.add([2, [nowTime, boll.down]]); ObjChart.add([3, [nowTime, this.basb]]); ObjChart.add([4, [nowTime, this.sabb]]); ObjChart.update(chart); } // 交易条件 function onTick() { var data = new Data(tradeTypeA, tradeTypeB); // 创建一个基础数据对象 var accountStocks = data.accountData.Stocks; // 账户余额 var boll = data.boll(dataLength, timeCycle); // 获取boll指标数据 if (!boll) return; // 如果没有boll数据就返回 // 价差说明 // basb = (合约A卖一价 - 合约B买一价) // sabb = (合约A买一价 - 合约B卖一价) if (data.sabb > boll.middle && data.sabb < boll.up) { // 如果sabb高于中轨 if (data.mp(tradeTypeA, 0)) { // 下单前检测合约A是否有多单 data.trade(tradeTypeA, "closebuy"); // 合约A平多 } if (data.mp(tradeTypeB, 1)) { // 下单前检测合约B是否有空单 data.trade(tradeTypeB, "closesell"); // 合约B平空 } } else if (data.basb < boll.middle && data.basb > boll.down) { // 如果basb低于中轨 if (data.mp(tradeTypeA, 1)) { // 下单前检测合约A是否有空单 data.trade(tradeTypeA, "closesell"); // 合约A平空 } if (data.mp(tradeTypeB, 0)) { // 下单前检测合约B是否有多单 data.trade(tradeTypeB, "closebuy"); // 合约B平多 } } if (accountStocks * Math.max(data.askA, data.askB) > 1) { // 如果账户有余额 if (data.basb < boll.down) { // 如果basb价差低于下轨 if (!data.mp(tradeTypeA, 0)) { // 下单前检测合约A是否有多单 data.trade(tradeTypeA, "buy"); // 合约A开多 } if (!data.mp(tradeTypeB, 1)) { // 下单前检测合约B是否有空单 data.trade(tradeTypeB, "sell"); // 合约B开空 } } else if (data.sabb > boll.up) { // 如果sabb价差高于上轨 if (!data.mp(tradeTypeA, 1)) { // 下单前检测合约A是否有空单 data.trade(tradeTypeA, "sell"); // 合约A开空 } if (!data.mp(tradeTypeB, 0)) { // 下单前检测合约B是否有多单 data.trade(tradeTypeB, "buy"); // 合约B开多 } } } data.cancelOrders(); // 撤单 data.drawingChart(boll); // 画图 data.isEven(); // 处理持有单个合约 } //入口函数 function main() { // 过滤控制台中不是很重要的信息 SetErrorFilter("429|GetRecords:|GetOrders:|GetDepth:|GetAccount|:Buy|Sell|timeout|Futures_OP"); exchange.IO("currency", name + '_USDT'); //设置要交易的数字货币币种 ObjChart.reset(); //程序启动前清空之前绘制的图表 LogProfitReset(); //程序启动前清空之前的状态栏信息 while (true) { // 进入轮询模式 onTick(); // 执行onTick函数 Sleep(500); // 休眠0.5秒 } }

Der Arbitragehandel entstand aus der Aktienhandelsstrategie von Morgan Stanley. Sein Konzept ist: Die Preisdifferenzschwankungen zweier stark korrelierter Produkte entsprechen dem „Popcorn-Prozess“, d. h. die Preisdifferenz kehrt ständig von der Position, die vom historischen Mittelwert abweicht, zum Mittelwert zurück. , und dann eine weitere Abweichung vom Mittelwert.

Daraus können wir einen Gewinn erzielen, indem wir basierend auf der Preisdifferenz günstig kaufen und teuer verkaufen. Dann bestehen die Bollinger-Bänder nach dem Standardabweichungsprinzip in der Statistik aus einer mittleren Schiene und oberen und unteren Schienen, die durch die Standardabweichung berechnet werden. Bilden von drei Maschen. Es ist sehr nützlich beim Spread-Arbitrage-Handel.

Nach dem Testen wurde festgestellt, dass bei Befolgung dieser Strategie ohne Berücksichtigung der Bearbeitungsgebühren und Einflusskosten der Gesamtgewinn zwar nicht jedes Mal sehr hoch ist, der Gesamtgewinn jedoch relativ stabil ist. Es ist zu beachten, dass es sich um statistische Arbitrage handelt und daher die Gefahr besteht, dass sich der Preisunterschied in die entgegengesetzte Richtung vergrößert. Bei der Gestaltung müssen wir daher die Stop-Loss-Frage berücksichtigen. Zweitens müssen wir auch auf die Auswirkungen der Kosten achten. Wenn die Liquidität der beiden an der Transaktion beteiligten Verträge abnimmt, wird dies erhebliche Auswirkungen auf die Rendite haben, und die Anleger sollten dies entsprechend vermeiden.

4. Erweiterte Iteration der CTA-Strategieentwicklung

4.1 Vermeidung der Fallstricke von Futures-CTA-Strategien

In den letzten beiden Unterrichtsstunden haben wir eine Trendstrategie in der Sprache Mai und eine Arbitragestrategie in JavaScript geschrieben und beim Backtesting der Strategie keine Probleme festgestellt. Allerdings geht es beim quantitativen Handel nicht nur darum, ein Programm zu schreiben und es dann direkt zu handeln, sobald das Backtesting erfolgreich ist.
Tatsächlich handelt es sich beim Backtesting lediglich um eine Simulation einer Strategie, die lediglich dazu dient, die Leistung der Strategie anhand historischer Daten zu bewerten, sodass Händler einige Handelsstrategien schnell bewerten und aufgeben können.

In vielen Fällen erfüllen Strategien, die beim Backtesting großartig aussehen, im realen Handel oft nicht die Backtest-Standards. Es gibt viele Gründe, von denen einige außerhalb der Kontrolle des Händlers liegen, aber einige der Fehler sind auf häufige oder potenzielle Fehler zurückzuführen .

Statische Daten vs. dynamische Daten
Wenn wir eine quantitative Analyse durchführen, müssen wir zunächst ein Konzept für statische und dynamische Daten haben. Beim Backtesting verwenden wir statische historische Daten. Die Preise jeder K-Linie sind vollständig und jedes Handelssignal kann zu 100 % verkauft werden. Aber die Daten im realen Markt sind dynamisch. Wenn beispielsweise der höchste Preis innerhalb einer Stunde nach der Eröffnung höher ist als der höchste Preis, dann kaufen Sie.Wenn die aktuelle K-Linie jedoch nicht abgeschlossen ist, ist der höchste Preis dynamisch und das Handelssignal kann hin und her blinken . Diese Situation deutet darauf hin, dass die Strategie bei der Festlegung der Bedingungen für Kauf- und Verkaufstransaktionen Zukunftsfunktionen nutzt.

Zukunftsfunktion
Was ist eine Zukunftsfunktion? Schauen wir uns zunächst an, wie es in der Baidu-Enzyklopädie erklärt wird: Wenn eine Menge von einer anderen Menge abhängt, wie z. B. Menge A und Menge B, und eine Änderung in B eine Änderung in A bewirkt, dann ist A eine Funktion von B. Wenn B eine spätere Menge, A ist Für eine frühere Menge ändert sich A mit B und A ist die zukünftige Funktion von B. Jeder kann verwirrt sein.

Vereinfacht ausgedrückt handelt es sich dabei um eine Funktion, die auf zukünftige Daten verweist, wie etwa die Verwendung des morgigen Preises zur Vorhersage des morgigen Preises. Wenn ein technischer Indikator eine Zukunftsfunktion enthält, ist sein Signal unsicher. Oft wird im Moment ein Handelssignal ausgegeben, aber wenn die nächste K-Linie erscheint, verschwindet das Signal oder ändert seine Position.

Der Schlusskurs ist eine Zukunftsfunktion. Bevor die letzte K-Linie abgeschlossen ist, ändert sich der Schlusskurs ständig. Sie müssen warten, bis die K-Linie abgeschlossen ist, um den Schlusskurs zu bestimmen. Da der Schlusskurs selbst eine Funktion der Zukunft ist, sind auch alle auf dem Schlusskurs basierenden technischen Indikatoren Funktionen der Zukunft.

Wenn also ein technischer Indikator einen bestätigten Schlusskurs als Basisdaten verwendet und sich die Kauf- und Verkaufssignale unabhängig von der verstrichenen Zeit nicht ändern, kann man sagen, dass dieser technische Indikator sich nicht auf eine Zukunftsfunktion bezieht. Die von ihm verwendeten Basisdaten sind jedoch noch nicht bestätigte Schlusskurse. Daher bezieht sich dieser technische Indikator auf die Zukunftsfunktion und die Kauf- und Verkaufssignale können sich in tatsächlichen Anwendungen ändern.

Vergangene Preise
Die Future-Funktion verwendet zukünftige Preise, kann aber auch vergangene Preise verwenden. Dies ist ein Problem, das viele Anfänger übersehen. Um dieses Problem in Zukunft besser zu veranschaulichen, nehmen wir ein Beispiel: Wenn der aktuelle Höchstpreis höher ist als der Höchstpreis innerhalb einer Stunde nach Eröffnung, kaufen Sie zum Eröffnungspreis. Natürlich ist an den Bedingungen dieses Kauf- und Verkaufssignals nichts auszusetzen, aber der für die Auftragserteilung verwendete Preis ist der frühere Preis.

Im Backtest ist die Strategie normal, da die Backtest-Engine auf Basis statischer Daten die Transaktion zu 100 % abschließen kann, solange ein Kaufsignal vorliegt. Im realen Markt jedoch, wenn der höchste Preis höher ist als der höchster Preis innerhalb von 1 Stunde nach der Eröffnung. Zu diesem Zeitpunkt können Sie den vergangenen Eröffnungspreis sicherlich nicht mehr zum Platzieren von Bestellungen verwenden.

Preisvakuum
Das sogenannte Preisvakuum bezieht sich auf den Preis, der auf dem K-Liniendiagramm angezeigt wird, aber der Preis kann nicht auf dem realen Markt gehandelt werden. Es ist hauptsächlich in die folgenden Situationen unterteilt:

  1. Jeder, der schon einmal gehandelt hat, weiß, dass es schwierig ist zu kaufen, wenn der Preis seine Obergrenze erreicht, und dass es schwierig ist zu verkaufen, wenn der Preis seine Untergrenze erreicht. Allerdings ist ein Handel im Backtest möglich.
  2. Der Matching-Mechanismus der Börse ist: Preispriorität und Zeitpriorität. Bei manchen Produkten liegen oft sehr viele Bestellungen vor. Wenn Sie eine Bestellung zum Kauf oder Verkauf in Echtzeit aufgeben, müssen Sie hinter den Bestellungen anderer Personen warten und warten, bis die Bestellungen anderer Personen ausgeführt werden, bevor Sie die Transaktion abschließen können. In manchen Fällen kann die Der Preis kann sich geändert haben, bevor Sie die Transaktion abschließen können. . Wenn Ihre Strategie beim Backtesting jedoch darin besteht, Aufträge zu erteilen, wird die Transaktion zeitnah abgeschlossen, was sich von der realen Handelsumgebung unterscheidet.
  3. Wenn Sie eine Arbitragestrategie verwenden, ist der Backtesting-Gewinn sehr hoch, da Sie bei jedem Backtesting davon ausgehen, dass Sie diese Preisunterschiede erfasst haben. In Wirklichkeit sind viele Spreads nicht verfügbar oder nur ein Leg ist verfügbar. Im Allgemeinen wird zuerst dasjenige gehandelt, das für Ihre Richtung ungünstig ist, sodass Sie das andere Leg sofort ausfüllen müssen. Zu diesem Zeitpunkt hat der Slippage bereits eingetreten. Es sind nicht 1 oder 2 Punkte, sondern die Arbitragestrategie selbst verdient Geld mit der Preisdifferenz dieser Punkte. Diese Situation kann im Backtesting nicht simuliert werden. Der tatsächliche Gewinn ist nicht so gut wie der Backtest.
  4. Obwohl Black Swan-Ereignisse nicht häufig sind, haben sie dennoch große Auswirkungen auf den quantitativen Handel. Beispielsweise zeigt das Diagramm beim Black Swan-Ereignis des Schweizer Frankens, dass es sowohl hohe Eröffnungs- als auch niedrige Schlusskurse gibt. Tatsächlich sind im Extremfall Marktbedingungen des Tages. Der Preis in der Mitte ist ein Vakuum, eine große Anzahl von Stop-Loss-Orders verursacht Massenpaniken, die Liquidität ist null und Transaktionen sind sehr schwierig, aber Stop-Losses können beim Backtesting erreicht werden.
    img

Überanpassung
Overfitting ist ein häufiger Fehler, den Anfänger im quantitativen Handel machen. Was ist Overfitting? Nehmen wir ein einfaches Beispiel: Bei Prüfungen in der Schule wenden manche Leute die Taktik an, viele Fragen zu beantworten und jede Frage auswendig zu lernen. Werden die Fragen während der Prüfung leicht verändert, kann er sie nicht beantworten. Denn er lernte die Herangehensweise an die einzelnen Fragen sehr kompliziert auswendig, abstrahierte jedoch nicht die allgemeinen Regeln.
img

Wie in der Abbildung oben gezeigt, kann sich ein Modell, sofern es komplex genug ist, perfekt an die Daten anpassen. Dasselbe gilt für Overfitting im quantitativen Handel. Wenn Ihre Strategie komplex ist und viele externe Parameter hat, dann wird es im Backtest mit begrenzten historischen Daten immer einen oder mehrere Parameter geben, die perfekt zur Strategie passen. Im Einklang mit den historischen Marktbedingungen .

Im späteren realen Handel können die Preisänderungen jedoch die Grenzen Ihrer Strategie überschreiten. Tatsächlich besteht das Wesentliche der Entwicklung einer quantitativen Handelsstrategie darin, lokale nicht zufällige Daten aus einer großen Menge scheinbar zufälliger Daten abzugleichen. Daher Wir müssen Statistiken verwenden. Wie können wir Wissen nutzen, um dieser Falle zu entgehen?

Eine Kompromisslösung besteht darin, sowohl In-Sample- als auch Out-of-Sample-Daten zu verwenden. Teilen Sie die gesamten Daten in zwei Teile auf, verwenden Sie die In-Sample-Daten als Trainingssatz und kümmern Sie sich um das Backtesting der Daten. Die Out-of-Sample-Daten werden als Testsatz zur Überprüfung verwendet. Wenn nur wenige historische Daten vorliegen, können Sie auch die Cross-Testing-Methode verwenden.

Wenn Sie feststellen, dass die Out-of-Sample-Daten nicht gut funktionieren, Sie es aber schade finden, das Modell zu verwerfen, oder Sie nicht zugeben wollen, dass Ihr Modell nicht gut ist, und Sie das Modell weiterhin optimieren, -of-Sample-Daten, bis es bei den Out-of-Sample-Daten genauso gut abschneidet, dann ist derjenige, der am Ende leidet, es muss Ihr echtes Geld sein.

Überlebensbias
Der Survivorship Bias lässt sich anhand der folgenden Beispiele erklären:

  1. Wenn man an der richtigen Stelle steht, können sogar Schweine fliegen.
  2. Alle Bewertungen für online verkaufte Fallschirme sind positiv, da es keine Leute gibt, die Probleme mit ihren Fallschirmen haben.
  3. Reporter befragten die Leute im Bus, um herauszufinden, ob sie Fahrkarten gekauft hatten, denn wer keine Fahrkarte kaufen konnte, durfte den Bus überhaupt nicht besteigen.
  4. Die Medien werben mit der Möglichkeit eines Lottogewinns, weil sie Menschen, die noch nie im Lotto gewonnen haben, nicht aktiv fördern.

Aus den obigen Beispielen können wir erkennen, dass die Informationen, die die Leute normalerweise erhalten, tatsächlich gefiltert wurden, was dazu führt, dass eine große Menge an Daten oder Proben selektiv ignoriert wird. Das Ergebnis ist, dass die Schlussfolgerungen, die auf dem Survivor Bias beruhen, von den tatsächlichen Schlussfolgerungen abweichen. Dann müssen wir im quantitativen Handel auch berücksichtigen, ob das Backtest-Ergebnis auf Glück zurückzuführen ist. In vielen Fällen kann das Backtest-Ergebnis die beste Leistung im gesamten Backtest sein. Achten Sie auf das folgende Bild:
img

Das Bild links stellt eine sehr gute Handelsstrategie dar. Sie weist eine gute Kapitalkurve auf, hat keine großen Drawdowns und kann stabile Gewinnrenditen erzielen. Aber schauen Sie sich bitte das Bild rechts an, es ist lediglich das mit der besten Performance unter diesen Hunderten von Trading-Backtests. Andererseits gibt es auf dem Finanzmarkt immer mehr Stars als langlebige. Wenn die Strategie des Händlers mit den Marktbedingungen übereinstimmt, können die Marktbedingungen jedes Jahr eine Reihe von Stars hervorbringen, aber es Es ist selten, einen Stern zu sehen, der länger als drei aufeinanderfolgende Jahre lebt. Ein Geburtstagskind mit stabilen Gewinnen.

Kostenauswirkungen
Sofern Sie keine ausstehende Order erteilen, kann es beim Handel zu Preisschwankungen kommen. Bei aktiv gehandelten Produkten beträgt die Differenz zwischen Geld- und Briefkurs in der Regel einen Punkt. Bei weniger aktiv gehandelten Produkten kann der Spread größer sein. Jedes Mal, wenn Sie aktiv handeln möchten, benötigen Sie mindestens einen Spread oder sogar mehr. Beim Backtesting müssen wir das Transaktionsproblem jedoch nicht berücksichtigen. Solange ein Signal vorhanden ist, kann die Transaktion abgeschlossen werden. Um die reale Handelsumgebung zu simulieren, muss daher mindestens eine Slippage hinzugefügt werden.

Insbesondere bei Strategien mit relativ hoher Handelsfrequenz wird die Kapitalkurve beim Backtesting der Strategie immer nach oben geneigt sein, wenn Slippage nicht berücksichtigt wird. Sobald ein angemessener Slippage hinzugefügt wird, wird dies sofort zu einem Verlust. Darüber hinaus wird dieses Phänomen nicht nur durch das Spread-Problem verursacht. In einer realen Handelsumgebung müssen auch Probleme wie Netzwerkverzögerung, Software- und Hardwaresysteme und Serverantwort berücksichtigt werden.

Richtlinienkapazität
Dieselbe Strategie kann sowohl in effizienten als auch ineffizienten Märkten sehr unterschiedliche oder sogar völlig gegensätzliche Ergebnisse erzielen. Beispielsweise ist in ineffizienten Märkten wie dem inländischen Aktienmarkt, Rohstofftermingeschäften und ausländischen digitalen Währungen die Kapazität von Hochfrequenzstrategien selbst aufgrund der geringen Handelsvolumenbasis nicht sehr groß. Wenn mehr Leute sie nutzen, wird es Es gibt keine Gewinnspanne und selbst die ursprünglichen Hochfrequenzstrategien werden nicht profitabel sein. Eine profitable Strategie wird zu einer verlustbringenden. Aber in einem effizienten Devisenmarkt gibt es Raum für viele verschiedene Arten von Hochfrequenzstrategien.

Die oben genannten Probleme und Fallstricke können bei der Entwicklung und Verwendung von Strategien auftreten. Für einen erfahrenen Entwickler von Handelssystemen ist Backtesting ein Muss. Denn dadurch erfahren Sie, ob sich die Wirksamkeit einer Strategieidee in der Transaktionshistorie bestätigen lässt. Doch oftmals sind aus Backtestings keine Rückschlüsse auf die zukünftige Rentabilität möglich. Da es beim Backtesting zu viele Fallstricke gibt, werden Sie es nicht verstehen, wenn Sie nicht Geld ausgeben, um einige Lektionen zu lernen. Und diese Lektionen werden mit echtem Geld gelernt. Zumindest können durch diesen Kurs viele quantitative Umwege und Fallen vermieden werden.

4.2 Optimales Positionsmanagement etablieren

In Reminiscences of a Stock Operator gibt es eine interessante Episode: Old Turkey (ursprünglich Partridge genannt), der in derselben Wertpapierfirma wie der Protagonist Livermore arbeitete, tätigte immer große Käufe und Verkäufe. Immer wenn ihm jemand vorschlug, es zu verkaufen, nachdem einen Gewinn erzielen und es dann zurückkaufen, wenn der Aktienkurs wieder fällt. Old Turkey sagt immer ernsthaft: Nein, wissen Sie, das ist ein Bullenmarkt!

Sogar Livermore seufzte schließlich: Es ist nichts Besonderes, den Trend richtig vorherzusagen. Auf dem Markt gibt es immer viele Leute, die in einem Bullenmarkt optimistisch und in einem Bärenmarkt pessimistisch waren. Sie sind jedoch immer gut darin, mit dem Markt zu verhandeln und versuchen, zum niedrigsten Preis zu kaufen und zum höchsten Preis zu verkaufen. Wie bei alten Truthähnen gilt auch hier: Wer den Markt richtig einschätzt und seine Positionen festhält, verdient das große Geld. Das ist auch am schwersten zu lernen. Dabei geht es nicht nur um die Auswahl von Zielen und den richtigen Zeitpunkt, sondern auch um eine noch wichtigere Frage: Wie groß soll die Position (das Risiko) sein, die gehalten (eingegangen) werden soll?

Alle gescheiterten Trader denken einseitig. Gierige Menschen schauen beim Trading nur auf die Vorteile und nicht auf die Risiken, während ängstliche Menschen nur auf die Risiken und nicht auf die Vorteile schauen. Diejenigen, die sowohl gierig als auch ängstlich sind, vergessen die Risiken, wenn die Der Markt steigt. Vergessen Sie Gewinne auf dem Weg nach unten. Erfolgreiche Händler berücksichtigen jedoch sowohl das Risiko als auch den Ertrag, d. h. für jeden verdienten Dollar gehen sie ein Risiko von mehreren Dollar ein. Der Indikator zur Messung von Rendite und Risiko ist das Rendite-Risiko-Verhältnis.

Viele wissen: Je höher der Gewinn, desto größer das Risiko, das heißt, die Rendite ist proportional zum Risiko. Nach Ansicht einiger Leute sollte das Verhältnis zwischen Rendite und Risiko wie folgt aussehen, wobei die horizontale Achse den Risikoprozentsatz und die vertikale Achse den Gewinnprozentsatz darstellt:
img

Bei tatsächlichen Transaktionen sind Erträge und Risiken jedoch alles andere als so einfach wie eine gerade Linie zwischen zwei Punkten; zumindest verlaufen sie nicht immer linear. Das tatsächliche Risiko ist der maximale Verlust, den Sie bei der erwarteten Rendite erleiden können. Dies nennen wir die maximale Volatilität. Obwohl der maximale schwebende Verlust manchmal nicht unbedingt dem Schlussverlust aus den Transaktionsergebnissen entspricht, gibt es einen maximalen schwebenden Verlust.

Daraus können wir schließen, dass das Gewinn-Risiko-Verhältnis in der obigen Abbildung keine echte Darstellung ist. In einer realen Handelsumgebung sollte das Gewinn-Risiko-Verhältnis wie in der folgenden Abbildung dargestellt aussehen:
img

Schauen wir uns das Bild oben an. Die gelbe Kurve stellt die Schwankung des Nettowerts unter verschiedenen Risiken dar. Da die erwartete Rendite weiter steigt, steigt auch das Risiko allmählich an. Wenn wir den Konkurs auf 0,5 setzen, was bedeutet, dass der maximale Verlust 50 % erreicht, dann ist dies eine fehlgeschlagene Handelsstrategie. Obwohl die endgültige Rendite dieser Strategie positiv ist, ist sie mittendrin in den Bankrott gegangen.

Selbst wenn Ihre Strategie eine Strategie mit positiver Erwartung ist, wird sie aufgrund eines falschen Positionsmanagements dennoch scheitern. Aus dieser Perspektive ist es wichtiger, wie viel man kauft oder verkauft, als wann man kauft oder verkauft. Die wissenschaftliche Verwaltung von Positionen ist zu einer grundlegenden Frage bei Finanztransaktionen geworden. Bevor wir also versuchen, dieses Problem zu lösen, schauen wir uns an, wie man beim Glücksspiel Wetten auf wissenschaftliche Weise platziert.
img

Nehmen wir als Beispiel den Münzwurf. Angenommen, die beiden Seiten einer Münze haben das gleiche Gewicht, dann beträgt der Gewinn 2 Yuan, wenn die Vorderseite erscheint, und der Verlust 1 Yuan, wenn die Rückseite erscheint. Offensichtlich ist dies ein Spiel mit positiver Erwartung, einer Gewinnquote von 50 % und einem Verlust von 2 Yuan. . Hier stellt sich die Frage: Jetzt haben Sie 100 Yuan. Wie können Sie also wiederholt Wetten platzieren, um aus 100 Yuan so schnell wie möglich 1 Million Yuan zu machen?

Wenn wir nicht sorgfältig darüber nachdenken, werden wir denken, dass, da der Gewinn jeder Wette 50% beträgt,*2-50%*1, also 50%. Um schnell den maximalen Gewinn zu erzielen, sollten Sie bei jedem Glücksspiel so viel Kapital wie möglich investieren. Der Einsatz sollte 100% betragen.

Es ist jedoch offensichtlich unvernünftig, bei jedem Glücksspiel 100 % des Kapitals zu investieren, denn wenn Sie nur einmal verlieren, ist das Kapital weg, auch wenn die Wahrscheinlichkeit sehr gering ist. Denn wenn Sie oft genug spielen, ist es unvermeidlich, dass Sie Geld verlieren.

Jemand könnte fragen: Wenn eine Wette von 100 % unvernünftig ist, was ist dann mit einer Wette von 90 % oder weniger? Um dieses Problem zu lösen, können wir ein Experiment durchführen, um dieses Glücksspiel zu simulieren und zu sehen, was die Ergebnisse jeder Wette sind. Wie im folgenden Bild gezeigt:

img

Aus der Abbildung können wir ersehen, dass die Ergebnisse derselben Wette völlig unterschiedlich sind, wenn wir die Position schrittweise von 90 %, 80 %, 70 %, 60 % und 50 % reduzieren. Aufmerksame Freunde haben dies möglicherweise bereits bemerkt. Während die Position schrittweise schrumpft, steigen die endgültigen Mittel tatsächlich schrittweise an.

Jemand könnte fragen, ob es besser ist, jedes Mal einen kleineren Betrag zu setzen, beispielsweise 10 %? Man kann nicht jedes Wettverhältnis berechnen, oder? Genau dieses Problem soll die berühmte Kelly-Formel lösen. In der Statistik kann die Kelly-Formel die langfristige Wachstumsrate einer Strategie mit positiver erwarteter wiederholter Wette maximieren, indem sie das optimale Wettverhältnis bei jedem Glücksspiel berechnet.

Und nicht nur das: Unter der Annahme, dass Kapital und Einsatz unendlich geteilt werden können, wird es mit der Kelly-Formel unmöglich, bei jedem Einsatz Bankrott zu gehen. Insbesondere bei der tatsächlichen Anwendung von Finanztransaktionen handelt es sich um eine Positionsmanagementstrategie, die sowohl Angriff als auch Verteidigung kombiniert. Schauen wir uns einmal an, wie die Kelly-Formel berechnet wird. Sehen Sie sich dazu das folgende Bild an:

img

  • f ist die optimale Wettquote des bestehenden Kapitals
  • b ist die Quote, die im Handel auch als Gewinn- und Verlustverhältnis bezeichnet werden kann.
  • p ist die Erfolgsrate
  • q ist die Ausfallrate

Dann können wir die Kelly-Formel verwenden, um das Beispiel des Glücksspiels in dieser Klasse zu berechnen. Mit einem Anfangskapital von 100 Yuan, wenn die Gewinnrate 50% beträgt und die Quoten 2 sind, welches Wettverhältnis sollte verwendet werden, um das Kapital am meisten zu nutzen? profitabel? Die schnellste Geschwindigkeit erreicht 1 Million Yuan. Mit der Kelly-Formel lautet der Berechnungsprozess:

(0.5*(2+1) -1)/2=0.25

Die Gewinnquote von 50 % beträgt 0,5, multipliziert mit der Quote 2 plus 1, dann abgezogen von 1 und schließlich geteilt durch 2. Das Ergebnis ist 0,25, was bedeutet, dass bei jedem Glücksspiel 25 % des Kapitals für Wetten verwendet werden. Bei höchster Geschwindigkeit kann es 1 Million Yuan erreichen. Wir können es basierend auf den Berechnungsergebnissen manuell simulieren, um zu sehen, ob es korrekt ist.

img

Das obige Bild ist das Ergebnis einer manuellen Simulation. Bitte schauen Sie sich die letzte Zeile an. Bei derselben Wette erreichten nach mehr als 100 Runden 25 % der Positionen zuerst 1 Million Yuan. Die Ergebnisse von 90 %, 80 %, 70 % und 60 % der Positionen sind negativ, was deutlich zeigt, dass selbst eine Handelsstrategie mit positiver Erwartung aufgrund eines falschen Positionsmanagements scheitern wird.

Wir können auch sehen, dass 50 % der Positionen am Ende weder verlieren noch gewinnen werden, was auch mit dem Ergebnis des Gesetzes der großen Zahlen übereinstimmt. Um das Problem noch weiter zu verdeutlichen, wurde während der manuellen Simulation auch eine 10%-Position hinzugefügt. Obwohl das Endergebnis eine positive Rendite war, war der Effekt um mehrere Größenordnungen schlechter als der der 25%-Position.

Sie haben die Macht der Kelly-Formel gesehen. Wenn Sie in der tatsächlichen Anwendung eine 10%ige Kapitalposition wählen, wird Ihr Kapital bei mehr als 100 Wetten mehr als 30.000 betragen. Obwohl der Gewinn riesig ist, jedoch im Vergleich zum Ergebnis von Bei einer Beteiligung von 25 % am Kapital ist das gleichbedeutend damit, kein Geld zu verdienen. Das ist die Macht des Wissens.

Wenn Sie die Kelly-Formel verwenden möchten, um im Leben Geld zu verdienen, müssen Sie die Anwendungsbedingungen der Kelly-Formel erfüllen. Es besteht kein Zweifel, dass dieses Glücksspiel vom Finanzmarkt kommen muss. Insbesondere beim quantitativen Handel können durch Backtesting historischer Daten die entsprechenden Gewinnraten und Gewinnchancen grob berechnet werden.

Natürlich ist die tatsächliche Anwendung der Kelly-Formel bei Finanztransaktionen nicht so einfach. Es gibt noch viele Details zu behandeln, wie die Kosten der Mittel bei Leveraged-Transaktionen, die Unfähigkeit, Mittel und Positionen bei realen Transaktionen zu trennen, und der Unterschied zwischen Gewinnrate und Position bei Transaktionen. Die Gewinnchancen ändern sich dynamisch usw. Aber egal was passiert, die Kelly-Formel zeigt uns, wie wir die beste Methode für unser Positionsmanagement finden.

Related Recommendations
Comment
All comments (3)

    学习学习

    4 years ago

    学习

    5 years ago

    学习

    6 years ago
  • 1
iPhone Download
Forums
PINE Language
© 2015 - ∞ INVENTOR PTE LTD (SG)