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

[amibroker] Signals not processed was: ... market neutral system



PureBytes Links

Trading Reference Links

It turns out, sometimes the backtester will stop processing signals
while there is still plenty of cash available to open new positions. The
following example demonstrates this behavior. Here, a high-priced stock,
GOOG, is first in the signal list because it has the highest position
score. If there is not enough cash to open a position in GOOG, none of
the other signals are taken, leaving the cash unused. The detailed log
contains this message "GOOG not entered because of insufficient funds". 
I'm not sure if this is a bug or design intent.

-Steve


// Use Filter = all US Common Stocks
// Range = July 1, 2008 to Nov 1, 2008
// Configure the SETTINGS -> REPORT = Detailed Log
maxTradingPositions = 20;
initialEquity = 100000;
SetOption("AllowPositionShrinking", true);
SetOption("InitialEquity", initialEquity);
SetOption("MaxOpenPositions", maxTradingPositions);
PositionSize = -100/maxTradingPositions; // Invest % of equity in single
security
SetOption("CommissionMode", 3); // price per share
SetOption("CommissionAmount", 0.015); // $ per share
SetOption("MinShares", 100);
SetOption("MinPosValue", 500);
SetOption("AllowSameBarExit", false);
RoundLotSize = 100;
PositionSize = -(100/maxTradingPositions);

Buy = dayofweek() == 1 && Close > 1.00;
Sell = dayofweek() == 5;
Short = Cover = 0;

if (Name() == "GOOG")
   PositionScore = 500001;
else
   PositionScore = 500000-Close;


--- In amibroker@xxxxxxxxxxxxxxx, "Tomasz Janeczko" <groups@xxx> wrote:
>
> As many signals will be processed as there is enough cash to open
positions.
> Also market neutral portfolios are supported directly without custom
backtester,
> thanks to new feature MaxOpenLong/MaxOpenShort.
>
> See this:
>
http://www.amibroker.com/devlog/wp-content/uploads/2008/10/readme5190.ht\
ml
>
> Scroll down the document to this part:
>
> CHANGES FOR VERSION 5.11.0 (as compared to 5.10.1)
> Backtester: Implemented SeparateLongShortRank
>
> To enable separate long/short ranking use:
> SetOption("SeparateLongShortRank", True );
>
> When separate long/short ranking is enabled, the backtester maintains
TWO separate "top-ranked" signal lists, one
> for long signals and one for short signals. This ensures that long and
short candidates are independently even if position score
> is not symetrical (for example when long candidates have very high
positive scores while short candidates have only fractional
> negative scores).
> That contrasts with the default mode where only absolute value of
position score matters, therefore one side (long/short) may
> completely dominate ranking if score values are asymetrical.
>
> When SeparateLongShortRank is enabled, in the second phase of
backtest, two separate ranking lists are interleaved to form final
> signal list by
> first taking top ranked long, then top ranked short, then 2nd top
ranked long, then 2nd top ranked short, then 3rd top ranked long
> and 3rd top ranked short, and so on... (as long as signals exist in
BOTH long/short lists, if there is no more signals of given
> kind, then
> remaining signals from either long or short lists are appended)
>
> For example:
> Entry signals(score):ESRX=Buy(60.93), GILD=Short(-47.56),
CELG=Buy(57.68), MRVL=Short(-10.75), ADBE=Buy(34.75), VRTX=Buy(15.55),
> SIRI=Buy(2.79),
>
> As you can see Short signals get interleaved between Long signals even
though their absolute values of scores are smaller than
> corresponding scores of long signals. Also there were only 2 short
signals for that particular bar so, the rest of the list shows
> long signals in order of position score
>
> Although this feature can be used independently, it is intended to be
used in combination with MaxOpenLong and MaxOpenShort options.
> Backtester: MaxOpenLong/MaxOpenShort implemented
>
> MaxOpenLong - limits the number of LONG positions that can be open
simultaneously
> MaxOpenShort - limits the number of SHORT positions that can be open
simultaneously
>
> Example:
> SetOption("MaxOpenPositions", 15 );
> SetOption("MaxOpenLong", 11 );
> SetOption("MaxOpenShort", 7 );
>
> The value of ZERO (default) means NO LIMIT. If both MaxOpenLong and
MaxOpenShort are set to zero (
> or not defined at all) the backtester works old way - there is only
global limit active (MaxOpenPositions) regardless of type of
> trade.
>
> Note that these limits are independent from global limit
(MaxOpenPositions).
> This means that MaxOpenLong + MaxOpenShort may or may not be equal to
MaxOpenPositions.
>
> If MaxOpenLong + MaxOpenShort is greater than MaxOpenPositions
> then total number of positions allowed will not exceed
MaxOpenPositions, and individual long/short limits will apply too.
> For example if your system MaxOpenLong is set to 7 and maxOpenShort is
set to 7 and MaxOpenPositions is set to 10
> and your system generated 20 signals: 9 long (highest ranked) and 11
short, it will open 7 long and 3 shorts.
>
> If MaxOpenLong + MaxOpenShort is smaller than MaxOpenPositions (but
greater than zero), the system won't be able to
> open more than (MaxOpenLong+MaxOpenShort).
>
> Please also note that MaxOpenLong and MaxOpenShort only cap the number
of open positions of given type (long/short).
> They do NOT affect the way ranking is made. I.e. by default ranking is
performed using ABSOLUTE value of positionscore.
>
> If your position score is NOT symetrical, this may mean that you are
not getting desired top-ranked signals from one side.
> Therefore, to fully utilise MaxOpenLong and MaxOpenShort in rotational
balanced ("market neutral") long/short systems
> it is desired to perform SEPARATE ranking for long signals and short
signals.
> To enable separate long/short ranking use:
> SetOption("SeparateLongShortRank", True );
>
> Best regards,
> Tomasz Janeczko
> amibroker.com
> ----- Original Message -----
> From: "Steve Davis" <_sdavis@xxx
> To: amibroker@xxxxxxxxxxxxxxx
> Sent: Monday, October 27, 2008 12:08 PM
> Subject: [amibroker] Re: How to get "total net position value" in
backtester for market neutral syste
>
>
> > How will the updated signal scores be processed? Aren't, the signals
> > already sorted by score upon entry to the custom backtester?
> >
> > --- In amibroker@xxxxxxxxxxxxxxx, "Mike" sfclimbers@ wrote:
> >>
> >> Have a look at the file "AmiBroker Custom Backtester Interface.pdf
> >> " posted by gp_sydney in the Files section of this group.
> >>
> >> Within your own custom backtest code, you can iterate through your
> >> open positions on a bar by bar basis. Gather the necessary
> >> statistics, then iterate through the signals for that bar and
adjust
> >> the positon score property as needed.
> >>
> >> Mike
> >>
> >> --- In amibroker@xxxxxxxxxxxxxxx, "olivier_molongo"
> >> <olivier_molongo@> wrote:
> >> >
> >> > Hello,
> >> >
> >> > How can I get "total net position value" in backtester?
> >> >
> >> > My system gives buy and sell signal with positionScore but I
would
> >> like
> >> > to backtest a market neutral system. One idea I have is to adjust
> >> > position score to favor long trades when I am net short and short
> >> > trades when I am net long.
> >> >
> >> > But how can I get the net position in AB? which is the sum of
> >> position
> >> > value of open trades.
> >> >
> >> > Regards,
> >> > Olivier
> >> >
> >>
> >
> >
> >
> > ------------------------------------
> >
> > **** IMPORTANT ****
> > This group is for the discussion between users only.
> > This is *NOT* technical support channel.
> >
> > *********************
> > TO GET TECHNICAL SUPPORT from AmiBroker please send an e-mail
directly to
> > SUPPORT {at} amibroker.com
> > *********************
> >
> > For NEW RELEASE ANNOUNCEMENTS and other news always check DEVLOG:
> > http://www.amibroker.com/devlog/
> >
> > For other support material please check also:
> > http://www.amibroker.com/support.html
> >
> > *********************************
> > Yahoo! Groups Links
> >
> >
> >
>



------------------------------------

**** IMPORTANT ****
This group is for the discussion between users only.
This is *NOT* technical support channel.

*********************
TO GET TECHNICAL SUPPORT from AmiBroker please send an e-mail directly to 
SUPPORT {at} amibroker.com
*********************

For NEW RELEASE ANNOUNCEMENTS and other news always check DEVLOG:
http://www.amibroker.com/devlog/

For other support material please check also:
http://www.amibroker.com/support.html

*********************************
Yahoo! Groups Links

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

<*> Your email settings:
    Individual Email | Traditional

<*> To change settings online go to:
    http://groups.yahoo.com/group/amibroker/join
    (Yahoo! ID required)

<*> To change settings via email:
    mailto:amibroker-digest@xxxxxxxxxxxxxxx 
    mailto:amibroker-fullfeatured@xxxxxxxxxxxxxxx

<*> 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/