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.
> > > >
> > >
>
>
>