Thanks a lot Ed. I'll will try the code and see if this will bring the famous 
'Of course...' experience ...

Regards, Ton.

  ----- Original Message ----- 
  From: ed2000nl 
  To: [email protected] 
  Sent: Thursday, August 30, 2007 11:24 AM
  Subject: [amibroker] Re: How do I backtest placing a restricted number of 
limit orders each night?


  if this is the problem then I posted an example on this (#112783) here:

  http://finance.groups.yahoo.com/group/amibroker/message/112783

  --- In [email protected], "Tomasz Janeczko" <[EMAIL PROTECTED]> 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: [email protected] 
  > 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: [email protected] 
  > 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, $%@&[EMAIL PROTECTED] 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 [email protected], "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: [email protected] 
  > > 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 [email protected], "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: [email protected] 
  > > > 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 [email protected], "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: [email protected] 
  > > > > 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 [email protected], "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: [email protected] 
  > > > > > 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: [email protected] 
  > > > > > 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.
  > > > > >
  > > > >
  > > >
  > >
  >



   

Reply via email to