Registrierung Kalender FAQ & Boardregeln Suche Mitgliederliste Moderatoren und Administratoren Linkdatenbank Startseite
Tradestation User Group Germany » freie Foren » Posts aus dem alten Userforum » EL-Code zu Optimal f » Hallo Gast [registrieren|anmelden]
« Vorheriges Thema Nächstes Thema » Druckvorschau | An Freund senden | Thema zu Favoriten hinzufügen
Neues Thema erstellen Antwort erstellen
Autor
Beitrag
_Stefan
Administrator



Dabei seit: 12 2001
Herkunft: User altes Forum
Beiträge: 13

_Stefan ist offline
  EL-Code zu Optimal fAntwort mit Zitat Beitrag editieren/löschen Nach weiteren Beiträge von  suchen Diesen Beitrag einem Moderator melden        IP Adresse Zum Anfang der Seite springen

Hallo,

ich suche EL-Code zu Optimal f. Hat das schon jemand ausprobiert oder den Code von irgendwo her erhalten? Wahrscheinlich ist dies ein schwieriges Unterfangen, wenn nicht sogar unmöglich.

Vielen Dank.

Stefan

31.05.2001, 14:10 Profil von Füge  deiner Freunde-Liste hinzu Email an _Stefan senden Homepage von _Stefan
_Michael
Administrator



Dabei seit: 12 2001
Herkunft: User altes Forum
Beiträge: 61

_Michael ist offline
  RE: EL-Code zu Optimal fAntwort mit Zitat Beitrag editieren/löschen Nach weiteren Beiträge von  suchen Diesen Beitrag einem Moderator melden        IP Adresse Zum Anfang der Seite springen

Diese Frage kam bereits in einer anderen email-Liste vor. Folgende Antwort folgte darauf. Habe Code nicht getestet (und auch nicht gelesen). Vielleicht hilft es Dir ja weiter.

mm


>Has anybody been able to successfully code Optimal f in TradeStation code?
>It seems as though it is impossible to do so, but there are people out
>there that can program a lot better than me.


There is an easy way to calculate Optimal_f with TradeStation. This post
will illustrate it with an example.

What Ralph Vince s Optimal_f calculation does is to compute what fraction
of your trading account balance you should risk in each trade such that
your account balance is the maximum possible value after taking all the
trades specified by your trading system. He calls this the "TWR" for
"Terminal Wealth Relative"

He defines "Optimal_f" as a fraction of the biggest losing trade of the
historical series of trades. Obviously, this fraction will be less than 1.0
since a bet equal to your biggest losing trade will assure that you lose
all your money on that losing trade.

You can use the Optimization function of TradeStation to search for this
optimum quite easily.

However, it is a little tricky since you need to create an input to the
trading system that you can use to run through a sequence of values with
the Optimization procedure. But since you do not know the size of the
largest losing trade before you run the test, you cannot search for
Optimal_f directly.

So I created a variable which I call "Leverage". This is defined as the
dollar value of the trade as a multiple of the value of your trading
account. It is usually greater than one when trading stocks and can be less
than one when trading futures.

Using a "Leverage" of 1.0 means you invest your total trading account on
each trade. This is what you would do if you used the total balance of your
account to buy shares of a stock, leaving no cash in the trading account.

Using a leverage of 2.0 means that you borrow an amount equal to your
trading account and invest two times the value of your account on each
trade. In the example below, the Optimal_f occurs with a leverage of about
5.4 which means you would be borrowing 4.4 times the value of your trading
account to trade.

To demonstrate this I used a simple trading system that buys the daily SPX
cash index on Monday at the Open and exits on Friday at the Close. The
dollar value of each Monday s trade is equal to the size of the trading
account at the end of the previous week multiplied by the "Leverage" input.

We can then optimize this system for the value of "Leverage" that results
in the highest "Total Net Profit". Then we can calculate the value of
Optimal_f from the resulting system performance parameters. The attached
chart shows the graph from the optimization report resulting from
optimizing on "leverage" over the range of 1 to 9. The curve is not
perfectly smooth because TradeStation rounds the number of shares traded to
an integer number. (The code for this system is appended below and attached
as an ELA file.)

Two "modes" of operation are provided based upon an input parameter:

> Mode = 0

The "Unequalized" mode assumes the following relationship:

Trading_account / Shares = a constant for all trades
= Biggest_Loss / Optimal_F

This is the case most often mentioned in the books. In this example,
the value of about 5.3 for "Leverage" resulted in the maximum
net profit of about $23,600. This corresponds to an Optimal_f of
about 0.31 (See the print log). It gives the same results as all
three of the methods described in Vince s, "Portfolio Management
Formulas", Chapter 4.

> Mode = 1

The "Equalized" mode assumes the following relationship:

(Trading_account / Shares) * (Initial_share_price / Share_Price)
= a constant for all trades
= Biggest_Loss / Optimal_F

This case is described in Ralph Vince s book, "The Mathematics of
Money Management" page 83. (I understand from private correspondences
with Ralph that it is also covered in more detail in his latest book.)

In this example, the value of about 6.4 for "Leverage" resulted in the
maximum net profit of about $28,500. This corresponds to an Optimal_f of
about 0.29 (See the print log)

The usual problem with trading at Optimal_f is the drawdowns. It
mathematically will result in the highest return IF THE FUTURE STATISTICS
OF THE MARKET YOU ARE TRADING ARE EQUAL TO THOSE OF THE PAST. This is a big
assumption for most people.

This example illustrates this fact in a crude way. This trading system is
sort of like a buy/hold system for an S&P index fund (except for weekends).
To trade at Optimal_f, for an account size of $20,000 you would need to
borrow about $100,000 and buy about $120,000 worth of an S&P index fund.
Would anybody you know want to buy/hold the S&P for the past year with that
kind of leverage?

The system/market has a Sharpe Ratio of about 0.6 (bad) with an annualized
return of 130% (great) but with a standard deviation of returns of 220%
(terrible). So the peaks and valleys of the equity curve would be enormous.

Hope this has been useful.

Bob Fulks

---------

{ *******************************************************************

System: _Optimal_f_Demo

Last Edit: 12/27/98

Coded By: Bob Fulks

Description: This system buys on the open on Mondays and exits
on the close of Fridays. The size of each trade is determined
by the size of the trading account times the input called
"Leverage". No correction was made for Monday/Friday holidays.

Inputs:

Leverage - This is the input used to iterate through the
sequence of values using the TradeStation Optimization
operation. Optimize for Total Net Profit. This results in
the conditions for Optimal_f.

Use the value = 0 (zero) to force the system to trade one
share for all trades. This can be used to create the series
of trades requires to calculate Optimal_f by the methods
in Vince s books.

PrntMode - Set to zero for no detail, Set > zero for detail.

Mode - Set to zero to optimize by the "Unequalized" method. This
sets the parameters based upon the price at the first trade
and lets the actual leverage vary as required. The results
duplicate the methods described by Vince in his books. It
trades one share of stock for each:

Biggest_loss_per_share / Optimal_f

we have in our account. (This value is a constant for all
trades.) The actual leverage used will vary with each trade.

Set to non-zero to use the "Equalized" method. This dynamically
adjusts the shares traded on each bar while holding the
leverage constant over all bars. This method is described by
Vince in is 1992 book, page 83. The leverage used will be a
constant for all trades.

********************************************************************}

Input:Leverage(1), {Leverage used}
PrntMode(0), {PrintMode: No detail = 0, Detail > 0}
Mode(0); {Unequalized = 0, Equalized method <> 0}

Vars:Value(20000), {Beginning value of trading account}
NetValue(0), {Net value of trading account every bar}
Invest(0), {Amount invested on each trade}
TShares(0), {Number of shares/contracts bought each trade}
PrPerShare(0), {Profit per share}
OptF(0), {Optimal_f calculated}
SClose(0), {Close on first Friday}
BLoss(0), {Biggest loss per share}
ActLever(0), {Actual leverage used on each trade}
First(TRUE); {True on first Friday only}

if CurrentBar = 1 and Leverage = 0 then Value = Close * BigPointValue;

NetValue = Value + NetProfit + OpenPositionProfit;

if DayOfWeek(Date) = 5 then begin

{Calculate SClose on first trade}
if Mode = 0 then begin
if First then begin
SClose = Close;
First = FALSE;
end;
end else SClose = Close;

ExitLong at Close;

{Calculate biggest loss per share}
if TShares <> 0 then PrPerShare = PositionProfit(0) / TShares;
BLoss = iff(PrPerShare < BLoss, PrPerShare, BLoss);

{Calculate number of shares to buy}
Invest = iff(NetValue >= 0, Leverage * NetValue, 0);
TShares = iff(Leverage = 0, 1, Round(Invest/SClose,0));
Buy TShares shares next bar at market;

if PrntMode > 0 then begin
if NetValue <> 0 then ActLever = TShares * Close / NetValue;
Print(" ", Date:6:0, " B", Close:5:2, NetValue:8:0, Invest:8:0,
TShares:5:0, PrPerShare:6:2, BLoss:4:2, ActLever:4:2, " ");
end;
end;

{Calculate & print Optimal_f from performance data}
if LastBarOnChart then begin
OptF = -Leverage * BLoss / SClose;
Print(Leverage:4:3, NetProfit:8:0, BLoss:4:2, Close:5:2, OptF:3:4);
end;

31.05.2001, 16:10 Profil von Füge  deiner Freunde-Liste hinzu Email an _Michael senden Homepage von _Michael
  « Vorheriges Thema Nächstes Thema »
Neues Thema erstellen Antwort erstellen
Gehe zu:

Powered by: Burning Board 1.1.1 © 2001 WoltLab GbR