Trendfolger auf EOD-Basis
Liebe Boardler,
ich lese hier viel und nun poste ich auch mal. Es geht um die Entwicklung eines HS (Wen wunderts...?)
Ziel:
Tradingmöglichkeiten mit klar kalkuliertem Risiko und bei Trendentwicklung hohem Gewinnpotential.
Ausgangssituation:
Die meisten Trendfolger aus der Literatur (Breakout z.B. "simple Turtle", GD oder ADX basiert etc.), die ich getestet habe, haben die dort bis zum Abwinken beschriebenen Nachteile: Der Trend wird zu spät erkannt und sie bieten keine guten Möglichkeiten das Dilemma zwischen "laufen lassen" und "nicht so viel wieder abgeben", zu lösen.
Dann habe ich versucht, verschiedene Candlestick- oder andere Formationen zu implementieren. Allen voran den 1234er von Cooper, um Retracements im Trendverlauf zu erwischen. Der vorgestellte Trendfolger ist eine Mischung aus dem "N"-Konzept der Turtles, also einem für jede Periode berechneten Maximalrisiko und dem formationsorientierten Retracementansatz von Cooper (an sich etwas holprig formuliert), der sich aber, wie auch Breakouts, in der Bestätigung des Einstiegs auf steigende Kurse verlässt.
Philosospie:
Trends sind gut. Ein gutes System ist nicht optimierbar, es wirkt durch seine Logik. Simulationen müssen "worst case" sein, d.h. mit den schlechtesten Methoden und Bedingungen die besten Ergebnisse erzielen.
Anforderungen:
- Ich will mit Limitorders arbeiten, d.h.
- Ich will heute wissen, ob ich mich morgen positioniere, und wo
- Ich will heute mein Risiko von morgen definieren (S/L)
- Ich will, wenn ich positioniert bin heute wissen, ob und wann ich morgen aussteige
Grundlagen:
- Trenddefinition: zwei GDs (z.B. 13 und 21) + bestätigende Zusatzbedingungen
- Retracement: ganz einfach, wenn das heutige Tief tiefer ist als das vor n Perioden
- Trendwiederaufnahmebestätigung durch steigende Kurse morgen
- "Longtrail" (Short alles umgekehrt) der erstens als S/L dient und auch die Exits definiert.
Implementierung:
- enter long
const p: 4:
calc trend: s.o.;
trend > 0 and
low < Ref(low,-p) and
Ref(high,+1) > high
Enterbasis: max(high, ref(open,+1))
- longtrail
const faktor: 1.2;
const perioden: 21;
global calc longtrail: GD(middle() - (range() * faktor),perioden,s);
(middle() ist definiert als die Mitte zwischen High und Low, Range ist die einfache Ausdehnung zwischen High und Low. Hier werde ich evtl. später mit der TrueRange arbeiten.)
exit long:
Das Low morgen geht unter den Longtrail von heute.
low < longtrail
Exitbasis: min(longtrail,open)
Ich habe das so implementiert, weil mir Investox erstens heute ein Signal (kleiner, schwarzer Pfeil nach oben :) gibt, was aber nur ausgeführt wird, wenn morgen das Kauflimit (Hoch von heute) überschritten wird, andererseits genau dies in der Simulation auch so berücksichtigt wird. Der Wechsel von der Simulation zum Signalgeber ist dann denkbar einfach: ich nehme einfach die Bedingung Ref(high,+1) > high heraus. Dann allerdings funktioniert es nicht mehr als Simulation. Versteht sich von selbst.
Zweitens kann ich den longtrail von heute als StoppLimit für morgen nehmen. Das System hat also keinerlei (Investox)-Stopps. Real getraded müßte ich bei offenen Positionen nur jeden Tag den Stopp-Kurs anpassen.
Um das Moneymanagement realistisch zu simulieren, bin ich auf folgende Idee verfallen:
Ich setze ein Maximalrisiko von beispielsweise 1% des Gesamtkapitals. Im Moneymanagement setze ich das eingesetzte Kapital auf 10% des Gesamtkapitals fest (Damit erreiche ich eine mögliche theoretische Diversifikation auf max. 10 Positionen). Das variable Risiko ist immer der Abstand von der Enterbasis und dem heutigen longtrail. Um den Kapitaleinsatz entsprechend zu simulieren, setze ich in der Hebelberechnung einen (fiktiven) variablen Hebel ein: Maximalrisiko (10%) durch das prozentual gerechnete variable Risiko. Einfaches Beispiel: Wenn der Abstand von der Enterbasis zum Longtrail 5% der Enterbasis beträgt, bekäme ich einen Hebel von 2. Ich riskiere also 5 mal 2 des Anteils von 10% am Gesamtkapital = 1%
So. Und nun zum Zweck, warum ich das alles schreibe. Ich habe nämlich ein paar Fragen:
Enterbasis: Meines Erachtens ist es korrekt, mit einem System zu arbeiten, das mit der Berechnung der Enterbasis in die Zukunft blickt. Ich wäre eingestiegen, wenn der Kurs morgen über das Hoch von heute steigt. (da gibt es ja auch einige Threads, die sich mit dieser Frage beschäftigen). Von Vorteil ist diese Implementierung vor allem deshalb, weil ich meine Verluste auch korrekt berechne: Für den (blöden) Fall, dass die Kurse nämlich morgen über das Hoch von heute steigen und, wann auch immer unter meinen Stoppkurs (longtrail) fallen, kommt ein Trade in die Statistik und der Verlust wird angerechnet. (Falls es umgekehrt ist, dass nämlich die Kurse erst fallen um dann zu steigen, hätte ich "in Wirklichkeit" zwar keinen Verlust. Aber eben lieber so simuliert als anders herum).
Die Frage ist: Gibt es in der logischen Konzeption oder der konkreten Simulation Eventualitäten, die ich nicht berücksichtigt habe oder Fehler, die ich korrigieren sollte?
Exit: Auch die Exitstrategie finde ich angemessen (ich werde den longtrail noch so modifizieren, dass er etwas volatiler auf bestimmte "Es kündigt sich an, dass der Trend plötzlich zu Ende gehen könnte"-Indikatoren reagiert). Das System hat also keine programmierten Stopps, stattdessen einen für jede Periode berechneten Exit, was aber de facto einem Trailing-Stopp gleichkommt.
Auch hier: Stimmt die Logik, habe ich was vergessen und ist die Implementierung korrekt?
Kapitaleinsatz, die erste. Ich versuche zu simulieren, dass ich eine ganz bestimmte Menge von Geld in einen Trade investiere, egal, mit welchem Hebel, wenn überhaupt, ich das in Wirklichkeit realisiere. (Im Moment denke ich an Aktienindizes, oder andere "gedämpfte" Papiere, für die es eine Vielzahl von Produkten gibt, sodass die Strategie sich auch relativ einfach konkretisieren läßt. Die variable Hebelberechnung läßt sich aber, "wenn ich mal groß bin" auch in die Berechnung von Kontraktzahlen verändern)
Hier denke ich dass der Ansatz sehr einfach und folgedessen auch korrekt ist. Aber ist die Implementierung in Investox so auch richtig? (Ein Thema, das hier noch nicht so ganz gut implementiert ist, sind Gebühren (Slippage werde ich sehr gering halten, da die Märkte auf die ich es vorerst abgesehen habe, sehr liquide sind)).
Kapitaleinsatz die zweite. Gute Trendfolger leben von Überwasser- oder Zwiebelpyramiden. Einfach gesagt, ich möchte pyramidisieren. Sowas wie: Wenn HS 1 mit soundsovielen Anteilen im Plus ist gehe ich mit HS 2 wieder long. (und so weiter) Nervt die Programmierung, (soll ich also auf die von Herrn Knöpfel angekündigte Funktion warten) oder gibt es doch eine – einfache – Möglichkeit?
Seid also so nett und lasst mich Eure Bedenken, Zweifel, Tipps oder weiteren Hinweise hören :)
kuma