[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[amibroker] Re: Sell and Buy on different days



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/