[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[amibroker] Re: PositionSize / Capital



PureBytes Links

Trading Reference Links


RE: "> 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."

I have this problem too. I used to fight it and always tried to come 
up with systems that kept me fully invested.  Now, however, I just 
assume my system is telling me the right thing about the market (/my 
universe of stocks) and that portion of my portfolio remains in cash.

I didn't see TJ's post about setting max positions to more than you 
really need/want. In my test, I said 10 max positions and 20% equity. 
It's just the volatility based position sizing that didn't seem to be 
working.

I'll look for TJ's post(s) on this.

Dan

--- In amibroker@xxxxxxxxxxxxxxx, "danielwardadams" 
<danielwardadams@xxxx> wrote:
> 
> 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.





------------------------ Yahoo! Groups Sponsor --------------------~--> 
$4.98 domain names from Yahoo!. Register anything.
http://us.click.yahoo.com/Q7_YsB/neXJAA/yQLSAA/GHeqlB/TM
--------------------------------------------------------------------~-> 

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

<*> To visit your group on the web, go to:
    http://groups.yahoo.com/group/amibroker/

<*> To unsubscribe from this group, send an email to:
    amibroker-unsubscribe@xxxxxxxxxxxxxxx

<*> Your use of Yahoo! Groups is subject to:
    http://docs.yahoo.com/info/terms/