PureBytes Links
Trading Reference Links
|
If I am understanding your question correctly then it does have ready
solutions - come back if you get stuck.
brian_z
--- In amibroker@xxxxxxxxxxxxxxx, "vlanschot" <vlanschot@xxx> wrote:
>
> Thx Brian, both you & Tomasz have clarified the issue, as well as
> what my "problem" actually is, and how to possibly solve it.
>
> PS
>
> --- In amibroker@xxxxxxxxxxxxxxx, "brian_z111" <brian_z111@> wrote:
> >
> > Patrick,
> >
> > I am signing off now for some z's but a quick second opinion on
> your
> > question (can't help the first caller with the custom backtest
> report
> > though).
> >
> > I am not sure what timeframe you mean - if it is intraday my
> comments
> > won't help much. I have done some work in the past with missing
> bars
> > (EOD) and managed to get around it using array code (maybe you
have
> > too but I am not sure if you mean that you handle it in AFL by
> > nominating the dates or by identifying missing bars).
> >
> > I have used a few different ways in AFL to identify or handle EOD
> > missing bars (other than entering dates for holidays from an
> > international calendar).
> >
> > First it varies with providers - if they pad missing days
> themselves
> > and how they do it. In that case I find them by using identifiers
> > like - if the previous O,H,L,C all equal todays OHLC then it is
> more
> > than likely padded - repeating the previous bar is one way that
> > providers pad missing EOD data (of course sometimes an identical
> bar
> > or no vol just means that it is a thinly traded stock but I
don't
> > want them in my stock list anyway).
> > I don't always like NoVol as a test for padded bars because some
> > times the bar is padded by the provider with volume included and
> > sometimes the indexes don't have volume.
> >
> > Another thing I do (for backtesting EOD) is filter out stock that
> has
> > less than the annual number of bars - theoretically it does bias
> > results but then so does missing data (in my case I only want to
> > trade highly liquid stock anyway so I am comfortable about
> filtering
> > out junk stock with missing bars. I also filter out stock that
has
> > too many identical bars (lightly traded) - I have found this to
be
> a
> > better liquidity filter than vol*price (for my purposes).
> >
> > Also I have used code, in conjunction with Pad&Align, to identify
> > which bars are padded by AmiBroker - the padded bar leaves a
> > characteristic trail that you can code for (from memory I think
it
> is
> > a null - I did that work last year, or the year before, and the
> > memory fades a bit - I have notes on it somewhere).
> >
> > Also I am cautious about using the index as the Pad&Align
> reference -
> > I have found cases where the indexes are padded on public
holidays
> > etc - sometimes I do an exploration with barcount and use the
> number
> > that is the most common i.e. if the index has 250 bars for the
year
> > but 200/500 stocks in my database had 251 bars for the year I use
> > 251, in code, as the becnhmark for a stock with no missing data
> > and/or I select one of the stocks from the 251 bar list as the
> > reference stock for P&A.
> >
> > Not sure if that is the type of thing you are after - as I said
it
> > depends on how accurate your providers data is, what padding they
> do
> > and how you want to use it.
> >
> > brian_z
> >
> > --- In amibroker@xxxxxxxxxxxxxxx, "vlanschot" <vlanschot@> wrote:
> > >
> > > But that doesn't solve the non-trading (holi)days during the
work-
> > > week which differ per market, nor does it facilitate MENA-
region
> > > markets where they trade from Sunday to Thursday, etc.
> > >
> > > I don't want to be a pain, it's just something I'm confronted
> with,
> > > and always need to 1) point out as one of the caveats in my BT-
> > > results, or 2) adjust in my AFL-code (by excluding those dates
> per
> > > market, which IS a pain).
> > >
> > > PS
> > > --- In amibroker@xxxxxxxxxxxxxxx, "Tomasz Janeczko" <groups@>
> > > wrote:
> > > >
> > > > How about using artificial ticker that just holds all Mon-Fri
> > days?
> > > >
> > > > Best regards,
> > > > Tomasz Janeczko
> > > > amibroker.com
> > > > ----- Original Message -----
> > > > From: "vlanschot" <vlanschot@>
> > > > To: <amibroker@xxxxxxxxxxxxxxx>
> > > > Sent: Wednesday, February 13, 2008 12:41 PM
> > > > Subject: [amibroker] Re: Backtesting and Custom Metrics: How
to
> > > determine HHV at date of Buy?
> > > >
> > > >
> > > > > Thanks Tomasz,
> > > > >
> > > > > There remains one problem with this, at least as far as I'm
> > aware
> > > and
> > > > > as far as it concerns my situation: I look at multiple
> > > international
> > > > > markets with different trading dates (i.e. holidays). I
> > therefore
> > > > > need to "pad&align" to various "benchmarks" at the same
time,
> > > > > depending on what market the particular symbol trades.
> > Therefore
> > > my
> > > > > obvious request: can this be expanded?
> > > > >
> > > > > Thx,
> > > > >
> > > > > PS
> > > > >
> > > > > --- In amibroker@xxxxxxxxxxxxxxx, "Tomasz Janeczko"
<groups@>
> > > > > wrote:
> > > > >>
> > > > >> For what is worth: it is best to use Pad and align option
in
> > the
> > > > > AA Settings
> > > > >> whenever you use portfolio backtest. Then you get
consistent
> > > > > results all the time
> > > > >> regardless of data holes and you don't need to do any ATC.
> > > > >>
> > > > >> Best regards,
> > > > >> Tomasz Janeczko
> > > > >> amibroker.com
> > > > >> ----- Original Message -----
> > > > >> From: "vlanschot" <vlanschot@>
> > > > >> To: <amibroker@xxxxxxxxxxxxxxx>
> > > > >> Sent: Wednesday, February 13, 2008 12:30 PM
> > > > >> Subject: [amibroker] Re: Backtesting and Custom Metrics:
How
> > to
> > > > > determine HHV at date of Buy?
> > > > >>
> > > > >>
> > > > >> > Sorry to jump in here, GP, but instead of ATC, can I not
> get
> > > to
> > > > > the
> > > > >> > HHV via:
> > > > >> >
> > > > >> > for( trade = bo.GetFirstTrade(); trade; trade =
> > bo.GetNextTrade
> > > > > () )
> > > > >> > {
> > > > >> > TradeName=trade.symbol;
> > > > >> >
> > > > >> > HiHiV20 = HHV(Foreign(TradeName,"C"),20);
> > > > >> >
> > > > >> > . . . .
> > > > >> > }
> > > > >> >
> > > > >> > I've always done it like this, but wonder whether this
> > > alignment
> > > > > is
> > > > >> > an issue then ???
> > > > >> >
> > > > >> > PS
> > > > >> >
> > > > >> > --- In amibroker@xxxxxxxxxxxxxxx, "gp_sydney"
> > <gp.investment@>
> > > > >> > wrote:
> > > > >> >>
> > > > >> >> One issue you have is that by calculating the HHV in
the
> > > custom
> > > > >> >> backtest procedure, the results may not be the same as
if
> > it
> > > were
> > > > >> >> calculated in the main AFL code. That's because the
> Foreign
> > > > > function
> > > > >> >> aligns the stock to the bar dates of the backtester,
and
> 20
> > > > > custom
> > > > >> >> backtest bars may not be the same as 20 bars of the
> > original
> > > > > stock
> > > > >> >> chart. To get around that, you need to calculate HHV in
> the
> > > main
> > > > > AFL
> > > > >> >> and then pass it to the backtester using AddToComposite.
> > > > >> >>
> > > > >> >> To then get the values you want on the entry dates, you
> > could
> > > > > just
> > > > >> >> note the value on each entry date as the entries are
> > > processed,
> > > > >> >> storing them in dynamic variables or possibly in a
> > writeable
> > > > > unused
> > > > >> >> field of the Trade object. Otherwise, as you run
through
> > the
> > > > > closed
> > > > >> >> trades, you could get the entry date/time and search
for
> > that
> > > > >> >> date/time in the relevant HHV array (using Foreign
again
> to
> > > get
> > > > > the
> > > > >> >> HHV array).
> > > > >> >>
> > > > >> >> For the price a certain number of bars from the entry
> date,
> > > you
> > > > > have
> > > > >> >> the same problem of bar realignment in the custom
> > backtester.
> > > If
> > > > >> >> you've removed redundant buy signals in the main AFL
> code,
> > > you
> > > > > could
> > > > >> >> perhaps create a BarsSince(Buy) array, pass that to the
> > custom
> > > > >> >> backtester as an ATC, and use that to find which bar in
> the
> > > > > custom
> > > > >> >> bactester is the correct number of bars from the buy
> > > (assuming
> > > > > it's
> > > > >> >> after the buy date and not before).
> > > > >> >>
> > > > >> >> Regards,
> > > > >> >> GP
> > > > >> >>
> > > > >> >>
> > > > >> >> --- In amibroker@xxxxxxxxxxxxxxx, "justjuice200"
> > > <justjuice200@>
> > > > >> > wrote:
> > > > >> >> >
> > > > >> >> > I know this should be simple, but can't figure out
how
> to
> > > code
> > > > > it
> > > > >> > in
> > > > >> >> > AFL. Many thanks in advance.
> > > > >> >> >
> > > > >> >> > I want to add some custom metrics to the backtest
> > report.
> > > For
> > > > >> > each
> > > > >> >> > trade, I want to show two things:
> > > > >> >> > 1) a 20-bar HHV at the date of the buy
> > > > >> >> > 2) a price at a certain number of bars away from the
> date
> > > of
> > > > > the
> > > > >> > buy.
> > > > >> >> >
> > > > >> >> > So far what I have is the following (and not sure I'm
> on
> > > the
> > > > > right
> > > > >> >> > track either):
> > > > >> >> >
> > > > >> >> > if (Status("action") == actionPortfolio){
> > > > >> >> > bo=GetBacktesterObject();
> > > > >> >> > bo.Backtest(1);
> > > > >> >> >
> > > > >> >> > for (trade = bo.GetFirstTrade(); trade; trade =
> > > bo.GetNextTrade
> > > > > ())
> > > > >> > {
> > > > >> >> > ticker=trade.Symbol();
> > > > >> >> > symbolPriceArray=Foreign(ticker, "C", 1);
> > > > >> >> > Dateoftrade=trade.EntryDateTime();
> > > > >> >> > BarNumOfTrade=....some Code Here...
> > > > >> >> > myHigh=HHV(symbolPriceArray,20)/*Also
need
> > > some
> > > > > way
> > > > >> > to
> > > > >> >> > define the
> > > > >> >> > HHV with reference to the date
of
> > the
> > > > > buy*/
> > > > >> >> >
> > > > >> >> > CloseTenDaysAgo=symbolPriceArray
> > [BarNumOfTrade-
> > > > > 10];
> > > > >> >> >
> > > > >> >> > }
> > > > >> >> >
> > > > >> >> > bo.ListTrades();
> > > > >> >> >
> > > > >> >> > }
> > > > >> >> >
> > > > >> >>
> > > > >> >
> > > > >> >
> > > > >> >
> > > > >> >
> > > > >> > Please note that this group is for discussion between
> users
> > > only.
> > > > >> >
> > > > >> > To get 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
> > > > >> >
> > > > >> >
> > > > >> >
> > > > >>
> > > > >
> > > > >
> > > > >
> > > > >
> > > > > Please note that this group is for discussion between users
> > only.
> > > > >
> > > > > To get 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
> > > > >
> > > > >
> > > > >
> > > >
> > >
> >
>
Please note that this group is for discussion between users only.
To get 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/
|