if this is the problem then I posted an example on this (#112783)
here:
http://finance.groups.yahoo.com/group/amibroker/message/112783
---
In amibroker@xxxxxxxxxps.com,
"Tomasz Janeczko" <groups@xxx> wrote:
>
> Ton,
>
> Please read this:
> http://www.amibroker.com/f?setbacktestmode
>
> There are 4 different backtest modes and what you are trying to
do
requires backtestRegularRaw, instead of backtestRegular (the default
one).
>
> Best regards,
> Tomasz Janeczko
>
amibroker.com
> ----- Original Message -----
> From: Ton
Sieverding
> To: amibroker@xxxxxxxxxps.com
> Sent: Thursday, August 30, 2007 10:20 AM
> Subject: Re:
[amibroker] Re: How do I backtest placing a
restricted number of limit
orders each night?
>
>
> Yes Skynet is a PITA. But as you
know they are not the only one in
Belgium giving email problems. Anyway I
see we have some
misunderstanding about my 'You dont know which signal will
be used by
the Backtester'. No I am not talking about Intraday signals and
am of
course using with EOD prices, the yesterday's signal. An yes
I
therefore also use the settradedelays(0,0,0,0) Backtester setting.
So
that is not my problem. The problem is that due to the
portfolio
constraint the Backtester only takes a small part of the 'based
upon
my rules' available signals. It's more or less the same as with
the
Exrem() command. Only there I know what's happening. With
the
Backtester not ...
>
> I am getting more and more the
feeling that I am trying to solve
something that by definition can't be
solved. So I will do some extra
testing to find out if there is some clou
that explains everything or
let the thing what it is. Thanks anyway for
following up ...
>
> Regards, Ton.
>
> -----
Original Message -----
> From: ed2000nl
> To: amibroker@xxxxxxxxxps.com
> Sent: Thursday, August 30, 2007 9:25 AM
> Subject: [amibroker]
Re: How do I backtest placing a restricted
number of limit orders each
night?
>
>
> again Emails not getting through, $%@&$@#
Belgacom ...
>
> I wrote:
>
> maybe I am missing
some deeper thought on portfolio type systems and
> backtesting but my
system performs as I would expect in the practice
> so I assume I
understand how it works.
>
> You say: "You just do not know which
signal will be used by the
> Backtester." This could be true if you
allow your EOD system to add
> stocks using intraday signals. However in
my case I calculate my
> signal for today using yesterdays EOD data.
Then you know
exactly what
> you need to do and it makes no sense to
analyse the other signals
> because you don't use them in the practice.
>
> So to create a backtest that can exactly be performed in
the
practice
> (excluding slippage and stocks that are not allowed to
short) I use:
>
> settradedelays(0,0,0,0);
>
>
and then define my signals as:
>
> Buy = ref(Buy,-1);
>
Short = ref(Short,-1);
>
> also my cover and sell signals
are delayed by one bar but for the
> exits you can also allow for an
intraday exit at a target price.
>
> If you like I can give you
an example system that exactly calculates
> what you need to do the next
day,
>
> rgds, Ed
>
>
> --- In amibroker@xxxxxxxxxps.com,
"Ton Sieverding"
> <ton.sieverding@> wrote:
>
>
> > That's correct. But using rotational trading will give me
a
> completely different approach. I want to Backtest trading rules
on
> portfolio level. See if these rules give me in a real world
>
environment with let's say 20 stocks in portfolio a
profitable
system
> yes or no. For me the only way to find out if
these rules are
> profitable is using the Explore function and exporting
the
result to a
> spreadsheet for further analysis. Only then you
will get all the
> signals. And in most cases the result I get is
different than
the one
> from the Backtester. Simply because of the
portfolio constraint. The
> Backtester is only using a small part of all
created signals. And I
> have the feeling that the occurrence of these
signals have a random
> character. You just do not know which signal
will be used by the
> Backtester. But your right, with rotational
trading you will get a
> systematic rebalancing of the portfolio
...
> >
> > Now my problem is that I just do not know if I
am missing
something
> in the Backtester approach or that I am just
trying to do something
> that by definition is impossible ...
>
>
> > Regards, Ton.
> >
> >
> >
----- Original Message -----
> > From: vlanschot
> > To:
amibroker@xxxxxxxxxps.com
> > Sent: Wednesday, August 29, 2007 11:35 AM
> > Subject:
[amibroker] Re: How do I backtest placing a restricted
> number of limit
orders each night?
> >
> >
> > Hi Ton,
>
>
> > Perhaps looking at the rotational trading version can help
to
clarify
> > things (I hope).
> >
> > In
line with your argument, new signals have no effect UNLESS
some
>
> condition is met which rebalances the portfolio. This is easiest
>
> perceived in rotational mode, since it forces the portfolio
> >
to "rebalance" at each bar. I hope we can agree that one has
to have
> > some conviction as to the explanatory power for excess returns
of
> > the "factors" (or think "indicators") which are used to
define
the
> > condition. In other words, any score on a factor
(momentum,
> > valuation, etc.) implies its relative expected
return, i.e. a
higher
> > score is preferable. If we agree on
that then, based on your
> > condition, unless an existing holding
meets this condition
(i.e. has
> > the minimum score) it is
replaced by another security
(assuming at
> > least one meets
this condition). In case of the condition
being met,
> > any new
signals are legitimately "superfluous" in that they
are not
> >
better signals. Otherwise our previous agreement falls apart. The
>
> only way, in my view, in which new (or rather confirming)
signals are
> > put into practise in the portfolio is by adding/deducting to the
> > weights of existing holdings (particularly if you're
judged
against a
> > benchmark) which is where scalein/out comes
in.
> >
> > Now, first, any rotational system can (often
more flexibly) be
> > implemented via ordinary BSSC-rules. Second, I
do agree that
there
> > are limitations to backtesters, even AB's
CBT. The main one
> > is "custom cash management": the inability to
allocate cash from
> > individual sells (which should be completed
first) to individual
> > buys. An extension of this is the inability
to use cash from
shorts
> > to enter additional longs, i.e.
create 130/30 portfolios
(although TJ
> > has promised to look
into this functionality).
> >
> > May be too much OT,
but hope it helps.
> >
> > PS
> > --- In amibroker@xxxxxxxxxps.com,
"Ton Sieverding"
> > <ton.sieverding@> wrote:
>
> >
> > > Thanks Mike. I know all this. Please read my
answers to Ed
and you
> > will find the real problem I have with
the Backtester and
whatever
> > Backtester. Because it has
nothing to do with the AB
Backtester. It's
> > just the portfolio
constraint that every investor in the real
world
> > has creating
mentioned problem. I just don't know how to solve
it ...
> > >
> > > Regards, Ton.
> > >
> > > -----
Original Message -----
> > > From: sfclimbers
> > >
To: amibroker@xxxxxxxxxps.com
> > > Sent: Tuesday, August 28, 2007 9:19 PM
> > >
Subject: [amibroker] Re: How do I backtest placing a restricted
> >
number of limit orders each night?
> > >
> > >
> > > Ton,
> > >
> > > Once your
portfolio is full, yes, PositionScore will have no
> > effect
> > > until a slot becomes available after a Sell.
> >
>
> > > However, a PositionScore is only good for the life of
the bar
> > (single
> > > day when using EOD data). So
if it can not be acted upon *in
that
> > > bar*, then it is
worthless from that point on. The markets will
> > have
>
> > changed by the next bar and the score will no longer apply.
>
> >
> > > Once one or more slots become open (after a
Sell), then the
> > *current*
> > >
PositionScore(s) will be considered, and the best will be
used to
> > > fill the open slot(s). So no, the process is not random.
The
> > > *current* PositionScore is used to fill any open slots
of a
> > > portfolio. "Expired" PositionScore(s) are of no
use.
> > >
> > > If you have a restriction in your
strategy that prevent
entering
> > > multiple positions for a
single symbol (i.e. prvents
"scale-in",
> > > which is the
default case), then entering a position for that
> > symbol
>
> > will be rejected, even if it has the highest PositionScore. But
> > that
> > > is based on your strategy, not
luck.
> > >
> > > The next highest will be evaluated
until one is found that
can be
> > > traded in accordance with
the rules of your strategy. The
process
> > is
> > >
predictable.
> > >
> > > Hope that helps,
>
> >
> > > Mike
> > >
> > > --- In
amibroker@xxxxxxxxxps.com,
"Ton Sieverding"
> > > <ton.sieverding@>
wrote:
> > > >
> > > > As far as I understand Ed
and assuming EOD trading,
> > PositionScore
> > > is
selecting the best signals coming from the same day. So when
> > at
> > > Day1 there are 10 different signals where only one is
needed
then
> > > PositionScore is selecting the 'best'
signal. But what if the
> > next
> > > day all stocks
in portfolio are filled and the system generates
> > > another 10
signals? They are lost ... until the system gives a
> > SELL.
> > > Therefore the next BUY is based upon the next SELL. Put the
500
> > > stocks of the SP500 in a WatchList, take whatever AFL
rules for
> > the
> > > BUY and the SELL and a
portfolio with say max. 10 stocks. Do a
> > > Backtest and what
you see is that only a small part of the
> > signals
> >
> were used to fill the portfolio. Simply because you have this
>
> > portfolio constraint. If all signals would give you the same
> > > Winner/Looser characteristics than there should be no
problem.
> > But
> > > that's not true. Therefore the
portfolio filling proces for me
> > has a
> > > random
character and the result is based upon luck ... Unless I
> > am
> > > missing something ... And that's my question.
> >
> >
> > > > Regards, Ton.
> > > >
> > > >
> > > > ----- Original Message -----
> > > > From: ed2000nl
> > > > To: amibroker@xxxxxxxxxps.com
> > > > Sent: Monday, August 27, 2007 12:58 PM
> >
> > Subject: [amibroker] Re: How do I backtest placing a
restricted
> > > number of limit orders each night?
> > > >
> > > >
> > > > hi Ton,
> > > >
> > > > I'm not sure if I understand what you mean. There
are
often more
> > > > signals then you can use but the
backtester is instructed to
> > pick
> > > the
>
> > > best signals using PositionScore. I can exactly perform my
> > > backtest in
> > > > the real world,
excluding the shorts I am not allowed to
enter
> > by
>
> > my
> > > > broker. The signals the backtester chooses
are not pure
luck but
> > > > chosen using positionscore.
But I guess I do not understand
> > your
> > >
question,
> > > >
> > > > rgds, Ed
> >
> >
> > > > --- In amibroker@xxxxxxxxxps.com,
"Ton Sieverding"
> > > > <ton.sieverding@>
wrote:
> > > > >
> > > > > Morning
Ed,
> > > > >
> > > > > My problem when
using the Backtester and in general a
> > Backtester
> >
> > based upon portfolio result is the fact that in the real
world
> > an
> > > > investor will have a portfolio
with
> > > > > let's day 20 stocks. Therefore when the
portfolio has been
> > > filled,
> > > > all other
BUY signals
> > > > > will be lost until you've a SELL
signal. For this reason
when
> > > doing
> > >
> a Backtest
> > > > > I always do an Explore analysis of
all signals. In general
> > what
> > > I
> >
> > get is something like
> > > > > 200 Transactions
from the Backtester and 1.000 Transactions
> > > from the
>
> > > Explore analysis.
> > > > > What makes things
worse, I often get a RAR from the
backtest
> > of
> >
> > let's say 25% with
> > > > > 75% of the signals
being winners. When looking to the
Explore
> > > > analysis
of all the
> > > > > signals I only get something like 35%
of winners. Therefore
> > the
> > > > result coming
from
> > > > > the Backtester must be pure luck. The
backtester 'randomly'
> > > chooses
> > > > the
signals to
> > > > > fill the portfolio. I have no idea how
to solve this
> > problem ...
> > > > >
>
> > > > Regards, Ton.
> > > > >
> >
> > >
> > > > >
> > > > > -----
Original Message -----
> > > > > From: Edward Pottasch
> > > > > To: amibroker@xxxxxxxxxps.com
> > > > > Sent: Sunday, August 26, 2007 8:45 PM
>
> > > > Subject: Re: [amibroker] How do I backtest placing a
> > restricted
> > > > number of limit orders each
night?
> > > > >
> > > > >
> >
> > >
> > > > > hi,
> > > > >
> > > > > the way you set it up it shoudl not be possible.
However,
> > what
> > > can
> > > >
happen is that the backtester finds exits for the next day and
> >
> > immediatelly fills them with new positions. So you need to
make
> > > sure
> > > > that you first exit your
positions and tell the backtester to
> > > enter
> >
> > only on the next bar. This is usually the problem. There are
> > > several
> > > > ways to achieve this. Maybe
you will get a more satisfactory
> > > result
> > >
> when you set settradedelays(1,1,1,1).
> > > > >
> > > > > I use setttradedelays(0,0,0,0) but I make
sure that the
trade
> > is
> > > > entered 1 bar
after the signal (same with the exits),
> > > > >
>
> > > > Ed
> > > > >
> > > >
>
> > > > >
> > > > >
> >
> > > ----- Original Message -----
> > > > > From:
Michael White
> > > > > To: amibroker@xxxxxxxxxps.com
> > > > > Sent: Friday, August 24, 2007 11:37 AM
>
> > > > Subject: [amibroker] How do I backtest placing a
restricted
> > > > number of limit orders each night?
>
> > > >
> > > > >
> > > > >
Can anyone help me model the following scenario?
> > > > >
> > > > > - Assume a portfolio is allowed to consist of
some fixed
> > number
> > > > > of "slots" with
equity equally divided among them (e.g. 10
> > > slots at
>
> > > > 10% of equity).
> > > > > - Check for
setup criteria at close of each day.
> > > > > - Place next
day limit buy orders for as many unfilled
slots
> > as
>
> > are
> > > > > currently available (e.g. if already
have 2 fills after day
> > 1,
> > > then
> >
> > > there are only 10 - 2 = 8 slots remaining for day 2,
etc.).
> > > > > - Buy orders are prioritized by a
calculated value.
> > > > >
> > > > > My
problem is that if I receive a setup for more symbols
than
> >
I
> > > > have
> > > > > available slots
(e.g. receive 20 setups but only have 8
> > > available
>
> > > > slots), my script will try to fill all 8 slots from the 20
> > > > > candidates, and the portfolio manager will
correctly
prevent
> > me
> > > > from
>
> > > > having more positions than allowed (e.g. no more than
10).
> > > > >
> > > > > However, in
reality, I will only have placed as many limit
> > > > orders
as
> > > > > I have available slots (e.g. 8 limit orders
when 8
available
> > > slots,
> > > > > not
limit orders for all 20 candidates, since I only have
> > funds
> > > to
> > > > > cover placing 8
orders).
> > > > >
> > > > > What is
happening is that my script is filling orders
that I
> > >
would
> > > > > not have placed! I need a way to indicate
that despite 20
> > > setups,
> > > > > only 8
limit orders were placed.
> > > > >
> > > >
> Following is some script snippets.
> > > > >
>
> > > > /*
> > > > > * Assume an initial purse
and brokerage fees ($0.01/share)
> > > > > */
> >
> > > SetOption("InitialEquity", 50000);
> > > >
> SetOption("CommissionMode", 3);
> > > > >
SetOption("CommissionAmount", 0.01);
> > > > >
> > > > > /*
> > > > > * Carry fixed
number of positions, dividing 100% of Equity
> > >
between
> > > > > * them (based on previous bar's
closing).
> > > > > */
> > > > >
PositionSize = -100/10; // Each position is 10% of equity
> > >
> >
> > > > > SetOption("MaxOpenPositions",
10); // No more than 10
> > positions
> > > > >
SetOption("UsePrevBarEquityForPosSizing", True);
> > >
> >
> > > > > /*
> > > > > * We
recognize the sale signal at the close of a bar and
> > > execute
the
> > > > > * sale at the open of the next one, delay sale
by 1 day.
> > > > > */
> > > > >
SetTradeDelays(0, 1, 0, 0);
> > > > >
> >
> > > /*
> > > > > * Trigger a Buy signal when
previous bar meets the setup
> > > > > * requirements AND
this bar's Low has dropped to less
than a
> > > fixed
>
> > > > * percentage below the previous bar's close. This emulates
> > > having
> > > > > * placed a limit order
the night before after having
seen the
> > > signal
>
> > > > * on that day's close.
> > > > >
*/
> > > > > setup = ... // Some position entry
logic.
> > > > > PositionScore = ... // Some prioritization
logic.
> > > > >
> > > > > BuyPrice =
Ref(Close, -1) * 0.95;
> > > > > Buy = Ref(setup, -1) AND
Low <= BuyPrice; // Problem here!!!
> > > > >
>
> > > > Sell = ... // Some sell logic.
> > > > >
> > > > > As indicated in my earlier comments. The problem
is that in
> > > > reality I
> > > > > will
not actually have placed orders for all candidates,
but
> > >
rather
> > > > > only for as many as there are available
slots (e.g. 8).
> > However,
> > > > the
>
> > > > script will attempt to fill the available slots based
on
all
> > > > > candidates (e.g. 20).
> > >
> >
> > > > > How can I restrict the Buy assignment
to only apply to the
> > top X
> > > > of Y
>
> > > > candidates based on priority (e.g. top 8 of 20 in example
> > > above).
> > > > >
> > > >
> Thanks in advance.
> > > > >
> > >
>
> > >
> >
>