Wavelet De-noising – the “multiscale” function
Wavelets are short ephemeral cyclic behavior. If you would like to know more about them, we recommend the books listed at the end of this section. If you would still like to know more, contact us, and we will give you a bigger bibliography. Those of you who are familiar with signal processing literature will find our multiscale function to be essentially a causal version of maximum overlap discrete wavelet transform. A “true” wavelet transform would use symmetric data – past and future data. Unfortunately traders do not have the luxury of knowing future data. Thus in this version the transform has been shifted to use only past and present data.
FDC permits use of five different wavelet transforms:
Haar (‘H’)
Daubechies 4 (‘D4’)
Daubechies 6 (‘D6’)
Coiflets 6 (‘C6’)
Scalar 5 (‘S5’)
Each of these transforms operates on one column of data and produces 6 columns of output. The syntax is:
‘T’ multiscale [dataset], in which T represents the transform.
Note that the quotes are necessary, and the function is case sensitive. Let’s create an example:
generates the following output:

** N.B. The text of all commands is located at the end of this document. That way you can simply copy them over to your own command set, should you wish to duplicate or modify the research
This output when graphed would look as follows:

Note that we have plotted them in separate panes because of their differing scales, and to avoid confusion. The first column is the shortest term.
We specifically recommend these transforms as neural network inputs. However, an interesting demonstration can be made on the above dataset. Add together the four shortest-term outputs, and compare them to the raw data:
![]()
This data has a scale significantly smaller than that of the put/call ratio, so let’s turn the latter into an oscillator by taking its current value minus a long-term average:
![]()
Put/call data is usually smoothed with a 21-day moving average to reduce the known monthly cyclicality caused by options expiry. (There are typically 21 trading days in a month.) Thus the next step is to average both of our datasets:
![]()
Here’s the output, with our 4-wavelet composite in Blue and the oscillator version of the put/call ratio in Red. As you can see, Blue leads Red significantly, without distorting any patterns.

This is exactly the opposite of what most traders believe. That is, most traders believe that shorter-term data is noise, which must be removed and discarded to get at the “true signal”. What we have illustrated here is that the shorter-term data actually becomes a significant part of the signal, and that elimination of the longer-term data gives you quicker answers as to what’s going on. This should not surprise those who understand market data to be fractal, with all price time frames exhibiting both signal and noise. So do not discard that shorter-term data.
-------------------------------
pcwave: 'H' multiscale putcallratio
pcwave4: (hsum pcwave cols 1 2 3 4)
pcratio_oscillator: pcratio - (50 movave pcratio)
21 movave (pcwav4, pcratio_oscillator)
-------------------------------
Introductory References:
C. Sidney Burrus, Ramesh A. Gopinath, and Haitao Guo
Introduction to Wavelets and Wavelet Transforms, A Primer
©1998, Prentice Hall, Upper Saddle River, New Jersey
Barbara Burke Hubbard
The World According to Wavelets, Second Edition
©1998, A K Peters, Natick, Massachusetts
------------------------------------------------------------------------------