PureBytes Links
Trading Reference Links
|
Yes, Ed, you are right. If your equity is
$50 K, and your positionsize is -10, your maximum position you can
allocate to one trade is $5,000. Since EBAY is selling for $114/shr
right now, and your round lot size is set to 100, then you cannot make
that trade since your allocation would be $11,400, which is more than
$5,000. Why do you want to limit your trade to 100 shares? In these
days of deep discount brokers like IB, you needn't worry about odd lots
anymore. The commission on a 43-share purchase would only be a buck at
IB. If your system picks EBAY as the top stock, then by all means,
don't limit yourself with round lots of 100. Go for minimum round lots
of 1 so that you can buy the top stocks on your positionscore list.
I don't think volatility and reliability are synonymous. A more
volatile stock will move faster, but your positionsize is smaller, so
therefore, you are limiting your risk of failure if the stock goes
against you. You are also allowing it to move more against you since
you are giving it more room to wiggle. You don't want volatility to
kill you. By the same token, a lower volatility stock will mover
slower, so you take on a bigger position because you want to get your
dollar profit and get out with a smaller point move. That's the beauty
of equal volatility positionsizing.
Al
ed nl wrote:
Al,
what noticed the backtester doing is
that say if you start of with $50000 and you set the "round lot size"
to 100 (what I do) and your PositionSize = -10 then if a stock like
EBAY is on top of the entry list (highest rank) the backtester will not
enter any stock because a 100 shares EBAY corresponds to an amount
higher than allowed. But this doesn't seem to explain why my simple
PositionSize approach works better.
I did not test this volatility based
management technique extensively yet. But on a first glance it also
might be that the more volatile the trade (and more risky therefor) the
more reliable also (I didn't test this yet). Guess it depends on the
kind of system you have. If one trades short term (like my system) then
taking larger positions in non-volatile stocks might increase the risk
because you end up with a whole bunch of non-risky losing trades :)
It will be nice to play with. I'll
let you know if I find something interesting,
rgds, Ed
-----
Original Message -----
Sent:
Saturday, December 11, 2004 1:53 PM
Subject:
Re: [amibroker] PositionSize / Capital
Ed,
I, too, have confirmed many times with backtesting what you report,
viz,, that positionsize = -x gives better performance results than
using volatility-based MM positionsizing. The non-MM code I've used in
the past is:
posqty = Optimize("posqty",5,2,10,1); // no. of stocks active at any
given time
PositionSize = -100/posqty; //equal equity model
I think I know what the problem is, but I have not as yet figured out
how to solve the problem with AFL. If you use the MM-based positionsize
statement as we have discussed (equal volatility model), i.e., PositionSize = -1 * C/StopAmt, and examine the tradelist, you will likely
discover that, often, not all 5 stocks are active all the time. In
other words, either you have idle capital earning nothing or you have
fewer active stocks than you want. Why is this? Because some stocks,
which might not be as volatilie as others, use up more of your capital
to initiate a position than a more volatile stock. Consequently, your
capital is used up before you have a chance to enter into your 4th or
5th stock. Instead of having 5 open positions, you might only have 3
because of this. Checking positionsize shrinking doesn't help because
you'll discover you might have tiny positions in your 5th stock. The
fewer stocks you have, the less diversified you are, and therefore the
more risky your portfolio. The more risk, the higher the DDs. This
problem cannot happen with the equal equity model since all positions
are equal in size, by definition.
One possible way around this might be to increase your margin so that
equity is expanded enough to allow full funding of all positions. But,
again, this also increases your risk. Another way might be dynamically
setting your risk to fit the volatility of each stock individually (the
lower the volatility, the lower the risk and therefore, the smaller the
positionsize for that stock). However, this changes your model so that
you no longer have equal volatility/equal risk (getting closer to the
equal equity model). So, the problem remains unsolved for the moment. I
have not had time to devote to cracking this problem yet, but some day
I hope to do this. If you have any ideas, I'm all ears.
Al Venosa
ed nl wrote:
Thanks for your effort Al. It is
very clear,
In one of my earlier posts I
posted
// money management block
stopLoss = Ref(bbb*ATR(20),-1);
// trade risk
tr = IIf(Buy,(stopLoss / BuyPrice),stopLoss / (ShortPrice + stopLoss));
// renormalisation coefficient
rc = 0.02 / tr;
// positionsize
PositionSize = rc * -100
it actually gives the same
result as your:
PositionSize = -2.0 * IIf(Buy,BuyPrice,ShortPrice) / stopLoss
except for short positions.
Exact the same it would be if I use: tr = IIf(Buy,(stopLoss /
BuyPrice),stopLoss / (ShortPrice));
Unfortunatelly I do not get
better results this way. Using just a simple PositionSize = -10 still
gives somewhat better results.
rgds, Ed
-----
Original Message -----
Sent:
Saturday, December 11, 2004 4:19 AM
Subject:
Re: [amibroker] PositionSize / Capital
ed nl wrote:
Al,
but how do you implement the
risk factor now?
ed
Ed:
Let us suppose you have established your risk as 1% (i.e., the maximum
you are willing to lose on a trade). Let us also suppose your initial
equity is $100,000. So, if the stock you buy (or short) goes down by
the amount based on your system, you lose only $1000, keeping you in
the game. Now, let us say you defined your volatillty-based stop in terms of 2*ATR(20), which you incorrectly
assigned to the variable TrailStopAmount. I say 'incorrectly' because
the TrailStop in AB was designed to mimic the Chandelier exit, which is
basically a profit target type of stock (it hangs down like a
chandelier from the highest high since the trade was initiated, if
long). I don't think you want the TrailStop to be your money management
stop. Rather, the MM stop is the max stoploss, defined as:
StopAmt = 2*ATR(20);
ApplyStop(0,2,StopAmt,1);
So, if your stock declines by 2*ATR(20) from your entry, you exit with
a 1% loss. Let's take an example. Stock A is selling for $40/share.
It's ATR(20) is $1/shr or 2.5% of 40. Your stop amount is 2*ATR(20),
which is $2/shr. How much stock do you buy? You simply divide your
risk, $1000, by 2*1, which is 500 shares. This amounts to an investment
of $40/shr * 500 shrs or $20,000. All of this can be coded in one
simple line of AFL plus the 2 lines above defining the MM stoploss:
PositionSize = -1 * BuyPrice/StopAmt;
where -1 is 1% of current equity (0.01 * 100,000 or $1000), BuyPrice =
$40/shr, and StopAmt is 2. Keep in mind that a negative sign means 1%
of CURRENT equity, which means compounded equity, not just a
constant initial equity of $100,000. If you carry through the above
math with your renormalization coefficient notation, you wind up with
the exact same answer.
One more thing. When you place your order, assuming you are trading
with EOD data, you do not know what the buyprice is until you buy the
stock, which is the next day. So, what most traders do is base their
positionsize on the closing price of the night before the entry.
Therefore, to place an order in the evening to be filled in the morning
at the open, your positionsize statement would actually be:
PositionSize = -1 * C/StopAmt;
where C is the closing price on the night before you buy. So, if you
use the code SetTradeDelays(1,1,1,1), then the above formula is OK.
However, if you use SetTradeDelays(0,0,0,0), then you have to ref the C
back a day.
This is probably more information than you were asking about, but I
hope it helps.
Cheers,
Al Venosa
Check AmiBroker web page at:
http://www.amibroker.com/
Check group FAQ at: http://groups.yahoo.com/group/amibroker/files/groupfaq.html
Check AmiBroker web page at:
http://www.amibroker.com/
Check group FAQ at: http://groups.yahoo.com/group/amibroker/files/groupfaq.html
Check AmiBroker web page at:
http://www.amibroker.com/
Check group FAQ at: http://groups.yahoo.com/group/amibroker/files/groupfaq.html
Yahoo! Groups Sponsor |
ADVERTISEMENT
| |
|
Yahoo! Groups Links
|
|