ok Ton, probably I do not entirely understand the problem. Thing
that
seems important: can a backtest performed by Amibroker be executed
in
the real trading. The answer is yes. That's why I do not
understand
why you want to look at all the signals in a spreadsheet. The
backtest
should be sufficient to find if the system setup works or
not.
I just moved to an area in Belgium where I am at a distance of
5.6 km
of the ADSL "centrale". So my connection is just hopeless ....
Should
have checked this beforehand. This distance causes that the speed
is
only about 1/2 of what they promise. Also I just found out that
they
only offer a transfer volume of 12GB per month. Nowhere in
the
advertisement this was mentioned. In The Netherlands this
contraint
has been removed a long time ago so I didn't even bother
checking
this. At Chello I believe there was not such a constraint. So if
I
exceed 12 GB per month my internet speed will drop to 64 kbps, what
a
joke. On top of that I have a 1 year contract ... better look for
a
dayjob again because when my orders come through the stock market
has
probably closed already.
rgds, Ed
--- In amibroker@xxxxxxxxxps.com,
"Ton Sieverding"
<ton.sieverding@...> wrote:
>
>
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.
> > > > >
> > > >
> >
>
>
>
>