Jump to content
Tom Next - Daytrading Community

Berechnung Perfect Profit


tlu

Recommended Posts

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
Link to comment
Share on other sites

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.

Link to comment
Share on other sites

Okeee, ich schwöre, ich hab nicht vorher gegooglet : gallery_446_5_235.gif

 

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.breakoutfutures.com/Newsletters...sletter0605.htm

(der hat auch Code dabei und macht so ne Berechnung, wie Du suchst, musst Du nur noch in Amibroker umschreiben :OMG:)

Link to comment
Share on other sites

"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?

 

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
Link to comment
Share on other sites

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*).

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
×
×
  • Create New...