There is an option in Builder's Indicators section to enable or
disable price pattern detection. Has anyone played with only using
that indicator and no others to determine what patterns Builder looks
for? Possibly it more a matter of determining what patterns we'd like
Mike to add in the future and not so much a start difference between
Builder and some other program?
Or is it that the people looking at this other program believes that
program generates & mines patterns specific to that data set
specifically? I'm not clear about that.
This whole discussion leads me toward a point/comment/question about
all this stuff that sort of goes like this:
1) One argument technical analysis is thought to work at all is because:
a) Humans operate with a herd mentality
b) The herd isn't that sophisticated and is observing standard
indicators with standard settings.
c) If we watch the same indicators with the same standard settings we
have a chance to move with the herd
By optimizing indicators we introduce a problem. We might find better
values over the short term but that's curve fitting defined. Over the
long run the herd is watching standard indicators with standard
values.
QUESTION: Would a program searching for solutions to trade a market
(Builder or any other program) produce better LONG term results (i.e.
- OOS results that don't fade as per a recent thread) if it looked for
the best (or just a good) set of standard indicators without any
optimization at all, or at most very minimal optimization? I.e. -
maybe the @ES moves because that market trades with MACD while APPL
moves because that market trades with momentum.
NOTE: Please understand that I get I've grossly oversimplified that
argument just to make the question clear. The world isn't that black &
white, and we all know it, but I wanted the question to be both simple
and clear.
Thanks,
Mark
Sorry. In rereading the previous posts I believe I had PAL's claims
backwards in terms of pre-defined price patterns. That means my
previous post was really off-topic. Sorry. (To my small credit, at
least I reread!) ;-)
Cheers,
Mark
John,
Thanks for the positive personal comments. I do appreciate that my
posts might be helpful some at times. I come from about 15 years of
Linux Open Source where on-topic, off-topic, nuclear war-of-words,
threats and then return to on-topic is the norm. I understand that
sometimes threads go awry. We can all try to gently nudge them back at
times. Like you I do get frustrated at times with some conversations
but for the most part I just try to stay quiet unless I have an
opportunity to make a positive contribution.
Also, be assured that my interest here in this forum is really &
truly (1) the most effective use of Builder for myself and others
coupled with (2) an attempt to gently drive the future development in
directions that hopefully I and others will find useful and more
effective over time. As I stated sometime ago, I purchased my license
with an eye to the very long term and that hasn't changed. I've been a
customer of Mike's for MSA for a long time and while I don't know Mike
I am sure he is one the people I want on my side.
As for trolling, yeah, consider yourself welcome to join the wild
west world of Linux if you really wanna see that in effect. There are
many people that I suspect are simply paid by M$ to spread FUD and
nothing else. Sometimes it's hard to tell who the good guys are. (Not
really if you stick around and really study, but moment by moment it
can get confusing. :-) Also, note that while I don't write my full
name here it should be trivial for anyone interested in finding me to
get a private email to me at any time. (I ain't hard to find if some
hedge fund out there wants to hire me play with Builder or write
EasyLanguage for them. Lord knows I could use the diversion and a
little extra income!) ;-)
OK, all that said, thanks very much for the pointer to StatBins1.
I've spent a little time playing with it this morning and can see
exactly how it could address if not begin to answer at least the study
of the sort of question I raised about the use of standard (or
non-standard) indicators. I posted 3 different Performance Results
charts from TS here:
http://www.flickr.com/photos/29328985@N03/
Note that the one that's least impressive (actually ugly) was a quick
test where I set the Max/Min binning values to a larger range than
StatBins told me to. That really didn't work. The other two were just
examples of two date ranges for in-sample (1999-1/2002 & 1999-1/2004)
each of which produced at least reasonable results out-of-sample.
A few observations and one heads-up for anyone who plays with these:
1) As per instructions SfMax/Min are set to the in-sample maximums I
am unsure what the strategy does when OOS produces values outside of
those ranges. It may work fine, or it may not trade, or it might even
die. Don't know.
2) While it might cause the number of bins to jump quite a lot I think
that had I been insightful enough to have done this on my own (which I
wasn't so props to Mike for contributing it) I might have chosen
either 3 or 5 bins instead of 4. With a _hard_ divide at 0 I'm a
little troubled by the idea that for an oscillator 0.000000001 falls
into a different bin than -0.00000001. Consider possibly +/- 1 StdDev
as a center bin and then >1, <-1, >2, <-2 StdDev as another way to
approach the binning. Granted, if I get serious about that I (we?) can
do that so don't take this as anything more than an observation.
3) To me a next step that almost begs study is the effect of
walk-forward analysis on binning choices but that's for sometime in
the future I think.
HEADS-UP: If you or others run into an error message about trying to
reference outside the bounds of an array my experience so far says
I've got too much in-sample data, or more likely too many trades or
something, so I've filled the fixed array sizes and tried to go where
there ain't no storage. I haven't verified that or tried to see where
the code could be modified. Just documenting what I had to do to get
it to work.
Now, how might we use StatBins1 WRT Builder. It sort of begs the
rhetorical question 'How does Builder choose the indicators it's going
to use in the first place and how does Builder create and choose to do
crossovers & mutations?' While I wouldn't want Mike to ever expose his
secret sauce this whole process does make me wonder about taking
arbitrarily complex Builder strategies, breaking the entry and exit
conditions down into their component 'indicators' and then exposing
each of those indicators to something like StatBins1 for some study on
when they work & why they work. The goal being to understand why a
strategy is fading and what to do to keep it on track. Huge project
though...
Anyway, I much appreciate the pointer and thanks for allowing my to
wax technical...
Cheers,
Mark
No reason you can't start a new thread. However before you do, as this
is the 'Adaptrade Builder' group, let's see if we can't find a way to
more directly relate it to Builder so that it's potentially of
interest to more people.
I wanted to raise one (big) caveat before people go off chasing equity
curves in StatBins. READ THE CODE! UNDERSTAND IT! While the ES curves
were pretty unfortunately on the hours the strategy was in the
positions they don't conform with my personal trading requirements.
Nor should they as Mike wrote it for his own purposes. Anyone who
wants to go down the path of this sort of investigate should get
inside the code and modify it (or hire someone to modify it) to meet
their own trading requirements before spending too much time looking
at curves. At least that's the way I feel.
Cheers,
Mark
Hi Rick,
Again, with the caveat that this curve is just what StatBins does
by default and that none of the curves meet my personal needs, the
average number of bars was roughly 18.5 60 minute bars and was fairly
equal for both winning and losing trades. Keep in mind that these are
60 minute bars so we're talking about being in any trade for less than
1 day on average. This is mainly due (I believe) to the sample code
using SetExitOnClose for session 1 so no matter when you enter you're
out at 15:00. I don't think a trade could ever be longer than 24 bars.
And as my previous post stated, the code Mike provided is there for
anyone to look at. This wasn't a Builder system and wasn't optimized
in any way in terms of the 5 indicators it used or the settings of
those indicators. (I don't think anyway.) The indicators in the code
aren't rocket science type indicators. It was just an example that
Mike wrote to get people thinking.
Please keep in mind that beyond all the stuff above the real
question I was curious about was out-of-sample results fading over
time, as well as whether they roughly approximated in-sample results,
which they sort of did in the case of the curve that made
approximately $50K. I.e. - there were about 150 trades over the 5
years of in-sample data and approximately 200 trades over the 8 years
out of sample. If you viewed the equity curve by date (as you request)
instead of by trade number it remained reasonably linear.
I've posted that here:
http://www.flickr.com/photos/29328985@N03/7003938561/in/photostream
On more thing: Assuming you have access to 60 minute ES data this
process is _completely_ deterministic and you or any other reader
should be able to recreate the exact curve that I've posted.
So, at the risk of being overly clear: THIS AIN'T A TRADING SYSTEM.
IT'S JUST A STUDY. :-) ;-) However maybe it will lead to something
that is tradable. I've started rewriting the code to be of more
interest to my needs.
HTH,
Mark
http://www.priceactionlab.com/Literature/pal30manual/pal30manual.html#process41
As I said, I'm not sure if this is representative. I'll leave that to
others who have more time than I do for this.
I read the short blurb on curve fitting. I have to say, it makes no
real sense to me. He classifies trading system optimization methods
into 3 types: 1) Those where the optimization affects both the entry
and exit points, 2) Those where the optimization only affects the
entry points, and 3) those where the optimization only affects the
exit points. OK. So what.
My perspective is you want your optimization method to curve fit.
That's the whole point. If I have a bunch of observed data on the
trajectory of canon balls, I want my curve fitter to come up with x =
x0 + v0*t +.5*32*t*t. I want to find the underlying process. It's just
you want to fit the signal and not the noise. What you don't want is
overfiiting. There are a large number of techniques that attempt to
prevent overfitting when using things like neural networks or
evolutionary algorithms. The main ones use some form of in sample/out
of sample. As we have seen, however, if you hand select your out of
sample results, you invalidate the whole thing, because you are using
a selection method (your own brain) which looks into the future (the
out of sample period).