Hello, The value of bo.Equity is correct.
And your findings are incorrect. "Use previous bar equity" works as described in the manual. You are making mistake in your thinking/debugging. Your formula is checking bo.Equity BEFORE calling ProcessTradeSignals(). And it is giving you last known equity value. That is the reason of your incorrect findings. If you are using custom backtester interface, there are clearly defined points where *you* are in charge and when AB is in charge (and can update anything). It will NOT do any "magical steps" out of blue right after for( bar = 0; bar < BarCount; bar++ ) loop. If you want to update equity to the current bar you either must call ProcessTradeSignals() (it will update equity and process signals) OR... if you want to have current bar equity WITHOUT calling ProcessTradeSignals, you have to call UpdateEquity( bar, 0 ) function. The difference that "Use previous bar equity" makes in case of CBT is that ***INSIDE*** ProcessTradeSignals() it will use either previous bar or current bar equity, depending on setting, and it will affect the size of position open (if you are using spsPercentOfEquity or otherwise depend on available equity) Recommended reading: http://www.amibroker.org/userkb/2008/03/16/amibroker-custom-backtester-interface-2/ Best regards, Tomasz Janeczko amibroker.com On 2010-07-15 20:15, rise_t575 wrote: > > Hi, > > I've just found out what is happening, but I have not the slightest idea why. > > The backtester is *always* using previous bar equity for positions sizing, > although this setting is *not* ticked, and I haven't included the > corresponding SetOption function. > > In fact, the backtests and the debugging logs are exactly identical when > UsePrevBarEquityForPosSizing is True and when it is False. > > Is this some bug or isn't that setting being used when using CBT for position > sizing? > > Thanks in advance! > > --- In [email protected], "rise_t575"<ris...@...> wrote: >> Hello, >> >> The following are the (debug) outputs of a tested position sizing algorithm. >> >> I've attached a) part of the code , b) the output of the _TRACE() function >> from within the CBT code (the TRACE function had been placed within the most >> inner "if{}" code block), and c) the output of the AA Results window >> (Detailed Log). >> >> Note that on the _TRACE() output, the equity on day 2 (21.01.2000) is still >> at its intial value (100000), so it hasn't been adjusted for price changes >> of the position taken at the close of day 1 (which did exist). >> >> Since this equity value is used for calculation of the position size of >> subsequent signals, this is a problem. >> >> On the other hand, the output of the AA Results windows on day 2 is correct >> (99823.2) >> >> And - no - "Use previous bar equity for position sizing" is not activated. >> >> Does anyone have an idea why bo.equity delivers incorrect values in this >> case? >> >> Thanks in advance! >> >> Part of CBT code in question: >> >> for ( sig = bo.GetFirstSignal( bar ); sig; sig = >> bo.GetNextSignal( bar ) ) >> { >> if ( sig.IsEntry() ) >> { >> currEquity = bo.Equity; >> pointVal = sig.PointValue; >> cbtAtr = StaticVarGet( "statAtr" + sig.Symbol ); >> psUnits = int( currEquity * ( pctVolaRisk / 100 ) / >> ( cbtAtr[bar] * pointVal ) ); >> [_TRACE] >> sig.PosSize = ( 2000 + psUnits ) * -1; >> } >> } >> >> >> >> DebugView Output: >> [2856] Date: 20.01.2000 Symbol: FDRY Equity: 100000 Cash: 100000 ATR: >> 14.383258 Units: 69 >> [2856] Date: 21.01.2000 Symbol: PCLN Equity: 100000 Cash: 89818.2 ATR: >> 27.671930 Units: 36 >> [2856] Date: 21.01.2000 Symbol: TYC Equity: 100000 Cash: 89818.2 ATR: >> 14.318740 Units: 69 >> [2856] Date: 25.01.2000 Symbol: AKAM Equity: 98382.8 Cash: 59163.1 ATR: >> 27.247997 Units: 36 >> [2856] Date: 03.02.2000 Symbol: IBM Equity: 97308.7 Cash: 49107.9 ATR: >> 4.628230 Units: 210 >> [2856] Date: 04.02.2000 Symbol: FDRY Equity: 97846.4 Cash: 42716.2 ATR: >> 13.667122 Units: 71 >> >> >> AA Results Output: >> 20.01.2000 >> Entry signals(score):FDRY=Buy(1), >> Exit signals: >> Enter Long, FDRY, Price: 147.563, Shares: 69, Commission: 0, Rank: 1, >> Equity 100000, Margin Loan: 0, Fx rate: 1 >> 1 Open Positions: , FDRY (+69), Equity: 100000, Cash: 89818.2 >> >> 21.01.2000 >> Entry signals(score):PCLN=Buy(1), TYC=Buy(1), >> Exit signals: >> Enter Long, PCLN, Price: 381, Shares: 36, Commission: 0, Rank: 1, >> Equity 100237, Margin Loan: 0, Fx rate: 1 >> Enter Long, TYC, Price: 245.493, Shares: 69, Commission: 0, Rank: 1, >> Equity 100237, Margin Loan: 0, Fx rate: 1 >> 3 Open Positions: , FDRY (+69), , PCLN (+36), , TYC (+69), Equity: >> 99823.2, Cash: 59163.1 >> >> 24.01.2000 >> Entry signals(score): >> Exit signals: >> 3 Open Positions: , FDRY (+69), , PCLN (+36), , TYC (+69), Equity: >> 98382.8, Cash: 59163.1 >> >> 25.01.2000 >> Entry signals(score):AKAM=Buy(1), >> Exit signals: >> Enter Long, AKAM, Price: 279.313, Shares: 36, Commission: 0, Rank: 1, >> Equity 98825.1, Margin Loan: 0, Fx rate: 1 >> 4 Open Positions: , FDRY (+69), , PCLN (+36), , TYC (+69), , AKAM >> (+36), Equity: 98806.8, Cash: 49107.9 >> > > > > ------------------------------------ > > **** IMPORTANT PLEASE READ **** > This group is for the discussion between users only. > This is *NOT* technical support channel. > > TO GET TECHNICAL SUPPORT send an e-mail directly to > SUPPORT {at} amibroker.com > > TO SUBMIT SUGGESTIONS please use FEEDBACK CENTER at > http://www.amibroker.com/feedback/ > (submissions sent via other channels won't be considered) > > For NEW RELEASE ANNOUNCEMENTS and other news always check DEVLOG: > http://www.amibroker.com/devlog/ > > Yahoo! Groups Links > > > >
