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

Re: [amibroker] Re: Auto-optimization AFL uploaded



PureBytes Links

Trading Reference Links

Hi,  Stephane,

A propos same book, "The Ultimate Trading Guide" by Hill, Pruitt, Hill, -
Wiley, have you made good use of it?

Do you know of anyone who uses "Drummond Geometry" ?

Herbert

----- Original Message ----- 
From: "Stephane Carrasset" <nenapacwanfr@xxxxxxxxx>
To: <amibroker@xxxxxxxxxxxxxxx>
Sent: Thursday, October 30, 2003 2:19 AM
Subject: [amibroker] Re: Auto-optimization AFL uploaded


> Hello,
>
> I have read nearly one meter of books and I remember one " the
> ultimate trading guide". it backtests p 216 a simple donchian system
> that is reoptimized on a rolling 2 years basis, the results were
> worst than static parameters and the conclusion was that
> reoptimization does not work...
>
> stephane
>
>
>  wrote:
> > re the bug, you're correct, thanks. I don't specifically remember
> fixing it,
> > but it's wrong as you found in v1, but corrected in the unreleased
> v1.1.
> >
> > re the possibility that profitability isn't great because
> optimization
> > happens too often, you got that you can control how often that gets
> done,
> > right? in the framework configuration section,
> equity_lookback_frequency is
> > the number of bars between optimizations, with 0 meaning every day
> and -1
> > meaning optimize once at the beginning.
> >
> >
> > re other reasons why this doesn't make systems profitable, well,
> that's a
> > very very very interesting question, one I've thought and posted
> about a
> > lot.
> >
> > I don't see any huge difference in principle between auto-
> optimization and
> > backtesting in general. when we say some strategy works well, we
> generally
> > mean that someone backtested it at some point in time, with some
> particular
> > set of parameters, and it worked well. if another person hears
> about it 25
> > years later, and backtests with data going up to that much later
> date, they
> > may get very different optimal parameters, or a completely failing
> result
> > with any settings. so our evaluation of systems and their
> parameters is
> > always dependent on the time frame we chose to examine.
> >
> > if that's the case, it seems to me that a robust system should be
> > optimizable at any given point in time, and be successful going
> forward with
> > those best-choice parameters. re-optimizing every day takes that to
> an
> > extreme, but avoids completely arbitrary decisions about when to
> optimize
> > and when not to. every week? month? year? every saturday? every
> january 1?
> > june 22? what possible justification is there for any of these? to
> put it
> > differently, why does ignoring possible changes in market dynamics
> in
> > between optimizations improve the performance or reliability of a
> system?
> >
> > outside of when you choose to optimize, it fundamentally comes down
> to
> > whether past performance predicts future performance or not. if
> > auto-optimization fails as a concept, doesn't that say that there's
> a basic
> > disconnect between how a system and settings performed in the past
> and how
> > it does in the future? if that's true, why do we believe that any
> backtest
> > results tell us anything useful at all?
> >
> > one possible answer is that raw profitability may not be the best
> predictor
> > of future performance, so we need better metrics to judge past
> performance
> > than simple equity growth. the framework comes with two rules for
> scoring
> > performance during optimization, and you're heartily encouraged to
> edit
> > those or add your own.
> >
> >
> > if I really believed that observing past performance told us
> nothing about
> > the future, I'd have to abandon TA completely and look to
> fundamentals,
> > industry news and knowledge, etc for trading strategy. I haven't
> gone that
> > far obviously, but I'm at a loss to explain away the argument I've
> just
> > given. better performance metrics are the only logical avenue I can
> see out
> > of that dead end.
> >
> > I don't mean to sound like I think I've got this all figured out,
> quite the
> > opposite. I feel like I've disproved my own existence or something,
> proved
> > the impossible. so please, somebody, wise me up!
> >
> > dave
> >   update:
> >
> >   I have attached a file with my settings and results by rule.
> (Again, I
> > used
> >   QQQ daily data for from 1/2/3 to 10/28/3.)
> >
> >   I agree with your statement: '...almost no trading rules I've
> tested are
> >   very profitable when managed this way, with any framework
> settings I've
> >   tried...'
> >
> >   So, I wonder what this means? Perhaps the optimization happens too
> >   frequently?
> >
> >   -john
> >
> >   Also I found a possible bug in BuySellStochCCI.  I added the
> second line
> >   below:
> >
> >   function BuySellStochCCI(dynamic, p1, p2) { // p1 = CCI period
> >       period=p1; //added this to Dave's code
> >       cc = CCIx(period);
> >       cc = StochTransform(cc, period);
> >       Buy = Cover = Cross(cc, 50);
> >       Sell = Short = Cross(50, cc);
> >   }
> >
> >
> >
> >   ----- Original Message -----
> >   From: john gibb
> >   To: amibroker@xxxxxxxxxxxxxxx
> >   Sent: Wednesday, October 29, 2003 10:33 AM
> >   Subject: Re: [amibroker] Auto-optimization AFL uploaded
> >
> >
> >   I assume by 'analysis mode' you mean Scan mode; right?
> >
> >   And, yes, the Index Symbols below have no
> Buys/Sells/Shorts/Covers with
> > 'my'
> >   rule in Scan mode, although they do have volume...
> >
> >   Since it seems to be working, I am now wondering what my next
> step should
> >   be, given my ultimate objective of a QQQ options system that uses
> EOD
> > data.
> >   I welcome your inputs on this, but I think I will first take
> advantage of
> >   all the rules you have provided and compare, via the sum of
> BackTest
> > Profit,
> >   their QQQ results with those of my rule. (And I will also record
> Explore
> >   results so I can see the optimum parameter values, although I am
> not clear
> >   on how to best utilize these results yet.)
> >
> >   thanks again
> >
> >   -john
> >   ----- Original Message -----
> >   From: Dave Merrill
> >   To: amibroker@xxxxxxxxxxxxxxx
> >   Sent: Tuesday, October 28, 2003 7:03 PM
> >   Subject: RE: [amibroker] Auto-optimization AFL uploaded
> >
> >
> >   glad it's working. it's too bad the no-array limitations on the
> native AB
> >   functions make us get a little more techie about this than we'd
> otherwise
> >   have to, it's workable.
> >
> >   re no rows, near the bottom is the exploration code, including
> the filter
> >   statement, which I think defaults to buy or sell or short or
> cover. if
> >   that's what you want, then the problem is probably that you're
> not seeing
> >   any buys, in analysis mode either, yes? if so, make sure the
> index tickers
> >   you're using have volume data (some do some don't in the
> QuotesPlus data I
> >   use), or modify the minimum volume requirement in the TRADE ENTRY
> >   RESTRICTIONS section.
> >
> >   that's actually the sleazy answer. a better one is to look in the
> > FRAMEWORK
> >   ENGINE section, at 'tweak volume entry requirements for things
> with no
> >   volume data', and find this expression:
> >       StrLeft(Name(), 1) == "!"
> >   with my QuotesPlus data, that's how indexes are flagged, by
> having their
> >   ticker names begin with "!". with other providers, it's probably
> > different;
> >   I think yahoo is "^", for example. change that code, and anything
> with
> > that
> >   prefix won't be subject to the minimum volume rule in TRADE ENTRY
> >   RESTRICTIONS. the unreleased update of the framework has a better
> way of
> >   handling this.
> >
> >   hope this helps,
> >
> >   dave
> >   It works!!!! Making my MFI period, p1, a constant, eliminated the
> >   error...thanks
> >
> >   Then, since sum() appears to take an array for its period, I was
> able to
> > get
> >   this updated, dynamic-or-not function to run:
> >
> >   function BuySellPcntBMFI(dynamic, p1, p2) { // p1 = MFI period,
> p2 = high
> >   crossover threshhold
> >       price = Close;
> >       BA = 20; //Bband MA
> >       BD = 2;//Bband Stdev
> >       BL = ML = 20;// lower crossover threshhold
> >       MP = p1;// MFI period
> >       if(dynamic) {
> >           MoneyFlow = V * Avg;
> >           Change = Avg - Ref( Avg, -1 );
> >           PositiveFlow=Sum( IIf( Change > 0, MoneyFlow, 0 ) ,p1 );
> >           NegativeFlow=Sum( IIf( Change < 0, MoneyFlow, 0 ) ,p1 );
> >           MoneyRatio=PositiveFlow/NegativeFlow;
> >           MFIndex=100-(100/(1+MoneyRatio));
> >       } else {
> >           MFIndex=MFI(MP);
> >       }
> >       MH = BH = p2;// higher crossover threshhold
> >       b= ((price - BBandBot( price, BA, BD )) / (BBandTop( price,
> BA, BD ) -
> >   BBandBot(price, BA, BD ))) * 100;
> >       Buy = Cover = b > BH AND MFIndex > MH;
> >       Sell = Short = b < BL AND MFIndex < ML;
> >   }
> >
> >   thanks again
> >
> >   -john
> >
> >   BTW, when I use 1990-to-current EOD data for MSN's $COMPX or
> Yahoo's ^IXIC
> >   (both supposedly the NASDAQ composite) as my 'current stock', i
> get a
> > single
> >   result row for Backtest and NO rows, just headers, for Explore.
> > Individual
> >   stocks do yield multiple rows.
> >
> >
> >   ----- Original Message -----
> >   From: Dave Merrill
> >   To: amibroker@xxxxxxxxxxxxxxx
> >   Sent: Tuesday, October 28, 2003 12:09 PM
> >   Subject: RE: [amibroker] Auto-optimization AFL uploaded
> >
> >
> >   hi john, I don't have time right now to mess in detail w this,
> but try
> >   temporarily replacing p2 with a fixed number and see if the error
> goes
> > away.
> >   it won't give you correct results, but might verify my suspicion,
> which is
> >   that AB's BBand functions can't take arrays for their period. if
> that's
> > the
> >   case, you'd need to code a replacement in AFL that can, or if
> we're lucky,
> >   maybe those functions are part of indicators.dll.
> >
> >   I hope that some day soon, we'll get versions of all built in AB
> > indicators
> >   that are array-capable. many of them already are, and it would be
> great if
> >   life was that kind of symetrical, not to mention useful.
> >
> >   dave
> >
> >   I think i have a 'dynamic=false' situation like your
> BuySellStoch. (I am
> >   using p1 as the number of periods for MFI() and assume that this
> >   "mfi(periods=14)" syntax in Help means that MFI can take only a
> > single-value
> >   parameter. And p2 is a single-value crossover threshold for
> Bollinger's
> > %b.)
> >
> >   FWIW, here is my rule code producing the error:
> >
> >   function BuySellPcntBMFI(dynamic, p1, p2) { // p1 = MFI period,
> p2 = high
> >   crossover threshhold
> >       price = Close;
> >       BA = 20; //Bband MA
> >       BD = 2;//Bband Stdev
> >       BL = ML = 20;// lower crossover threshhold
> >       MP = p1;// MFI period
> >       MH = BH = p2;// higher crossover threshhold
> >       //b is Bollinger's %b
> >       b = ((price - BBandBot( price, BA, BD )) / (BBandTop( price,
> BA,
> > BD ) -
> >   BBandBot(price, BA, BD ))) * 100;
> >       Buy = Cover = b > BH AND MFI(MP) > MH;
> >       Sell = Short = b < BL AND MFI(MP) < ML;
> >   }
> >
> >   TIA,
> >
> >   -john
> >
> >   ----- Original Message -----
> >   From: Dave Merrill
> >   To: amibroker@xxxxxxxxxxxxxxx
> >   Sent: Tuesday, October 28, 2003 8:03 AM
> >   Subject: RE: [amibroker] Auto-optimization AFL
> >
> >
> >   thanks for the compliments, glad it's kind of sane in there (:-).
> >
> >   just FYI, there's a new version of this that I haven't posted
> yet. among
> >   other changes, it handles up to 3 optimization parameters, and
> allows each
> >   rule to set the optimization parameter ranges independently. it
> also moves
> >   the docs into a separate file, so the code file is smaller and
> easier to
> >   deal with. I'll get that up as soon as I can finish it off.
> >
> >   no, you don't have to set dynamic yourself, and shouldn't. did
> you read
> > the
> >   comments about it? I bet it's not dynamic itself that your rule
> is getting
> >   hung up on, it's the optimization parameters being arrays when
> dynamic is
> >   true.
> >
> >   here's the section about this from the newer version, expanded a
> bit from
> >   the original; not sure if the example BuySell rules it mentions
> are
> > exactly
> >   the same:
> >
> >   --------------
> >   during optimization, the active rule is called multiple times,
> once with
> >   each combination of p1, p2 and p3 being tested. at this time, p1,
> p2 and
> > p3
> >   are simple numeric values, not arrays. once optimal settings have
> been
> >   determined for every bar, the rule is called once more, to
> generate actual
> >   trading signals. this time, p1, p2 and p3 are arrays, each bar
> dynamically
> >   containing the optimal p1, p2 and p3 value for that bar.
> >
> >   whether they're simple values or arrays matters because not all AB
> > functions
> >   can accept arrays as inputs. for example, MA, TEMA, DEMA, WMA and
> AMA can
> >   use an array as their period, but EMA and MACD can't. it's usually
> > possible
> >   to code an equivalent in AFL that can, like the included EMAx
> function is
> > a
> >   replacement for EMA. an AFL replacement may be significantly
> slower
> > though,
> >   if it has to do a lot of work, since rules are called many times
> during
> >   optimization. you could also use a DLL, like indicators.dll from
> the 3rd
> >   party section of the AB site, but I didn't want this code to
> depend on
> >   outside tools.
> >
> >   if this is an issue for a particular rule, include both slower
> > array-capable
> >   code for use in the final signal-generation phase, and faster,
> >   non-array-capable code for use during the many optimization
> tries. use the
> >   'dynamic' parameter to know which to call; see BuySellStoch,
> below, for an
> >   example. you can also write a custom function with both versions,
> and pass
> >   dynamic into it; see BuySellCCI and CCIx for an example.
> >   --------------
> >
> >   hth,
> >
> >   dave
> >   Hi Dave,
> >
> >   I started working with it...very nice, structured, work...this
> will help
> >   folks learn AFL as well as general programming design, I believe..
> >
> >   so far, i am having a bit of trouble with the 'dynamic' True/False
> > parameter
> >   being fed to one of my indicators---but i suspect this is my
> problem not
> >   yours:
> >
> >   BuySellRule(True, best_p1, best_p2);
> >   -----------------------------------^
> >
> >   Bad args.
> >   0-th argument of function call has invalid (or unsupported) type
> >
> >   I don't have to specifically set 'dynamic'; do I?
> >
> >   thanks
> >
> >   -john
> >   ----- Original Message -----
> >   From: Dave Merrill
> >   To: amibroker@xxxxxxxxxxxxxxx
> >   Sent: Thursday, October 23, 2003 6:32 PM
> >   Subject: RE: [amibroker] Auto-optimization AFL uploaded
> >
> >
> >   thanks, appreciate it (:-).
> >
> >   so, did you figure out how we can all be millionaires by morning
> with it
> >   yet? or at least learn something about something?
> >
> >   you probably noticed this, but the way it comes set up, it's not
> using
> >   equity feedback to optimize with, but net bars on the right side
> of the
> >   market. my initial impression after I built that was that it
> worked better
> >   than equity, but since then, I've concluded that, guess what, it
> depends.
> > so
> >   anyway, try the other scoring algorithm too, if you haven't
> already.
> >
> >   keep me posted (:-).
> >
> >   anyone else playing with this thing?
> >
> >   dave
> >   I've downloaded it and run it about a dozen times.  What you've
> done is
> > very
> >   impressive.
> >
> >   Thanks,
> >   Howard
> >
> >   -----Original Message-----
> >   From: Dave Merrill [mailto:dmerrill@x...]
> >   Sent: Wednesday, October 22, 2003 1:11 PM
> >   To: amibroker@xxxxxxxxxxxxxxx
> >   Subject: RE: [amibroker] Auto-optimization AFL uploaded
> >
> >   forgot to say it howard, but I'm very interested in what you
> think about
> > it,
> >   and any results you get from fiddling with it.
> >
> >   dave
> >
> >
> >   Send BUG REPORTS to bugs@xxxx
> >   Send SUGGESTIONS to suggest@xxxx
> >   -----------------------------------------
> >   Post AmiQuote-related messages ONLY to: amiquote@xxxxxxxxxxxxxxx
> >   (Web page: http://groups.yahoo.com/group/amiquote/messages/)
> >   --------------------------------------------
> >   Check group FAQ at:
> >   http://groups.yahoo.com/group/amibroker/files/groupfaq.html
> >
> >   Your use of Yahoo! Groups is subject to the Yahoo! Terms of
> Service.
> >
> >
> >   Yahoo! Groups Sponsor
> >   ADVERTISEMENT
> >
> >
> >
> >
> >   Send BUG REPORTS to bugs@xxxx
> >   Send SUGGESTIONS to suggest@xxxx
> >   -----------------------------------------
> >   Post AmiQuote-related messages ONLY to: amiquote@xxxxxxxxxxxxxxx
> >   (Web page: http://groups.yahoo.com/group/amiquote/messages/)
> >   --------------------------------------------
> >   Check group FAQ at:
> >   http://groups.yahoo.com/group/amibroker/files/groupfaq.html
> >
> >   Your use of Yahoo! Groups is subject to the Yahoo! Terms of
> Service.
> >
> >         Yahoo! Groups Sponsor
> >
> >
> >
> >   Send BUG REPORTS to bugs@xxxx
> >   Send SUGGESTIONS to suggest@xxxx
> >   -----------------------------------------
> >   Post AmiQuote-related messages ONLY to: amiquote@xxxxxxxxxxxxxxx
> >   (Web page: http://groups.yahoo.com/group/amiquote/messages/)
> >   --------------------------------------------
> >   Check group FAQ at:
> > http://groups.yahoo.com/group/amibroker/files/groupfaq.html
> >
> >   Your use of Yahoo! Groups is subject to the Yahoo! Terms of
> Service.
>
>
>
> Send BUG REPORTS to bugs@xxxxxxxxxxxxx
> Send SUGGESTIONS to suggest@xxxxxxxxxxxxx
> -----------------------------------------
> Post AmiQuote-related messages ONLY to: amiquote@xxxxxxxxxxxxxxx
> (Web page: http://groups.yahoo.com/group/amiquote/messages/)
> --------------------------------------------
> Check group FAQ at:
http://groups.yahoo.com/group/amibroker/files/groupfaq.html
>
> Your use of Yahoo! Groups is subject to http://docs.yahoo.com/info/terms/
>
>



------------------------ Yahoo! Groups Sponsor ---------------------~-->
Rent DVDs Online - Over 14,500 titles.
No Late Fees & Free Shipping.
Try Netflix for FREE!
http://us.click.yahoo.com/vhSowB/XP.FAA/3jkFAA/GHeqlB/TM
---------------------------------------------------------------------~->

Send BUG REPORTS to bugs@xxxxxxxxxxxxx
Send SUGGESTIONS to suggest@xxxxxxxxxxxxx
-----------------------------------------
Post AmiQuote-related messages ONLY to: amiquote@xxxxxxxxxxxxxxx 
(Web page: http://groups.yahoo.com/group/amiquote/messages/)
--------------------------------------------
Check group FAQ at: http://groups.yahoo.com/group/amibroker/files/groupfaq.html 

Your use of Yahoo! Groups is subject to http://docs.yahoo.com/info/terms/