This way you can use a range: Maximum 20% minimum
10% of equity:
rsk = -2; // 2% PositionSize = Min(-10,Max(-20,rsk * Ref(C,-1) /
stopLoss));
In practice it most of the
time it probably either uses 10% or 20%.
Ed
----- Original Message -----
Sent: Sunday, December 12, 2004 3:40
PM
Subject: [amibroker] Re: PositionSize /
Capital
Al & Ed, This is exactly where I ended up
yesterday (hours after my post). When I tried it, though, I always ended
up taking the 20% positions rather than those defined by my risk. Thinking
it wasn't working, I gave up and went to bed.
But since someone
else thinks this should work, obviously I need to play with it some
more.
Dan
--- In amibroker@xxxxxxxxxxxxxxx, "ed nl"
<ed2000nl@xxxx> wrote: > Al, > > about the
part: "Your suggestion to limit positionsize not to exceed any
more than 20% of equity may be the solution since it goes hand in hand
with the philosophy of money management. That is, do not allow any one
position to exceed, say, 10 or 15 percent of your equity. The Turtles did
that, and I think lots of traders do that, too. So, I see nothing wrong
with that. Have you coded this in AFL" > > I think you can solve
this using: > > rsk = -2; // 2% > PositionSize =
Max(-20,rsk * Ref(C,-1) / stopLoss); > > now it will never use
more than 20% of equity. > > About the minimum number of trades I
don't know. In my system that would be impossible because sometimes good
entries just dry up and I can't find even find 5. > > rgds,
Ed > > ----- Original Message -----
> From: Al Venosa > To:
amibroker@xxxxxxxxxxxxxxx > Sent: Sunday, December 12, 2004
3:11 PM > Subject: Re: [amibroker] Re: PositionSize /
Capital > > > Dan: >
> Thanks for the ideas. You're not rambling; you're
thinking, and this discussion is healthy. Good ideas may stem from the
discussion, so by all means, keep posting. > > I
don't think you need a new built-in function called MinPos. Maybe TJ came
up with a solution the other day by suggesting you set the max open
positions to some large value like 10 of 15, even though you plan to take
on no more than 5 at any time. So, if you don't use up all your equity
using volatility-based positionsizing, you might add on new positions with
this approach. I haven't tested this idea yet, but I will. The problem
occurs when the opposite happens, namely, all your equity is used up
before you are able to add your 4th and 5th positions. Your suggestion to
limit positionsize not to exceed any more than 20% of equity may be the
solution since it goes hand in hand with the philosophy of money
management. That is, do not allow any one position to exceed, say, 10 or
15 percent of your equity. The Turtles did that, and I think lots of
traders do that, too. So, I see nothing wrong with that. Have you coded
this in AFL? I'm like Yuki: good with concepts buy lousy with creative
programming. > > Al Venosa >
> danielwardadams wrote: > >
> After thinking about this some more, I think
all I've described is > what could be
accomplished with two more built-in variables. MinPos
> could say you want no less than some minimum
number of positions (5 > in my example) and
MaxPositionSize could say you want to allocate no
> more than X% of capital to any one position
(20% in my example). > > Within these
constraints, your actual position sizing methond could
> be anything you want. >
> I'm probably rambling ......... >
> Dan > >
--- In amibroker@xxxxxxxxxxxxxxx, "danielwardadams"
> <danielwardadams@xxxx>
wrote: > > >
> Al & Anthony, > > I've also seen
the lower returns for volatility based versus equal
> > equity position sizing in the past and
didn't know what to do about > > it
(assuming I wanted more positions for more
diversification). > >
> > I'm not sure how one would code it in
.AFL, but would the following > >
represent a reasonable compromise? > >
> > (1) Start with an equal equity based
model based on, say, 5 > > positions
(position size = -20). So each part of the pie equals 20%
> > of total
equity. > > (2) Determine actual position
size within each piece of the pie > based
> > on volatility based sizing. So,
depending on your risk parameter, > one
> > might use only 17% of one piece of the
pie, 13% of another piece, > and
> > 20%, 8%, and 11% of the other
pieces. > > (3) Sum the used portions of the
pie (in this case 17+13+20+8+11 = > >
69%) and see what you have left. 31% in case. >
> (4) Allocate the remaining cash according to the equal equity
> model. > >
This means you get one more 20% piece of pie and only have 11% cash
> > remaining.
> > (5) Apply the above using your ATR based
position sizing > recursively
> > until your cash is minimized. So if you
only are able to use 9% of > > the piece
of pie left in (4) you take the 11% left from that piece
> > plus the 11% cash and you have 22% --
enough for another position. > So
> > in this case you end up with 7 positions
and only 2% left in cash. > > So your
cash is minimized and all your positions adhere to the ATR
> > based position
sizing. > > >
> Like I say, I have no idea how to code it but intuitively it makes
> > sense to
me. > > > >
Thoughts/comments? > >
> > Dan > >
> > (And, yes, I'm sure I'm not the first
person to think of it so my > >
apologies to those who have gone before). > >
> > --- In amibroker@xxxxxxxxxxxxxxx,
"Anthony Faragasso" > <ajf1111@xxxx>
> > wrote: >
> > Hello Al, > > >
> > > You
stated: > > >
> > > "the lower the volatility, the
lower the risk and therefore, the > >
smaller the positionsize for that stock. " >
> > > > > Is this a correct
assumption ? ...Would you want a larger > >
positionsize on a less risk position , and a smaller position on a
> > more volatile one
? > > > >
> > Anthony > > > -----
Original Message ----- > > >
From: Al Venosa > > > To:
amibroker@xxxxxxxxxxxxxxx > >
> Sent: Saturday, December 11, 2004 7:53
AM > > > 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 -----
> > >
From: Al Venosa > >
> To: amibroker@xxxxxxxxxxxxxxx
> > >
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
> > > >
> > > >
> Yahoo! Groups Sponsor
> >
>
ADVERTISEMENT > >
>
> >
>
> >
>
> > > >
> > > > >
------------------------------------------------------------ ------ >
-- > >
---------- > > > Yahoo! Groups
Links > > >
> > > a.. To
visit your group on the web, go to: > >
> http://groups.yahoo.com/group/amibroker/ >
> > >
> > b.. To unsubscribe from this group, send an
email to: > > >
amibroker-unsubscribe@xxxxxxxxxxxxxxx > >
> > >
> c.. Your use of Yahoo! Groups is subject to the
Yahoo! Terms > of
> > Service. > > >
> > > 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 > > a.. To visit your
group on the web, go to: > http://groups.yahoo.com/group/amibroker/ >
> b.. To unsubscribe from this group, send an
email to: >
amibroker-unsubscribe@xxxxxxxxxxxxxxx >
> c.. Your use of Yahoo! Groups is subject to
the Yahoo! Terms of Service.
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
|