In fact Bill that's _exactly_ what should be happening. I often run
the exact same settings 5 or times to look at what Builder finds and
pretty much every time the output is different and sometimes _very_
different.
> Can anyone here give me some guidance as to the best set of metrics to
> use? I need to use a fixed set of metrics otherwise this process will
> lead to more frustration and possibly nowhere. If getting a good
> system depends on selecting the proper set of metrics then what we are
> doing here is just moving from the level of chaotic manual system
> testing to chaotic build metrics setting.
>
I'd suggest you try something like 1997-2005 or 2006 as in-sample,
then 2005 or 2006 to maybe 2009 out-of-sample but reset the population
if the OOS period doesn't make money. This would allow you to reserve
2009 to present to discover whether you found something that actually
worked. Remember, the way Builder does the OOS reset really means
there is a selection bias all the way to the end of the data it used
so 2009 to present would be the only truly OOS data.
> FYI, I have been developing trading systems for more than 10 years and
> I have used Metastock, Amibroker, Metatrader, Ninjatrader, eSignal and
> some other platforms and a few different data services.
>
Welcome.
Cheers,
Mark
OK, so that's as hit & miss as anything, but I'll tell you there is no
'best set' TTBOMK when it comes to doing anything in Builder. So much
depends on whether you're making a swing trading system holding for
weeks or a scalping system holding for minutes. It's very hard to even
suggest what you would consider 'best' because I don't know your
tolerance for holding through a drawdown vs tight stops, etc.
You might ask yourself the question what you would consider
'reasonable' results for your in-period time. You might then target
that number for the total returns against some number of trades based
on how much you think you want to trade, and maybe target linearity
with a high correlation coefficient. I'd suggest fewer build metrics,
not more.
In my experience a good way to start is just playing and look at the
results your getting. Sometime very small changes end up giving you
very different results. That's the nature of this sort of genetic tool
I think.
I'm somewhat under the weather today so I don't have the energy to go
download data but sometime next week maybe I'll try to put something
together and see what I come up with. I've done ES daily bar systems
before. They were relatively easy to get something to at least
consider but I've never traded one myself.
HTH,
Mark
Dunno Bill. It took me about 15 minutes to come up with at least one
reasonably interesting result for @ES.D from 1997-2012. It made some
money, is pretty linear, and the OOS results are reasonably similar to
the IS results.
One problem with these Google Forums, unlike Yahoo Forums, is there's
no place to store files for sharing with other members. I'll forward
you the gpstrat file off list. Maybe Mike can look into some sort of
member based storage solution so that I could post the gpstrat file
and anyone who cared to look at it could grab a copy down the road.
Respectfully, I ask others to not request this gpstrat from me
directly as I cannot respond to every list member independently. Also,
as has been happening lately, I'd additionally like people to _not_
ask me for data files off list. The TradeStation data agreements do
not allow me to give away copies of their data. Thanks in advance.
Cheers,
Mark
OK, there's something about Builder and the way Mike Bryant
architected it that you'll just have to get your head around. It's not
what I might have done if I was a programmer, but then again, I'm not.
(Well, I program LOTS of EasyLanguage, but not C++) Anyway, the ONLY
strategy that Builder cares about is the ONE strategy that has the
highest fitness value. From generation to generation, as I understand
the program, it's really only working to get higher fitness values.
Creating a large population does statistically give you more chance of
getting something that work OOS, but isn't that what this is all
about?
> Regardless, I have a couple more
> important observations to make about the results:
>
> Observation 1: When I run AB using in-sample of 85% of original data
> without including the OOS, AB generates too many trades, about 4,500
> of them for highest net profit and 1,604 for highest profit factor. I
> checked the EL code and it shows the long entry condition always set
> to True.
>
Then play with your build metrics and entry/exit types. Are you
allowing it to exit end-of-day? There were only 3500 or so bars. (15
years @ 250 days/years?) I suspect you are looking for something
that's more of a swing system but Builder is creating something that's
exiting every night?
> Observation 2: When I run AB on the combined data file after
> specifying the IS and OOS proportions of 85%/15% in the program, I get
> only 405 trades in the IS for highest net profit with negative
> performance in OOS. This is very strange. I ran the project many times
> and I got the same result. This made me suspicious that maybe AB is
> looking at the OOS when selecting systems from the IS results. I
> cannot imagine this is what is happening but the reduction in the
> number of trades by a factor of 10 when OOS is included is very
> peculiar to say the least.
>
Don't know. There isn't enough info there for me to take any real action.
Note that Builder isn't some solution that makes you rich over night.
It's just a tool that generates code. My experience has been
reasonably positive however honestly I have never traded a Builder
generated system live. The biggest problem I have isn't getting
systems that appear to make money inside of Builder but rather getting
the result in Builder and TradeStation to match.
Also, and I've found this reasonably important, if you are trying to
exit end-of-day then what Builder does is use SetExitOnClose which
actually makes the trade at the open the next day in real life, but I
believe it uses today's closing price to make its profit calculations.
This can cause major differences.
One other thing you might try: 3500-4000 bars is a bit small from my
experience. You're essentially trying to find a single system that has
performed flawlessly for 15 years but with only 250 bars/year. That's
very restrictive. You might try building systems for more consistent
markets - a bull model, a bear model - and then try running those
models when you suspect the market is actually trending up or down,
etc.
Good luck,
Mark
OK, first let me extend my apologies. The comments above weren't meant
to be a dig against you or Builder in any way but I think it sounded a
bit stronger than maybe I really meant and it certainly wasn't meant
negatively. I'm sorry if it came off that way.
Again, my apologies.
With best regards,
Mark
Mike Bryant
With respect to AB, one of the things I notice is that the way I
interpret you build parameters, is they are inherently "unstable".
When you only apply a $3 commission to trades, where the bid/ask
spread is itself $12.50, you are clearly searching a huge space of
trading systems where most of the systems are in the noise. IMHO, the
goal is to find a trading system which takes advantage of some real,
non-random underlying process. Because there are an infinite number of
systems, the first goal must be to weed out as many as you can that
are not profitable, except for chance, before you start your search,
or in the case of AB, to limit the search significantly. Only then can
you have any hope that a random selection process has a shot of
finding something real. For instance, I have had some success using a
commission of $25.
Nahh, it really was and is required. I've been in bed sick for a week
and really shouldn't even have been posting the last couple of dayst.
In rereading my post I don't like the tone of it and feel that I owe
you at least that much if not more.
I'll be back in a week or two when hopefully I feel more healthy.
Until then, over and out.
Cheers,
Mark