Who this entry is for — The tool that produced Fig. IX-4: the band-pass filter that isolates a band of periods from a price series, with zero phase. It is all here: the sieve, the lag law, the frequency response, the weights and Ormsby's design recipe — with the book's exact numbers, recomputed and verified.
Source: J. M. Hurst, The Profit Magic of Stock Transaction Timing, Prentice-Hall, 1970 — Chapter 11, §§ How Numerical Filters Can Help You → Applying Your Numerical Filter to Stock Prices (design by Joseph F. A. Ormsby, paper dated March 1960; pp. 175–183, Figs. XI-1, XI-2).
Prerequisites
Spectral analysis, the cyclic moving averages and the inverse (Ch. 6).
The sieve
In plain words — A sieve separates sand into small and large grains; a frequency filter separates data into short and long cycles. The moving average is the "crude" sieve that keeps the long cycles; the inverse keeps the short ones; and sieving twice with different meshes yields a band: the band-pass.
The centred moving average is a crude low-pass filter: it stops high frequencies (short periods) and passes low ones — the span sets the separation point, like the mesh of a sieve. Ch. 6's inverse is its high-pass complement: it throws away the lows and keeps the highs. And just as sieving sand twice yields three piles, filtering between two bounds yields the band-pass — "particularly useful in the analysis of stock price data": these are the filters that produced Figs. II-13 and IX-4. All three types "belong in your arsenal".
The trade law: precision ↔ lag
Every numerical filter pays the same tax: the more precisely you separate frequencies, the more lag you must tolerate — and the lag is half the filter's span. The moving average separates poorly but lags little: for the real-time work of the operational chapters it "does as good a job for its lag as any filter can do". For research the opposite holds: the past is plentiful, separation matters more than delay — "some of the filters described in the Appendix have time lags of many years".
A filter's behaviour is described by its frequency response: the amplitude ratio (output/input per frequency: 1 = passes intact, 0 = suppressed) and the phase response (how much it slides things in time). The filters described here, with symmetric weights, have zero phase: what passes, passes without sliding.
The weights
Every numerical filter is just this: a row of weights to multiply by the prices and sum. Even the moving average: all weights equal to 1/N — a square-wave weighting function, whose "four square corners cause many of the adverse characteristics" (the lobes of Appendix IV). Improving the filter means rounding those corners in a precise way: that is exactly what Ormsby's design does.
Ormsby's design
In plain words — You draw the response you want on paper — a trapezoid: zero, ramp, flat at one, ramp, zero — and the recipe returns the weights that realize it, with a small, predictable error.
Three decisions first: the data spacing t (it becomes a design parameter: that filter must only be used on data of the same spacing); the number of weights n (odd); the skirt slope Δω. Then the trapezoid's four frequencies: ω₁ (low cutoff, response 0), ω₂ (low rolloff, response 1), ω₃ (high rolloff) and ω₄ (high cutoff) — with Δω = ω₂−ω₁ = ω₄−ω₃.
The error rule
Design error "is unavoidable": you only decide how much to pay. Fig. XI-2 ties it to the product n·t·Δω (t in weeks, Δω in radians/year): for research work aim for a product between 500 and 700 → error between 2.5% and 1% (up to 5–6% still surprisingly usable). Constraint on t: you want at least 6–7 output points per cycle of the shortest period in the band. More weights = more work but narrower ramps; fewer weights = wider Δω and a less selective filter.
The book's design, verified
The example design of Fig. XI-1: 199 weights, 7-week data, ω₁=0.85 · ω₂=1.25 · ω₃=2.05 · ω₄=2.45 rad/year. Product: 199 × 7 × 0.4 = 557.2 → error ≈2%. The half-ramp points fall at 1.05 and 2.25 rad/year — that is, periods of 5.98 and 2.79 years: exactly the declared "2.8–6.0 year passband", tailor-made for studying the dominant 4.5-year cycle.
Editor's note — We rebuilt the 199 weights from the book's recipe and recomputed the response: the trapezoid holds, the response on the 4.5-year cycle is 1 within 3%, the out-of-band ripple stays below the declared 2%, and the 557.2 product is exact. This entry's figures are drawn with those very weights.
Applying it (and its price)
No shortcut as with the moving average: each output point is the sum of the n products weight×price, centred on the middle datum; then slide one step and repeat. And no output for the last (n−1)/2 datums: "this is normal, and represents the one-half span lag of the filter".
Summary card
| Element | Value |
|---|---|
| Types | low-pass (MA), high-pass (inverse), band-pass (Ormsby) |
| Law | sharper separation ⇔ more lag; lag = ½ span |
| Phase | zero (symmetric weights): nothing slides |
| Error rule | n·t·Δω between 500 and 700 → ε ≈ 2.5%–1% |
| Constraint | ≥6–7 output points per cycle of the shortest in-band period |
| The book's design | n=199, t=7 wk, Δω=0.4 → passband 2.8–6.0 years, ε≈2% |
| Use | research and phasing (Fig. IX-4) — not real-time signals |
Links
- Spectral analysis — Ch. 11's framework
- Fourier analysis — finding the cycles before isolating them
- The DJIA's six components — the band-pass masterpiece
- The inverse — Ch. 6's high-pass
- Appendix IV — why the MA is a "crude" filter
- Hurst tradition — chapter index