PureBytes Links
Trading Reference Links
|
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@xxxxxxxxxxxxxxx, "brian_z111" <brian_z111@xxx> 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@xxxxxxxxxxxxxxx, "Mike" <sfclimbers@> wrote:
> >
> > --- In amibroker@xxxxxxxxxxxxxxx, "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@xxxxxxxxxxxxxxx, "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@xxxxxxxxxxxxxxx
> > > > 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@xxxxxxxxxxxxxxx, "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@xxxxxxxxxxxxxxx
> > > > > 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@xxxxxxxxxxxxxxx, 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@xxxxxxxxxxxxxxx
> > > > > <mailto:amibroker@xxxxxxxxxxxxxxx>
> > > > > > > *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@xxxxxxxxxxxxxxx
> > > > > > > <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
> > > > > > >
> > > > > > >
> > > > > >
> > > > >
> > > >
> > >
> >
>
------------------------------------
**** IMPORTANT ****
This group is for the discussion between users only.
This is *NOT* technical support channel.
*********************
TO GET TECHNICAL 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/
|