Market Trader Forum

Market Trader Forum
das ultimative Expertenforum
 
RegistrierenRegistrieren  LoginLogin

Neues Thema eröffnen   Neue Antwort erstellen    Market Trader Forum Foren-Übersicht -> Fragen, Antworten und Vorschläge
Autor
Nachricht
wuelle


Anmeldedatum: 24.08.2005
Beiträge: 336

Berechng. zum Auf- u. Abrunden auf bestimmte Basis
Verfasst am: 12.03.2007, 14:39

Ich möchte eine Strategie visualisieren, bei der 14 Tage vor Verfall Bund Optionen, die mindestens 50 Ticks aus dem Geld sind, geschrieben werden. Ein Blick auf die Grafik soll uns zeigen, wie weit sich der Bund dem Basispreis der geschriebenen Option im Verlauf genähert hat.

Dazu möchte 50 Punkte über (unter) dem Eröffnungskurs des Bund Future eine horizontale Linie zeichnen, und zwar aufgerundet (abgerundet) auf den nächsten Basispreis.

Beispiel: Der Bund öffnet bei 115,25

115,25 + 0,50 = 115,75 Aufrunden führt zum Basispreis bei 116,00
125,25 - 0,50 = 114,75 Abrunden führt zum Basispreis bei 114,50.

Mit der Funktion Aufrunden und Abrunden komme ich der Lösung nicht näher, weil dann auf ganzzahlige Basispreise gerundet wird und nicht, wie im obigen Beispiel gewünscht, ein Ergebnis von 114,50 herauskommt.

So soll das später mal aussehen: Man erkennt, daß der Algorithmus mit Auf- und Abrunden, nicht zum gewünschten Ziel führt.




_________________
 
SwingManT


Anmeldedatum: 17.08.2005
Beiträge: 1700
Wohnort: Frankfurt am Main


Verfasst am: 12.03.2007, 15:11

@wuelle

Zitat:

115,25 + 0,50 = 115,75 Aufrunden führt zum Basispreis bei 116,00
125,25 - 0,50 = 114,75 Abrunden führt zum Basispreis bei 114,50.




Gewöhnlich muß man zunächst mit 100 multiplizieren, und dann weiter noch ein bisschen tricksen.
In Dein Beispiel, SOLLTEN die Werte 116,00 und 114,50 sein, oder das ist was Du bekommst?

Gebe mal bitte auch ein Beispiel mit etwas verschobenen Preise: 115,12 z.B., und was heraus kommen soll.

 
SwingManT


Anmeldedatum: 17.08.2005
Beiträge: 1700
Wohnort: Frankfurt am Main


Verfasst am: 12.03.2007, 15:17

Probier mal folgendes:

P0 = Preis * 100
P1 = int(P0 / 50)
Aufrunden:
Pauf = (P1 + 1) * 50 / 100
Abrunden:
Pab = (P1 - 1) * 50 / 100
 
Joram




Anmeldedatum: 17.08.2005
Beiträge: 2238


Verfasst am: 12.03.2007, 15:24

@Swingman

Zitat:

Gebe mal bitte auch ein Beispiel mit etwas verschobenen Preise: 115,12 z.B., und was heraus kommen soll.




Es soll 114,50 und 116,00 rauskommen.

_________________


 
wuelle


Anmeldedatum: 24.08.2005
Beiträge: 336


Verfasst am: 12.03.2007, 15:56

@Swingman

Jorams Vermutung ist Richtig. Der Basispreis soll mindestens 50 Ticks entfernt sein.

Deine Zeile

Zitat:

P1 = int(P0 / 50)




verstehe ich noch nicht. Was bedeutet int(...) ?


Problematisch wird´s aber z.B. bei 115,49. Dann sollen 115 Puts (nur 49 Ticks aus dem Geld) und 116 Calls untersucht werden. Man wird mit einem Schwellenwert arbeiten müssen. Ich schlage 45 Ticks vor.

Solange Bund >= 115,45 schreibe 115er Puts. Wenn Bund unter 115,40 dann wähle als Basis die 114,50.


Zuletzt bearbeitet von wuelle am 12.03.2007, 16:05, insgesamt einmal bearbeitet

 
SwingManT


Anmeldedatum: 17.08.2005
Beiträge: 1700
Wohnort: Frankfurt am Main


Verfasst am: 12.03.2007, 16:02

@wuelle

Zitat:

Was bedeutet int(...) ?


- Der abgeschnittene INTEGER Teil.
Je nach Scriptsprache: ROUND, TRUNC oder sonstwas.

Beispiel abrunden:
============
114,75 * 100 = 11475
11475 / 50 = 229,5
int(229,5) = 229
(229-1)*50 = 228*50/100 = 114,00

(Scheinbar muß man noch 0,50 draufschlagen...)

Beispiel aufrunden:
============
115,75 * 100 = 11575
11575 / 50 = 231,5
int(231,5) = 231
(231+1)*50 = 232*50/100 = 116,00


Zuletzt bearbeitet von SwingManT am 12.03.2007, 16:12, insgesamt einmal bearbeitet

 
SwingManT


Anmeldedatum: 17.08.2005
Beiträge: 1700
Wohnort: Frankfurt am Main


Verfasst am: 12.03.2007, 16:23

- Man kann mit der internen Rundungs- statt Truncate-Funktion arbeiten, und an dem Preis z.B. 0,01 addieren, um den Schwellenwert zu erreichen.

Abrunden:
=======
round(229,5 + 0,01) = 230
(230 - 1)*50 = 229 * 50/100 = 114,50


Aufrunden:
=======
round(231,5 + 0,01) = 232
(232 + 1)*50 = 233 * 50/100 = 116,50

(Jetzt sind es hier 0,50 Punkte mehr...).

- Ich glaube daß nur @Joram die Lösung finden kann, weil er uns irgendwelche IQ Teste vorgeschlagen hat, oder?

 
wuelle


Anmeldedatum: 24.08.2005
Beiträge: 336


Verfasst am: 12.03.2007, 16:36

@Swingman

Joram wird uns sicher ein Hilfe sein, zumindest kann er moralische Unterstützung geben oder einen Kontakt zu einem Mathematikprofessor oder Lehrerin herstellen! Smile
 
SwingManT


Anmeldedatum: 17.08.2005
Beiträge: 1700
Wohnort: Frankfurt am Main


Verfasst am: 12.03.2007, 16:48

Zitat:

Aber Du kannst weiter versuchen eine elegante Lösung zu finden,



- Ich glaube in OTracker das Problem gehabt zu haben.
Vermutlich ist am besten die Hammer Methode zu benutzen, und eine Funktion zu schreiben wo genau beschrieben wird ab welcher Nachkommastelle das eine oder andere Wert berücksichtigt wird.

Ausser 115,49 gibt es auch den 115,99, mit 116,50 und 115,50 Optionsbasis usw.

 
SwingManT


Anmeldedatum: 17.08.2005
Beiträge: 1700
Wohnort: Frankfurt am Main


Verfasst am: 12.03.2007, 16:54

Zitat:

Joram schrieb am 12.03.2007 16:53
@Swingman

na siehste

FUNKTIONIERT!


- Was? Wo? Wieso?


Zuletzt bearbeitet von SwingManT am 12.03.2007, 16:55, insgesamt einmal bearbeitet

 
wuelle


Anmeldedatum: 24.08.2005
Beiträge: 336


Verfasst am: 13.03.2007, 12:30

@Swingman

Ich habe eine Lösung gefunden!

Zitat:

Joram aber schrieb am 12.03.2007 16:43 Sofort kriege ich Atemnot wenn ich eine Zeile Code zu Gesicht bekomme.




Meinst Du, es ist zu verantworten, daß ich meine Lösung trotz Joram´s Code Allergie, hier darstelle? :-)


 
SwingManT


Anmeldedatum: 17.08.2005
Beiträge: 1700
Wohnort: Frankfurt am Main


Verfasst am: 13.03.2007, 12:52

Zitat:

wuelle schrieb am 13.03.2007 12:30
@Swingman

Ich habe eine Lösung gefunden!

Zitat:

Joram aber schrieb am 12.03.2007 16:43 Sofort kriege ich Atemnot wenn ich eine Zeile Code zu Gesicht bekomme.




Meinst Du, es ist zu verantworten, daß ich meine Lösung trotz Joram´s Code Allergie, hier darstelle? Smile



- Wenn er die Luft anhält, und sich eine XXL Sonnenbrille ansetzt, dann überlebt er schon...

 
wuelle


Anmeldedatum: 24.08.2005
Beiträge: 336


Verfasst am: 13.03.2007, 14:44

@Swingman

Zunächst wird der Dezimalteil errechnet:

var Dezimalteil = open(0) - Math.ceil(open(0));

und dann je nach dem Wert dieses Dezimalteil

if (Dezimalteil >= 0.55) var Summand = 0.5;
if (Dezimalteil < 0.55) var Summand = 0;

ein Summand zum ganzzaghligen Kursniveau addiert

var BasisCall = Math.ceil(open(0)) + Summand;

Analog dazu, die Errechnung des Basispreis Put

if (Dezimalteil <= 0.45) var Subtrahend = -0.5;
if (Dezimalteil > 0.45) var Subtrahend = 0;
var BasisPut = Math.floor(open(0)) + Subtrahend

Das gilt für Preisniveaus um xxx.50 mit Schwellenwert 5 Ticks.


Eine Lösung für Niveaus bei xxx.00 muß noch hinzugefügt werden. Oder fällt Dir eine elegante, einheitliche Lösung für Nivaus bei xxx.00 und xxx.50 gleichzeitig ein?
 
SwingManT


Anmeldedatum: 17.08.2005
Beiträge: 1700
Wohnort: Frankfurt am Main


Verfasst am: 13.03.2007, 15:10

@wuelle

Für die 0,00 und 0,50 Dezimalwerte könnte man so machen:
- mit 100 multiplizieren
- Ergebnis plus/minus 50
- Ergebnis durch 100 teilen

Beispiel 1:
=======
P = 114,50
P1 = P *100 = 11450
Call = (P1 + 50 ) / 100 = (11450 + 50) =11500 / 100 = 115,00
Put = (P1 - 50 ) / 100 = (11450 - 50) = 11400 / 100 = 114,00

Beispiel 2:
=======
P = 114,00
P1 = P *100 = 11400
Call = (P1 + 50 ) / 100 = (11400 + 50) =11450 / 100 = 114,50
Put = (P1 - 50 ) / 100 = (11400 - 50) = 11350 / 100 = 113,50


- Bei Deiner Berechnung, hast mit dem Taschenrechner gecheckt ob alles stimmt?
Mir scheint auf dem ersten Blick daß es Probleme geben kann.
 
wuelle


Anmeldedatum: 24.08.2005
Beiträge: 336


Verfasst am: 13.03.2007, 17:19

@Swingman

Meine Lösung mit Schwellenwerten von +/- 10 Ticks um die Levels xxx.00 und xxx.50, sieht aktuell so aus:


Ermitteln des Dezimalteil

var Dezimalteil = open(0) - Math.floor(open(0));


Ermitteln des Basispreis Call

if (Dezimalteil >= 0.00 && Dezimalteil < 0.10) var Summand = 0.5;
if (Dezimalteil >= 0.06 && Dezimalteil < 0.60) var Summand = 1.0;
if (Dezimalteil >= 0.60) var Summand = 1.5;

var BasisCall = Math.floor(open(0)) + Summand;


Ermitteln des Basispreis Put

if (Dezimalteil >= 0.00 && Dezimalteil < 0.40) var Subtrahend = -0.5;
if (Dezimalteil >= 0.41 && Dezimalteil < 0.90) var Subtrahend = 0.0;
if (Dezimalteil >= 0.90) var Subtrahend = 0.5;

var BasisPut = Math.floor(open(0)) + Subtrahend

Excel Datei:

http://www.boersentrendonline.de/upload/BasispreisOGBL.rar


Grafische Darstellung:





 
wuelle


Anmeldedatum: 24.08.2005
Beiträge: 336


Verfasst am: 13.03.2007, 17:23

Zitat:

SwingManT schrieb am 13.03.2007 12:52
- Wenn er die Luft anhält, und sich eine XXL Sonnenbrille ansetzt, dann überlebt er schon...




@Swingman

Meinst Du so eine Brille? Ich finde, Joram sieht auf dem Bild lässig aus. Smile

 
SwingManT


Anmeldedatum: 17.08.2005
Beiträge: 1700
Wohnort: Frankfurt am Main


Verfasst am: 13.03.2007, 17:25

@wuelle

Zitat:

Meinst Du so eine Brille? Ich finde, Joram sieht auf dem Bild lässig aus. Smile


- Jawohl! Das ist der läss(t)ige @Joram den wir alle kennen...

 
SwingManT


Anmeldedatum: 17.08.2005
Beiträge: 1700
Wohnort: Frankfurt am Main


Verfasst am: 13.03.2007, 17:27

@wuelle

Ich sehe (ohne @Jorams Brille...) nicht ein, warum in den letzten 3 Monaten auf der Call Seite die 1,0 addiert werden soll.
Auch visuell betrachtet, gibt es keine Symetrie.
 
wuelle


Anmeldedatum: 24.08.2005
Beiträge: 336


Verfasst am: 13.03.2007, 18:35

Die Option muß bei den gewählten Parametern, zum Eröffnungskurs mindestens 40 Ticks aus dem Geld sein, ansonsten wählt man den entfernteren Basispreis.

Eröffungskurs am 10.01.07 war 115.14, am 7.2.07 115.11, somit wären die 115.50 Calls zum Schreiben 36 bzw. 39 Ticks aus dem Geld gewesen. Hier stimmt das gewünschte Ergebnis mit Basispreis 116.

Am 9.3.07 beim Eröffnungskurs von 116.06 müßte aber der Basispreis 116.50 statt wie eingezeichnet 117 als Ergebnis rauskommen. Dieser Fehler resultiert aus einem Tippfehler in der Zeile

if (Dezimalteil >= 0.06 && Dezimalteil < 0.60) var Summand = 1.0;

korrekt muß es heissen:

if (Dezimalteil >= 0.10 && Dezimalteil < 0.60) var Summand = 1.0;


Die korrigierte Grafik, mit den Linien auf den Niveaus der Basispreise, die man entsprechend der Eingangs beschriebenen Regel, wählen würde.




Eine Grafik, mit 50 Ticks symmetrisch um den Eröffnungskurs gezeichnet.




Zuletzt bearbeitet von wuelle am 13.03.2007, 18:37, insgesamt einmal bearbeitet
 
SwingMan




Anmeldedatum: 16.08.2005
Beiträge: 885


Verfasst am: 13.03.2007, 19:10

@wuelle

Zitat:

Eine Grafik, mit 50 Ticks symmetrisch um den Eröffnungskurs gezeichnet.


- So ungefähr habe ich mir vorgestellt, Du mußt es besser wissen.
Jedenfalls, wenn im Januar und Februar 116,00 statt 115,50 korrekt bleibt, dann ist die (Options)Welt in Ordnung.

 
SwingMan




Anmeldedatum: 16.08.2005
Beiträge: 885


Verfasst am: 13.03.2007, 21:52

@Joram

Wieso? Ich helfe nur @wuelle und Dir die Basispreise im Chart richtig zu zeichnen, und das wärend meiner Arbeits- und Freizeit. Schreibfehler passieren nicht nur Dir, oi, oi, oi...
_________________


 
SwingMan




Anmeldedatum: 16.08.2005
Beiträge: 885


Verfasst am: 14.03.2007, 00:36


@Joram

"Knoblauch" ist das Zauberwort in die Suche zu geben, dann kriegt man das Rezept.

http://53669.rapidforum.com/topic=101973147430&search=knoblauch


Zuletzt bearbeitet von SwingMan am 14.03.2007, 00:36, insgesamt einmal bearbeitet
 
Neues Thema eröffnen   Neue Antwort erstellen    Market Trader Forum Foren-Übersicht -> Fragen, Antworten und Vorschläge
 
 Verwandte Themen   Aufrufe   Letzter Beitrag 
Keine neuen Beiträge Bund Future Auswertung Intraday Minimum / Maximum 787 15.08.2007, 17:46
Keine neuen Beiträge Reaktion des Bund Future auf makroökonmische Daten 245 26.04.2006, 10:49
Keine neuen Beiträge Open und ReffOpen im Bund Future 253 08.01.2006, 13:31
Keine neuen Beiträge Bund Future Stop Limit Order 307 21.11.2005, 15:46
Keine neuen Beiträge BUND FUT. - HANDELSZEITEN 247 29.09.2005, 13:12
 



[ Time: 0.9165s ][ Queries: 193 (0.0377s) ][ GZIP on - Debug on ]