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

Re: [amibroker] Re: PositionSize / Capital



PureBytes Links

Trading Reference Links

Al,
 
the intention indeed was to give more weight to higher volatile stocks.  I understand that this is opposite what volatility MM trading is all about but that was the whole idea. For my system it gave better results over the past 3 years (higher risk / higher reward).  Still I am going to stick with the more simple approach (fixed percentage)  which has been far more stable over the past 10 years of backtesting.
 
rgds, Ed
 
 
----- Original Message -----
From: Al Venosa
Sent: Monday, December 13, 2004 12:41 AM
Subject: Re: [amibroker] Re: PositionSize / Capital

Ed:

Your formula doesn't make much sense to me. The term stoploss/ref(C,-1) is simply the volatility of the stock, expressed as a fraction of the price, times a multiplier. Thus, for a $50 stock whose ATR is, say, 2 (highly volatile), and if you are using a multiplier of 2 with an equity of $100 K, then your positionsize statement specifies that the position size of the trade will be only $8,000 (100,000 * 4/50). For a less volatile stock (one whose ATR is only 1), then your positionsize would be only $4,000. So, you are allocating less money for less volatile stocks and more money for more volatile stocks, and the amount allocated in each case is tiny relative to your equity. This is the opposite of what volatility-based trading is all about. Did you leave something out?

Al Venosa

ed nl wrote:
well I just mentioned this because the range is rather narrow.  When testing this MM stuff on my system I noticed that it behaved very poor especially between 1998 and 2001. This is exactly the period the markets were very volatile. SInce volatility reduces the position size  my system hardly invested any money.
 
I tried giving risky trades more weight using (not sure if this is correct but it does approximately what I intended):
 
PositionSize = -100 * (stopLoss / Ref(C,-1));
this as I expected gives a better result than just using a constant percentage over the last 3 year and also better than the correct MM approach. Between 1998 and 2001 however it performs worse, suffering when the market goes crazy.
 
rgds, Ed
 
 
----- Original Message -----
Sent: Sunday, December 12, 2004 4:06 PM
Subject: [amibroker] Re: PositionSize / Capital


I love it. This also helps avoid the tiny positions somebody (Al?)
mentioned yesterday (and I've experienced also). But why do you say
it will usually probably use the 10 or 20% sized positions? Shouldn't
that mean you're setting your risk parameter unrealistically low?

--- In amibroker@xxxxxxxxxxxxxxx, "ed nl" <ed2000nl@x...> wrote:
> 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 -----
>   From: danielwardadams
>   To: amibroker@xxxxxxxxxxxxxxx
>   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
>
>
>         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





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
click here


Yahoo! Groups Links