PureBytes Links
Trading Reference Links
|
TJ:
I noticed an error in your Example 3 calculation of Expectancy. Here is
the questionable line:
Risk = ( MaxLossPercentStop / 100 ) *
trade.GetEntryValue();
In your text, you write:
// risk is calculated as the maximum
value we can lose per trade
// in this example we are using max. loss
stop
// it means we can not lose more than
(MaxLoss%) of invested amount
// hence risk
The third comment line should read: //it means
we cannot lose more than MaxLoss% of total equity per trade. It does NOT mean we cannot lose more than MaxLoss% of
INVESTED AMOUNT. That would be way too conservative. We always compute
risk as a fraction of TOTAL
CURRENT EQUITY.
The term "trade.GetEntryValue()" is the investment
or dollar value of a particular trade, i.e., its positionsize in
dollars. Since risk is a fraction of total EQUITY you are willing to
lose on any given trade, you cannot use trade.GetEntryValue() in the
risk assignment code. So, if, at the very beginning of a backtest, you
start out with an initial equity of $100,000, each trade initiated
risks $1,000, regardless of the stock's price or positionsize. If you
buy 5 stocks on day 1, the risk PER STOCK is $1,000, whether the
positionsize is $10,000 or $45,000; so, your total risk for the first
day is 5% (5 trades * $1,000 per trade). What you have done is divided
your $1,000 risk among all 5 stocks. So, the trade.GetEntryValue() term
must be replaced by an equity function (InitialEquity for the first
trades on Day 1, and Equity for subsequent trades). As of yet, I don't
know how to call InitialEquity() or Equity() in this new interface.
What would you use in place of trade.GetEntryValue()?
Al Venosa
Check AmiBroker web page at:
http://www.amibroker.com/
Check group FAQ at: http://groups.yahoo.com/group/amibroker/files/groupfaq.html
Yahoo! Groups Links
|
|