We learned in how to detrend a signal in the Time for action – detecting a trend in QQQ section. This detrended signal could have a cyclical component. Let’s try to visualize this. Some of the steps are a repetition of steps in the previous Time for action tutorial, such as downloading the data and setting up Matplotlib objects. These steps are omitted here.
Apply Fourier transforms, which will give us the frequency spectrum.
amps = np.abs(fftpack.fftshift(fftpack.rfft(y)))
Filter out the noise. Let’s say if the magnitude of a frequency component is below 10 percent of the strongest component, throw it out.
amps[amps < 0.1 * amps.max()] = 0
Transform the filtered signal back to the original domain and plot it together with the detrended signal.
plt.plot(dates, y, ‘o’, label=”detrended”) plt.plot(dates, -fftpack.irfft(fftpack.ifftshift(amps)), label=”filtered”)
Format the x-axis labels as dates and add a legend with extra large size.
fig.autofmt_xdate...