Money Management

Eröffnet von stock-profi im Board Handelssysteme mit Equilla

Seitenlänge102030
Seite 1 von 812345
#72: 15.06.2009 17:30 stock-profi
Handelt man mit einem stopLoss und will man diskretionär mit dem PercentRisk – Verfahren arbeiten, bietet sich analog zu #71 der folgende PosSizer an. Voraussetzung ist, dass der stopLoss in Form eines Wertes vorgegeben wird und nicht als Kursniveau. Zwei stopLoss – Module, die diese Bedingung erfüllen, sind das Modul stopValue (#233 aus stopEngine) und das Modul stopDisValue (#246 aus stopEngine).

Equilla Skript "PosSizePercRiskValue (Strategy)"

Analog zu #70 erkennt man, dass eine Reduzierung genau dann stattfindet, wenn

f > L * 100 * risk / close = L * risk%


ist, wobei risk für den Wert des stopLoss oder das Risiko steht und risk% für das Risiko in Prozent.

Der folgende Chart bringt ein Beispiel:
ALLIANZ SE VNA O.N. (1)
#71: 02.02.2009 12:06 stock-profi
Der Beitrag wurde vom Verfasser bearbeitet. Originalbeitrag anzeigen.
Den PosSizer aus #69 kann man ganz gut im diskretionären Portfolio-Trading einsetzen. Ich habe inzwischen kleine Erweiterungen vorgenommen.

Das zur Verfügung gestellte Kapital berechne ich etwas konservativer. Ich nehme nicht mehr das Kapital aus allen abgeschlossenen Trades, sondern betrachte auch die offenen Trades. Wenn die im Minus liegen, reduziere ich das Kapital entsprechend.

Wenn man Instrumente aus dem Portfolio der Reihe nach anschaut, ist es ganz nützlich zu sehen, wo der stopLoss liegen wird. Da die stopEngine den stopLoss erst anzeigt, sobald ein Trade begonnen hat, habe ich eine Anzeige des stopLoss in den PosSizer integriert. Dabei gehe ich davon aus, daß ein longTrade initiiert wird, sobald das letzte Hoch überschritten wird. Nach Handelsschluß ist hier high anzusetzen, während des Handels high [1]. Hiervon ziehe ich das Risiko in Höhe von biggestVolaLoss * volat ab. Will einer short gehen, muß er das entsprechend einbauen.

Beim Reduzieren der Anzahl kann es ganz nützlich sein, die ursprünglich berechnete Anzahl auch zu kennen, deshalb habe ich den kleinen Indi showPosSize aus #66 etwas erweitert.

Ferner habe ich noch einen Indi showMT geschrieben, der das eingesetzte Kapital anzeigt.

Equilla Skript "showPosSize (Indicator)"

Equilla Skript "PosSizePercVola (Strategy)"

Hiermit kann man folgenden Chart erzeugen.
DAIMLER AG NA O.N.
Am letzten Stab sieht man den stopLoss, falls man heute bei Überschreiten des letzten Hochs einsteigt. Die roten Pfeile bei dem Indi showPosSize zeigen, wo die Anzahl der Aktien reduziert wurde. Die Lage des Pfeils gibt die ursprünglich errechnete Anzahl an. Nach der kleinen Theorie aus #70 müssen die roten Pfeile dort erscheinen, wo die VP kleiner als 2 ist, denn ich habe f auf 3 und biggestVolaLoss auf 1,5 gestellt. MaxLeverage steht auf 1 und reduce auf ja. Da im MoneyManagement ein Kapital von 70.000 und unter InstrumentCount 7 eingestellt ist, wird jedem Trade ein Kapital von 10.000 spendiert. Wegen der Reduzierung ist das auch das maximal mögliche Kapital. Derzeit werden wegen hoher VP (größer als 7) nur 2.700 erreicht.

VP ist derzeit für die größten deutschen Aktien zwischen 17 (HRX) bzw. 15 (Conti) und 2,36 (FME). Entsprechend riesig sind die Unterschiede im eingesetzten Kapital.
#70: 08.07.2007 12:48 stock-profi
Unabhängig davon, wie man das Kapital definiert, kann man angeben, wann eine Reduzierung der berechneten Anzahl der Kontrakte stattfindet.

Aus der Berechnung

posSize = f * 0.01 * myCapital / (volat * biggestVLoss * LotSize)


folgt

posSize * close * LotSize = f / biggestVLoss * myCapital / (volat / close * 100)


und mit der Volatility Percentage VP, definiert durch

VP = 100 * volat / close


weiter

posSize * close * LotSize = f / biggestVLoss / VP * myCapital


Eine Reduzierung findet also genau dann statt, wenn

f / biggestVLoss > L * VP


ist.

Handeln wir z.B. Aktien ohne Hebel, ist L = 1. Haben wir weiter ein StopLoss von 1 ATR, müssen wir die Anzahl der berechneten Stücke genau dann reduzieren, wenn

f > VP


ist.

Der folgende Chart bringt ein Beispiel:



Liegt VP über dem wert von f = 2 (die durchgezogene konstante Linie mit dem wert 2), brauchen wir nicht zu reduzieren. Liegt VP unter dem wert von 2, müssen wir reduzieren. Wir erkennen u.a., daß seit dem Jahre 2005 eine erhöhung von f über den Wert von 2 hinaus weitgehend ins Leere geht.
#69: 06.07.2007 18:18 stock-profi
@stock-profi (#66)

für den Fall 2b. (global) aus #66 habe ich mir was besseres einfallen lassen.

Damit die Equity-Kurve in etwa realistisch wird, teile ich das zur Verfügung stehende Kapital in gleiche Teile. Dazu addiere ich das Ergebnis aller bisher abgeschlossenen Trades (globalClosedEquity) zum Startkapital und teile das Ergebnis durch die Anzahl der Instrumente. Das scheint auf den ersten Blick eine saubere Lösung zu sein, aber das täuscht:

Fange ich z.B. mit 100.000 an, wird jedem Trade ein Kapital von 25.000 rechnerisch zur verfügung gestellt. Steht im Falle von Aktien z.B. reduce auf "ja" und MaxLeverage auf 1, so ist das auch der Betrag, der höchstens investiert wird. Endet dann ein Trade mit 3.000 Verlust und ein weiterer mit 1.000 Verlust, so beträgt das verfügbare Kapital 22.000 + 24.000, also 46.000. Die Größe globalClosedEquity beträgt -4.000 und das Ergebnis 96.000, so daß wir einem neuen Trade 24.000 zuordnen können. Kommen jetzt 2 Signale, setzen wir 48.000 ein, obwohl wir nur 46.000 haben.

Im allgemeinen ist aber die Differenz nicht sehr hoch und die entstehende Equity-Kurve halbwegs realistisch, was bei der Primitivität der Berechnung ein großer gewinn ist. Außerdem stelle ich jedem Trade dasselbe Kapital zur Verfügung, so daß das Risiko für alle gleichzeitigen trades etwa gleich ist, falls nicht ein hohes f eine Reduzierung der Positionsgröße nötig macht.

Hier ist die verbesserte Strategie PosSizePercVola, der ich noch einen Export spendiert habe, damit man in Excel den Gang der Dinge verfolgen kann.

#68: 25.06.2007 11:58 stock-profi
Verzichtet der Trader auf den DAX, will er aber bei jedem Signal mindestens 3 FESX handeln, weil Teilausstiege zu seinem Handelssystem gehören, so ist X auf mindestens 72.000 zu setzen.

Stelle ich im MoneyManagement 150.000 ein, sehe ich:



Der Trader kann also derzeit 3 Kontrakte im FESX und 4 Kontrakte im FGBL handeln.

Er ist also mit weniger als der Hälfte des Geldes aus dem letzten Beitrag wesentlich flexibler in seinen Aktionen.
#67: 25.06.2007 11:45 stock-profi
Folgende Annahme:

ein Daytrader will FESX, FDAX und FGBL im 15minChart handeln und jedem Instrument gleich viel Geld zur Verfügung stellen. Der stopLoss – Wert für jeden Trade ist das 1,2fache der Vola, in jedem Trade soll höchstens das 0,5fache des für ein Instrument vorgesehenen Geldes verloren gehen. Ist der Trader in 3 Trades gleichzeitig, verliert er also höchstens 0,5% des Gesamtkapitals.

Frage: wie hoch muß das Gesamtkapital mindestens sein, damit er (fast) jedes Signal im FDAX nehmen kann, also zu (fast) jeder Zeit mindestens einen DAX-Kontrakt kaufen kann?

Die Vola im FDAX ist derzeit zu 95% kleiner als 20, die im FESX meist kleiner als 10 und die im BUND kleiner als 0,09.

Wenn X ein Drittel des gesuchten Kapitals ist, gilt

posSize FESX = 0,5 * 0,01 * X / (10 * 1,2 * 10) = 0,5 * 0,01 * X / 120
posSize FDAX = 0,5 * 0,01 * X / (20 * 1,2 * 25) = 0,5 * 0,01 * X / 600
posSize FGBL = 0,5 * 0,01 * X / (0,09 * 1,2 * 1000) = 0,5 * 0,01 * X / 108

X muß also wegen der Situation im FDAX mindestens 120.000 sein, so dass wir insgesamt 360.000 benötigen. Stelle ich das im MoneyManagement ein, erhalte ich folgendes Bild:



Die Einstellungen von PSPercVola beim FDAX und beim FGBL sind irrelevant, es gelten nur die vom FESX.

Man sieht also, dass derzeit ein Kontrakt im FDAX 5 Kontrakten im FESX und 7 Kontrakten im FGBL entspricht. Liegt die Vola im FDAX über 20, ist der Betrag von 360.000 bzw. 120.000 zu gering für die Umsetzung eines Signals, der Trader muß also mangels Masse auf den Trade verzichten.
#66: 24.06.2007 16:21 stock-profi
Seit geraumer Zeit gibt es in TS 5 die Möglichkeit, mehrere Instrumente in einem Portfolio zu handeln. Man kann das auf 2 Arten tun: entweder öffnet man eine Wertpapierliste als Portfolio (Portfolio als Liste), oder man öffnet ein Wertpapier in einem Chart und fügt dann ein Wertpapier oder mehrere Wertpapiere hinzu (Portfolio als Chart).

Bezüglich Money Management ergeben sich mehrere Möglichkeiten, u.a.:

1. Man rechnet mit genormten Positionsgrößen, um die Qualität des Handelssystems auf einem Korb von Instrumenten zu prüfen. Ich nutze dazu das Modul NormedPosSize (siehe #36 in Enter). Die entstehenden Equity- Kurven haben mit der Realität des Tradings nichts zu tun (siehe Variationen über das Thema Red Candle, #11). Der Test dient der Herleitung von Statistiken und der Beurteilung des Handelssystems unter Ausschaltung des Einflusses von Positionsgrößen.

2. Man teilt das Startkapital gleichmäßig auf die Instrumente auf. Aus einem Konto macht man z.B. im DAX 30 Unterkonten, jedes der Instrumente erhält bei einem Startkapital von 300.000 ein Startkapital von 10.000. Es gibt dann mindestens zwei Möglichkeiten.

a. Man handelt jedes Instrument unabhängig von den anderen, jedes Instrument muß sich weiteres Geld selber verdienen. Grundlage der Berechnung des Kapitals ist openEquity.
b. Man handelt auch hierbei jedes Instrument unabhängig von den anderen, aber jedes Instrument profitiert vom Erfolg anderer Instrumente. Grundlage der Berechnung des Kapitals ist globalOpenEquity.

Im Falle a. ist die entstehende Equity – Kurve realistisch, der Nachteil ist allerdings in der Regel eine schlechte Ausnutzung des Kapitals: bei einem System mit gleichzeitig etwa 10 Signalen und 50 Instrumenten werden nur etwa 20% des Kapitals genutzt. Der Rest liegt brach, so dass wir nicht reich werden können. Ein weiterer Nachteil besteht darin, dass wegen unterschiedlich hoher openEquity das Risiko für jedes Instrument anders aussieht.

Im Falle b. kann die Equity – Kurve bei hohem Profit und hohem f (Anteil des Kapitals, das bei einem Trade riskiert wird) unrealistisch werden, weil gar nicht genügend Kapital zur Verfügung steht, um die Positionsgröße umzusetzen. Auf der anderen Seite ist aber das Risiko für alle gleichzeitig laufenden Positionen etwa gleich.

3. Man handelt die Instrumente aus einem Konto, wobei sich erhebliche Abhängigkeiten ergeben. Handelt man z.B. Aktien ohne Fremdkapital und ist das verfügbare Kapital zur Gänze eingesetzt, kann man kein weiteres Signal nehmen. Will man das Gesamtrisiko im Portfolio begrenzen, kann es ebenfalls passieren, dass man auf einen weiteren Trade verzichten muß, obwohl massenhaft Signale vorliegen (siehe #20 und #21 in „Variationen über das Thema Red Candle“).

Hier ist ein Code für das Percent Volatility – Verfahren, mit dem man den Punkt 2 realisieren kann.



Die Mimik am Anfang sorgt dafür, dass im Falle „Portfolio als Chart“ die Input-Variablen nur aus dem Instrument geholt werden, das als erstes auf dem Chart beginnt. Um Verwechslungen vorzubeugen, sollte man dieses Instrument als erstes auf den Chart ziehen und die anderen Instrumente danach einfügen. Die Mimik bringt den bedeutenden Vorteil, dass man nicht in mehreren Instrumenten identische Einstellungen vornehmen muß und dass die Fehleranfälligkeit verringert wird. In einem „Portfolio als Chart“ kann man nach meiner Einschätzung höchstens 8 Instrumente unterbringen.

Hier ist ein Beispiel: das Startkapital von 100.000 wird zu gleichen Teilen auf den FESX und den FDAX aufgeteilt. Die Vola beträgt im 15min-Chart beim FESX derzeit etwa 10, beim FDAX 17. Will man diese Punkte höchstens verlieren und im Falle des Verlusts 2% des für das Instrument vorhandenen Kapitals verlieren, ergeben sich für den DAX derzeit 2 Kontrakte und für den FESX 10 Kontrakte. Im Beispiel FESX wird z.B. so gerechnet:

posSize = f * 0.01 * _Equity / (LotSize * biggestVLoss * volat) = 2 * 0,01 * 50.000 / (10 * 1 * 9,92) = 10,08



Mit dem folgenden Indi kann man die Kontraktzahl unabhängig vom verwendeten Position Sizer anzeigen:



Der nächste Indi zeigt bei 2 Instrumenten im Portfolio das Verhältnis der Kontraktzahlen und bei Bedarf das Verhältnis des bewegten Kapitals. Derzeit hat man demnach bei gleichem Risiko für den FESX 5mal so viele Kontrakte wie für den DAX. Dies liegt daran, dass die LotSize beim DAX 2,5 mal so groß ist (25 / 10) und dass die Vola im Durchschnitt etwa 2mal so groß ist. Denn es ist, wenn die beiden Equity-Größen gleich sind:

posSize2 = f *0,01*_Equity / (LotSize2 * biggestVLoss * volat2)
= posSize1 * LotSize1 * biggestVLoss * volat1 / (LotSize2 * biggestVLoss * volat2)
= posSize1 * volat1 / volat2 * LotSize1 / LotSize2



Wenn man nun jeweils ein Handelssystem auf beide Charts zieht, kann das abhängig vom jeweils verdienten Geld im Falle local (openEquity) anders aussehen.

Hat man im Falle local (openEquity) in beiden Instrumenten einen Trade, liegt das Risiko zu Beginn bei etwa 2% des Gesamtkapitals, ist man nur in einem Instrument unterwegs, beträgt das Risiko etwa 1% des Gesamtkapitals.
#65: 28.10.2006 11:40 stock-profi
Noch ein Nachtrag zur anpassung von PositionSizer:

Durch die Änderung von sl::stopLossValue in data1::stopLossValueLong/short (siehe stopengine) muß es in Zeile 119 bis 121 so heißen:

if data1::StopMode = 0 and data1::StopLossValueLong > 0 then
        // Funktioniert für alle Trade-Modes (TBOC, NBAM, NBPS, NBPL)
        riskValue = data1::StopLossValueLong


Man sollte hierbei slValue nutzen, so daß long und short identische werte liefern. Oder slValueLS mit identischer Einstellung für stopLossLong/short.
#64: 21.07.2006 18:07 stock-profi
In einem anderen Thread wurde die Frage aufgeworfen, wie man eine prozentuale Equity-Kurve erzeugen kann, siehe http://www.tradesignalonline.com/content.asp?p=cmy/forum/thread.asp&site=1&board=36&thread=22228

Das geht ganz einfach mit dem PosSizer, indem man fixed fractional Percent und unit mit X = 1 einstellt (siehe #46). Die Anzahl der Kontrakte ist dabei:

NumContracts = Equity / (CurrentPrice * BigPointValue)


Man kann ohne den PosSizer folgendermaßen vorgehen:

Wenn man immer das gesamte Kapital einsetzt, ist nach der obigen Regel für NumContracts

E(n+1) = E(n) + numContracts * profit

wenn E(0) das Startkapital, E(n) das Kapital nach dem Trade n und profit das Ergebnis des Trades für einen einzigen Kontrakt bedeutet. Daraus ergibt sich

E(n+1) = E(n) * (1 + profit / (CurrentPrice * BigPointValue)
oder

E(n+1) / E (n) = 1 + profit / (CurrentPrice * BigPointValue)

Deswegen ist mit HPR (i) = 1 + profit / (CurrentPrice * BigPointValue)

E(n) / E(0) = HPR (1) * HPR (2) * HPR (n)

Das prozentuale Ergebnis ergibt sich zu

100 * (E(n)/ E(0) – 1) = 100* (HPR (1) * HPR (2) * HPR (n) -1)

Das läßt sich mühelos nach TS 5 übersetzen, wobei ich CurrentPrice der Einfachheit halber durch den EntryPrice ersetzt habe.



Hier ist ein Chart mit dem PosSizer in der Einstellung fixed fractional% und dem neuen Indi:



Bollinger in der Einstellung LE/SE.
Der PosSizer führt zu einem Ergebnis von 12.544, also 12,5%, der Indi zeigt 13,01% an. Der geringe und i.a. zu vernachlässigende Unterschied lässt sich auf 2 Ursachen zurückführen:

1. Im PosSizer arbeite ich realistischerweise mit dem close am Tag vor dem Einstieg, der Indi arbeitet mit dem EntryPrice.
2. Im PosSizer arbeite ich realistischerweise mit ganzen Zahlen, der Indi unterstellt, dass man auch ungerade Stückzahlen kaufen kann.

Über die Variable Alltrades:: perf kann man auch optimieren. Natürlich ist das Ganze nur sinnvoll, wenn man den PosSizer aus irgendeinem Grund nicht einsetzen will.

Da ich im Indi mit positionProfit (1) arbeite, sind sowohl long- als auch shortTrades abgedeckt, ebenso sind slippage und commission berücksichtigt.

Wenn ich den PosSizer auf PercentVolatility umstelle, hilft mir der neue Indi, die entstehende equity-Kurve mit der fixed fractional% Equity -Kurve zu vergleichen:

Im folgenden Beispiel habe ich PercentVolatility mit f = 16 und biggestVLoss = 4 eingestellt. Wir machen hierbei einen Verlust von 13%, während die prozentuale Equity-Kurve einen Gewinn von 13% anzeigt.

#63: 27.06.2006 16:40 stock-profi
Wenn ich mehrere Instrumente aus einem Konto handeln will, muß ich die openEquity über alle Instrumente zugrunde legen.

Deswegen ändere ich Zeile 102 im PosSizer, die bisher

_Equity = initialCapital + openEquity;

gelautet hat , in

_Equity = initialCapital + globalOpenEquity; // von allen Instrumenten


Diese Größe enthält bereits slippage und commisssion und ist die Basis zur Berechnung der Stückzahl. Die berechnete Stückzahl wird dann in einem nachgelagerten Portfolio-Modul überprüft und ggfls. vermindert.
Seite 1 von 812345