[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

> 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. 

I think a lot of people, in the trading community, are a bit light on 
when it comes to this topic.

It is incredible how, collectively, 'we' have made hard work out of a 
subject that is relatively simple, if we strip away the stuff that is 
blocking our view.

The fact that Money Management and Portfolio Optimization was born in 
Academia, and is still nourished there, doesn't help (are we 
academics or traders?)

It is typical, that we start off by use something that we have, 
anything, and also allow ourselves to be influenced by community 
norms (how else can we get started) and then we get stuck in that rut.


Anyone care for a second opinion?

It would be easier to compare notes if we had something to show it on 
(if I had a BT that produces the trade series,as an indexed list, I 
could then go on to show how to use it for MM and PO).

Why don't I just go ahead and do that myself?

Because I am an ideas man, not a CEO or a 'Head of Computing'.

All of our signals, including competing signals i.e. signals that 
occur at the time we have insufficent funds to take them (your 
trading model, not mine) go on to become a trade, once they are 
nominally closed. The competing signals just become a mixed set of 
closed trades, some of which were selected, in 'real' trading, and 
the rest, that weren't.

The trades are best measured in % terms, as GrowthFactor i.e. 3% gain 
= = 1.03 and 3% loss == 0.97 (this standardisation allows for easier 
and consistent processing and further analysis down the line).

The profile of the system, any system, is the list of trades it 
produces i.e. the trade sample set.

The distribution of the trades is the system profile e.g. if the 
trades have a uniform distribution AND we randomly select trades from 
the 'bin', with replacement, AND we continue towards infinity OO , we 
will eventually select all samples the same number of times, +- an 
insignificant difference.

In this case, analysing the complete trade set (all possible trades), 
is a short cut on the path to massive random sampling.

If the distribution of the trades is non-uniform, then the equity 
outcomes is a derivative of that distribution, and mathematical 
derivation, or massive random sampling, is the only way to conduct 
that analysis.

Therefore, sampling all trades, either in total OR as subsets, for 
sample space analysis/signal ranking etc, is the correct approach, as 
per my comments in the topic  TRADE SERIES MATRICES USING C++

The trade distribution isn't necessarily a Bell Curve, and for that 
reason, MonteCarloSimulation, or similar brute force methods is one 
valid, and effective, way to go about  (Binomial Simulation, a method 
that I am playing around with, is another approach that is similar .. 
as before I will post on that subject ASAP but I am getting busier 
and busier elsewhere).

The early method, used by RalphVince, where he considered the total 
set of closed trades and biased the 'resolution' to the max loss was 
an attempt, on his part, to analyse the system profile as defined by 
it's distribution i.e. optimal F

In his later books he attempted to rectify the weaknesses of this 
method and include the worst case scenario in his estimates i.e. he 
tried to make allowance, in his calculations, for the worst trade 
that we are still to have.

Of course, this is an impossible mission, since we can never be 
certain about the future, only significantly optimistic. 

It is however, still worthwhile to make the probability estimation, 
for our own peace of mind.

As promised before:

when the (BT) vehicle is ready the Money Manager will appear!


--- In amibroker@xxxxxxxxxxxxxxx, "Mike" <sfclimbers@xxx> wrote:
>
> 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/