Gap Upを見つけるPython Script

$ tree .
.
|-- __init__.py
|-- gap.py
`-- ystockquote.py
  • gap.py
import sys
from ystockquote import get_historical_prices

def main(argv):
    result = get_historical_prices(argv[0], argv[1], argv[2])

    for i in range(1, len(result) - 1):
        at_close = float(result[i + 1][4])
        at_open = float(result[i][1])
        gap = at_open - at_close
        gap_rate = gap / at_close * 100

        if gap_rate > 2.0:
            print result[i]

if __name__ == "__main__":
    main(sys.argv[1:])
  • 実行
$ python gap.py SPY 19900101 20100531
['2010-05-10', '115.81', '116.65', '114.91', '116.16', '395960000', '116.1']
['2009-04-09', '84.67', '85.82', '84.33', '85.81', '269653500', '84.4']
['2009-04-02', '83.08', '84.61', '81.13', '83.43', '476230700', '82.1']
['2009-03-23', '78.74', '82.29', '78.31', '82.22', '419933300', '80.9']
['2009-03-10', '69.51', '72.37', '69.37', '72.17', '406227900', '70.5']
['2009-01-28', '86.40', '87.95', '86.07', '87.39', '330007000', '85.4']
['2008-12-16', '91.88', '92.02', '88.18', '91.88', '377699500', '89.0']
['2008-12-08', '90.34', '92.38', '88.08', '91.00', '412859300', '88.2']
['2008-11-25', '87.30', '87.51', '83.82', '85.66', '454112400', '83.0']
['2008-11-24', '81.92', '86.99', '80.36', '85.03', '523305300', '82.4']
['2008-11-21', '77.46', '80.90', '74.34', '79.52', '718536500', '77.0']
['2008-11-04', '99.06', '100.86', '96.71', '100.41', '346793400', '97.3']
['2008-10-30', '95.78', '96.54', '92.90', '96.30', '414582100', '93.3']
['2008-10-28', '87.34', '94.24', '84.53', '93.76', '639939500', '90.9']
['2008-10-20', '95.35', '99.10', '94.09', '98.81', '321158800', '95.8']
['2008-10-14', '104.70', '105.53', '97.11', '99.85', '546268300', '96.8']
['2008-10-13', '93.87', '101.35', '89.95', '101.35', '455584000', '98.2']
['2008-10-09', '99.66', '100.62', '90.25', '90.70', '534485200', '87.9']
['2008-10-07', '106.84', '107.33', '99.65', '100.03', '540012100', '96.9']
['2008-09-19', '126.70', '128.00', '123.33', '124.12', '501087800', '120.3']
['2008-09-08', '128.04', '128.24', '124.42', '126.99', '364075300', '122.4']
['2008-03-11', '130.72', '132.72', '128.95', '132.60', '341440600', '126.5']
['2007-12-12', '151.06', '151.77', '147.20', '149.37', '322435600', '141.8']
['2007-08-17', '145.50', '145.81', '141.39', '144.71', '388218100', '136.7']
['2003-04-07', '90.34', '90.85', '87.97', '88.05', '69776200', '77.6']
['2002-10-17', '88.87', '89.30', '87.85', '88.27', '68534100', '77.1']
['2002-10-15', '86.99', '88.72', '86.85', '88.70', '82320300', '77.4']
['2002-07-29', '87.50', '90.34', '87.30', '89.77', '53492900', '78.0']
['2002-07-17', '92.46', '93.30', '89.75', '90.74', '48880600', '78.9']
['2001-09-24', '99.72', '101.16', '99.06', '100.70', '25549600', '87.0']
['2001-04-05', '113.30', '115.49', '112.50', '115.05', '21522800', '98.7']
['2000-12-11', '137.38', '139.56', '136.72', '138.63', '6405600', '118.3']
['2000-12-08', '137.06', '139.47', '133.88', '133.97', '10276300', '114.3']
['2000-06-02', '148.94', '149.09', '147.48', '147.84', '8962200', '125.6']
['1999-09-03', '134.88', '136.50', '134.69', '135.97', '9160800', '114.6']
['1998-10-12', '100.62', '101.44', '99.69', '99.97', '9508500', '83.6']
['1998-10-06', '100.75', '101.28', '97.53', '98.59', '12621000', '82.4']
['1998-09-08', '100.87', '103.00', '99.81', '103.00', '14746500', '85.8']
['1997-10-31', '91.81', '92.50', '90.44', '92.06', '7072700', '75.9']