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:
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?
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:
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?
Bearbeitet von tlu