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 [email protected], "brian_z111" <brian_z...@...> 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 [email protected], "Mike" <sfclimbers@> wrote: > > > > --- In [email protected], "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 [email protected], "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: [email protected] > > > > 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 [email protected], "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: [email protected] > > > > > 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 [email protected], 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:* [email protected] > > > > > <mailto:[email protected]> > > > > > > > *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 [email protected] > > > > > > > <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 > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >
