Time for action – detecting a trend in QQQ

Often we are more interested in the trend of a data sample than in detrending it. Still we can get the trend back easily after detrending. Let’s do that for 1 year of price data for QQQ:

  1. Write code that gets the close price and corresponding dates for QQQ.
    today = date.today()
    start = (today.year - 1, today.month, today.day)
    
    quotes = quotes_historical_yahoo(“QQQ”, start, today)
    quotes = np.array(quotes)
    
    dates = quotes.T[0]
    qqq = quotes.T[4]
  2. Detrend the signal.
    y = signal.detrend(qqq)
  3. Create month and day locators for the dates.
    alldays = DayLocator()
    months = MonthLocator ()
    
  4. Create a date formatter that creates a string of month name and year.
    month_formatter = DateFormatter(“%b %Y”)
  5. Create a figure and subplot.
    fig = plt.figure()
    ax = fig.add_subplot(111)
  6. Plot the data and underlying trend by subtracting the detrended signal.
    plt.plot(dates, qqq, ‘o’, dates, qqq - y, ‘-’)
  7. Set the locators and formatter.
    ax.xaxis.set_minor_locator(alldays)
    ax.xaxis.set_major_locator(months)
    ax.xaxis.set_major_formatter(month_formatter)
  8. Format the x-axis labels as dates.
    fig.autofmt_xdate()
    plt.show()

    The following screenshot shows the QQQ prices with a trend line:

    Time for action – detecting a trend in QQQ

What just happened?

We plotted the closing price for QQQ with a trend line (see trend.py).

from matplotlib.finance import quotes_historical_yahoo
from datetime import date
import numpy as np
from scipy import signal
import matplotlib.pyplot as plt
from matplotlib.dates import DateFormatter
from matplotlib.dates import DayLocator
from matplotlib.dates import MonthLocator

today = date.today()
start = (today.year - 1, today.month, today.day)

quotes = quotes_historical_yahoo(“QQQ”, start, today)
quotes = np.array(quotes)

dates = quotes.T[0]
qqq = quotes.T[4]


y = signal.detrend(qqq)

alldays = DayLocator()              
months = MonthLocator()
month_formatter = DateFormatter(“%b %Y”)

fig = plt.figure()
ax = fig.add_subplot(111)

plt.plot(dates, qqq, ‘o’, dates, qqq - y, ‘-’)
ax.xaxis.set_minor_locator(alldays)
ax.xaxis.set_major_locator(months)
ax.xaxis.set_major_formatter(month_formatter)
fig.autofmt_xdate()
plt.show()
..................Content has been hidden....................

You can't read the all page of ebook, please click here login for view all page.
Reset