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

Re: [amibroker] Re: Hurst Channels



PureBytes Links

Trading Reference Links

Fred,

Long post I'm afraid, but bear with me...

Since our last conversation I've been doing some head-scratching on 
which method of CMA is best for extracting cycles. After re-reading 
Millard and then trying to theorise my way in ever-decreasing circles 
about what *should* be the best way, I decided to try to experiment and 
find out what works best *in practice*. I've attached the results in the 
form of plots and a summary spreadsheet for your (or anyone else's) 
interest. Here's the logic behind the method (AFL code posted below for 
sake of completeness) :

1. I created two independant sine waves and a 'noise' component. These 
individual components are plotted in the top pane.
2. I then added these together to create a composite 'price-like' plot - 
plotted in grey in the bottom pane.
3. Four different kinds of Centred-MA (see below) were then plotted on 
the bottom pane, with the composite as an input. The aim was to select a 
periodicity for each CMA that would filter out the noise and the shorter 
wavelength cycle (cycle 2), leaving the closest possible representation 
of the longer cycle 1.
4. The lag, wavelength and amplitude of this CMA plot were then 
*measured* (i.e. they weren't deduced theoretically, but were actual 
observed values).
5. The values were compared on the spreadsheet.

The four different CMAs were based on:
(a) Simple MA. The most basic centred SMA
(b) Millard's "Smoothed Average" from Chapter 7...i.e. an MA of 
n-periods which has been smoothed again by an MA of n/2 periods.
(c) Triangular MA. This is an n/2 MA of an n/2 MA
(d) Custom MA. This is per your last email with the first MA being 
n*0.75 and the second being half that.

The Triangular MA has the same lag characteristics as a Simple MA. 
However, in order to get the same *filtering* effect (i,e, to take out 
cycle 2 completely) you have to near-enough double the periodity, which 
then obviously takes the lag up. Experimenting seems to suggest that you 
don't actually have to double it, which I guess is why I settled on a 
multiplying factor of 1.5 for my Cycle Highlighter indicator. I think I 
originally settled on 1.5 after mis-reading Millard's section on the 
"Weighted MA" and have therefore been using something which was 
nearly-correct but for the wrong reasons! Oh well, at least I have a 
better idea now. However, the results of this seem to suggest that 1.75 
would be a better number, so I've changed my indicator accordingly. I'm 
sure there's good theory behind why this should be so, but I can't think 
it through. Can you?

So anyway, all that testing seems to show is that Millard's Smoothed 
Average is the best for this purpose. My triangular MA seems to have 
been suffering too much lag than necessary, for an output which also 
suffers more damping. There seems to be nothing to choose between your 
"Custom" CMA and the "Smoothed Average". This is obviously because they 
are basically the same thing. Both are MAs smoothed by another MA half 
the first's length. The fact that the "Smoothed Average" starts off with 
and n-period MA and the "Custom" one starts with n-periods*0.75, just 
means that the latter has to have "n" ramped up to provide the same 
filtering/smoothing effect.

OK, so far so good. I've decided to ditch the Tri-CMA in favour of the 
"Smoothed CMA". But here's another question. Millard states ("Weighted 
Average" section) that for those of us with computers(!!) it is 
preferable to chose a centrally-weighted MA. Anyone know how to do that 
without slowing things down even more? Is that the same as the geometric 
mean?? My maths really is too rusty. The standard WMA function is no 
good as it applies the maximum weighting to the *most recent* bar. We 
would need, for example, in a 7-bar MA to have a weighting sequence of 
1-2-3-4-3-2-1

That'll do for now. Tomorrow's job is to add a third, longer, cycle and 
see how extracting the middle cycle goes.

Cheers,
Andy


Fred wrote:
>
> You won't need the math texts to get though Hurst's course
> material ... What you will need is time and patience ...
>
> The 2 / 3 factor is in essence I thought what you were advocating
> i.e. the first cycle length being twice the second ...and the lag
> being the combo of 1 less then half of both ... Millard suggests such
> a methodology in chapter 7.
>
> The Hurst "Like" DE AFL I posted in the library was an interesting
> project ... It seems however that the points could be better picked
> then by using CMA's ... But that's another exercise ...
>
> --- In amibroker@xxxxxxxxxxxxxxx <mailto:amibroker%40yahoogroups.com>, 
> Andy Davidson <AndyDavidson@xxx>
> wrote:
> >
> > Don't worry Fred, straight talk is good for us all :-)
> >
> > I'll think about that 2/3 factor tomorrow - it's late here and my
> brain
> > is aching.
> >
> > I ordered the Cleeton book a while back but it still hasn't
> arrived. I
> > think it'll make for a nice relaxing Xmas read! I've got the book
> by
> > Hurst (Profit Magic), but I froze when I got to Appendix 6 and so I
> > think I need Cleeton as you suggest! The Hurst course is on the
> list as
> > well, but first I think I'll have to get some old Maths texts out
> of the
> > attic and get the grey matter working again in that respect. My
> maths is
> > sadly lacking also and I feel it's really not adequate to take me
> any
> > further than I've got without some hard graft. Oh well, needs must
> I
> > suppose.
> >
> > As far as channels go, I had a look at your Hurst DE quickly today.
> I
> > played with Hurst-like channel trading myself a while back (when I
> was
> > still a naive Metastock user - yeah, I know, but it was OK for at
> least
> > that). I found that my skills were below that needed to tackle the
> > extrapolation problem and so it was simply a matter of using
> discretion
> > and 'eyeballing' a la Hurst.
> >
> > That was when I found Millard's book and latched on to his Cycle
> > Highlighter. To me it was (and still is) a simple and effective way
> of
> > determining the cycles if you have a bias towards discretionary
> trading
> > as I currently do. And by nature it is a normalised plot, so it
> seemed
> > logical to me to go about extrapolating on that plane before I
> tried to
> > tackle the price plot. However, I am now convinced (thanks in no
> small
> > part to yourself) that it is worth pursuing further with the
> ultimate
> > aim of automating the whole cycle-extraction process.
> >
> > So here's to the next step of the journey...hard graft and all.
> >
> >
> > Fred wrote:
> > >
> > > Thanks for the description ... It wasn't a sarcastic comment per
> > > se ... It is imho a benefit to be able to hear from authors of
> code
> > > what the process is that is going on as opposed to someone
> > > unfamiliar with the code having to dig it out ...
> > >
> > > I agree with your comments in 1 & 2 ... I had initially
> implemented
> > > Millard's CMA in the Hurst DE I posted in the library this way ...
> > >
> > > Lag = int(Period / 2);
> > > CMA = Ref(MA(MA(Data, Lag), Lag), Lag);
> > >
> > > It would seem though after reading Millard more carefully that a
> > > better implementation is something like
> > >
> > > CMAL1 = Int(Period * 2 / 3);
> > > if (CMAL1 < 5)
> > > CMAL1 = 5;
> > > If (CMAL1 % 2 == 0)
> > > CMAL1 = CMAL1 + 1;
> > > CMAL2 = Period - CMAL1;
> > > If (CMAL2 % 2 == 0)
> > > CMAL2 = CMAL2 + 1;
> > > Lag = (CMAL1 - 1) / 2 + (CMAL2 - 1) / 2;
> > >
> > > CMA = Ref(MA(MA(Data, CMAL1), CMAL2), Lag)
> > >
> > > The only potential problem I see with this approach is it makes
> the
> > > minimum overall CMA Length 8.
> > >
> > > For the current AFL I implemented a simple CMA ... no muss /
> > > fuss ... The reason is that the CMA would be sampled and
> potentially
> > > smoothed again ...
> > >
> > > I don't know whether or not you have Hurst's PM but he covers (
> very
> > > quickly ) the topic of pulling out the coeff's for multiple cycles
> > > simultaneously in what is to me any way some rather complex math
> in
> > > Appendix 6 ... But then I'm hardly a math Wiz ... If you are
> > > interested in this kind of thing I would strongly recommend
> > > Cleeton's book which while out of print is still readily available
> > > at Amazon and other places for a few bucks used. He discusses how
> > > to perform a similar operation for one cycle and for multiple
> cycles
> > > simultaneously with one of the early steps being sampling of the
> > > CMA ... He uses those points directly and as you can tell from my
> > > description I opted for this approach more or less as well which
> > > seems to produce some interesting results without requiring
> Gaussian
> > > Elimiation to solve multiple simultaneous equations.
> > >
> > > --- In amibroker@xxxxxxxxxxxxxxx 
> <mailto:amibroker%40yahoogroups.com> <mailto:amibroker%
> 40yahoogroups.com>,
> > > Andy Davidson <AndyDavidson@>
> > > wrote:
> > > >
> > > > Hi Fred,
> > > >
> > > > It's good to be able to get back on this subject again,
> especially
> > > as it
> > > > looks like there's a few of us who are 'into' cycles.
> > > >
> > > > Your work-in progress looks very interesting I must say. I
> > > particularly
> > > > like the idea in step 5 to reduce the data before finding a
> > > > fit...brilliant in its simplicity. I also think your equation in
> > > step 6
> > > > will help me out...but without getting into that, here's the
> > > general
> > > > logic of my approach for comparison (and I take the sarcastic(?)
> > > comment
> > > > about explaining in English...I didn't do a good job of notating
> > > the
> > > > script properly!)
> > > >
> > > > 1. Calculate *two* CMAs using triangular-smoothed MAs. CMA1 is
> n-
> > > periods
> > > > length and CMA2 is n/2-periods. Both periods are rounded up to
> the
> > > > nearest odd number.
> > > > 2. CMA1 allows wavelengths > n-periods to pass and filters out <
> > > > n-period waves. CMA2 allows through all cycle wavelengths > n/2-
> > > periods
> > > > and filters out those < n/2. Therefore, subtracting CMA2 from
> CMA1
> > > will
> > > > give us the cycle (or combination of cycles if we're unlucky
> > > enough, or
> > > > have our value of n wrong) that lies between n/2 and n.
> > > >
> > > > Steps 1 and 2 are as per Millard's "Cycle Highlighter" (CH),
> > > except he
> > > > states that the best results are obtained with CMA1 being an SMA
> > > and
> > > > CMA2 being a Weighted MA. He also says CMA1 periods should be
> > > *equal* to
> > > > the wavelength to be isolated. This does work but, through
> > > > experimenting, I have found that Triangular-MAs are best for
> both
> > > as
> > > > they offer the superior smoothing-to-lag trade off. Furthermore,
> > > the
> > > > periodicity of CMA1 should be x1.5 the cycle you want (making
> CMA2
> > > > therefore x0.75). The logic still holds up and the results are
> > > better
> > > > IMO, with a more sine-like output.
> > > >
> > > > 3. Based on user-inputs (see below) I then generate an
> artificial
> > > sine
> > > > wave. This is *anchored to the CH at its most recent (i.e.
> > > confirmed)
> > > > peak or trough*.
> > > > 4. Correlation coefficients are calculated between (a) the sine
> > > wave and
> > > > the CH (or price - depending on user input) over the 'lookback'
> > > period
> > > > (see below) and (b) the sine wave and the price in the 'end
> zone'
> > > (i.e.
> > > > the no-data zone for the CH at the right-hand edge).
> > > >
> > > > Inputs:
> > > > "SINE WAVELENGTH" - this determines if the wavelength of the
> sine
> > > is (a)
> > > > "as per the base cycle (CH)" (i.e. there is no attempt to 'fit'
> > > the two
> > > > curves beyond the anchor point) or (b) a "best fit". In the
> second
> > > case,
> > > > the sine wavelength will depend on:
> > > > "BEST FIT # RECENT CYCLES" - this is the number of full,
> completed
> > > > cycles of the CH where the correlation is measured. The start
> > > point of
> > > > X-cycles back is shown by a blue and red tick on the indicator.
> If
> > > > option (b) is chosen above the average wavelength of the CH is
> > > measured
> > > > in the zone from the blue tick to the end of its plot. This
> value
> > > is
> > > > assigned to the sine plot. If option (a) above then we just get
> X-
> > > cycles
> > > > back of both plots at the same periodicity.
> > > >
> > > > All the above is as per the first indicator I posted. The
> > > following
> > > > loops are done in the auto-fit version:
> > > >
> > > > 5. A loop from "Wavelength Min" to "Wavelength Max" is performed
> > > to find
> > > > the highest total correlation coefficient (a weighted average of
> > > the
> > > > 'CH/sine' and the 'sine/end-zone price' values).
> > > > 6. The series of loops is repeated for "#Cycles Min" lookback up
> > > to 5
> > > > cycles lookback. I chose 5 as an arbitrary number...it's slow
> > > enough as
> > > > is and very rarely do you get a decent correlation going that
> far
> > > back.
> > > > Obviously though when you do, you take notice.
> > > >
> > > > That's as much as I can tell you right now about the logic. Does
> > > it
> > > > work? Well, with the usual caveats blah-blah-blah, I would say
> > > that it
> > > > has been a very useful tool for me for a while now *in
> conjunction
> > > with
> > > > other confirming and entry methods*
> > > >
> > > > Bear in mind that the purpose of the indicator is to find the
> > > *clearest*
> > > > cycle amongst those present, i.e. the one that conforms most
> > > closely to
> > > > a sine wave, and is therefore tradeable *on that time frame*. I
> > > will
> > > > manually switch between time-frames to get the various major
> > > cycles
> > > > (e.g. 1-hour, 4-hour, daily and weekly charts). Work on 'auto-
> ing'
> > > all
> > > > that would be very processor intensive and requires further
> > > thinking.
> > > >
> > > > The plot you sent seems to bear out a further truth about
> trading
> > > with
> > > > cycles, one that I've experienced with this indicator more than
> > > once:
> > > > i.e. short-term cycles (measured in hours and a few days) are
> less
> > > > tradeable than longer-term ones (measured in a few days upwards
> to
> > > weeks
> > > > & months). Certainly, in the plot you sent, most of the smoothed
> > > price
> > > > behaviour can be explained by the interaction of the two longest
> > > > measured cycles (dark blue and cyan).
> > > >
> > > > Anyway, I look forward to ploughing through all the good stuff
> > > you've
> > > > already posted and hope you can help keep this thread going.
> > > There's
> > > > lots of really cool stuff going on here.
> > > >
> > > > Cheers for now,
> > > > Andy
> > > >
> > > >
> > > > Fred Tonetti wrote:
> > > > >
> > > > > Andy,
> > > > >
> > > > >
> > > > >
> > > > > Can you describe in English what your AFL does ? ...
> > > > >
> > > > >
> > > > >
> > > > > I've been playing with a Trig Fit a la Claud Cleeton the steps
> > > for
> > > > > which I would describe as follows ...
> > > > >
> > > > >
> > > > >
> > > > > 1. Optional - Normalize the input i.e. Data = log10((H + L) /
> 2)
> > > > >
> > > > > 2. Calc an arbitrary length ( Parameterized but 11 at the
> > > moment )
> > > > > centered moving average ( CMA ) of the data
> > > > >
> > > > > 3. Calc a 1st order least squares fit ( LSF ) of the CMA over
> > > the
> > > > > period desired ( from / to range marker )
> > > > >
> > > > > 4. Subtract the LSF points from the data points resulting in
> > > detrended
> > > > > data.
> > > > >
> > > > > 5. Take an n-bar sampling of the detrended data. This array
> > > with
> > > > > "holes" or "gaps" in it needs either to be compressed or have
> > > the
> > > > > "gaps" filled ... I elected ( for the moment ) to calc a cubic
> > > spline
> > > > > to fill the gaps ( interpolation ) ...
> > > > >
> > > > > 6. Calc a LSF of the detrended data resulting in the coeffs
> for
> > > the
> > > > > Trig equation Y = A Cos wX + B * Sin wX
> > > > >
> > > > > 7. Calc the correlation of the resulting sin wave to the
> > > original
> > > > > detrended data.
> > > > >
> > > > >
> > > > >
> > > > > Repeat steps 5 & 6 varying n from 1 to ? looking for n where
> the
> > > > > correlation is the highest. This should yield the equation or
> > > data
> > > > > points that most closely correlate to the detrended data.
> > > > >
> > > > >
> > > > >
> > > > > 8. Subtract the points in the sin wave from the detrended data
> > > > > resulting in a modified detrended data.
> > > > >
> > > > >
> > > > >
> > > > > Repeat steps 5 - 8 looking for the next most significant
> cycle.
> > > This
> > > > > can be done repeatedly until overall correlation stops getting
> > > better
> > > > > and usually results in 2 - 6 cycles ...
> > > > >
> > > > >
> > > > >
> > > > > See attached ...
> > > > >
> > > > >
> > > > >
> > > > > The white line in the upper graph is detrended price ...
> > > > >
> > > > > The alternating green / red line is the trig fit, in sample up
> > > to the
> > > > > vertical line and out of sample projection afterwards ...
> > > > >
> > > > > The lines in the bottom section are the individual cycles
> found
> > > in the
> > > > > data.
> > > > >
> > > > >
> > > > >
> > > > > Sometimes the projections are almost clairvoyant ... run time
> > > however
> > > > > is anything but quick ...
> > > > >
> > > > >
> > > > >
> > > > >
> > > > >
> > > > >
> > > > >
> > > > >
> > > > >
> > > > >
> > > > >
> > > > >
> > > > > ----------------------------------------------------------
> > > -------
> > > > > I am using the free version of SPAMfighter for private users.
> > > > > It has removed 8649 spam emails to date.
> > > > > Paying users do not have this message in their emails.
> > > > > Try SPAMfighter <http://www.spamfighter.com/go.asp?t=249 
> <http://www.spamfighter.com/go.asp?t=249>
> > > <http://www.spamfighter.com/go.asp?t=249 
> <http://www.spamfighter.com/go.asp?t=249>>> for
> > > free now!
> > > > >
> > > >
> > >
> > >
> >
>
>  










Content-Description: "AVG certification"
No virus found in this incoming message.
Checked by AVG Free Edition.
Version: 7.1.409 / Virus Database: 268.13.27/517 - Release Date: 11/3/2006