Jump to content


Photo
- - - - -

Berechnung Perfect Profit


Wichtiger Hinweis für Besucher der Community!

Das Erstellungsdatum des von Dir aufgerufenen Themas liegt bereits einige Zeit zurück. Wir möchten darauf hinweisen, den Inhalt der Diskussion auf seine Aktualität hin zu prüfen. Weitere Informationen findest Du auf dieser Seite.

  • Please log in to reply
4 replies to this topic

#1 tlu

tlu

    Pit

  • *_skilled
  • 67 posts
  • 179 thanks

Posted 30 June 2009 - 05:31 PM

Ich bin gerade dabei, für die Walk-Forward Analyse einen Code zu schreiben, in dem einige Metrics für die In-sample- und Out-of-sample-Equity-Kurven errechnet werden.

Ergänzen möchte ich diese Metrics mit dem "Perfect Profit", der laut Robert Pardo so definiert ist:

Perfect Profit is a theoretical measure of market potential. It is the total profit produced by buying at every valley and selling at every peak that occurs during a historical period of market history.


Der Vergleich insbesondere mit der OOS Equity Kurve lässt m.E. interessante Schlussfolgerungen zu. Z.B. ist das Verhältnis von OOS CAR zu Perfect Profit CAR sicherlich eine sinnvolle Metric. Nur - wie programmiert man den Perfect Profit (PP)? Pardo lässt sich dazu nicht genau aus. Ich berechne ihn daher einfach als ZigZag auf die Buy&Hold-Kurve (bh) in der folgenden Form:

amount = Param("Amount", 1, 0.1, 1.5, 0.1 );zz0 = Zig( bh, amount );up=zz0>Ref(zz0,-1);down=zz0<Ref(zz0,-1);Longprofit=IIf(up,zz0-Ref(zz0,-1),0);Longprofit=Cum(Longprofit);Shortprofit=IIf(down,Ref(zz0,-1)-zz0,0);Shortprofit=Cum(Shortprofit);if( ParamToggle("Long AND Short Trades?", "No|Yes", 0 ) )PP=Longprofit + Shortprofit;else PP=Longprofit;Plot(PP,"Perfect Profit",colorBlack);

Aber das ist natürlich so nicht richtig, da - abgesehen von den Gebühren - kein Compounding berücksichtigt wird. Vermutlich muss man dazu durch die ganzen Zigs loopen - aber das stößt dann schon an die Grenzen meiner Programmierkenntnisse. Hat jemand dazu Ideen/Vorschläge?

Edited by tlu, 30 June 2009 - 05:32 PM.

  • 0

#2 Krümel

Krümel

    User

  • *_skilled
  • 1,757 posts
  • 3754 thanks

Posted 30 June 2009 - 05:57 PM

Hat jemand dazu Ideen/Vorschläge?

"Perfekt" wäre es doch erst, wenn Du am täglichen Low kaufst und beim High verkaufst (Long) bzw. umgekehrt bei Short.
Zumindest wäre es eine gute Approximation von "Perfekt" :OMG:.
Kann man ja auch auf Wochenbasis betrachten, man muss bloß aufpassen, dass es realistisch ist, sprich: das Wochenlow kaufen muss als Event zeitlich vor dem Wochen-High stattfinden, sonst wäre es ja nen Short-Trade. Das ist aber nur wichtig, wenn man hinterher nach Short und Long trennen will.

Das Ganze kann man sicher auch noch gröber einteilen, bspw. Monatsbasis, Quartalsbasis.
Da Du mit EOD-Daten arbeitest, wäre wahrscheinlich sinnvoll, auf Wochen/Monatsbasis zu aggregieren und den Test, dass High und Low chronologisch stattfanden auf den Tagesdaten zu machen.
  • 0
Wer nichts weiß, muss alles glauben.

Wichtig:
Alle von mir gemachten Aussagen und Antworten auf Fragen entsprechen lediglich meiner persönlichen Meinung und stellen keinerlei Rechts- oder Anlageberatung dar.

#3 Krümel

Krümel

    User

  • *_skilled
  • 1,757 posts
  • 3754 thanks

Posted 30 June 2009 - 06:11 PM

Okeee, ich schwöre, ich hab nicht vorher gegooglet : Posted Image

The basic idea is not new. In his book "Design, Testing, and Optimization of Trading Systems" (John Wiley & Sons, Inc., New York, 1992, pp. 74-75), Robert Pardo describes an optimization method based on the "perfect profit," which he defines as the sum of the absolute price differences. A trading system that generated perfect profit would buy the close if the next day was going to close higher and sell the close if the next day was going to be lower. Obviously, no such system is possible, but the equity curve generated by this hypothetical system represents the potential profit in the market. To use the perfect profit in system optimization, Pardo maximized the correlation coefficient between the equity curve represented by the perfect profit and the equity curve of the trading system. The optimal system parameter values were those that resulted in the equity curve closest to the perfect profit.

Quelle: http://www.breakoutf...sletter0605.htm
(der hat auch Code dabei und macht so ne Berechnung, wie Du suchst, musst Du nur noch in Amibroker umschreiben :OMG:)
  • 0
Wer nichts weiß, muss alles glauben.

Wichtig:
Alle von mir gemachten Aussagen und Antworten auf Fragen entsprechen lediglich meiner persönlichen Meinung und stellen keinerlei Rechts- oder Anlageberatung dar.

#4 tlu

tlu

    Pit

  • *_skilled
  • 67 posts
  • 179 thanks

Posted 30 June 2009 - 06:16 PM

"Perfekt" wäre es doch erst, wenn Du am täglichen Low kaufst und beim High verkaufst (Long) bzw. umgekehrt bei Short.
Zumindest wäre es eine gute Approximation von "Perfekt" :OMG:.


Stimmt - wäre noch perfekter :OMG: Das baue ich vielleicht auch noch ein, lasse es im Augenblick aber außen vor. Der deutlich größere Fehler ist eindeutig das fehlende Compounding. Hast du dafür noch einen Tipp? <lechz>

Das Ganze kann man sicher auch noch gröber einteilen, bspw. Monatsbasis, Quartalsbasis.
Da Du mit EOD-Daten arbeitest, wäre wahrscheinlich sinnvoll, auf Wochen/Monatsbasis zu aggregieren und den Test, dass High und Low chronologisch stattfanden auf den Tagesdaten zu machen.


Hm, ich kann dir im Augenblick nicht ganz folgen. Ich handle zwar EOD, aber dennoch auf Tagesbasis. Warum sollte ich da auf Wochen- oder gar Monatsbasis aggregieren?

EDIT: Ich hatte deine 2. Antwort nicht gesehen - vielen Dank! Den Link werde ich mir gleich reinziehen.

Edited by tlu, 30 June 2009 - 06:18 PM.

  • 0

#5 Krümel

Krümel

    User

  • *_skilled
  • 1,757 posts
  • 3754 thanks

Posted 30 June 2009 - 06:33 PM

Hm, ich kann dir im Augenblick nicht ganz folgen. Ich handle zwar EOD, aber dennoch auf Tagesbasis. Warum sollte ich da auf Wochen- oder gar Monatsbasis aggregieren?

Na ja, wenn man nen realistischeren Vergleich haben will. Wenn Du im Jahr auf EOD-Basis nur 20 Trades machst, ist es ja recht unfair, das mit nem idealen System zu vergleichen, welches jeden Tag nen (idealen noch dazu) Trade macht. Man kann so schwerlich trennen zwischen Anzahl an Trades/Jahr und Gewinn/Trade. Also dachte ich mir, man könne die Daten so aggregieren, dass das "ideale" System ungefähr genauso viele Trades macht wie Dein eigentliches, damit die einzige Vergleichsvariable der Gewinn/Trade ist indem man einfach in nen höheren Timeframe wechselt.

Aber das andere aus dem Link ist sicherlich eleganter. :OMG: Zumindest sehen die Screenshots echt nett aus (so ein System hätte ich auch gern *fg*).
  • 0
Wer nichts weiß, muss alles glauben.

Wichtig:
Alle von mir gemachten Aussagen und Antworten auf Fragen entsprechen lediglich meiner persönlichen Meinung und stellen keinerlei Rechts- oder Anlageberatung dar.


Wichtiger Hinweis für Besucher der Community!

Das Erstellungsdatum des von Dir aufgerufenen Themas liegt bereits einige Zeit zurück. Wir möchten darauf hinweisen, den Inhalt der Diskussion auf seine Aktualität hin zu prüfen. Weitere Informationen findest Du auf dieser Seite.


0 user(s) are reading this topic

0 members, 0 guests, 0 anonymous users