Optionshandel ohne Optionen (Teil 1): Grundlagen und Nachbildung mittels des Basiswerte
Einführung
Optionen als Finanzinstrumente stoßen auf wachsendes Interesse. Es genügt zu sagen, dass in den letzten Jahren, wenn die Moskauer Börse (MOEX) einen Wettbewerb unter Privatanlegern veranstaltet hat, Optionshändler im Bereich „Futures“ des Wettbewerbs regelmäßig Preise gewonnen haben.
Die mathematische Theorie der Optionen ist relativ komplex und lässt sich nur schwer manuell verstehen und berechnen, doch gibt es eine recht große Anzahl sogenannter Optionsrechner – Programme, mit denen sich jede beliebige Kombination von Optionen berechnen lässt. In der Regel wird mit einer Reihe von Optionen mit unterschiedlichen Parametern (Optionskombinationen) gehandelt. Mehr dazu jedoch in den folgenden Artikeln.
Der Artikel beschreibt die Nachbildung von Optionen durch den Kauf bzw. Verkauf des Basiswerts. Mit dieser Methode können wir eine synthetische Option mit beliebigen Parametern erstellen (emulieren) – auch solche, die auf dem realen Markt nicht existieren. So könnten wir beispielsweise ein so exotisches Finanzinstrument wie eine Option auf eine Option oder eine Option auf einen Spread sowie andere Arten von realen oder synthetischen Basiswerten schaffen.
Grundlagen der Optionstheorie
- 1. Begriffsbestimmungen
Eine Option ist ein derivatives Finanzinstrument, das einem Marktteilnehmer das Recht (jedoch nicht die Verpflichtung) einräumt,
- den Basiswert kaufen – Call-Option
- den Basiswert verkaufen – Put-Option
Für den Optionsverkäufer (der zugleich die Gegenpartei des Käufers ist) stellt die Vereinbarung kein Recht, sondern eine Verpflichtung dar, ein Geschäft abzuschließen (handelt es sich um eine Call-Option, so muss er den Basiswert an den Käufer verkaufen; handelt es sich um eine Put-Option, muss er den Basiswert vom Käufer kaufen), wofür er vom Käufer eine Prämie erhält.
Der Kauf (oder Verkauf) des Basiswerts erfolgt zu einem festen Preis am oder vor einem festgelegten Verfallsdatum. Nach Ausübung oder Ablauf der Option erhält der Händler bei physisch abgewickelten Optionen die entsprechende Menge des gekauften (verkauften) Basiswerts (Aktien, Futures, Devisen) zur Lieferung oder bei bar abgerechneten Optionen den entsprechenden Geldwert (das Ergebnis der Optionsausübung).
- 2. Begriffe und Definitionen
Basiswert – Aktie, Index, Währung, Rohstoff oder ein anderes Instrument, auf das sich die Option bezieht.
Ausübungspreis – ein im Voraus vereinbarter Preis, zu dem der Basiswert gekauft oder verkauft werden kann; auch als Optionsausübungspreis bezeichnet.
Prämie – der Preis, den der Käufer an den Verkäufer zahlt, um das Recht zu erwerben, den Basiswert zu einem festgelegten Preis und zu einem festgelegten Zeitpunkt zu kaufen oder zu verkaufen.
Verfallsdatum – Verfallsdatum der Option. Dies ist der Zeitpunkt, bis zu dem bzw. an dem der Käufer – je nach Ausübungsart – sein Recht ausüben kann.
- 3. Arten von Optionen
- 3.1. Nach Art der Ausübung
Amerikanische Optionen – können an jedem Tag vor Ablauf ausgeübt werden (in der Regel teurer als europäische Optionen);
Europäische Optionen – können nur am Verfallstag ausgeübt werden;
Bermuda-Optionen – Ausübung zu bestimmten Terminen.
- 3.2. Nach Art der Abrechnung
Physische Lieferung – Lieferung des Basiswerts;
Barausgleich – bar abgerechnete Optionen.
- 3.3. Nach Handelsplatz
Börsengehandelt – standardisiert, an Börsen gehandelt (z. B. CBOE, MOEX);
Außerbörslich (OTC) – individuelle Vereinbarungen zwischen den Vertragsparteien.
- 4. Das Wesen einer Option als Instrument
Eine Option ist ein gutes Mittel zur Absicherung, d. h. zum Schutz von Investitionen. Der Optionspreis (Optionsprämie) bestimmt, wie viel Sie bereit sind zu zahlen, um das Risiko (teilweise oder vollständig) auszuschalten. Sie beschließen beispielsweise, Ihre auf Rubel lautenden Vermögenswerte für einen Zeitraum von sechs Monaten gegen eine Aufwertung des Rubels gegenüber dem US-Dollar abzusichern (zu hedgen). Nehmen wir einmal an, Sie benötigen in sechs Monaten einen bestimmten Betrag in Rubel für eine größere Anschaffung.
Eine Möglichkeit zur Absicherung besteht darin, den Basiswert direkt zu kaufen, also USD gegen RUB. Doch hier ergeben sich neue Risiken: Sollte der RUB in diesen sechs Monaten gegenüber dem USD an Wert gewinnen, entstehen Ihnen bei der Rückumrechnung in RUB Verluste, die unter Umständen erheblich ausfallen können. Wenn sich der Wechselkurs beispielsweise von 100 RUB pro USD auf 80 RUB pro USD ändern würde, würden Sie 20 % des ursprünglichen RUB-Betrags verlieren.
Die zweite Absicherungsmöglichkeit besteht darin, eine Put-Option auf den RUBUSD-Kurs mit einer Laufzeit von sechs Monaten und einem Ausübungspreis zu erwerben, der in etwa dem aktuellen RUBUSD-Wechselkurs entspricht (nehmen wir an, 100 RUB pro USD). Durch die Zahlung der Optionsprämie können wir eine Put-Option auf RUBUSD ausüben bzw. veräußern und den Gegenwert in RUB zu einem Kurs von 100 RUB je USD zu realisieren. Selbst wenn der Rubel bis dahin auf (man wagt es kaum zu glauben) 50 RUB/USD steigen sollte. Daher zahlen wir lediglich die Prämie für die Option.
Ebenso können wir unser RUB-Vermögen vor einer Abwertung des RUB schützen. Hier müssen wir eine Call-Option kaufen, deren Ausübungspreis in etwa dem aktuellen RUB-USD-Wechselkurs entspricht.
- 5. Black-Scholes-Optionsmodell
Das Black-Scholes-Modell ist eine mathematische Gleichung, die 1973 von Fischer Black, Myron Scholes und (indirekt) Robert Merton entwickelt wurde, um den fairen Preis europäischer Optionen zu berechnen. Ein fairer Preis ist in diesem Fall ein Preis, der sowohl den Käufer als auch den Verkäufer der Option zufriedenstellt. Für diese Studie erhielten Scholes und Merton 1997 den Nobelpreis für Wirtschaftswissenschaften (Fischer Black war bereits verstorben und wurde nicht ausgezeichnet).
Preis einer Call-Option (Prämie):
![]()
Preis der Put-Option (Prämie):
![]()

![]()
wobei:
- S – aktueller Kurs des Basiswerts
- X – Ausübungspreis der Option
- r – risikofreier Zinssatz (kontinuierlich verzinst)
- T – Restlaufzeit (in Jahren)
- N(d) – Kumulativfunktion der Standardnormalverteilung
- σ – Volatilität des Basiswerts
Das Modell basiert auf mehreren Annahmen:
- Der Markt ist vollkommen effizient – ein Arbitragehandel ist nicht möglich.
- risikofreier Zinssatz – konstant und bekannt;
- die Volatilität des Basiswerts – konstant;
- fehlende Dividenden – das Modell wurde später verfeinert;
- Lognormalverteilung der Assetpreise – Preise können nicht negativ sein;
- kontinuierlicher Handel – der Handel läuft ohne Unterbrechung weiter;
- keine Provisionen oder Steuern.
Die wesentlichen Schwächen des Modells ergeben sich aus den oben genannten Annahmen:
- Der Markt ist nicht effizient – in gewisser Weise können nur die liquidesten Instrumente als solche betrachtet werden;
- die Volatilität des Basiswerts ändert sich zu häufig und kontinuierlich, als dass sie als konstant angesehen werden könnte;
- Die Verteilung ist alles andere als lognormal – reale Märkte weisen „heavy Tails“‘ bzw. schwere Verteilungsenden auf, und plötzliche Kursbewegungen werden ebenfalls außer Acht gelassen;
- nicht für amerikanische Optionen geeignet.
Es gibt alternative Optionspreismodelle, die einige der oben aufgeführten Faktoren berücksichtigen:
- Heston-Modell (stochastische Volatilität)
- Bayesianisches Modell (unter Berücksichtigung makroökonomischer Faktoren)
- Methoden des maschinellen Lernens (neuronale Netze zur Vorhersage von Optionspreisen).
- 6. „Griechen“
Es handelt sich hierbei um statistische Variablen, die dabei helfen, die Sensitivität des Optionspreises gegenüber Änderungen verschiedener Parameter zu bewerten, darunter Ausübungspreise, Volatilität, aktueller Kurs des Basiswerts, Verfallsdatum usw. Mathematisch gesehen sind die „Griechen“ partielle Ableitungen der Black-Scholes-Gleichung. Im Wesentlichen werden die folgenden Hauptindikatoren herangezogen:
- Delta gibt an, wie sich der Wert einer Option verändert, wenn sich der Kurs des Basiswerts ändert. Er wird als Verhältnis der Veränderung des Optionspreises zur Veränderung des Basiswertpreises berechnet. Ist Delta negativ, sinkt der Optionspreis, wenn der Kurs des Basiswerts steigt. Bei Call-Optionen ist das Delta positiv, bei Put-Optionen negativ. Dies ist der wichtigste Indikator, der bei der Emulation von Optionen verwendet wird.
- Gamma gibt an, wie sich Delta verändert, wenn sich der Kurs des Basiswerts ändert. Im Grunde genommen handelt es sich um die zweite Ableitung des Optionspreises beim Kurs des Basiswerts. Optionen mit langer Restlaufzeit weisen ein geringes Gamma auf. Sein Wert steigt, je näher der Verfallstag rückt.
- Theta zeigt, wie sich der Optionspreis in Abhängigkeit von der verbleibenden Laufzeit verändert. Er wird als Verhältnis der Veränderung des Optionspreises zur Veränderung des Verfallsdatums berechnet. Der Theta-Wert ist immer negativ, da er den Wert der Option mindert.
- Vega zeigt, wie sich der Wert einer Option bei einer Änderung der impliziten Volatilität verändert. Er wird als Verhältnis der Veränderung des Optionspreises zur Veränderung der impliziten Volatilität berechnet. Optionen, deren Ausübungspreis sehr nahe am aktuellen Kurs des Basiswerts liegt, weisen den höchsten Vega-Wert auf. Solche Optionen reagieren am empfindlichsten auf Veränderungen der impliziten Volatilität. Der Vega-Wert nimmt ab, je näher das Verfallsdatum der Option rückt.
- Die implizite Volatilität (IV) ist ein wichtiger Indikator, der zwar nichts mit den „Griechen“ zu tun hat, aber in der Black-Scholes-Formel verwendet wird. Er wird auf der Grundlage der tatsächlichen Transaktionen für bestimmte Optionskontrakte berechnet. Zudem lässt sich die Volatilität auf verschiedene Weise berechnen: durch Anpassung an die Black-Scholes-Gleichung, nur für den zentralen Ausübungspreis, gewichtet nach verschiedenen Ausübungspreisen, unter Berücksichtigung von Orders oder ohne diese usw. Bei der Nachbildung gehen wir davon aus, dass auf den Basiswert keine börsengehandelten Optionen existieren und keine entsprechenden Aufträge vorliegen oder uns diese nicht zur Verfügung stehen.
Daher werden wir anstelle der impliziten Volatilität die historische Volatilität (HV) verwenden, die für folgende Zeiträume berechnet wird: Tag, Woche und Monat. Der Zeitraum hängt von der verbleibenden Laufzeit bis zum Verfall der Option ab. Aus mathematischer Sicht ist die historische Volatilität ein statistisches Maß für die Streuung der Daten um ihren Mittelwert über einen bestimmten Zeitraum. Sie berechnet sich aus der Standardabweichung multipliziert mit der Quadratwurzel der Anzahl der Zeitabschnitte T. Für unsere Zwecke ist es sinnvoll, Zeitabschnitte von einem Tag, einer Woche oder einem Monat zu verwenden.
Nachbildung von Optionen
- 1. Notwendigkeit der Nachbildung
Die Notwendigkeit der Nachbildung ergibt sich aus mehreren Faktoren, die im Folgenden aufgeführt sind:
- Das tatsächliche Fehlen börsennotierter Optionen auf den benötigten Basiswert. Beispielsweise handelt die Kryptobörse Bybit Optionen nur auf drei Spot-Vermögenswerte: BTC, ETH und SOL. Außerdem gab es bis vor Kurzem keine Aktienoptionen an der MOEX.
- Der Optionstyp ist angesichts der Laufzeit ungeeignet. So bietet beispielsweise MOEX (für Aktienoptionen) ausschließlich europäische Optionen an, die am letzten Handelstag ausgeübt werden. Dadurch wird die Bandbreite der Optionsstrategien eingeschränkt und insbesondere spekulative Strategien werden ausgeschlossen.
- Unzureichende Liquidität für die Eröffnung/vorzeitige Glattstellung von Optionen. An der MOEX können wir nur bei Optionen auf die liquidesten Futures/Aktien eine Optionsposition schnell eröffnen bzw. schließen. Dies kann sowohl zu Gewinnausfällen als auch zu unsystematischen Zusatzverlusten führen. Dieser Faktor erschwert zudem den Einsatz von Scalping-Strategien, bei denen die Geschwindigkeit beim Eröffnen und Schließen von Optionspositionen entscheidend ist.
- 2. Vergleich zwischen realen und virtuellen Optionen
| Vergleichskriterium | Reale Option | Virtuelle Option |
|---|---|---|
| Beim Kauf einer Option wird eine Prämie gezahlt | Es fällt eine Prämie an | Keine Prämie |
| Der Verkäufer erhält eine Prämie | Es gibt eine Prämie | Keine Prämie |
| Der Zeitwertverlust von Optionen mit zunehmender Nähe zum Verfallsdatum | Es gibt einen Zeitwertverlust | kein Zeitverfall |
| Die Auswirkungen von Nachbeben starker Marktbewegungen und des Nachrichtenflusses | Hat im Allgemeinen keine Auswirkungen | Beeinflusst die Qualität der Nachbildung von Optionen |
| Flexibilität bei der Wahl des Verfallstermin | Nein, von einer Börse festgelegt | Benutzerdefiniert |
| Möglichkeit, kurze Laufzeiten zu nutzen (ein Tag, mehrere Stunden, einige Dutzend Minuten) | Keine | Beliebige Laufzeit |
| Die Notwendigkeit einer ständigen Überwachung der Positionen | In der Regel ist keine ständige Überwachung erforderlich | Eine ständige Überwachung ist erforderlich |
Die positiven Eigenschaften der Option sind fett hervorgehoben. Wie aus der Tabelle hervorgeht, haben beide Optionen ihre Vor- und Nachteile. Wie zu erwarten, gibt es in der Praxis keine perfekte Lösung.
- 3. Handelsbedingungen für die Nutzung der Nachbildung von Optionen
Da die Nachbildung von Optionen den Handel mit dem Basiswert beinhaltet, ist es wünschenswert, Provisionen und andere Handelsnebenkosten wie Slippage, hohe Spreads und Swaps für offene Positionen so gering wie möglich zu halten. Sie alle beeinträchtigen die Qualität der virtuellen Option, insbesondere bei kurzen Laufzeiten. Ansonsten gibt es keine besonderen Anforderungen an die Handelsbedingungen.
Um zu argumentieren, dass eine Position im Basiswert einer Option gleichwertig ist, muss man verstehen, dass eine Option zu jedem beliebigen Zeitpunkt ein bestimmtes Delta aufweist. Wenn die Menge bzw. Positionsgröße im Basiswert dem Optionsdelta entspricht, sind solche Positionen zu einem bestimmten Zeitpunkt gleichwertig, das heißt, sie führen zu denselben Gewinnen und Verlusten.
Schauen wir uns einmal genauer an, wie man eine Nachbildung erstellt.
Angenommen, wir möchten eine oder mehrere Optionen auf einen Basiswert kaufen oder verkaufen. Berechnen wir zunächst (dies ist beispielsweise auf der MOEX-Website möglich, wenn es um Börsenoptionen geht) das Delta dieser Position, so als hätten wir sie über Optionen aufgebaut.
Betrachten wir das folgende Beispiel. Nehmen wir an, wir planen, 100 Call-Optionen des Typs „in-the-money“ zu kaufen, um mit Hebelwirkung und begrenztem Risiko von der Kursrallye zu profitieren. Das Delta einer Option beträgt 0,5. Das Gesamt-Delta eines Portfolios aus 100 Optionen beträgt 0,5 * 100 = 50. Um ein gleichwertiges Portfolio zu erstellen, müssen wir lediglich 50 Einheiten des Basiswerts kaufen. Dann ist das Delta beider Portfolios gleich und beträgt 50.
Sobald man jedoch eine Option gekauft hat, kann man sie in der Regel bis zum Verfall vergessen. Bei der Nachbildung läuft alles ein bisschen anders. Hier muss während der gesamten Laufzeit die Gleichwertigkeit mit dem Optionsportfolio gewährleistet sein, da sich der Marktpreis ständig ändert. Daher sind Anpassungen (Neugewichtung) erforderlich, d. h. der Kauf bzw. Verkauf der fehlenden bzw. überschüssigen Anteile des Basiswerts. Wie oft und zu welchem Zeitpunkt sollte eine Neugewichtung vorgenommen werden? Dies kann mit einem bestimmten Zeitschritt (einmal pro Stunde, einmal pro Tag) oder mit einem Delta-Schritt (bei einer Änderung des Deltas um +/- 1, +/- 2 usw.) erfolgen. Es gibt auch noch andere Möglichkeiten.
Schauen wir uns unser Beispiel einmal genauer an. Es wurde ein Portfolio aus 50 gekauften Einheiten des Basiswerts gebildet, d. h. aus 100 Call-Optionen. Am Abend hatte der Markt leicht zugelegt, und das Delta einer Call-Option war auf 0,53 gestiegen; das Portfolio-Delta hatte sich auf 0,53 * 100 = 53 erhöht. Um die Gleichwertigkeit aufrechtzuerhalten, sollten wir also drei weitere Einheiten des Basiswerts kaufen. Wenn die Kurse am nächsten Tag wieder unter das Einstiegsniveau fallen und das Optionsdelta beispielsweise auf 0,48 sinkt, müssen wir 5 Einheiten des Basiswerts verkaufen. Auf diese Weise bleibt die Portfolioäquivalenz gewahrt.
Warum spiegelt das Profil einer nachgebildeten Optionsposition das Profil gekaufter Optionen wider? Denn wenn der Kurs steigt, erhöht sich das Delta, und der Händler kauft mehr vom Basiswert. Je weiter die Option „im Geld“ ist, desto mehr Einheiten des Basiswerts befinden sich in unserem Portfolio, wodurch wir bei Kursanstiegen einen Gewinn erzielen – ähnlich wie bei einer gekauften Call-Option. Wenn der Kurs fällt, werden wir den Basiswert verkaufen und unsere Position vollständig auf Null reduzieren. Dadurch werden Verluste bei Kursrückgängen begrenzt, genau wie bei einer Call-Option.
Im Folgenden zu den Details des Rebalancings – dies ist der zentrale Aspekt der Nachbildung. Das Endergebnis hängt tatsächlich von diesen Trades ab. Anpassungen sollten systematisch und nach einem festgelegten Algorithmus vorgenommen werden, da es andernfalls zu unerwarteten Verlusten kommen kann. Wenn beispielsweise der Kurs stark von Delta 0,5 auf Delta 0,6 gestiegen ist und die Neugewichtung versäumt wurde, d. h., 10 Einheiten des Basiswerts nicht gekauft wurden, dann kehrt der Basiswert im schlimmsten Fall möglicherweise nicht vor Ablauf der Laufzeit in diesen Bereich zurück. Am nächsten Tag könnte das Delta bereits bei 0,65 liegen, und wir wären gezwungen, 15 Einheiten mit einem Delta von 0,65 zu kaufen, anstatt 10 Einheiten mit einem Delta von 0,6 und 5 Einheiten mit einem Delta von 0,65. Natürlich müssen wir einen Handelsroboter einsetzen, um die Option nachzubilden.
Ideal ist es, wenn der Terminkontrakt rund um die Uhr gehandelt wird und Anpassungen kontinuierlich vorgenommen werden können. Häufige Anpassungen können jedoch zu scheinbar unnötigen Verlusten führen. Wenn sich der Markt über drei Tage hinweg im Delta bewegt hat: 0,50, 0,55, 0,50 – gemäß dem Rebalancing-Algorithmus müssen wir also zunächst 5 Einheiten mit einem Delta von 0,55 kaufen und am nächsten Tag 5 Einheiten mit einem Delta von 0,50 verkaufen, wodurch wir den Verlust naturgemäß realisieren. Wenn ein Händler also aus irgendeinem Grund die Anpassung am zweiten Tag verpasst, passiert nichts Schlimmes – der Preis ändert sich nicht. Der Markt kann sich jedoch auch einseitig in eine Richtung entwickeln, weshalb eine regelmäßige Neugewichtung erforderlich ist.
Der Nachteil des „zeitlichen Rebalancings“ sind starke Kursschwankungen, wenn der Markt innerhalb kurzer Zeit um mehrere Prozent steigt oder fällt. Delta-Step-Anpassungsverfahren beheben dieses Problem zwar erfolgreich, doch manchmal stoßen auch sie auf Schwierigkeiten, wenn es aufgrund einer sehr starken Kursbewegung und erheblicher Slippage physisch unmöglich ist, eine Transaktion zum beabsichtigten Preis auszuführen. In solchen Fällen helfen Handelsroboter dabei, Positionen bei Marktbewegungen schneller und präziser anzupassen.
Es liegt auf der Hand, dass unsere Neugewichtung bei Kursschwankungen des Basiswerts jedes Mal nur einen geringen Verlust ausgleicht. Tatsächlich kauft der Händler beim Kauf einer Call-Option den Basiswert zu einem hohen Preis und verkauft ihn zu einem niedrigen Preis. Wenn sich der Basiswert während der Laufzeit der Position nicht bewegt, ist die Strategie aufgrund der Aufrechterhaltung des Deltas unrentabel. Wenn man jedoch eine Option kauft, wird dafür eine Prämie fällig. Und wenn sie nicht „im Geld“ ist, geht auch die Prämie verloren. Der Zeitwertverlust mindert den Wert der Option. Bei einer Nachbildung kann das Rebalancing zu Verlusten führen.
Der Kauf und Verkauf des Basiswerts zur Aufrechterhaltung des Delta führt zu kleinen verlustbringenden Transaktionen, deren Gesamtverlust im Laufe der Zeit in etwa der Optionsprämie entspricht. Es ist klar, dass die Prämie von der impliziten Volatilität zum Zeitpunkt des Kaufs abhängt. Je höher der IV, desto häufiger wird der Markt „schwanken“, wie Händler annehmen. Je höher der IV, desto teurer die Option. Das Gleiche gilt für die Nachbildung: Je häufiger der Markt schwankte, desto volatiler war er und desto teurer wurde die Nachbildung. Je stärker die Schwankungen, desto größer der Verlust – ähnlich wie der Wert einer Option mit steigender Volatilität zunimmt.
Eine Nachbildung ist gerechtfertigt, wenn der Basiswert während der Laufzeit der Option eine geringe Volatilität aufwies und wir nur selten eine Neugewichtung vornehmen mussten oder die daraus resultierenden Verluste gering waren. Dann ist es rentabler, die Option nachzubilden, als sie an der Börse mit einer hohen impliziten Volatilität zu kaufen. Schließlich lag die über die gesamte Laufzeit des Portfolios realisierte Volatilität deutlich unter der impliziten Volatilität. Auch hier ist der Vergleich mit einer verkauften Option zutreffend. Wenn Sie beispielsweise eine Option bei einer Volatilität von 52 % verkauft haben und die realisierte Volatilität sich auf 60 % beläuft, ist das Ergebnis aufgrund der Aufrechterhaltung der Delta-Neutralität negativ. Wenn eine Volatilität von 45 % eintritt, wird der Verkauf rentabel, da die Kosten für die Neugewichtung geringer sind als die Prämie.
Eine Nachbildung ist dem direkten Kauf einer Option unterlegen, wenn die realisierte Volatilität die implizite Volatilität zum Zeitpunkt der Portfolioaufstellung übersteigt. Schließlich übersteigen häufige Anpassungen aufgrund starker Marktschwankungen den Wert der Optionsprämie. Im Gegenteil: Wenn man eine Short-Option nachbildet, erweist sich die Nachbildung bei einer höheren realisierten Volatilität als rentabler als der direkte Verkauf der Option.
Was müssen wir sonst noch beachten, wenn wir eine Option künstlich nachbilden? Zur Erinnerung: Der Preis einer Option wird in erster Linie von drei Faktoren bestimmt: der verbleibenden Laufzeit, dem Kurs des Basiswerts und der impliziten Volatilität. Wenn alle anderen Faktoren gleichbleiben, wirkt sich jeder dieser Faktoren auf seine eigene Weise auf die Option aus. Man kann sagen, dass der Wert einer regulären Option eine Funktion von drei Variablen ist. Eine nachgebildete Option besteht lediglich aus einem Basiswert, dessen Preis weder von der impliziten Volatilität noch vom Zeitfaktor abhängt. Der Preis einer „künstlichen“ Option hängt ausschließlich vom Wert des Basiswerts ab. Ist das gut oder schlecht? Das kann natürlich sowohl ein positiver als auch ein negativer Faktor sein.
Bevor wir die Nachbildung implementieren, wollen wir uns zunächst mit den praktischen Aspekten des Algorithmus befassen. Zu diesem Zweck erstellen wir Diagramme der Abhängigkeit von Delta und P&L vom Kurs des Basiswerts. Diese Diagramme stammen von der MOEX-Website und beziehen sich auf eine Option auf den SBRF-Future mit einem Ausübungspreis von 31.000 und einem Verfallsdatum am 18.06.2025. Die Diagramme entsprechen dem Stand vom 22. Mai 2025. Der aktuelle Kurs (entsprechend der vertikalen gepunkteten Linie) lag zu diesem Zeitpunkt bei 30.800.
Abb. 1. Abhängigkeit des Gewinns bzw. Verlusts (P&L) einer gekauften Call-Option mit einem Ausübungspreis von 31.000 vom Kurs des Basiswerts. Der Gewinn und Verlust wird für eine Option in RUB angegeben. Die vertikale gepunktete Linie markiert den Zeitpunkt, zu dem die Diagramme erstellt wurden. Derzeit ist das Ergebnis negativ und beträgt -23,92 RUB.
Die rote Linie steht für den aktuellen Zeitpunkt (22.05.2025), die blaue Linie für den Verfallstag (18.06.2025), d. h. den Zeitpunkt, zu dem T = 1 in der Black-Scholes-Gleichung ist
Abb. 2. Abhängigkeit des Delta-Werts einer gekauften Call-Option mit einem Ausübungspreis von 31.000 vom Kurs des Basiswerts für eine Option. Die vertikale gepunktete Linie markiert den Zeitpunkt, zu dem die Diagramme erstellt wurden. Derzeit liegt der Delta-Wert bei 0,48.
Die rote Linie steht für den aktuellen Zeitpunkt (22.05.2025), die blaue Linie für den Verfallstag (18.06.2025), d. h. den Zeitpunkt, zu dem T = 1 in der Black-Scholes-Gleichung ist
Die oben dargestellten Diagramme ergeben sich direkt aus der Black-Scholes-Formel. Wie aus dem Diagramm in Abb. 1. ersichtlich ist, zahlen wir beim Kauf einer Call-Option eine Prämie an den Verkäufer in Höhe von etwa 789 RUB pro Kontrakt. Mit anderen Worten: Die Position startet sofort mit einem negativen P&L. Im Gegensatz zu einer nachgebildeten Option (die Provision für den Kauf des Basiswerts kann in erster Näherung vernachlässigt werden). Aber es gibt auch eine gute Nachricht: Selbst wenn der Kurs des Basiswerts stark fällt, beschränkt sich der Verlust auf die gezahlte Prämie. Das ist der grundlegende Unterschied zwischen dem Kauf einer Call-Option und dem Kauf beispielsweise einer Aktie – im letzteren Fall sind die Verluste bei einem Kursrückgang in keiner Weise begrenzt.
Wir entwickeln eine Optionsnachbildung in MQL5
Abb. 2 zeigt, dass sich der Delta-Wert (für einen Kontrakt einer gekauften Call-Option) im Bereich von 0 bis +1 bewegt. Stellen wir die X-Achse des Delta-Diagramms von absoluten Preisen auf Punkteschritte um. Dazu wird von den Kursen der Ausübungspreis abgezogen – in diesem Fall 31.000. Das resultierende Diagramm sieht dann so aus:
Abb. 3. Abhängigkeit des Delta-Werts einer gekauften Call-Option mit einem Ausübungspreis von 31.000 von der Veränderung des Kurses des Basiswerts im Verhältnis zum Ausübungspreis für eine Option. Die vertikale gepunktete Linie markiert den Zeitpunkt, zu dem die Diagramme erstellt wurden. Derzeit liegt der Delta-Wert bei 0,48.
Die rote Linie steht für den aktuellen Zeitpunkt (22.05.2025), die blaue Linie für den Verfallstag (18.06.2025), d. h. den Zeitpunkt, zu dem T = 1 in der Black-Scholes-Gleichung ist
Natürlich unterscheidet sich das resultierende Diagramm qualitativ nicht vom Original, abgesehen von der Skalierung auf der X-Achse. Da die Black-Scholes-Gleichung die implizite Volatilität (IV) einbezieht, die uns in der Regel nicht bekannt ist, besteht die einzig geeignete Möglichkeit darin, stattdessen die historische Volatilität (HV) heranzuziehen. Bei monatlichen Optionen ist dies die durchschnittliche HV über einen Monat, bei wöchentlichen Optionen die durchschnittliche HV einer Woche usw ist.
Um den Vergleich von Diagrammen mit unterschiedlichen Basiswerten zu erleichtern und die Möglichkeit zu schaffen, Optionen auf synthetische Instrumente (ein aus verschiedenen Vermögenswerten bestehendes Portfolio) zu bilden, wäre es ratsam, relative Kursschritte zu verwenden und diese anhand der berechneten historischen Volatilität zu normieren.
Die relative Preisabweichung ergibt sich dann aus: Relativer Preis (Preis) = (Preis – Ausübungspreis) / HV.
Nehmen wir an, wir haben für die Laufzeit einen HV von 5000 berechnet. Dies ist in Abb. 3 zu sehen. Dann erhalten wir ein Diagramm der folgenden Form:
Abb. 4. Abhängigkeit des Delta-Werts einer gekauften Call-Option mit einem Ausübungspreis von 31.000 von der relativen Kursänderung, normiert auf die historische Volatilität des Basiswerts für eine Option. Die vertikale gepunktete Linie markiert den Zeitpunkt, zu dem die Diagramme erstellt wurden. Derzeit liegt der Delta-Wert bei 0,48.
Die rote Linie steht für den aktuellen Zeitpunkt (22.05.2025), die blaue Linie für den Verfallstag (18.06.2025), d. h. den Zeitpunkt, zu dem T = 1 in der Black-Scholes-Gleichung ist
Es ist ersichtlich, dass bei einem Kurs, der dem Ausübungspreis entspricht, Delta gleich 0,5 ist. Die rote Delta-Kurve entspricht einer aus Mathematik und maschinellem Lernen bekannten Sigmoidfunktion der Form: 1 \ (1 + exp(-K \ (x - S))), wobei S = 0 ist, während K im Allgemeinen unbekannt ist und experimentell bestimmt wird. Im Wesentlichen hängt der K-Faktor von der Laufzeit ab. Da wir den Wert des Deltas zu einem bestimmten Zeitpunkt (0,48) beim aktuellen Kurs des Basiswerts (30.800) kennen, können wir den Wert von K berechnen – zu einem bestimmten Zeitpunkt beträgt er 2 und wird sich ändern (steigen), je näher die Option ihrem Verfallstag kommt.
Für die Zwecke der Nachbildung lassen wir den zeitlichen Wertverfall der Option sowie die Änderung von K außer Acht – diese Werte bleiben während der gesamten Laufzeit der Option konstant. Dies wirkt sich positiv auf das Ergebnis der gekauften Call-Option und negativ auf das Ergebnis der gekauften Put-Option aus. Insgesamt wird es keine wesentlichen Auswirkungen auf das P&L des Optionsportfolios geben.
Wenn wir den S-Parameter in der Sigmoidfunktion 1 \ (1 + exp(-K \ (x - S))) mit 0,5 gleichsetzen, dann verschiebt sich die Kurve der Abhängigkeit von Delta von der relativen Preisänderung entlang der X-Achse um den Wert S nach rechts, und wir erhalten einen Wert bei Null, der nahe bei Null liegt – die Sigmoidkurve tendiert asymptotisch gegen 0 und gegen 1. Diese Funktionsform eignet sich besser für die Nachbildung und die Normalisierung auf den Volatilitätsbereich, die wir bei der Entwicklung eines Expert Advisors in MQL verwenden werden.
Wir verfügen also über alle erforderlichen Daten, um in MQL5 einen Code zu schreiben, der eine Option auf einen beliebigen Basiswert nachbildet. Nämlich: die Gleichung für die Nachbildungsfunktion, den Ausübungspreis, die historische Volatilität und ein Verständnis der Prozesse, die in einem idealen Black-Scholes-Markt ablaufen.
- 1. Basisklasse
Wir werden die folgenden Arten von Optionen nachbilden:
- Erwerb des Rechts, den Basiswert zu kaufen – Long-Call-Option
- Erwerb des Rechts, den Basiswert zu verkaufen – Long-Put-Option
- Verkauf des Rechts auf den Kauf des Basiswerts – Short-Call-Option
- Verkauf des Rechts, den Basiswert zu verkaufen – Short-Put-Option
Definieren wir alle unterstützten Optionstypen als Enumeration:
// --------------------------------------------------------------------- // Option type: // --------------------------------------------------------------------- enum ENUM_OPTION_TYPE { ENUM_OPTION_CALL_LONG, // Long Call ENUM_OPTION_CALL_SHORT, // Short Call ENUM_OPTION_PUT_LONG, // Long Put ENUM_OPTION_PUT_SHORT, // Short Put };
Die Basisklasse leitet sich von der Standard-MQL-Klasse „CObject“ ab. Dies geschieht, um die Verwendung von Standard-CList-Listen in MQL zu vereinfachen, mit denen Objekte bearbeitet und Optionsstrukturen beliebiger Komplexität erstellt werden können. Darauf wird im nächsten Artikel dieser Reihe eingegangen.
Die wichtigsten Datenelemente der Basisklasse sind:
- Optionstyp – das Feld type_enum
- Ausübungspreis – das Feld strike
- aktueller Wert des Options-Deltas – das Feld delta
- Preis für die Normalisierung einer Option hinsichtlich der Volatilität – das Feld norm_price
Außerdem gibt es eine Reihe von Zusatzfeldern, die in Klassen benötigt werden, die von der Basisklasse abgeleitet sind. Die Basisklasse ist abstrakt, wobei die Methode GetSigmoidValue in den abgeleiteten Klassen definiert werden muss. Diese Methode unterscheidet sich je nach Art der Optionen im Black-Scholes-Modell. Dieser Ansatz ermöglicht es zudem, künftig weitere Arten von Optionen hinzuzufügen, beispielsweise unter Einsatz von Methoden des maschinellen Lernens und/oder anderen Preismodellen.
// ===================================================================== // The base class of the option is derived from 'CObject' so that it can be // put into the lists. // ===================================================================== class TOptionBase : public CObject { protected: ENUM_OPTION_TYPE type_enum; double strike; double shift; double koeff_K; double koeff_S; int digits; double norm_price; double delta; double norm_koeff; bool range_inited_Flag; public: // --------------------------------------------------------------------- // Constructor: // --------------------------------------------------------------------- TOptionBase(const ENUM_OPTION_TYPE _type, const double _k, const double _s, const int _digits) : CObject(), type_enum(_type), strike(0.0), shift(0.0), koeff_K(_k), koeff_S(_s), digits(_digits), range_inited_Flag(false), delta(0.0), norm_koeff(0.0) { } public: // --------------------------------------------------------------------- // Set the delta normalization range for the central strike: // --------------------------------------------------------------------- void SetRange(const double _strike, const double _norm_price) { this.strike = _strike; this.norm_price = _norm_price; this.norm_koeff = 1.0 / (this.norm_price - this.strike); this.range_inited_Flag = true; } // --------------------------------------------------------------------- // Calculate the normalized delta value for a given price: // --------------------------------------------------------------------- double UpdateDelta(const double _price) { if(this.range_inited_Flag == false) { this.delta = 0.0; } else { this.delta = NormalizeDouble(this.GetSigmoidValue((_price - this.strike) * this.norm_koeff), 5); } return(this.delta); } // --------------------------------------------------------------------- // Get the value of the previously calculated normalized delta: // --------------------------------------------------------------------- double Delta() { return(this.delta); } // --------------------------------------------------------------------- // Get the range initialization flag for the delta: // --------------------------------------------------------------------- bool IsRangeInited() { return(this.range_inited_Flag); } protected: // --------------------------------------------------------------------- // Get the normalized delta value: // --------------------------------------------------------------------- virtual double GetSigmoidValue(const double _x) = 0; }; // ---------------------------------------------------------------------
- 2. Arbeiten unter realen Bedingungen
Wenn wir eine Option nachbilden, müssen wir festlegen, bei welcher Delta-Änderung wir die Positionen neu ausgleichen müssen. Dies schränkt zwar einerseits die Genauigkeit der Nachbildung ein, ermöglicht es uns aber andererseits, die Kosten für Provisionen beim Öffnen und Schließen von Positionen zu kontrollieren. Wir verwenden die Parameter des Basiswerts – Vmin_size (Mindestvolumen einer offenen Position) und Vmin_delta_size (Mindeständerung des Positionsvolumens).
Außerdem legen wir fest, wie oft die Positionen neu gewichtet werden, wenn sich das Delta innerhalb des Bereichs (modul) |0,0...1,0| ändert. Wir werden diese Anzahl von Neugewichtungen N als externen Parameter festlegen. Dann schwankt das Gesamtvolumen der Positionen zwischen 0 und (Vmin_size + Vmin_delta_size * (N - 1)).
In der Regel entspricht Vmin_size dem Wert von Vmin_deltasize, doch dies ist nicht zwangsläufig der Fall. Standardmäßig wird die Anzahl der Neugewichtungen auf zehn im Delta-Bereich |0,0...1,0| festgelegt.
- 3. Long-Call-Option
Abb. 5. Abhängigkeit des Delta-Werts von der relativen Veränderung des DPrice (x in der Tabelle) für die nachgebildete Long-Call-Option (Kauf einer Call-Option). S = 0,5, K = 10. Der Delta-Bereich ist in zehn gleiche Teile unterteilt
Der Ausübungspreis entspricht dem Nullpunkt: DPrice = 0. Wenn der Delta-Wert nahe bei eins liegt, spricht man davon, dass die Option „deep in the money“ ist – in diesem Fall verhält sie sich wie eine Kaufposition auf den Basiswert in maximaler Größe. Wenn sich der Kurs des Basiswerts dem Ausübungspreis nähert, verringert sich die Positionsgröße im Basiswert und geht gegen Null, wenn die Option „aus dem Geld“ ist, was bedeutet, dass das Delta nahe Null liegt. Die reale Option verzeichnet einen Verlust in Höhe der Prämie.
// =====================================================================
// Long Call type option class
// =====================================================================
class OptionLongCall : public TOptionBase
{
public:
// ---------------------------------------------------------------------
// Constructor:
// ---------------------------------------------------------------------
OptionLongCall(const double _k, const double _s, const int _digits)
:
TOptionBase(ENUM_OPTION_CALL_LONG, _k, _s, _digits)
{
}
protected:
// ---------------------------------------------------------------------
// Get the normalized delta value:
// ---------------------------------------------------------------------
double GetSigmoidValue(const double _x) override
{
return(1.0 / (1.0 + MathExp(-this.koeff_K * (_x - this.koeff_S))));
}
};
// ---------------------------------------------------------------------
- 4. Long-Put-Option
Abb. 6. Abhängigkeit des Delta-Werts von der relativen Veränderung des DPrice (x in der Tabelle) für die nachgebildete Long-Put-Option (Kauf einer Put-Option). S = 0,5, K = 10. Der Delta-Bereich ist in zehn gleiche Teile unterteilt
Der Ausübungspreis entspricht dem Nullpunkt: DPrice = 0. Wenn der Delta-Wert nahe bei minus eins liegt, spricht man davon, dass die Option „deep in the money“ ist – in diesem Fall verhält sie sich wie eine Verkaufsposition auf den Basiswert in maximaler Größe. Wenn sich der Kurs des Basiswerts dem Ausübungspreis nähert, verringert sich die Positionsgröße im Basiswert und geht gegen Null, wenn die Option „aus dem Geld“ ist, was bedeutet, dass das Delta nahe Null liegt. Die reale Option verzeichnet einen Verlust in Höhe der Prämie.
// Long Put type option class
// =====================================================================
class OptionLongPut : public TOptionBase
{
public:
// ---------------------------------------------------------------------
// Constructor:
// ---------------------------------------------------------------------
OptionLongPut(const double _k, const double _s, const int _digits)
:
TOptionBase(ENUM_OPTION_PUT_LONG, _k, _s, _digits)
{
}
protected:
// ---------------------------------------------------------------------
// Get the normalized delta value:
// ---------------------------------------------------------------------
double GetSigmoidValue(const double _x) override
{
return(-1.0 / (1.0 + MathExp(-this.koeff_K * (-_x - this.koeff_S))));
}
};
// ---------------------------------------------------------------------
- 5. Short-Call-Option
Abb. 7. Abhängigkeit des Delta-Werts von der relativen Veränderung des DPrice (x in der Tabelle) für die nachgebildete Short-Call-Option (Verkauf einer Call-Option). S = 0,5, K = 10. Der Delta-Bereich ist in zehn gleiche Teile unterteilt
Der Ausübungspreis entspricht dem Nullpunkt: DPrice = 0. Wenn der Delta-Wert nahe bei minus eins liegt, spricht man davon, dass die Option „deep in the money“ ist – in diesem Fall verhält sie sich wie eine Verkaufsposition auf den Basiswert in maximaler Größe. Wenn sich der Kurs des Basiswerts dem Ausübungspreis nähert, verringert sich die Positionsgröße im Basiswert und geht gegen Null, wenn die Option „aus dem Geld“ ist, was bedeutet, dass das Delta nahe Null liegt. Die reale Option erzielt einen Gewinn in Höhe der Prämie.
// Short Call type option class
// =====================================================================
class OptionShortCall : public TOptionBase
{
public:
// ---------------------------------------------------------------------
// Constructor:
// ---------------------------------------------------------------------
OptionShortCall(const double _k, const double _s, const int _digits)
:
TOptionBase(ENUM_OPTION_CALL_SHORT, _k, _s, _digits)
{
}
protected:
// ---------------------------------------------------------------------
// Get the normalized delta value:
// ---------------------------------------------------------------------
double GetSigmoidValue(const double _x) override
{
return(-1.0 / (1.0 + MathExp(-this.koeff_K * (_x - this.koeff_S))));
}
};
// ---------------------------------------------------------------------
- 6. Short-Put-Option
Abb. 8. Abhängigkeit des Delta-Werts von der relativen Veränderung des DPrice (x in der Tabelle) für die nachgebildete Short-Put-Option (Verkauf einer Put-Option). S = 0,5, K = 10. Der Delta-Bereich ist in zehn gleiche Teile unterteilt
Der Ausübungspreis entspricht dem Nullpunkt: DPrice = 0. Wenn der Delta-Wert nahe bei eins liegt, spricht man davon, dass die Option „deep in the money“ ist – in diesem Fall verhält sie sich wie eine Verkaufsposition auf den Basiswert in maximaler Größe. Wenn sich der Kurs des Basiswerts dem Ausübungspreis nähert, verringert sich die Positionsgröße im Basiswert und geht gegen Null, wenn die Option „aus dem Geld“ ist, was bedeutet, dass das Delta nahe Null liegt. Die reale Option erzielt einen Gewinn in Höhe der Prämie.
// Short Put type option class
// =====================================================================
class OptionShortPut : public TOptionBase
{
public:
// ---------------------------------------------------------------------
// Constructor:
// ---------------------------------------------------------------------
OptionShortPut(const double _k, const double _s, const int _digits)
:
TOptionBase(ENUM_OPTION_PUT_SHORT, _k, _s, _digits)
{
}
protected:
// ---------------------------------------------------------------------
// Get the normalized delta value:
// ---------------------------------------------------------------------
double GetSigmoidValue(const double _x) override
{
return(1.0 / (1.0 + MathExp(-this.koeff_K * (-_x - this.koeff_S))));
}
};
// ---------------------------------------------------------------------
- 7. Besonderheiten bei der Berechnung des Positionsvolumens für den Basiswert
Um das Positionsvolumen zu berechnen, müssen wir den Delta-Wert vom Bereich |0,0…1,0| in den Bereich der ganzzahligen Werte |0…10| umwandeln. Anschließend multiplizieren wir diesen ganzzahligen Wert mit dem Volumen der kleinsten Lot-Änderung und erhalten so den erforderlichen Wert für das Positionsvolumen.
Nehmen wir an, dass die Anzahl der Delta-„Teilbereiche“ zehn beträgt. Es reicht nicht aus, das Delta einfach mit zehn zu multiplizieren und das Ergebnis in eine ganze Zahl umzuwandeln. Sobald das Delta um eine beliebige Grenze des „Teilbereichs“ schwankt, schwankt auch das Volumen synchron mit dem Delta. Lassen Sie uns dies anhand eines Beispiels erläutern: Nehmen wir an, das Delta beträgt 0,090 (das Volumen ist dann (int)(0,090 * 10) = 0 (d. h., es gibt keine Position) und steigt dann auf 0,101 (das Volumen beträgt dann (int)(0,101 * 10) = 1), dann sinkt es beim nächsten Tick nach kurzer Zeit wieder auf 0,090 – das Volumen ist wieder gleich 0. Das heißt, wir haben im Grunde genommen eine Position gekauft und fast sofort wieder verkauft – eine bedeutungslose Neugewichtung der Position, die sich innerhalb von Sekunden viele Male wiederholen lässt. Dies ist das sogenannte „Signalflattern“.
Daher muss bei der Umrechnung des Deltas in das erforderliche Volumen eine gewisse „Hysterese“ bei der Positionsanpassung berücksichtigt werden. Dies wird durch die Unterscheidung der Richtung der Neugewichtung erreicht. Wir sollten die aktuelle Position im Basiswert reduzieren oder aufstocken und dabei den bisherigen Wert des Positionsvolumens berücksichtigen.
Lassen Sie uns das Konzept der Niveaus von nachgebildeten Optionen vorstellen. Erläuterung: Wenn die Zuordnung auf |0,0...1,0| -> |0...10| eingestellt ist (siehe Erläuterungen oben), gehen wir davon aus, dass die Nachbildungsstufe zwischen null und zehn variiert. Die Anzahl der Ebenen wird als Parameter außerhalb des Parameters N angegeben. Sowohl die Nachbildungsstufe als auch das Delta werden betragsmäßig berechnet. Außerdem werden wir das Zeichen für die Nachbildungsstufe verwenden – {0, +1, -1}. Wenn 0, ist die Position geschlossen.
- 8. Berechnung des Positionsvolumens für den Basiswert in MQL5
Die Methode zur Implementierung der „Hysterese“ bei der Berechnung des aktuellen Pegels der Nachbildungsstufe der Options wird tabellarisch mithilfe von zwei Arrays umgesetzt.
- IncreaseLevel_Array – Legt die Nachbildungsstufe fest, wenn diese erhöht wird.
- DecreaseLevel_Array – definiert die Nachbildungsstufe der Option, wenn diese verringert wird.
Dies geschieht in der Methode UpdateOptionLevel, die über zwei Eingabeargumente verfügt:
- _delta – aktuelles Delta der Option.
- _curr_level – Aktuelle Option-Nachbildungsstufe, die zuvor berechnet wurde. Oder 0, wenn dies der erste Methodenaufruf ist.
- _ZeroDelta – Delta-Wert, der dem Nullpegel der Nachbildungsstufe der Option entspricht. Der Wert kann zwischen 0,001 und 0,099 liegen.
- _LevelsNumber – Anzahl der Nachbildungsstufen. Je mehr Stufen, desto glatter und genauer die Nachbildung, aber desto größer ist das gehandelte Lot des Basiswerts (aufgrund der diskreten Änderungen des handelbaren Volumens).
// ===================================================================== // Class for calculating the contract volume of the underlying asset for an option: // ===================================================================== class OptionContractsVolume { int IncreaseLevel_Array[]; // option emulation level when increasing it int DecreaseLevel_Array[]; // option emulation level when decreasing it // --------------------------------------------------------------------- protected: double ZeroDelta; // delta value corresponding to the zero level of option emulation int LevelsNumber; // number of option emulation levels // --------------------------------------------------------------------- int zero_delta; // integer delta value corresponding to the zero level of option emulation int curr_option_level_sign; // current sign of the option emulation level int curr_option_level; // current option emulation level // --------------------------------------------------------------------- int curr_inc_level; int curr_dec_level; // --------------------------------------------------------------------- int curr_contracts_index; // --------------------------------------------------------------------- bool is_contracts_updated_Flag; public: // --------------------------------------------------------------------- // Constructor: // --------------------------------------------------------------------- OptionContractsVolume(const double _ZeroDelta, const int _levels_number) : ZeroDelta(_ZeroDelta), LevelsNumber(_levels_number), curr_option_level_sign(0), curr_option_level(0), curr_inc_level(0), curr_dec_level(0), is_contracts_updated_Flag(false) { this.zero_delta = (int)(NormalizeDouble(this.ZeroDelta, 3) * 1000.0); // Allocate memory for arrays storing emulation levels: ArrayResize(this.IncreaseLevel_Array, (this.LevelsNumber + 1) * 100 + 1); ArrayResize(this.DecreaseLevel_Array, (this.LevelsNumber + 1) * 100 + 1); // Fill in the array upwards: for(int i = 0; i < this.LevelsNumber + 1; i++) { ArrayFill(this.IncreaseLevel_Array, i * this.LevelsNumber * 100, this.LevelsNumber * 100, i); } ArrayFill(this.IncreaseLevel_Array, (this.LevelsNumber + 1) * 100, 1, this.LevelsNumber); // Fill in the array downwards: ArrayFill(this.DecreaseLevel_Array, 0, zero_delta, 0); ArrayFill(this.DecreaseLevel_Array, zero_delta, this.LevelsNumber * 100 - zero_delta + 1, 1); for(int i = 2; i < this.LevelsNumber + 1; i++) { ArrayFill(this.DecreaseLevel_Array, i * this.LevelsNumber * 100, this.LevelsNumber * 100, i); } ArrayFill(this.DecreaseLevel_Array, (this.LevelsNumber + 1) * 100, 1, this.LevelsNumber); } // --------------------------------------------------------------------- // Calculate the option emulation level for a given delta: // --------------------------------------------------------------------- // - if the level has changed, return 'true'. // --------------------------------------------------------------------- bool UpdateOptionLevel(const double _delta, const int _curr_level) { this.is_contracts_updated_Flag = false; // Define trade direction: int delta_int = (int)(NormalizeDouble(_delta, 3) * 1000.0); this.curr_option_level_sign = 0; if(delta_int > zero_delta / 2) { this.curr_option_level_sign = 1; } else if(delta_int < -zero_delta / 2) { this.curr_option_level_sign = -1; } // Current index for arrays, based on 'Delta' with 3 decimal places: this.curr_contracts_index = (int)MathAbs(delta_int); if(this.curr_contracts_index > ((this.LevelsNumber + 1) * 100)) { // The index should not exceed the array size (here the option is deep in the money): this.curr_contracts_index = (this.LevelsNumber + 1) * 100; } // Current option emulation level (0...N) in the direction of INCREASE: this.curr_inc_level = this.IncreaseLevel_Array[this.curr_contracts_index]; // Current option emulation level (0...N) in the direction of DECREASE: this.curr_dec_level = this.DecreaseLevel_Array[this.curr_contracts_index]; // If the option emulation level (0...N) has INCREASED compared to the current one: if(this.curr_inc_level > _curr_level) { this.curr_option_level = this.curr_inc_level; this.is_contracts_updated_Flag = true; return(true); } // If the option emulation level (0...N) has DECREASED compared to the current one: if(this.curr_dec_level < _curr_level) { this.curr_option_level = this.curr_dec_level; this.is_contracts_updated_Flag = true; return(true); } return(false); } }; // ---------------------------------------------------------------------
Den vollständigen Code finden Sie in der unten angehängten Datei OptionEmulatorA1.mqh.
Schlussfolgerung
Wir haben die Nachbildung von Optionen über den Basiswert in Betracht gezogen. Dies ist ein relativ komplexes und leistungsstarkes Tool, das:
- ermöglicht die Erstellung komplexer und nicht standardmäßiger Optionsstrategien;
- bietet mehr Flexibilität als die Standardoptionen;
- erfordert ein tiefgreifendes Verständnis mathematischer Modelle;
- ist effizient bei ordnungsgemäßem Risikomanagement.
Diese Methode ist besonders nützlich, wenn wir Folgendes benötigen:
- Absicherung großer Portfolios,
- Entwicklung exotischer Optionsstrategien,
- Handel an Märkten mit geringer Optionsliquidität.
Als Nächstes widmen wir uns dem praktischen Teil – der Verwaltung und Neugewichtung von Positionen im Basiswert mithilfe der MQL5-Handelsfunktionen.
Übersetzt aus dem Russischen von MetaQuotes Ltd.
Originalartikel: https://www.mql5.com/ru/articles/18131
Warnung: Alle Rechte sind von MetaQuotes Ltd. vorbehalten. Kopieren oder Vervielfältigen untersagt.
Dieser Artikel wurde von einem Nutzer der Website verfasst und gibt dessen persönliche Meinung wieder. MetaQuotes Ltd übernimmt keine Verantwortung für die Richtigkeit der dargestellten Informationen oder für Folgen, die sich aus der Anwendung der beschriebenen Lösungen, Strategien oder Empfehlungen ergeben.
Die Übertragung der Trading-Signale in einem universalen Expert Advisor.
Erkennung und Klassifizierung fraktaler Muster mit maschinellem Lernen
Eine alternative Log-datei mit der Verwendung der HTML und CSS
Gaußsche Prozesse im maschinellen Lernen: Regressionsmodellierung in MQL5
- Freie Handelsapplikationen
- Über 8.000 Signale zum Kopieren
- Wirtschaftsnachrichten für die Lage an den Finanzmärkte
Sie stimmen der Website-Richtlinie und den Nutzungsbedingungen zu.








Vielen Dank für die Einführung! Sobald ich mehr Geld habe, werde ich Optionen in meinen Handel einbeziehen....
Danke. Das bezieht sich übrigens direkt auf dein Thema – den Spread-Handel. Was ich gerade auf der „Drei“ teste, ist genau so eine Optionsstruktur.
Vielen Dank. Das passt übrigens direkt zu Ihrem Thema – dem Handel mit Spreads. Was ich gerade auf der „Drei“ teste, ist genau diese Optionskonstruktion.
Verstanden. Da geht es anscheinend um die Nutzung der Optionsvolatilität – das habe ich zumindest irgendwo gelesen... )
Roman, die Option-Volatilitätskurve hat hier überhaupt nichts damit zu tun. Praktisch gesehen.
Soweit ich verstanden habe, besteht der Kern darin, dass bei einer günstigen Kursentwicklung die Gesamtposition kontinuierlich aufgestockt wird, während bei einer ungünstigen Entwicklung die Position reduziert wird. Dies gilt sowohl für den Kauf von Put- als auch von Call-Optionen.
Meines Wissens nach fallen jedoch neben den mit der Provision verbundenen Gemeinkosten noch Kosten für die Verwaltung an, die deutlich höher sind als beim Kauf einer Option, insbesondere wenn diese zum Zeitpunkt des Kaufs weit aus dem Geld ist. Und für eine sanfte Neugewichtung ist ein beträchtliches Volumen an virtuellen Optionen erforderlich, da es einfach nicht möglich ist, ein Verhältnis von 1:10 mit einem akzeptablen Schritt zu emulieren.
Die Frage der Optimierung betrifft die günstigste Schrittweite der Preisänderung für ein bestimmtes Instrument.
Es wäre sinnvoll, einen realen Kostenvergleich zwischen einer echten Option und einer virtuellen Option anzustellen, wobei die virtuelle Option bei Fälligkeit sowohl im Geld als auch aus dem Geld sein sollte.
Soweit ich verstanden habe, besteht der Kern darin, dass bei einer günstigen Kursentwicklung die Gesamtposition kontinuierlich aufgestockt wird, während bei einer ungünstigen Entwicklung die Position reduziert wird. Dies gilt sowohl für den Kauf von Put- als auch von Call-Optionen.
Meines Wissens nach fallen jedoch neben den mit der Provision verbundenen Gemeinkosten noch Kosten für die Verwaltung an, die deutlich höher sind als beim Kauf einer Option, insbesondere wenn diese zum Zeitpunkt des Kaufs weit aus dem Geld ist. Und für eine sanfte Neugewichtung ist ein beträchtliches Volumen an virtuellen Optionen erforderlich, da es einfach nicht möglich ist, ein Verhältnis von 1:10 mit einem akzeptablen Schritt zu emulieren.
Die Frage der Optimierung betrifft die günstigste Schrittweite der Preisänderung für ein bestimmtes Instrument.
Es wäre sinnvoll, einen realen Vergleich der Kosten zwischen einer echten Option und einer virtuellen Option anzustellen, wobei die virtuelle Option bei Fälligkeit sowohl im Geld als auch nicht im Geld ist.
Die Anzahl der Schritte wird durch die BA-Parameter bestimmt – Mindestlot/Mindestlotänderung. Eine willkürliche Festlegung ist nicht möglich.
Der GO wird in der Regel höher sein. Das spielt jedoch keine Rolle – wenn man eine fertige Option problemlos kaufen oder verkaufen kann, braucht man keine Emulation. Hier hat man die Wahl: entweder gar keine Optionen zu handeln oder über eine Emulation. Auch hier gilt dies wiederum für Basiswerte, für die es grundsätzlich keine Optionen gibt.