Let me correct my previous e-mail first (corrections are in red):

Considering bo is the backtester object;

In Amibroker:
- bo.Equity is the bar by bar value of the equity
- bo.Equity = bo.Cash + total value of positions //see below for definition
- bo.Cash = (Entry Bar)Equity - total(margindeposit*shares) // Stays
constant as long as the positions are maintained
- Value of position = margindeposit*shares +- position P&L

In real life:
- Equity is the day by day value of the equity
- Equity = Cash + total(margindeposit*shares) +- total(position P&L)
- Cash = Equity - total(margindeposit*shares) +- total(position P&L)
- value of position - no need to define (at most the initial
margindeposit*shares is required to keep the position)

---
Mike

Let me give you an extreme example:
Please assume that you enter some positions at a bar and you have $50 cash
left. All the positions are profitable and you have total(position P&L) of
$50,000. Your "buyingPower" variable increases to $50,050. Backtester's
buying power stays as $50. It cannot open a position as long as it doesn't
have cash.

I wonder your additional comments.

Thank you.
Ilhan Ketrez

2010/3/3 Mike <[email protected]>

>
>
> It's been a while since I looked at this, so do your own testing. But, try
> something like this:
>
> gain = bo.Equity - bo.Cash + bo.MarginLoan; // Unrealized gain from
> holdings
>
> buyingPower = (bo.Cash + gain) * 2; // Half equity : half margin.
>
> Mike
>
>
> --- In [email protected] <amibroker%40yahoogroups.com>, Ilhan
> Ketrez <ketrezil...@...> wrote:
> >
>  > Hello
> >
> > Thank you for participating.
> > As you mention and as I understand, considering bo is the backtester
> object;
> >
> > In Amibroker:
> > - bo.Equity is the bar by bar value of the equity
> > - bo.Equity = bo.Cash + total value of positions //see below for
> definition
> > - bo.Cash = bo.Equity - total(margindeposit*shares)
> > - Value of position = margindeposit*shares +- position P&L
> >
> > In real life:
> > - Equity is the day by day value of the equity
> > - Equity = Cash + total(margindeposit*shares) +- total(position P&L)
> > - Cash = Equity - total(margindeposit*shares) +- total(position P&L)
> > - value of position - no need to define (at most the initial
> > margindeposit*shares is required to keep the position)
> >
> > Amibroker states that due to the ambiguity & variance in initial margin
> > deposits and maintenance margin deposits,
> > they prefer to include it in the position value variable. However this
> > solution prevents coding margin calls and
> > hence also prevent playing at the limits in terms of position sizing such
> as
> > opening positions by using
> > profits of open positions.
> >
> > I wonder your additional comments on the subject.
> >
> > Sincerely,
> > Ilhan
> >
> >
> >
> >
> >
> >
> > 2010/2/25 tf28373 <tom...@...>
>
> >
> > >
> > >
> > > I've thought that it's just required to define the difference between
> > > bo.Equity (which - as I've understood - is current value of our intial
> > > equity and all open positions) and bo.Cash (initial capital minus cost
> of
> > > opening position that is margin deposit) in order to estimate if trades
> are
> > > gainers/losers and, thus, current available capital...? Isn't it like
> that?
> > >
> > > --- In [email protected] <amibroker%40yahoogroups.com><amibroker%
> 40yahoogroups.com>, Ilhan
>
> > > Ketrez <ketrezilhan@> wrote:
> > > >
> > > > Yes. Simple backtester doesn't know the equity and capital available.
> > > > CBI does know the Equity.
> > > > Even the CBI doesn't know the actual available capital unless we
> define
> > > and
> > > > calculate ourselves.
> > > > And even if we define and calculate, we still cannot utilize it when
> we
> > > need
> > > > since we cannot define it as BacktesterObject.Cash.
> > > > BacktesterObject.Cash gives the difference of Equity - entry time
> (shares
> > > *
> > > > margindeposit). Cash earned/lost by the position stays in the
> position
> > > and
> > > > doesn't change the BacktesterObject.Cash.
> > > >
> > > >
> > > > 2010/2/10 B S <bs2167@>
> > >
> > > >
> > > > >
> > > > >
> > > > > Yes, thanks...that's similar logic to what Paul Ho suggested with
> his
> > > > > multiplex function, but it unfortunately does not address the issue
> of
> > > > > picking between simultaneous signals from multiple systems based
> upon
> > > the
> > > > > capital available to each system (unknown until you get to that bar
> in
> > > the
> > > > > backtest loop).
> > > > >
> > > > > ------------------------------
> > > > > *From:* Ilhan Ketrez <ketrezilhan@>
> > > > > *To:* [email protected] 
> > > > > <amibroker%40yahoogroups.com><amibroker%
> 40yahoogroups.com>
>
> > >
> > > > > *Sent:* Wed, February 10, 2010 2:18:41 PM
> > > > > *Subject:* Re: [amibroker] Multiple Systems & Risk Mgmt in one
> formula
> > > > >
> > > > >
> > > > >
> > > > > Setting different ranges of scores and buy-sell prices for
> different
> > > > > systems by simple IIF function may be a solution, at least lightens
> the
> > > > > problem I guess.
> > > > >
> > > > > 2010/2/10 B S <bs2...@yahoo. com <bs2167@>>
> > >
> > > > >
> > > > >>
> > > > >>
> > > > >> Hi-
> > > > >>
> > > > >> I asked Marcin a question related to this earlier, but given the
> > > > >> considerable interest in the past on this board regarding managing
> > > multiple
> > > > >> systems, I'd thought put some further thoughts here. My
> understanding
> > > of
> > > > >> the conclusion reached during the last round of discussions was
> that
> > > each
> > > > >> individual should use low-level CBT to accomplish their multiple
> > > systems
> > > > >> management goals. So I've done that, but in the end its of no
> > > practical use
> > > > >> because of the incredible number of static arrays that were
> required
> > > to do
> > > > >> it - it 'works' on small samples/tests but the memory demands are
> too
> > > great
> > > > >> for things that I'd actually use it for. As my objectives were
> rather
> > > > >> simple, I imagine that others are still wrestling with similar
> issues.
> > > > >>
> > > > >> As an example, part of my plan was to limit the % of equity that
> was
> > > > >> employed by any one system at a given time. Therefore, while in
> the
> > > > >> backtester I needed to know which system or systems generated the
> > > signal.
> > > > >> So I started by creating a static array that i could later access
> in
> > > the
> > > > >> CBT which contained flags (1,2,4,etc.) indicating which system or
> > > systems it
> > > > >> came from. However, because of the memory issues, I decided to
> stuff
> > > these
> > > > >> flags into the positionsize property and just determine the actual
> > > size
> > > > >> later while looping through CBT. That allowed me to determine
> which
> > > systems
> > > > >> signals were coming from, and then choose which model to allocate
> the
> > > trade
> > > > >> to (in the event of multiple simultaneous signals), but I still
> needed
> > > to
> > > > >> get the correct entry price. There could be as many entry prices
> as I
> > > have
> > > > >> systems, and since I don't know which I'll be using until I get to
> the
> > > > >> backtester, I needed to store all of them - another static array.
> This
> > > > >> process continued like this and then it occurred to me that just
> about
> > > all
> > > > >> of these issues would go away if I could just attach the
> information I
> > > > >> needed to the entry signal object. So for example, the user could
> set
> > > > >> PositionSize1, PositionSize2, PositionScore1, PositionScore2,
> > > BuyPrice1,
> > > > >> BuyPrice2, and so on...or perhaps just dummy variables... Dummy1,
> > > Dummy2,
> > > > >> etc.. I'm sure there's a memory cost to doing this, but it can't
> be
> > > > >> anything like storing all these static arrays (is this correct? i
> > > really
> > > > >> have no idea what i'm talking about). Also, I'm sure just making
> these
> > > > >> additional property slots available will come at some performance
> > > cost, but
> > > > >> perhaps adding them could be an option in settings.
> > > > >>
> > > > >> For all I know, editing the number of properties that can be
> stored in
> > > a
> > > > >> signal object is already possible - is it? If not, do others think
> > > this
> > > > >> would be useful? Is there a better way of achieving the types of
> > > things
> > > > >> that I'm trying to do?
> > > > >>
> > > > >> Appreciate any dialogue whatsoever on this - have spent an
> embarassing
> > > > >> amount of time on it without much to show for it.
> > > > >>
> > > > >>
> > > > >>
> > > > >
> > > > >
> > > > >
> > > >
> > >
> > >
> > >
> >
>
>  
>

Reply via email to