Mike and Ed,
Thanks for your feedback.
You guys sure got me
thinking.
Thanks for your perserverance also .... I realise that my
tenses are
wobbling and the logic fades in and out a little ... my work
contains
more errors than it would if I wrote the book formally.
A
little more ..
....referencing my previous matrix example.
My
comments so far have assumed that the trade samples are
independent.
If we had 100 Eq at the end of day 3 then the outcome,
after day
four, would equal the mean of the GF's for each simultaneous
trade
e.g.
... going back to the future ... on day 4 we take option
1 ... record
the result and then go back and take option 2 etc, being
careful to
do everything exactly the same except for the X,Y,Z selection
...
then compare:
day 4
eq 100
GrowthFactor, Eq
X
1.05, 100 -> 105
Y 0.98, 100 -> 98
X 1.02, 100 ->
102
ave GF == 1.016repeat, ave eq == 101.6 repeat
OR nominally,
in the time warp, we had 300 and now have 305
and 305/300 == GF
1.016repeat for the period
If they are independent trades then we throw
them in the bucket with
the a -> i samples.
a -> i and X,Y,Z
are just time markers, like buttons on a game board,
and we have to turn
them over to find their trade value.
If we do that a massive number of
times, tending to oo, the outcome,
for each box in the matrix, will tend
to the mean value of all
trades ... even on day four, which will just
approach the mean more
quickly than the other time slots.
(if we
want to imagine this we can picture the 10 box matrix
repeating itself end
to end infinitely and the trades falling into
the empty boxes sequentially
... since time is constant there is no
reason not to do this ... it is the
values in the boxes that have
variance and are non-stationary and not the
sample space).
The proof is that after massive sampling, if we
transpose the indexed
array back and stack the 10 box submatrices on top
of each other, and
then average the columns + calc the StDev, they would
all be the mean
trade +- variance
Note that since the trade samples
do not necessarily have a normal
dist we need to do some random sampling
first, and then apply a
distribution to the newly selected sample space,
which produces a
kind of psuedo mean distribution for the trade sample set
(MCS just
does this for us automatically so we tend not to notice that
step
whereas in BS I do that first).
Considering correlation of
simultaneous trades:
- using EOD as the simplest example (in any case
trades must be on
the same bar or they would not be simultaneous)
-
trading long only (a bull system)
- it might happen that on a market bull
day you get more signals and
more wins
day. 1, 2, 3, 4
market.
bear, bear, bear, bull
P or L. loss, loss, loss, 10 trades all
win
So we are up 10/3 wins/losses but the market itself is
1/3
Looking at the staking if you bet fixed fraction:
- losing
some eq initially,
bet. 110,105,100 then 100/10 is bet on each trade
and the outcome is
the ave result of the 10 trades.... as an aside this
needs to be ave
== 10% to get us back to the start eq of
110.
Effectively we have achieved the result of the ave trade i.e. it
is
as if we only made one trade in real terms.
So, if correlation ,
between simultaneous trades, exists then we
could count it as one trade
and only throw one win in the freq dist
bin and give it a value of the ave
trade for the bar.
On the other hand, the reverse could hold i.e. on
market bear days we
could get 10 signals that are all losses to our bull
system, and thus
happily balance the books.
We also have to ask
ourselves, "Why not just trade the market and not
worry about
correlation"?
It is also possible that horizontal correlation
(dependency) can
occur in the trade matrix ... RalphVince gives the calcs
to handle
that situation in his books... certainly on google as
well.
BTW I agree with you that we need to think about the implications
of
the BT alphabetically selecting symbols to trade and being bound by
eq limits.
--- In amibroker@xxxxxxxxxps.com,
"brian_z111" <brian_z111@...> wrote:
>
> O.K Mike ...
you live and learn :-)
>
> Possibly correlation, or NOT, of
simultaneous trades to the market,
> or sector, is a related subject
... didn't discuss that detail in
> relation to my X,Y & Z example
.. that is where trade sample space
> anlaysis can provide the
answer.
>
>
>
> --- In amibroker@xxxxxxxxxps.com,
"Mike" <sfclimbers@> wrote:
> >
> > --- In amibroker@xxxxxxxxxps.com,
"brian_z111" <brian_z111@>
wrote:
> > >
>
> > > In any case it could be traded if you organise your funds in
> such
> > a
> > > >way that all symbols in
your list can be held simultaneously.
> > >
> > >
That isn't really practical and we can calculate very accurate
> >
> predictions, subject to variance and non-stationarity, before
we
> > risk
> > > our money.
> >
> >
Why impractical? I have been doing exactly that, profitably, for
> just
> > under 2 years. There is much room for experimentation in exactly
> how
> > the funds get distributed among the signals. But,
even a simple
> equal
> > division of equity between all
signals (up to a fixed maximum
> > percentage of equity per trade in
the event that there are few
> > signals) can prove profitable when
applied to a strategy.
> >
> > Mike
> >
>
>
> > > >there are a lot of additional problems that arise
like an
> > uncomplete
> > > >database during
testing
> > >
> > > You can't get a good result out
of a bad database.... just
avoid
> > > trades were you can't
get the data you need.
> > >
> > >
> > >
>Not sure if a random selection on an extended list for testing
>
> > >purposes is reliable. Who knows in the practice you will find
> that
> > > >the signals that come early during the
trading session usually
> are
> > > >loosers. This
could be tested however using intraday data,
> > >
> >
>
> > > Yes it is reliable, in fact it is the only way that it
can be
> done.
> > >
> > > Returning to the
example in my previous post:
> > >
> > > a b c X d e
f g h i
> > > a b c Y d e f g h i
> > > a b c Z d e f
g h i
> > >
> > > The XY & Z samples were
produced by the same system (same
rules)
> as
> > >
the a -> i samples, so they are part of the same series and
share
> > the
> > > same profile (frequency distribution and
probabilities).
> > >
> > > If you have a list
of trades for an EOD system and then want to
> find
> > >
out if the intraday time affects the result then you are
ranking
>
> your
> > > daily signals using an intraday factor and you
have to add at
> least
> > > one more trading rule to do
that.
> > >
> > > This is effectively a new system
and it will produce its own
> trade
> > > series , with
it's own characteristics.
> > >
> > > As always, if
we do analyse the trade sample space, we have to
> make
> >
> sure we are left with enought samples to provide a valid sample.
>
> >
> > > NEW RULE == NEW SYSTEM == NEW AND UNIQUE TRADE
SERIES
> > >
> > >
> > > --- In amibroker@xxxxxxxxxps.com,
"Edward Pottasch"
<empottasch@>
> > >
wrote:
> > > >
> > > > In any case it could be
traded if you organise your funds in
> such
> > a
>
> > way that all symbols in your list can be held simultaneously.
> EOD
> > > systems are tricky though since there are a
lot of additional
> > > problems that arise like an uncomplete
database during testing
> > (ENRN,
> > > WCOM etc
missing), no shorts available during trading. Not sure
> if a
>
> > random selection on an extended list for testing purposes is
> > > reliable. Who knows in the practice you will find that the
> signals
> > > that come early during the trading session
usually are loosers.
> This
> > > could be tested however
using intraday data,
> > > >
> > > > regards,
Ed
> > > >
> > > >
> > > >
----- Original Message -----
> > > > From: Mike
> >
> > To: amibroker@xxxxxxxxxps.com
> > > > Sent: Thursday, January 29, 2009 10:32 PM
> >
> > Subject: [amibroker] Re: Sell and Buy on different days
> >
> >
> > > >
> > > > Ha ha.
> >
> >
> > > > Just goes to show how people can get tunnel
vision
sometimes.
> > > Since I
> > > > do a
lot of custom backtester code, I immediately suggested
> > >
filtering
> > > > at that level.
> > > >
> > > > But, your suggestion of a random value for
PositionScore
> > directly
> > > > would be far
easier and less prone to coding error.
> > > >
> >
> > Mike
> > > >
> > > > --- In amibroker@xxxxxxxxxps.com,
"Edward Pottasch"
> > <empottasch@>
> > >
> wrote:
> > > > >
> > > > > you are
right on this Mike. Testing a system like this
> using a
> >
> > random positionscore is a good indication if it can be made
>
into
> > > a
> > > > system that can be used in
the practice. Andy has an idea
> that
> > is
> >
> > tough to execute but not impossible in my opinion,
> > >
> >
> > > > > regards, Ed
> > > > >
> > > > >
> > > > >
> > >
> >
> > > > >
> > > > > -----
Original Message -----
> > > > > From: Mike
> >
> > > To: amibroker@xxxxxxxxxps.com
> > > > > Sent: Thursday, January 29, 2009 8:37 PM
>
> > > > Subject: [amibroker] Re: Sell and Buy on different
days
> > > > >
> > > > >
> >
> > > Andy,
> > > > >
> > > > >
Use caution when backtesting EOD strategies where there
are
> >
> more
> > > > > signals than there are funds or
positions to be filled;
> > > > >
> > > >
> If your strategy is to buy OCA, what logic are you
putting
>
in
> > > > place to
> > > > > determine
which symbol to buy when multiple symbols hit
> your
> > >
limit
> > > > > order on the same bar?
> > >
> >
> > > > > Since you are using EOD data, you have
no idea which
symbol
> > > would
> > > > have
> > > > > hit the limit order first. You only know that x
of y
> symbols
> > > hit
> > > > the
> > > > > limit order on that day.
> > > >
>
> > > > > AmiBroker will just select the first in the
list
> > > (alphabetically?
> > > > ). As
>
> > > > such, your backtest results will be heavily biased in
favor
> of
> > > > that
> > > >
> ordering and will not reflect live trading results.
> > >
> >
> > > > > Generally, PositionScore can be used to
influence
ordering.
> > > But,
> > > > an
> > > > > OCA approach by definition does not follow
PositionScore.
> > > > >
> > > > > So,
you might want to modify your custom backtester code
to
> > >
> randomly
> > > > > select from the available signals
and set the remaining
> ones
> > to
> > > >
> PosSize 0 in order to override the default
prioritization.
>
> Then
> > > > run
> > > > > your
backtest many times and take the average of the
> results
> >
as
> > > a
> > > > best
> > > >
> guess estimate (i.e. Monte Carlo Permutations)
> > > >
>
> > > > > Mike
> > > > >
>
> > > > --- In amibroker@xxxxxxxxxps.com,
Andrew Senft <senft@>
> wrote:
> > > > >
>
> > > > > > Hey Ed,
> > > > > >
> > > > > > Thank you so much for the code on the
Amibroker Yahoo
> group
> > > > board!
> >
> > > It
> > > > > > seems to be working from
what I've seen so far. I'm
doing
> an
> > > > >
> optimization on that particular code (your first code)
> right
> > > > now.
> > > > > >
> >
> > > > The second code (the one from your email) didn't work.
> That
> > > is,
> > > > > there
> > > > > > were sales of one stock and buy of another
stock on the
> same
> > > > day.
> > >
> > Not
> > > > > > sure what your code was doing
but it gave a lot bigger
> > > profits
> > > >
using
> > > > > the
> > > > > >
backtester. Could you comment on this please?
> > > > > >
> > > > > > Mind you that this is my first attempt to
writing code
> for
> > > any
> > > > stock
> > > > > > type software. I'm still using the 30 day
free trial of
> the
> > > > > Amibroker
>
> > > > > software but I think that I'm getting closer as I'm
> chugging
> > > > along.
> > > > >
>
> > > > > > My agenda is to use this on a basket of
ETF's. Perhaps
10
> to
> > > 20
> > >
> > or
> > > > > > so. Not sure how many I need
since the 30 day trail
> > backtests
> > > up
>
> > > > to a
> > > > > > basket of 5 stocks.
My idea is to place the possible
> stock
> > > > trades
> > > > > > using the whole basket of ETF stocks at
night for the
> next
> > > > trading
> > >
> > > session. I have an IB account so I figure I could use
an
> OCA
> > > > limit
> > > > > >
order. Basically whenever a trade gets hit first (meets
> the
>
> > > limit
> > > > > price
> > >
> > > level), it trades. The other possible trades all get
>
> canceled
> > > > right
> > > > > >
away. So one trade actually goes through for the day.
> > > >
> >
> > > > > > BTW, I like ETF's because the
drawdowns are not as
> scary....
> > > > okay,
>
> > > > > usually not as scary. Ha! I've been backtesting
with:
> > > > > >
> > > > > > QQQQ,
DIA, SPY, MDY, IWM
> > > > > >
> > > >
> > Thank you again!
> > > > > >
> > >
> > > Andy
> > > > > >
> > > >
> > Edward Pottasch wrote:
> > > > > > >
>
> > > > > > Andy,
> > > > > > >
> > > > > > > I have sent an alternative solution to
your private
> Email.
> > > Let
> > > > me
> > > > > know
> > > > > > > if
you received it.
> > > > > > >
> > > >
> > > Ed
> > > > > > >
> > >
> > > >
> > > > > > >
> > >
> > > > ----- Original Message -----
> > > > >
> > *From:* Andy <mailto:senft@>
> > > > >
> > *To:* amibroker@xxxxxxxxxps.com
> > > > > <mailto:amibroker@xxxxxxxxxps.com>
>
> > > > > > *Sent:* Thursday, January 29, 2009 12:40
PM
> > > > > > > *Subject:* [amibroker] Re: Sell and
Buy on different
> days
> > > > > > >
>
> > > > > > This is got to be a very simple task but
unfortunately
> > > > > AmiBroker told
> >
> > > > > me that I would have to write Backtester Interface
code
> > for
> > > > > this. I'm
> >
> > > > > sure this has been done a million times. Anyone have
> > sample
> > > > > code?
> > > >
> > > I'm using EOD data to trade one stock at a time from
a
> > > basket
> > > > > of
> > >
> > > > stocks. The problem is that a selling of a stock can
> occur
> > > on
> > > > > the
>
> > > > > > same day as a buy of *another* stock. Of course
the
> > problem
> > > is
> > > > >
that
> > > > > > > the sell trade can occur after the
buy trade.
> > > > > > >
> > > > >
> > --- In amibroker@xxxxxxxxxps.com
>
> > > > > >
<mailto:amibroker%40yahoogroups.com>, "Andy" <senft@>
> > wrote:
> > > > > > > >
> >
> > > > > > How do I fix the below code so it doesn't buy a
> > different
> > > > > stock on a
> >
> > > > > > sell day?
> > > > > > >
>
> > > > > > > >
----------------------------------------------------
--
>
--
> > > > > > > > // Backtester Options
>
> > > > > > > SetOption("MaxOpenPositions", 1
);
> > > > > > > >
SetOption("AllowSameBarExit", False);
> > > > >
> > >
> > > > > > > > // Optimization
numbers
> > > > > > > > BuyPeriod =
Optimize("BuyPeriod",16,10,20,2);
> > > > > >
> > BuyFactor = Optimize("BuyFactor",1.2,0.5,1.5,.1);
>
> > > > > > > SellPeriod =
Optimize("SellPeriod",20,10,20,2);
> > > > > >
> > SellFactor =
Optimize("SellFactor",0.8,0.5,1.5,.1);
> > > >
> > > >
> > > > > > > > // ATR
formulas
> > > > > > > > TodaysBuyTarget = High -
BuyFactor * ATR(BuyPeriod);
> > > > > > > >
YesterdaysBuyTarget = Ref(High,-1) - BuyFactor *
> > > > >
> > Ref(ATR(BuyPeriod),-1);
> > > > > > >
> YesterdaysSellTarget = Ref(Low,-1) + SellFactor *
> > >
> > > > Ref(ATR(SellPeriod),-1);
> > > > >
> > >
> > > > > > > > // Buy/Sell signals
and prices
> > > > > > > > Buy =
YesterdaysBuyTarget > Low;
> > > > > > > >
BuyPrice = IIf(YesterdaysBuyTarget > Open, Open,
> > >
> > > > YesterdaysBuyTarget);
> > > > >
> > > Sell = YesterdaysSellTarget < High;
> > >
> > > > > SellPrice = IIf(YesterdaysSellTarget < Open,
Open,
> > > > > > >
YesterdaysSellTarget);
> > > > > > > > Buy =
ExRem(Buy,Sell);
> > > > > > > > Sell =
ExRem(Sell,Buy);
> > > > > > > >
> >
> > > > >
> > > > > > >
> >
> > > > >
------------------------------------------------------
--
>
--
> > > > > ------
> > > > > >
>
> > > > > > >
> > > > > >
> No virus found in this incoming message.
> > > > > >
> Checked by AVG - http://www.avg.com
> > > > > > > Version: 8.0.176 / Virus Database:
270.10.15/1921 -
> > Release
> > > > Date:
>
> > > > 1/28/2009 6:37 AM
> > > > > >
>
> > > > > > >
> > > > >
>
> > > > >
> > > >
> >
>
>
>
>