├── tests ├── __init__.py └── test_pandas_talib.py ├── setup.cfg ├── convert_md.sh ├── ta-lib-0.4.0-src.tar.gz ├── data ├── GOOG_20140101_20141201.p ├── AAPL_GOOGL_IBM_20140101_20141201.p ├── AAPL_GOOGL_IBM_20140101_20141201.xls ├── download.py ├── GOOG_20140101_20141201.csv ├── AAPL_20140101_20141201.csv ├── GOOGL_20140101_20141201.csv └── IBM_20140101_20141201.csv ├── pandas_talib ├── version.py └── __init__.py ├── samples ├── main.py └── wrapper.py ├── .gitignore ├── LICENSE ├── .travis.yml ├── README.rst ├── setup.py └── INDICATORS.md /tests/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /setup.cfg: -------------------------------------------------------------------------------- 1 | [bdist_wheel] 2 | universal = 1 3 | -------------------------------------------------------------------------------- /convert_md.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | pandoc -f markdown -t rst README.md -o README.rst -------------------------------------------------------------------------------- /ta-lib-0.4.0-src.tar.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/femtotrader/pandas_talib/HEAD/ta-lib-0.4.0-src.tar.gz -------------------------------------------------------------------------------- /data/GOOG_20140101_20141201.p: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/femtotrader/pandas_talib/HEAD/data/GOOG_20140101_20141201.p -------------------------------------------------------------------------------- /data/AAPL_GOOGL_IBM_20140101_20141201.p: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/femtotrader/pandas_talib/HEAD/data/AAPL_GOOGL_IBM_20140101_20141201.p -------------------------------------------------------------------------------- /data/AAPL_GOOGL_IBM_20140101_20141201.xls: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/femtotrader/pandas_talib/HEAD/data/AAPL_GOOGL_IBM_20140101_20141201.xls -------------------------------------------------------------------------------- /pandas_talib/version.py: -------------------------------------------------------------------------------- 1 | __author__ = "Femto Trader" 2 | __copyright__ = "Copyright 2015" 3 | __credits__ = ["Femto Trader", "panpanpandas", "Bruno Franca", "Peter Bakker"] 4 | __license__ = "MIT" 5 | __version__ = "0.0.1" 6 | __maintainer__ = "Femto Trader" 7 | __email__ = "femto.trader@gmail.com" 8 | __status__ = "Development" 9 | __url__ = 'https://github.com/femtotrader/pandas_talib' 10 | -------------------------------------------------------------------------------- /samples/main.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | # -*- coding: utf-8 -*- 3 | 4 | import os 5 | import pandas as pd 6 | from pandas_talib import * 7 | 8 | def main(): 9 | basepath = os.path.dirname(__file__) 10 | filename = os.path.join(basepath, "..", "data", "AAPL_GOOGL_IBM_20140101_20141201.xls") 11 | d = pd.read_excel(filename, sheetname=None) 12 | panel = pd.Panel.from_dict(d) 13 | #print(panel.loc['Open','2014-02-03','AAPL']) 14 | panel = panel.iloc[:,1:,:] 15 | panel.major_axis.name = "Date" 16 | #print(panel) 17 | 18 | df_AAPL = panel.loc[:,:,'AAPL'] 19 | print(df_AAPL) 20 | 21 | SETTINGS.join = False 22 | print(MA(df_AAPL, 3)) 23 | 24 | if __name__ == '__main__': 25 | main() 26 | -------------------------------------------------------------------------------- /samples/wrapper.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | # -*- coding: utf-8 -*- 3 | 4 | import os 5 | import pandas as pd 6 | import talib 7 | from talib import SMA 8 | #from talib.abstract import SMA 9 | 10 | def main(): 11 | basepath = os.path.dirname(__file__) 12 | filename = os.path.join(basepath, "..", "data", "AAPL_GOOGL_IBM_20140101_20141201.xls") 13 | d = pd.read_excel(filename, sheetname=None) 14 | panel = pd.Panel.from_dict(d) 15 | #print(panel.loc['Open','2014-02-03','AAPL']) 16 | panel = panel.iloc[:,1:,:] 17 | panel.major_axis.name = "Date" 18 | #print(panel) 19 | 20 | df = panel.loc[:,:,'AAPL'] 21 | #print(df) 22 | 23 | result = SMA(df['Close'].values, timeperiod=4) # Function API 24 | #result = SMA(df, timeperiod=4, price='Close') # Abstract API 25 | print(result) 26 | 27 | if __name__ == '__main__': 28 | main() 29 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Byte-compiled / optimized / DLL files 2 | __pycache__/ 3 | *.py[cod] 4 | 5 | # C extensions 6 | *.so 7 | 8 | # Distribution / packaging 9 | .Python 10 | env/ 11 | build/ 12 | develop-eggs/ 13 | dist/ 14 | downloads/ 15 | eggs/ 16 | .eggs/ 17 | lib/ 18 | lib64/ 19 | parts/ 20 | sdist/ 21 | var/ 22 | *.egg-info/ 23 | .installed.cfg 24 | *.egg 25 | ta-lib/ 26 | 27 | # PyInstaller 28 | # Usually these files are written by a python script from a template 29 | # before PyInstaller builds the exe, so as to inject date/other infos into it. 30 | *.manifest 31 | *.spec 32 | 33 | # Installer logs 34 | pip-log.txt 35 | pip-delete-this-directory.txt 36 | 37 | # Unit test / coverage reports 38 | htmlcov/ 39 | .tox/ 40 | .coverage 41 | .coverage.* 42 | .cache 43 | nosetests.xml 44 | coverage.xml 45 | *,cover 46 | 47 | # Translations 48 | *.mo 49 | *.pot 50 | 51 | # Django stuff: 52 | *.log 53 | 54 | # Sphinx documentation 55 | docs/_build/ 56 | 57 | # PyBuilder 58 | target/ 59 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | 3 | Copyright (c) 2015 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | 23 | -------------------------------------------------------------------------------- /.travis.yml: -------------------------------------------------------------------------------- 1 | language: python 2 | python: 3 | - "2.7" 4 | - "3.3" 5 | - "3.4" 6 | 7 | addons: 8 | apt_packages: 9 | - pandoc 10 | - ta-lib 11 | 12 | before_install: 13 | - wget http://prdownloads.sourceforge.net/ta-lib/ta-lib-0.4.0-src.tar.gz 14 | - tar -xvzf ta-lib-0.4.0-src.tar.gz 15 | - cd ta-lib/ && ./configure --prefix=/usr LDFLAGS="-lm" && make && sudo make install && cd .. && rm -r ta-lib 16 | 17 | # command to install dependencies 18 | install: 19 | # You may want to periodically update this, although the conda update 20 | # conda line below will keep everything up-to-date. We do this 21 | # conditionally because it saves us some downloading if the version is 22 | # the same. 23 | - if [[ "$TRAVIS_PYTHON_VERSION" == "2.7" ]]; then 24 | wget http://repo.continuum.io/miniconda/Miniconda-3.4.2-Linux-x86_64.sh -O miniconda.sh; 25 | else 26 | wget http://repo.continuum.io/miniconda/Miniconda3-3.4.2-Linux-x86_64.sh -O miniconda.sh; 27 | fi 28 | - bash miniconda.sh -b -p $HOME/miniconda 29 | - export PATH="$HOME/miniconda/bin:$PATH" 30 | - hash -r 31 | - conda config --set always_yes yes --set changeps1 no 32 | - conda update -q conda 33 | # Useful for debugging any issues with conda 34 | - conda info -a 35 | 36 | # Replace dep1 dep2 ... with your dependencies 37 | - conda create -q -n test-environment python=$TRAVIS_PYTHON_VERSION numpy pandas 38 | - source activate test-environment 39 | - pip install ta-lib pandas # Python TA-Lib wrapper 40 | - python setup.py install 41 | 42 | # command to run tests 43 | script: 44 | python setup.py test 45 | 46 | -------------------------------------------------------------------------------- /data/download.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | # -*- coding: utf-8 -*- 3 | 4 | # $ pip install pandas_datareader 5 | 6 | import os 7 | from pandas_datareader import data, wb 8 | import datetime 9 | import pytz 10 | 11 | def main(): 12 | basepath = os.path.dirname(__file__) 13 | 14 | year = 2014 15 | tzinfo = pytz.UTC 16 | dt_from = datetime.datetime(year, 1, 1, tzinfo=tzinfo) 17 | dt_to = datetime.datetime(year, 12, 1, tzinfo=tzinfo) 18 | 19 | symbol = "GOOG" 20 | df = data.DataReader(symbol, 'yahoo', dt_from, dt_to) 21 | fmt_dt = "%Y%m%d" 22 | print(df) 23 | 24 | filename = os.path.join(basepath, "%s_%s_%s.p" % (symbol, dt_from.strftime(fmt_dt), dt_to.strftime(fmt_dt))) 25 | print("Output: %s" % filename) 26 | df.to_pickle(filename) 27 | 28 | filename = os.path.join(basepath, "%s_%s_%s.csv" % (symbol, dt_from.strftime(fmt_dt), dt_to.strftime(fmt_dt))) 29 | print("Output: %s" % filename) 30 | df.to_csv(filename) 31 | 32 | symbols = ["AAPL", "GOOGL", "IBM"] 33 | print(filename) 34 | 35 | panel = data.DataReader(symbols, 'yahoo', dt_from, dt_to) 36 | print(panel) 37 | #print(panel.loc['Open','2014-02-03','AAPL']) 38 | filename = os.path.join(basepath, "%s_%s_%s.p" % ("_".join(symbols), dt_from.strftime(fmt_dt), dt_to.strftime(fmt_dt))) 39 | print("Output: %s" % filename) 40 | panel.to_pickle(filename) 41 | filename = os.path.join(basepath, "%s_%s_%s.xls" % ("_".join(symbols), dt_from.strftime(fmt_dt), dt_to.strftime(fmt_dt))) 42 | print("Output: %s" % filename) 43 | panel.to_excel(filename) 44 | for symbol in symbols: 45 | filename = os.path.join(basepath, "%s_%s_%s.csv" % (symbol, dt_from.strftime(fmt_dt), dt_to.strftime(fmt_dt))) 46 | print("Output: %s" % filename) 47 | df = panel.loc[:, :, symbol] 48 | df.to_csv(filename) 49 | 50 | 51 | #panel.to_json(filename) 52 | #panel.to_csv(filename) 53 | 54 | if __name__ == '__main__': 55 | main() -------------------------------------------------------------------------------- /README.rst: -------------------------------------------------------------------------------- 1 | |Latest Version| |Supported Python versions| |Wheel format| |License| 2 | |Development Status| |Downloads monthly| |Requirements Status| |Code 3 | Health| |Codacy Badge| |Build Status| 4 | 5 | \*\* Work in progress \*\* 6 | 7 | pandas\_talib 8 | ============= 9 | 10 | A Python Pandas implementation of technical indicators 11 | 12 | Original version from: 13 | 14 | - `Bruno Franca `__ 15 | 16 | - `panpanpandas `__ 17 | 18 | - `Peter 19 | Bakker `__ 20 | 21 | Contributors 22 | 23 | - `Yao Hong Kok `__ 24 | - `Leonardo Lazzaro `__ 25 | - `and all... `__ 26 | 27 | See also: 28 | 29 | - `panpanpandas/ultrafinance `__ 30 | 31 | - `llazzaro/analyzer `__ 32 | 33 | - https://www.quantopian.com/posts/technical-analysis-indicators-without-talib-code 34 | 35 | If you are looking for a more complete set of technical indicators you 36 | might have a look at this TA-Lib Python wrapper: 37 | https://github.com/mrjbq7/ta-lib 38 | 39 | Development 40 | ----------- 41 | 42 | You can help to develop this library. 43 | 44 | Issues 45 | ~~~~~~ 46 | 47 | You can submit issues using 48 | https://github.com/femtotrader/pandas_talib/issues 49 | 50 | Clone 51 | ~~~~~ 52 | 53 | You can clone repository to try to fix issues yourself using: 54 | 55 | :: 56 | 57 | $ git clone https://github.com/femtotrader/pandas_talib.git 58 | 59 | Run unit tests 60 | ~~~~~~~~~~~~~~ 61 | 62 | Follow instructions from TA-Lib and install it: 63 | 64 | https://github.com/mrjbq7/ta-lib 65 | 66 | Run all unit tests 67 | 68 | :: 69 | 70 | $ nosetests -s -v 71 | 72 | Run a given test 73 | 74 | :: 75 | 76 | $ nosetests tests.test_pandas_talib:test_indicator_MA -s -v 77 | 78 | Run samples 79 | ~~~~~~~~~~~ 80 | 81 | Run ``samples/main.py`` (from project root directory) 82 | 83 | :: 84 | 85 | $ python samples/main.py 86 | 87 | Install development version 88 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~ 89 | 90 | :: 91 | 92 | $ python setup.py install 93 | 94 | or 95 | 96 | :: 97 | 98 | $ sudo pip install git+https://github.com/femtotrader/pandas_talib.git 99 | 100 | Known Issues 101 | ~~~~~~~~~~~~~ 102 | 103 | - The method ROC is currently not accurate yet. 104 | 105 | Collaborating 106 | ~~~~~~~~~~~~~ 107 | 108 | - Fork repository 109 | - Create a branch which fix a given issue 110 | - Submit pull requests 111 | 112 | https://help.github.com/categories/collaborating/ 113 | 114 | .. |Latest Version| image:: https://img.shields.io/pypi/v/pandas_talib.svg 115 | :target: https://pypi.python.org/pypi/pandas_talib/ 116 | .. |Supported Python versions| image:: https://img.shields.io/pypi/pyversions/pandas_talib.svg 117 | :target: https://pypi.python.org/pypi/pandas_talib/ 118 | .. |Wheel format| image:: https://img.shields.io/pypi/wheel/pandas_talib.svg 119 | :target: https://pypi.python.org/pypi/pandas_talib/ 120 | .. |License| image:: https://img.shields.io/pypi/l/pandas_talib.svg 121 | :target: https://pypi.python.org/pypi/pandas_talib/ 122 | .. |Development Status| image:: https://img.shields.io/pypi/status/pandas_talib.svg 123 | :target: https://pypi.python.org/pypi/pandas_talib/ 124 | .. |Downloads monthly| image:: https://img.shields.io/pypi/dm/pandas_talib.svg 125 | :target: https://pypi.python.org/pypi/pandas_talib/ 126 | .. |Requirements Status| image:: https://requires.io/github/femtotrader/pandas_talib/requirements.svg?branch=master 127 | :target: https://requires.io/github/femtotrader/pandas_talib/requirements/?branch=master 128 | .. |Code Health| image:: https://landscape.io/github/femtotrader/pandas_talib/master/landscape.svg?style=flat 129 | :target: https://landscape.io/github/femtotrader/pandas_talib/master 130 | .. |Codacy Badge| image:: https://www.codacy.com/project/badge/1bf3606360934588ba764cca32210f52 131 | :target: https://www.codacy.com/app/femto-trader/pandas_talib 132 | .. |Build Status| image:: https://travis-ci.org/femtotrader/pandas_talib.svg 133 | :target: https://travis-ci.org/femtotrader/pandas_talib 134 | -------------------------------------------------------------------------------- /setup.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | # -*- coding: utf-8 -*- 3 | 4 | from setuptools import setup, find_packages # Always prefer setuptools over distutils 5 | from os import path 6 | import io 7 | 8 | here = path.abspath(path.dirname(__file__)) 9 | 10 | NAME = 'pandas_talib' 11 | with io.open(path.join(here, NAME, 'version.py'), 'rt', encoding='UTF-8') as f: 12 | exec(f.read()) 13 | 14 | setup( 15 | name=NAME, 16 | 17 | # Versions should comply with PEP440. For a discussion on single-sourcing 18 | # the version across setup.py and the project code, see 19 | # https://packaging.python.org/en/latest/development.html#single-sourcing-the-version 20 | #version='0.0.2', 21 | version=__version__, 22 | 23 | description='Pandas trading technical analysis', 24 | long_description='README.rst', 25 | 26 | # The project's main homepage. 27 | url=__url__, 28 | 29 | # Author details 30 | author=__author__, 31 | author_email=__email__, 32 | 33 | # Choose your license 34 | license=__license__, 35 | 36 | # See https://pypi.python.org/pypi?%3Aaction=list_classifiers 37 | classifiers=[ 38 | # How mature is this project? Common values are 39 | # 3 - Alpha 40 | # 4 - Beta 41 | # 5 - Production/Stable 42 | 'Development Status :: 3 - Alpha', 43 | 44 | # Indicate who your project is intended for 45 | 'Environment :: Console', 46 | #'Topic :: Software Development :: Build Tools', 47 | 'Intended Audience :: Developers', 48 | 'Operating System :: OS Independent', 49 | 50 | # Specify the Python versions you support here. In particular, ensure 51 | # that you indicate whether you support Python 2, Python 3 or both. 52 | 'Programming Language :: Cython', 53 | 54 | 'Programming Language :: Python', 55 | #'Programming Language :: Python :: 2', 56 | #'Programming Language :: Python :: 2.6', 57 | 'Programming Language :: Python :: 2.7', 58 | #'Programming Language :: Python :: 3', 59 | #'Programming Language :: Python :: 3.2', 60 | 'Programming Language :: Python :: 3.3', 61 | 'Programming Language :: Python :: 3.4', 62 | 63 | # Pick your license as you wish (should match "license" above) 64 | 'License :: OSI Approved :: MIT License', 65 | 66 | ], 67 | 68 | # What does your project relate to? 69 | keywords='python pandas trading technical analysis', 70 | 71 | # You can just specify the packages manually here if your project is 72 | # simple. Or you can use find_packages(). 73 | packages=find_packages(exclude=['contrib', 'docs', 'tests*']), 74 | 75 | # List run-time dependencies here. These will be installed by pip when your 76 | # project is installed. For an analysis of "install_requires" vs pip's 77 | # requirements files see: 78 | # https://packaging.python.org/en/latest/technical.html#install-requires-vs-requirements-files 79 | install_requires=['pandas'], 80 | 81 | # List additional groups of dependencies here (e.g. development dependencies). 82 | # You can install these using the following syntax, for example: 83 | # $ pip install -e .[dev,test] 84 | extras_require = { 85 | 'dev': ['check-manifest', 'nose', 'ta-lib'], 86 | 'test': ['coverage', 'nose', 'ta-lib'], 87 | }, 88 | 89 | # If there are data files included in your packages that need to be 90 | # installed, specify them here. If using Python 2.6 or less, then these 91 | # have to be included in MANIFEST.in as well. 92 | package_data={ 93 | 'samples': ['samples/*.py'], 94 | }, 95 | 96 | # Although 'package_data' is the preferred approach, in some case you may 97 | # need to place data files outside of your packages. 98 | # see http://docs.python.org/3.4/distutils/setupscript.html#installing-additional-files 99 | # In this case, 'data_file' will be installed into '/my_data' 100 | #data_files=[('my_data', ['data/data_file'])], 101 | 102 | # To provide executable scripts, use entry points in preference to the 103 | # "scripts" keyword. Entry points provide cross-platform support and allow 104 | # pip to create the appropriate form of executable for the target platform. 105 | #entry_points={ 106 | # 'console_scripts': [ 107 | # 'sample=sample:main', 108 | # ], 109 | #}, 110 | tests_require=['xlrd'], 111 | test_suite='tests', 112 | ) 113 | -------------------------------------------------------------------------------- /tests/test_pandas_talib.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | # -*- coding: utf-8 -*- 3 | 4 | import os 5 | import unittest 6 | 7 | import pandas as pd 8 | import numpy as np 9 | import talib 10 | from pandas_talib import * 11 | 12 | basepath = os.path.dirname(__file__) 13 | filename = os.path.join(basepath, "..", "data", "AAPL_GOOGL_IBM_20140101_20141201.xls") 14 | d = pd.read_excel(filename, sheetname=None) 15 | panel = pd.Panel.from_dict(d) 16 | panel = panel.iloc[:, 1:, :] 17 | panel.major_axis.name = "Date" 18 | 19 | df = panel.loc[:, :, 'AAPL'] 20 | 21 | SETTINGS.join = False 22 | 23 | 24 | class TestFunctions(unittest.TestCase): 25 | 26 | def test_indicator_SMA(self): 27 | timeperiod = 10 28 | random_serie = pd.DataFrame(np.random.uniform(0, 1, size=10), columns=['last']) 29 | result = SMA(random_serie, timeperiod, key='last') 30 | isinstance(result, pd.DataFrame) 31 | expected = talib.SMA(random_serie['last'].values, timeperiod=10) 32 | np.testing.assert_almost_equal(result.values, expected) 33 | 34 | def test_indicator_MA(self): 35 | n = 3 36 | price = 'Close' 37 | result = MA(df, n) 38 | isinstance(result, pd.DataFrame) 39 | expected = talib.MA(df[price].values, timeperiod=n) 40 | np.testing.assert_almost_equal(result.values, expected) 41 | 42 | def test_indicator_EMA(self): 43 | n = 3 44 | price = 'Close' 45 | result = EMA(df, n) 46 | isinstance(result, pd.DataFrame) 47 | expected = talib.EMA(df[price].values, timeperiod=n) 48 | np.testing.assert_almost_equal(result.values, expected) 49 | 50 | def test_indicator_MOM(self): 51 | n = 3 52 | price = 'Close' 53 | result = MOM(df, n) 54 | isinstance(result, pd.DataFrame) 55 | expected = talib.MOM(df[price].values, timeperiod=n) 56 | np.testing.assert_almost_equal(result.values, expected) 57 | 58 | def test_indicator_ROC(self): 59 | n = 3 60 | price = 'Close' 61 | result = ROC(df, n) 62 | isinstance(result, pd.DataFrame) 63 | expected = talib.ROC(df[price].values, timeperiod=n) 64 | np.testing.assert_almost_equal(result.values, expected) 65 | 66 | def test_indicator_ATR(self): 67 | n = 5 68 | result = ATR(df, n) 69 | isinstance(result, pd.DataFrame) 70 | 71 | expected = talib.ATR(df['High'].values, df['Low'].values, df['Close'].values, timeperiod=n) 72 | 73 | np.testing.assert_almost_equal(result, expected[1::]) 74 | 75 | def test_indicator_BBANDS(self): 76 | n = 3 77 | result = BBANDS(df, n) 78 | isinstance(result, pd.DataFrame) 79 | 80 | def test_indicator_PPSR(self): 81 | result = PPSR(df) 82 | isinstance(result, pd.DataFrame) 83 | 84 | def test_indicator_STOK(self): 85 | result = STOK(df) 86 | isinstance(result, pd.DataFrame) 87 | 88 | def test_indicator_STO(self): 89 | n = 2 90 | result = STO(df, n) 91 | isinstance(result, pd.DataFrame) 92 | 93 | def test_indicator_TRIX(self): 94 | n = 3 95 | result = TRIX(df, n) 96 | isinstance(result, pd.DataFrame) 97 | 98 | def test_indicator_ADX(self): 99 | (n, n_ADX) = (2, 4) 100 | result = ADX(df, n, n_ADX) 101 | isinstance(result, pd.DataFrame) 102 | 103 | def test_indicator_MACD(self): 104 | (n_fast, n_slow) = (9, 13) 105 | result = MACD(df, n_fast, n_slow) 106 | isinstance(result, pd.DataFrame) 107 | 108 | def test_indicator_MassI(self): 109 | result = MassI(df) 110 | isinstance(result, pd.DataFrame) 111 | 112 | def test_indicator_Vortex(self): 113 | n = 2 114 | result = Vortex(df, n) 115 | isinstance(result, pd.DataFrame) 116 | 117 | def test_indicator_KST(self): 118 | (r1, r2, r3, r4, n1, n2, n3, n4) = (1, 2, 3, 4, 6, 7, 9, 9) 119 | result = KST(df, r1, r2, r3, r4, n1, n2, n3, n4) 120 | isinstance(result, pd.DataFrame) 121 | 122 | def test_indicator_RSI(self): 123 | n = 2 124 | result = RSI(df, n) 125 | isinstance(result, pd.DataFrame) 126 | 127 | def test_indicator_TSI(self): 128 | (r, s) = (2, 4) 129 | result = TSI(df, r, s) 130 | isinstance(result, pd.DataFrame) 131 | 132 | def test_indicator_ACCDIST(self): 133 | n = 2 134 | result = ACCDIST(df, n) 135 | isinstance(result, pd.DataFrame) 136 | 137 | def test_indicator_Chaikin(self): 138 | result = Chaikin(df) 139 | isinstance(result, pd.DataFrame) 140 | 141 | def test_indicator_MFI(self): 142 | n = 2 143 | result = MFI(df, n) 144 | isinstance(result, pd.DataFrame) 145 | 146 | def test_indicator_OBV(self): 147 | n = 2 148 | result = OBV(df, n) 149 | isinstance(result, pd.DataFrame) 150 | 151 | def test_indicator_FORCE(self): 152 | n = 2 153 | result = FORCE(df, n) 154 | isinstance(result, pd.DataFrame) 155 | 156 | def test_indicator_EOM(self): 157 | n = 2 158 | result = EOM(df, n) 159 | isinstance(result, pd.DataFrame) 160 | 161 | def test_indicator_CCI(self): 162 | n = 2 163 | result = CCI(df, n) 164 | isinstance(result, pd.DataFrame) 165 | 166 | def test_indicator_COPP(self): 167 | n = 2 168 | result = COPP(df, n) 169 | isinstance(result, pd.DataFrame) 170 | 171 | def test_indicator_COPP(self): 172 | n = 2 173 | result = COPP(df, n) 174 | isinstance(result, pd.DataFrame) 175 | 176 | def test_indicator_KELCH(self): 177 | n = 2 178 | result = KELCH(df, n) 179 | isinstance(result, pd.DataFrame) 180 | 181 | def test_indicator_ULTOSC(self): 182 | n = 2 183 | result = ULTOSC(df) 184 | isinstance(result, pd.DataFrame) 185 | 186 | def test_indicator_DONCH(self): 187 | n = 2 188 | result = DONCH(df, n) 189 | isinstance(result, pd.DataFrame) 190 | 191 | def test_indicator_STDDEV(self): 192 | n = 2 193 | result = STDDEV(df, n) 194 | isinstance(result, pd.DataFrame) 195 | -------------------------------------------------------------------------------- /INDICATORS.md: -------------------------------------------------------------------------------- 1 | Function | Notation | Progress 2 | ------------------- | ----------------------------------------- | --------- 3 | ACCDIST | Accumulation/Distribution | DONE 4 | AD | Chaikin A/D Line | 5 | ADOSC | Chaikin A/D Oscillator | 6 | ADX | Average Directional Movement Index | DONE 7 | ADXR | Average Directional Movement Index Rating | 8 | APO | Absolute Price Oscillator | 9 | AROON | Aroon | 10 | AROONOSC | Aroon Oscillator | 11 | ATR | Average True Range | DONE 12 | AVGPRICE | Average Price | 13 | BBANDS | Bollinger Bands | DONE 14 | BETA | Beta | 15 | BOP | Balance Of Power | 16 | CCI | Commodity Channel Index | DONE 17 | CDL2CROWS | Two Crows | 18 | CDL3BLACKCROWS | Three Black Crows | 19 | CDL3INSIDE | Three Inside Up/Down | 20 | CDL3LINESTRIKE | Three-Line Strike | 21 | CDL3OUTSIDE | Three Outside Up/Down | 22 | CDL3STARSINSOUTH | Three Stars In The South | 23 | CDL3WHITESOLDIERS | Three Advancing White Soldiers | 24 | CDLABANDONEDBABY | Abandoned Baby | 25 | CDLADVANCEBLOCK | Advance Block | 26 | CDLBELTHOLD | Belt-hold | 27 | CDLBREAKAWAY | Breakaway | 28 | CDLCLOSINGMARUBOZU | Closing Marubozu | 29 | CDLCONCEALBABYSWALL | Concealing Baby Swallow | 30 | CDLCOUNTERATTACK | Counterattack | 31 | CDLDARKCLOUDCOVER | Dark Cloud Cover | 32 | CDLDOJI | Doji | 33 | CDLDOJISTAR | Doji Star | 34 | CDLDRAGONFLYDOJI | Dragonfly Doji | 35 | CDLENGULFING | Engulfing Pattern | 36 | CDLEVENINGDOJISTAR | Evening Doji Star | 37 | CDLEVENINGSTAR | Evening Star | 38 | CDLGAPSIDESIDEWHITE | Up/Down-gap side-by-side white lines | 39 | CDLGRAVESTONEDOJI | Gravestone Doji | 40 | CDLHAMMER | Hammer | 41 | CDLHANGINGMAN | Hanging Man | 42 | CDLHARAMI | Harami Pattern | 43 | CDLHARAMICROSS | Harami Cross Pattern | 44 | CDLHIGHWAVE | High-Wave Candle | 45 | CDLHIKKAKE | Hikkake Pattern | 46 | CDLHIKKAKEMOD | Modified Hikkake Pattern | 47 | CDLHOMINGPIGEON | Homing Pigeon | 48 | CDLIDENTICAL3CROWS | Identical Three Crows | 49 | CDLINNECK | In-Neck Pattern | 50 | CDLINVERTEDHAMMER | Inverted Hammer | 51 | CDLKICKING | Kicking | 52 | CDLKICKINGBYLENGTH | Kicking - bull/bear determined by the longer marubozu | 53 | CDLLADDERBOTTOM | Ladder Bottom | 54 | CDLLONGLEGGEDDOJI | Long Legged Doji | 55 | CDLLONGLINE | Long Line Candle | 56 | CDLMARUBOZU | Marubozu | 57 | CDLMATCHINGLOW | Matching Low | 58 | CDLMATHOLD | Mat Hold | 59 | CDLMORNINGDOJISTAR | Morning Doji Star | 60 | CDLMORNINGSTAR | Morning Star | 61 | CDLONNECK | On-Neck Pattern | 62 | CDLPIERCING | Piercing Pattern | 63 | CDLRICKSHAWMAN | Rickshaw Man | 64 | CDLRISEFALL3METHODS | Rising/Falling Three Methods | 65 | CDLSEPARATINGLINES | Separating Lines | 66 | CDLSHOOTINGSTAR | Shooting Star | 67 | CDLSHORTLINE | Short Line Candle | 68 | CDLSPINNINGTOP | Spinning Top | 69 | CDLSTALLEDPATTERN | Stalled Pattern | 70 | CDLSTICKSANDWICH | Stick Sandwich | 71 | CDLTAKURI | Takuri (Dragonfly Doji with very long lower shadow) | 72 | CDLTASUKIGAP | Tasuki Gap | 73 | CDLTHRUSTING | Thrusting Pattern | 74 | CDLTRISTAR | Tristar Pattern | 75 | CDLUNIQUE3RIVER | Unique 3 River | 76 | CDLUPSIDEGAP2CROWS | Upside Gap Two Crows | 77 | CDLXSIDEGAP3METHODS | Upside/Downside Gap Three Methods | 78 | CMO | Chande Momentum Oscillator | 79 | CORREL | Pearson's Correlation Coefficient (r) | 80 | COPP | Coppock Curve | DONE 81 | DEMA | Double Exponential Moving Average | 82 | DX | Directional Movement Index | 83 | DONCH | Donchian Channel | DONE 84 | EMA | Exponential Moving Average | DONE 85 | EOM | Ease of Movement | DONE 86 | FORCE | Force Index | DONE 87 | HT_DCPERIOD | Hilbert Transform - Dominant Cycle Period | 88 | HT_DCPHASE | Hilbert Transform - Dominant Cycle Phase | 89 | HT_PHASOR | Hilbert Transform - Phasor Components | 90 | HT_SINE | Hilbert Transform - SineWave | 91 | HT_TRENDLINE | Hilbert Transform - Instantaneous Trendline | 92 | HT_TRENDMODE | Hilbert Transform - Trend vs Cycle Mode | 93 | KAMA | Kaufman Adaptive Moving Average | 94 | KELCH | Keltner Channel | DONE 95 | KST | KST Oscillator | DONE 96 | LINEARREG | Linear Regression | 97 | LINEARREG_ANGLE | Linear Regression Angle | 98 | LINEARREG_INTERCEPT | Linear Regression Intercept | 99 | LINEARREG_SLOPE | Linear Regression Slope | 100 | MA | All Moving Average | DONE 101 | MACD | Moving Average Convergence/Divergence | DONE 102 | MACDEXT | MACD with controllable MA type | 103 | MACDFIX | Moving Average Convergence/Divergence Fix 12/26 104 | MAMA | MESA Adaptive Moving Average | 105 | MAX | Highest value over a specified period | 106 | MAXINDEX | Index of highest value over a specified period | 107 | MASSI | Mass Index | DONE 108 | MEDPRICE | Median Price | 109 | MFI | Money Flow Index | DONE 110 | MIDPOINT | MidPoint over period | 111 | MIDPRICE | Midpoint Price over period | 112 | MIN | Lowest value over a specified period | 113 | MININDEX | Index of lowest value over a specified period | 114 | MINMAX | Lowest and highest values over a specified period | 115 | MINMAXINDEX | Indexes of lowest and highest values over a specified period | 116 | MINUS_DI | Minus Directional Indicator | 117 | MINUS_DM | Minus Directional Movement | 118 | MOM | Momentum | DONE 119 | NATR | Normalized Average True Range | 120 | OBV | On Balance Volume | DONE 121 | PLUS_DI | Plus Directional Indicator | 122 | PLUS_DM | Plus Directional Movement | 123 | PPO | Percentage Price Oscillator | 124 | PPSR | Pivot Points, Supports and Resistances | DONE 125 | ROC | Rate of change : ((price/prevPrice)-1)100 | DONE 126 | ROCP | Rate of change Percentage: (price-prevPrice)/prevPrice | 127 | ROCR | Rate of change ratio: (price/prevPrice) | 128 | ROCR100 | Rate of change ratio 100 scale: (price/prevPrice)100 | 129 | RSI | Relative Strength Index | DONE 130 | SAR | Parabolic SAR | 131 | SAREXT | Parabolic SAR - Extended | 132 | SMA | Simple Moving Average | 133 | STDDEV | Standard Deviation | DONE 134 | STOCH | Stochastic | 135 | STOCHF | Stochastic Fast | 136 | STOCHRSI | Stochastic Relative Strength Index | 137 | STOK | Stochastic oscillator %K | DONE 138 | STO | Stochastic oscillator %D | DONE 139 | SUM | Summation | 140 | T3 | Triple Exponential Moving Average (T3) | 141 | TEMA | Triple Exponential Moving Average | 142 | TRANGE | True Range | 143 | TRIMA | Triangular Moving Average | 144 | TRIX | 1-day Rate-Of-Change (ROC) of a Triple Smooth EMA | DONE 145 | TSF | Time Series Forecast | 146 | TSI | True Strength Index | DONE 147 | TYPPRICE | Typical Price | 148 | ULTOSC | Ultimate Oscillator | DONE 149 | VAR | Variance | 150 | VORTEX | Vortex Indicator | DONE 151 | WCLPRICE | Weighted Close Price | 152 | WILLR | Williams' %R | 153 | WMA | Weighted Moving Average | -------------------------------------------------------------------------------- /data/GOOG_20140101_20141201.csv: -------------------------------------------------------------------------------- 1 | Date,Open,High,Low,Close,Volume,Adj Close 2 | 2014-03-27,568.00257,568.00257,552.922516,558.462551,13100,558.462551 3 | 2014-03-28,561.202549,566.43259,558.672477,559.992504,41200,559.992504 4 | 2014-03-31,566.892592,567.002574,556.932537,556.9725030000001,10800,556.9725030000001 5 | 2014-04-01,558.712565,568.452595,558.712565,567.162558,7900,567.162558 6 | 2014-04-02,599.992707,604.832763,562.1925679999999,567.002574,147100,567.002574 7 | 2014-04-03,569.8525530000001,587.282679,564.132581,569.742571,5099200,569.742571 8 | 2014-04-04,574.652643,577.77265,543.002488,543.1424599999999,6369300,543.1424599999999 9 | 2014-04-07,540.742445,548.482483,527.1524400000001,538.1524559999999,4401700,538.1524559999999 10 | 2014-04-08,542.602466,555.0025,541.612446,554.902556,3151200,554.902556 11 | 2014-04-09,559.622532,565.372554,552.952506,564.142557,3330800,564.142557 12 | 2014-04-10,565.0025820000001,565.0025820000001,539.902495,540.952433,4036900,540.952433 13 | 2014-04-11,532.552381,540.0024400000001,526.532392,530.602392,3924800,530.602392 14 | 2014-04-14,538.252462,544.102429,529.56237,532.522453,2575100,532.522453 15 | 2014-04-15,536.822454,538.452473,518.462348,536.442444,3855100,536.442444 16 | 2014-04-16,543.002488,557.002492,540.0024400000001,556.54249,4893300,556.54249 17 | 2014-04-17,548.81249,549.502492,531.152424,536.1024,6809500,536.1024 18 | 2014-04-21,536.1024,536.7024349999999,525.602352,528.6224139999999,2566700,528.6224139999999 19 | 2014-04-22,528.642427,537.232391,527.512375,534.812425,2365400,534.812425 20 | 2014-04-23,533.792415,533.8724080000001,526.252389,526.942391,2052300,526.942391 21 | 2014-04-24,530.072374,531.6524519999999,522.122349,525.162363,1883200,525.162363 22 | 2014-04-25,522.512395,524.702361,515.422333,516.1823519999999,2100400,516.1823519999999 23 | 2014-04-28,517.182348,518.6023190000001,502.802274,517.1523589999999,3335500,517.1523589999999 24 | 2014-04-29,516.9023440000001,529.462425,516.322324,527.70241,2699100,527.70241 25 | 2014-04-30,527.602343,528.002366,522.522372,526.662388,1751200,526.662388 26 | 2014-05-01,527.112352,532.932391,523.8823639999999,531.352374,1905500,531.352374 27 | 2014-05-02,533.762426,534.0024030000001,525.612389,527.932411,1688500,527.932411 28 | 2014-05-05,524.822381,528.902418,521.322364,527.812392,1024100,527.812392 29 | 2014-05-06,525.232379,526.812396,515.062337,515.14233,1689000,515.14233 30 | 2014-05-07,515.7923049999999,516.68232,503.30227199999996,509.962291,3224300,509.962291 31 | 2014-05-08,508.462297,517.23229,506.45229800000004,511.002313,2021300,511.002313 32 | 2014-05-09,510.75233,519.902393,504.202292,518.732314,2439500,518.732314 33 | 2014-05-12,523.512391,530.1923929999999,519.012379,529.922366,1912500,529.922366 34 | 2014-05-13,530.892433,536.072411,529.512428,533.092437,1653400,533.092437 35 | 2014-05-14,533.0024070000001,533.0024070000001,525.292358,526.652412,1191800,526.652412 36 | 2014-05-15,525.702357,525.872379,517.422325,519.9823240000001,1704400,519.9823240000001 37 | 2014-05-16,521.39238,521.802379,515.4423469999999,520.6323620000001,1485300,520.6323620000001 38 | 2014-05-19,519.7023820000001,529.7824559999999,517.58537,528.862391,1277800,528.862391 39 | 2014-05-20,529.7423679999999,536.232396,526.3023919999999,529.772418,1784800,529.772418 40 | 2014-05-21,532.902462,539.185441,531.912381,538.9424650000001,1196300,538.9424650000001 41 | 2014-05-22,541.132431,547.602445,540.782472,545.062459,1615800,545.062459 42 | 2014-05-23,547.262462,553.642508,543.702467,552.702492,1932200,552.702492 43 | 2014-05-27,556.002496,566.002578,554.352463,565.952575,2104200,565.952575 44 | 2014-05-28,564.57257,567.842585,561.002537,561.682502,1652000,561.682502 45 | 2014-05-29,563.3525490000001,564.002525,558.712565,560.082534,1354100,560.082534 46 | 2014-05-30,560.802526,561.352496,555.912467,559.892559,1771100,559.892559 47 | 2014-06-02,560.702581,560.902593,545.7324480000001,553.932488,1435000,553.932488 48 | 2014-06-03,550.99248,552.342557,542.552463,544.942501,1866600,544.942501 49 | 2014-06-04,541.5024639999999,548.612478,538.752429,544.6624360000001,1816500,544.6624360000001 50 | 2014-06-05,546.402499,554.952498,544.452449,553.90256,1689100,553.90256 51 | 2014-06-06,558.062528,558.062528,548.932448,556.3325639999999,1736800,556.3325639999999 52 | 2014-06-09,557.152562,562.9025839999999,556.0425230000001,562.1225519999999,1467500,562.1225519999999 53 | 2014-06-10,560.512546,563.602502,557.902544,560.552511,1351700,560.552511 54 | 2014-06-11,558.002549,559.882522,555.022514,558.842561,1100100,558.842561 55 | 2014-06-12,557.302509,557.992512,548.462531,551.352476,1458500,551.352476 56 | 2014-06-13,552.262503,552.3024690000001,545.562488,551.7625360000001,1220500,551.7625360000001 57 | 2014-06-16,549.262515,549.62245,541.522477,544.282488,1702600,544.282488 58 | 2014-06-17,544.202496,545.32245,539.33245,543.012465,1444600,543.012465 59 | 2014-06-18,544.8624480000001,553.562516,544.002484,553.372481,1741800,553.372481 60 | 2014-06-19,554.242482,555.0025,548.512473,554.902556,2456800,554.902556 61 | 2014-06-20,556.852484,557.582513,550.3945259999999,556.362492,4508300,556.362492 62 | 2014-06-23,555.152509,565.0025820000001,554.252519,564.952579,1536800,564.952579 63 | 2014-06-24,565.192556,572.648612,561.012574,564.622572,2207100,564.622572 64 | 2014-06-25,565.262572,579.962616,565.222546,578.6526269999999,1969400,578.6526269999999 65 | 2014-06-26,581.0026389999999,582.4526599999999,571.852545,576.002598,1742000,576.002598 66 | 2014-06-27,577.182592,579.872648,573.802595,577.2426320000001,2236900,577.2426320000001 67 | 2014-06-30,578.662603,579.572631,574.752588,575.282606,1313800,575.282606 68 | 2014-07-01,578.32262,584.402649,576.6526349999999,582.672624,1448000,582.672624 69 | 2014-07-02,583.352589,585.442672,580.3926280000001,582.3376599999999,1056400,582.3376599999999 70 | 2014-07-03,583.352589,585.01266,580.9225849999999,584.7326559999999,714200,584.7326559999999 71 | 2014-07-07,583.76265,586.432631,579.5926440000001,582.252649,1064600,582.252649 72 | 2014-07-08,577.662607,579.530645,566.137592,571.092587,1909500,571.092587 73 | 2014-07-09,571.582578,576.7225900000001,569.378536,576.0826519999999,1116800,576.0826519999999 74 | 2014-07-10,565.912548,576.5926559999999,565.012558,571.102563,1356700,571.102563 75 | 2014-07-11,571.9125849999999,580.85263,571.422594,579.182645,1621700,579.182645 76 | 2014-07-14,582.602608,585.212671,578.032641,584.872627,1854100,584.872627 77 | 2014-07-15,585.7426280000001,585.807626,576.562606,584.782659,1623000,584.782659 78 | 2014-07-16,588.002671,588.402694,582.202646,582.662587,1397100,582.662587 79 | 2014-07-17,579.5326650000001,580.9926009999999,568.61258,573.732579,3016600,573.732579 80 | 2014-07-18,593.002712,596.802684,582.0026349999999,595.0826959999999,4014200,595.0826959999999 81 | 2014-07-21,591.752702,594.4027309999999,585.2356219999999,589.472645,2062100,589.472645 82 | 2014-07-22,590.722655,599.652725,590.6026360000001,594.7426519999999,1699200,594.7426519999999 83 | 2014-07-23,593.2326519999999,597.852683,592.502683,595.9826860000001,1233200,595.9826860000001 84 | 2014-07-24,596.452725,599.502716,591.7727150000001,593.352671,1035100,593.352671 85 | 2014-07-25,590.402686,591.862684,587.0326650000001,589.0226809999999,932500,589.0226809999999 86 | 2014-07-28,588.072688,592.502683,584.755668,590.6026360000001,986800,590.6026360000001 87 | 2014-07-29,588.752653,589.702707,583.517654,585.612633,1349900,585.612633 88 | 2014-07-30,586.55265,589.502696,584.002627,587.42265,1016500,587.42265 89 | 2014-07-31,580.602616,583.652668,570.002561,571.60253,2102800,571.60253 90 | 2014-08-01,570.4025839999999,575.962633,562.85252,566.0725940000001,1955300,566.0725940000001 91 | 2014-08-04,569.0425309999999,575.352561,564.102531,573.1526190000001,1427300,573.1526190000001 92 | 2014-08-05,570.052564,571.9826009999999,562.612543,565.0725980000001,1551200,565.0725980000001 93 | 2014-08-06,561.7825690000001,570.702601,560.0025410000001,566.376589,1334400,566.376589 94 | 2014-08-07,568.00257,569.89258,561.102482,563.362525,1110900,563.362525 95 | 2014-08-08,563.562536,570.252576,560.3525,568.772626,1494800,568.772626 96 | 2014-08-11,569.992585,570.492553,566.002578,567.8825509999999,1214700,567.8825509999999 97 | 2014-08-12,564.522567,565.902572,560.882579,562.732562,1542000,562.732562 98 | 2014-08-13,567.312567,575.0026019999999,565.752564,574.782639,1441800,574.782639 99 | 2014-08-14,576.182596,577.902645,570.882599,574.652643,985500,574.652643 100 | 2014-08-15,577.862619,579.382595,570.522603,573.4825639999999,1519200,573.4825639999999 101 | 2014-08-18,576.11258,584.5126309999999,576.002598,582.1626190000001,1284100,582.1626190000001 102 | 2014-08-19,585.002622,587.342658,584.002627,586.8626429999999,978700,586.8626429999999 103 | 2014-08-20,585.88266,586.702658,582.5726179999999,584.492618,1036700,584.492618 104 | 2014-08-21,583.822628,584.502655,581.142671,583.372664,914800,583.372664 105 | 2014-08-22,583.592689,585.238682,580.642643,582.562642,789100,582.562642 106 | 2014-08-25,584.722619,585.002622,579.002647,580.202654,1361400,580.202654 107 | 2014-08-26,581.262629,581.802623,576.582619,577.862619,1639700,577.862619 108 | 2014-08-27,577.272622,578.492581,570.1056269999999,571.002557,1703400,571.002557 109 | 2014-08-28,569.562573,573.252563,567.1025179999999,569.2025769999999,1292900,569.2025769999999 110 | 2014-08-29,571.332625,572.0425799999999,567.07155,571.60253,1083800,571.60253 111 | 2014-09-02,571.852545,577.832629,571.192593,577.332662,1578400,577.332662 112 | 2014-09-03,580.0026429999999,582.992655,575.0026019999999,577.942611,1215100,577.942611 113 | 2014-09-04,580.0026429999999,586.0026799999999,579.222611,581.982621,1458200,581.982621 114 | 2014-09-05,583.982613,586.55265,581.952632,586.082672,1632400,586.082672 115 | 2014-09-08,586.602653,591.7727150000001,586.302635,589.722659,1431000,589.722659 116 | 2014-09-09,588.902723,589.002667,580.0026429999999,581.012615,1287200,581.012615 117 | 2014-09-10,581.502606,583.502659,576.942615,583.1026360000001,977400,583.1026360000001 118 | 2014-09-11,580.362639,581.812599,576.2625879999999,581.3525980000001,1221000,581.3525980000001 119 | 2014-09-12,581.0026389999999,581.6426389999999,574.462608,575.622589,1601700,575.622589 120 | 2014-09-15,572.94257,574.9525990000001,568.212618,573.1025549999999,1597600,573.1025549999999 121 | 2014-09-16,572.762572,581.502606,572.662566,579.9526400000001,1480400,579.9526400000001 122 | 2014-09-17,580.0126190000001,587.522656,578.7776650000001,584.772683,1692800,584.772683 123 | 2014-09-18,587.002675,589.5426610000001,585.002622,589.272695,1444600,589.272695 124 | 2014-09-19,591.502688,596.482654,589.502696,596.082692,3736600,596.082692 125 | 2014-09-22,593.8227099999999,593.951665,583.462694,587.372648,1689500,587.372648 126 | 2014-09-23,586.8526059999999,586.8526059999999,581.0026389999999,581.1326339999999,1471400,581.1326339999999 127 | 2014-09-24,581.462641,589.632691,580.5226240000001,587.992634,1728100,587.992634 128 | 2014-09-25,587.552646,587.982658,574.182604,575.0625809999999,1926000,575.0625809999999 129 | 2014-09-26,576.062638,579.2526,574.662558,577.1026,1443700,577.1026 130 | 2014-09-29,571.7526,578.192625,571.172579,576.3625940000001,1282400,576.3625940000001 131 | 2014-09-30,576.932578,579.852634,572.852541,577.3625900000001,1621700,577.3625900000001 132 | 2014-10-01,576.0126349999999,577.582615,567.01255,568.272597,1445500,568.272597 133 | 2014-10-02,567.312567,571.9125849999999,563.322559,570.082615,1178400,570.082615 134 | 2014-10-03,573.052613,577.227576,572.5025820000001,575.282606,1141700,575.282606 135 | 2014-10-06,578.802574,581.0026389999999,574.442595,577.352614,1214600,577.352614 136 | 2014-10-07,574.402629,575.2726299999999,563.742534,563.742534,1911300,563.742534 137 | 2014-10-08,565.572566,573.8825870000001,557.492484,572.5025820000001,1990900,572.5025820000001 138 | 2014-10-09,571.182555,571.492549,559.062524,560.882579,2524800,560.882579 139 | 2014-10-10,557.722484,565.132577,544.052426,544.492476,3081900,544.492476 140 | 2014-10-13,544.992443,549.502492,533.102413,533.212456,2581700,533.212456 141 | 2014-10-14,538.902438,547.192507,533.172368,537.942408,2222600,537.942408 142 | 2014-10-15,531.012391,532.802396,518.302363,530.032409,3719400,530.032409 143 | 2014-10-16,519.002342,529.432374,515.002358,524.512387,3708600,524.512387 144 | 2014-10-17,527.252385,530.982402,508.532313,511.172335,5539400,511.172335 145 | 2014-10-20,509.452317,521.7623530000001,508.10230099999995,520.84241,2607500,520.84241 146 | 2014-10-21,525.192353,526.792383,519.1123240000001,526.542369,2336300,526.542369 147 | 2014-10-22,529.892437,539.8024280000001,528.8023509999999,532.7124269999999,2919300,532.7124269999999 148 | 2014-10-23,539.322474,547.222436,535.852386,543.98241,2348800,543.98241 149 | 2014-10-24,544.36248,544.882461,535.792407,539.782476,1973100,539.782476 150 | 2014-10-27,537.0324410000001,544.412422,537.0324410000001,540.772496,1185300,540.772496 151 | 2014-10-28,543.002488,548.98245,541.622422,548.9025190000001,1271000,548.9025190000001 152 | 2014-10-29,550.0024599999999,554.19254,546.982459,549.332532,1770500,549.332532 153 | 2014-10-30,548.9525219999999,552.802497,543.512493,550.312514,1455500,550.312514 154 | 2014-10-31,559.352504,559.572529,554.7524860000001,559.082538,2035100,559.082538 155 | 2014-11-03,555.502529,557.902544,553.2325099999999,555.222464,1382300,555.222464 156 | 2014-11-04,553.002509,555.502529,549.302481,554.112486,1244200,554.112486 157 | 2014-11-05,556.802481,556.802481,544.052426,545.9224230000001,2032300,545.9224230000001 158 | 2014-11-06,545.5024480000001,546.887472,540.9723849999999,542.042458,1333300,542.042458 159 | 2014-11-07,546.212525,546.212525,538.6724370000001,541.012473,1633800,541.012473 160 | 2014-11-10,541.4624980000001,549.5925219999999,541.022449,547.492463,1134600,547.492463 161 | 2014-11-11,548.4924589999999,551.9424730000001,546.302493,550.29244,965500,550.29244 162 | 2014-11-12,550.392507,550.462523,545.172441,547.3124650000001,1129400,547.3124650000001 163 | 2014-11-13,549.802448,549.802448,543.482442,545.3824900000001,1339400,545.3824900000001 164 | 2014-11-14,546.682442,546.682442,542.152501,544.402507,1289200,544.402507 165 | 2014-11-17,543.582448,543.7924360000001,534.063361,536.512461,1725800,536.512461 166 | 2014-11-18,537.502419,541.942452,534.172425,535.032449,1962700,535.032449 167 | 2014-11-19,535.002399,538.242425,530.082412,536.992415,1391600,536.992415 168 | 2014-11-20,531.252429,535.1123809999999,531.082408,534.832438,1562000,534.832438 169 | 2014-11-21,541.612446,542.142464,536.5624019999999,537.502419,2223700,537.502419 170 | 2014-11-24,537.652489,542.702471,535.622446,539.272471,1706000,539.272471 171 | 2014-11-25,539.0024440000001,543.98241,538.6044400000001,541.082489,1789100,541.082489 172 | 2014-11-26,540.882478,541.5524059999999,537.044437,540.372412,1523000,540.372412 173 | 2014-11-28,540.622426,542.002431,536.602429,541.8324709999999,1148300,541.8324709999999 174 | 2014-12-01,538.902438,541.412434,531.862379,533.8023910000001,2115400,533.8023910000001 175 | -------------------------------------------------------------------------------- /pandas_talib/__init__.py: -------------------------------------------------------------------------------- 1 | ''' 2 | Created on April 15, 2012 3 | Last update on July 18, 2015 4 | 5 | @author: Bruno Franca 6 | @author: Peter Bakker 7 | @author: Femto Trader 8 | ''' 9 | import pandas as pd 10 | import numpy as np 11 | 12 | 13 | class Columns(object): 14 | OPEN='Open' 15 | HIGH='High' 16 | LOW='Low' 17 | CLOSE='Close' 18 | VOLUME='Volume' 19 | 20 | 21 | indicators=["MA", "EMA", "MOM", "ROC", "ATR", "BBANDS", "PPSR", "STOK", "STO", 22 | "TRIX", "ADX", "MACD", "MassI", "Vortex", "KST", "RSI", "TSI", "ACCDIST", 23 | "Chaikin", "MFI", "OBV", "FORCE", "EOM", "CCI", "COPP", "KELCH", "ULTOSC", 24 | "DONCH", "STDDEV"] 25 | 26 | 27 | class Settings(object): 28 | join=True 29 | col=Columns() 30 | 31 | SETTINGS=Settings() 32 | 33 | 34 | def out(settings, df, result): 35 | if not settings.join: 36 | return result 37 | else: 38 | df=df.join(result) 39 | return df 40 | 41 | 42 | def MA(df, n, price='Close'): 43 | """ 44 | Moving Average 45 | """ 46 | name='MA_{n}'.format(n=n) 47 | result = pd.Series(df[price].rolling(n).mean(), name=name) 48 | return out(SETTINGS, df, result) 49 | 50 | def emaHelper(price, n, alphaIn=None): 51 | """ 52 | Algorithm by Stockchart 53 | """ 54 | length_of_df = len(price.axes[0]) 55 | 56 | initial_sma = price[0:n].mean() 57 | 58 | ema = pd.Series(np.nan, index=range(0, length_of_df)) 59 | ema.iat[n-1] = initial_sma 60 | 61 | if(not alphaIn): 62 | alpha = (2.0/(n + 1.0)) 63 | else: 64 | alpha = alphaIn 65 | 66 | for i in range(n, length_of_df): 67 | ema.iat[i] = price.iat[i]* alpha + (1-alpha)* ema.iat[i-1] 68 | 69 | return ema 70 | 71 | 72 | def EMA(df, n, price='Close'): 73 | """ 74 | Exponential Moving Average 75 | """ 76 | result = emaHelper(df[price], n) 77 | return out(SETTINGS, df, result) 78 | 79 | 80 | def MOM(df, n, price='Close'): 81 | """ 82 | Momentum 83 | """ 84 | result=pd.Series(df[price].diff(n), name='Momentum_' + str(n)) 85 | return out(SETTINGS, df, result) 86 | 87 | 88 | def ROC(df, n, price='Close'): 89 | """ 90 | Rate of Change 91 | """ 92 | M = df[price].diff(n - 1) 93 | N = df[price].shift(n - 1) 94 | result = pd.Series(M / N, name='ROC_' + str(n)) 95 | return out(SETTINGS, df, result) 96 | 97 | 98 | def ATR(df, n): 99 | """ 100 | Average True Range 101 | """ 102 | L = len(df['High']) 103 | TR_l = [None]*L 104 | for i in range(1, L): 105 | TR = max(df['High'].iloc[i] - df['Low'].iloc[i], \ 106 | abs(df['High'].iloc[i] - df['Close'].iloc[i-1]), \ 107 | abs(df['Low'].iloc[i] - df['Close'].iloc[i-1]) ) 108 | TR_l[i] = TR 109 | 110 | TR_s = pd.Series(TR_l[1::]) 111 | 112 | alpha = 1.0/n 113 | result = emaHelper(TR_s, n, alpha) 114 | 115 | return out(SETTINGS, df, result) 116 | 117 | 118 | def BBANDS(df, n, price='Close'): 119 | """ 120 | Bollinger Bands 121 | """ 122 | MA = pd.Series(df[price].rolling(n).mean()) 123 | MSD = pd.Series(df[price].rolling(n).std()) 124 | b1 = 4 * MSD / MA 125 | B1 = pd.Series(b1, name='BollingerB_' + str(n)) 126 | b2 = (df[price] - MA + 2 * MSD) / (4 * MSD) 127 | B2 = pd.Series(b2, name='Bollinger%b_' + str(n)) 128 | result = pd.DataFrame([B1, B2]).transpose() 129 | return out(SETTINGS, df, result) 130 | 131 | 132 | def PPSR(df): 133 | """ 134 | Pivot Points, Supports and Resistances 135 | """ 136 | PP = pd.Series((df['High'] + df['Low'] + df['Close']) / 3) 137 | R1 = pd.Series(2 * PP - df['Low']) 138 | S1 = pd.Series(2 * PP - df['High']) 139 | R2 = pd.Series(PP + df['High'] - df['Low']) 140 | S2 = pd.Series(PP - df['High'] + df['Low']) 141 | R3 = pd.Series(df['High'] + 2 * (PP - df['Low'])) 142 | S3 = pd.Series(df['Low'] - 2 * (df['High'] - PP)) 143 | result = pd.DataFrame([PP, R1, S1, R2, S2, R3, S3]).transpose() 144 | return out(SETTINGS, df, result) 145 | 146 | 147 | def STOK(df): 148 | """ 149 | Stochastic oscillator %K 150 | """ 151 | result = pd.Series((df['Close'] - df['Low']) / (df['High'] - df['Low']), name='SO%k') 152 | return out(SETTINGS, df, result) 153 | 154 | 155 | def STO(df, n): 156 | """ 157 | Stochastic oscillator %D 158 | """ 159 | SOk = pd.Series((df['Close'] - df['Low']) / (df['High'] - df['Low']), name='SO%k') 160 | result = pd.Series(SOk.ewm(span=n, min_periods=n - 1).mean(), name='SO%d_' + str(n)) 161 | return out(SETTINGS, df, result) 162 | 163 | 164 | def SMA(df, timeperiod, key='Close'): 165 | result = df[key].rolling(timeperiod, min_periods=timeperiod).mean() 166 | return out(SETTINGS, df, result) 167 | 168 | 169 | def TRIX(df, n): 170 | """ 171 | Trix 172 | """ 173 | EX1 = df['Close'].ewm(span=n, min_periods=n - 1).mean() 174 | EX2 = EX1.ewm(span=n, min_periods=n - 1).mean() 175 | EX3 = EX2.ewm(span=n, min_periods=n - 1).mean() 176 | i = 0 177 | ROC_l = [0] 178 | while i + 1 <= len(df) - 1: # df.index[-1]: 179 | ROC = (EX3[i + 1] - EX3[i]) / EX3[i] 180 | ROC_l.append(ROC) 181 | i = i + 1 182 | result = pd.Series(ROC_l, name='Trix_' + str(n)) 183 | return out(SETTINGS, df, result) 184 | 185 | 186 | def ADX(df, n, n_ADX): 187 | """ 188 | Average Directional Movement Index 189 | """ 190 | i = 0 191 | UpI = [] 192 | DoI = [] 193 | while i + 1 <= len(df) - 1: # df.index[-1]: 194 | UpMove = df.iat[i + 1, df.columns.get_loc('High')] - df.iat[i, df.columns.get_loc('High')] 195 | DoMove = df.iat[i, df.columns.get_loc('Low')] - df.iat[i + 1, df.columns.get_loc('Low')] 196 | if UpMove > DoMove and UpMove > 0: 197 | UpD = UpMove 198 | else: 199 | UpD = 0 200 | UpI.append(UpD) 201 | if DoMove > UpMove and DoMove > 0: 202 | DoD = DoMove 203 | else: 204 | DoD = 0 205 | DoI.append(DoD) 206 | i = i + 1 207 | i = 0 208 | TR_l = [0] 209 | while i < len(df) - 1: # df.index[-1]: 210 | TR = max(df.iat[i + 1, df.columns.get_loc('High')], df.iat[i, df.columns.get_loc('Close')]) - min(df.iat[i + 1, df.columns.get_loc('Low')], df.iat[i, df.columns.get_loc('Close')]) 211 | TR_l.append(TR) 212 | i = i + 1 213 | TR_s = pd.Series(TR_l) 214 | ATR = pd.Series(TR_s.ewm(span=n, min_periods=n).mean()) 215 | UpI = pd.Series(UpI) 216 | DoI = pd.Series(DoI) 217 | PosDI = pd.Series(UpI.ewm(span=n, min_periods=n - 1).mean() / ATR) 218 | NegDI = pd.Series(DoI.ewm(span=n, min_periods=n - 1).mean() / ATR) 219 | temp = abs(PosDI - NegDI) / (PosDI + NegDI) 220 | result = pd.Series(temp.ewm(span=n_ADX, min_periods=n_ADX - 1).mean(), name='ADX_' + str(n) + '_' + str(n_ADX)) 221 | return out(SETTINGS, df, result) 222 | 223 | 224 | def MACD(df, n_fast, n_slow, price='Close'): 225 | """ 226 | MACD, MACD Signal and MACD difference 227 | """ 228 | EMAfast = pd.Series(df[price].ewm(span=n_fast, min_periods=n_slow - 1).mean()) 229 | EMAslow = pd.Series(df[price].ewm(span=n_slow, min_periods=n_slow - 1).mean()) 230 | MACD = pd.Series(EMAfast - EMAslow, name='MACD_%d_%d' % (n_fast, n_slow)) 231 | MACDsign = pd.Series(MACD.ewm(span=9, min_periods=8).mean(), name='MACDsign_%d_%d' % (n_fast, n_slow)) 232 | MACDdiff = pd.Series(MACD - MACDsign, name='MACDdiff_%d_%d' % (n_fast, n_slow)) 233 | result = pd.DataFrame([MACD, MACDsign, MACDdiff]).transpose() 234 | return out(SETTINGS, df, result) 235 | 236 | 237 | def MassI(df): 238 | """ 239 | Mass Index 240 | """ 241 | Range = df['High'] - df['Low'] 242 | EX1 = Range.ewm(span=9, min_periods=8).mean() 243 | EX2 = EX1.ewm(span=9, min_periods=8).mean() 244 | Mass = EX1 / EX2 245 | result = pd.Series(Mass.rolling(25).sum(), name='Mass Index') 246 | return out(SETTINGS, df, result) 247 | 248 | 249 | def Vortex(df, n): 250 | """ 251 | Vortex Indicator 252 | """ 253 | i = 0 254 | TR = [0] 255 | while i < len(df) - 1: # df.index[-1]: 256 | Range = max(df.iat[i + 1, df.columns.get_loc('High')], df.iat[i, df.columns.get_loc('Close')]) - min(df.iat[i + 1, df.columns.get_loc('Low')], df.iat[i, df.columns.get_loc('Close')]) 257 | TR.append(Range) 258 | i = i + 1 259 | i = 0 260 | VM = [0] 261 | while i < len(df) - 1: # df.index[-1]: 262 | Range = abs(df.iat[i + 1, df.columns.get_loc('High')] - df.iat[i, df.columns.get_loc('Low')]) - abs(df.iat[i + 1, df.columns.get_loc('Low')] - df.iat[i, df.columns.get_loc('High')]) 263 | VM.append(Range) 264 | i = i + 1 265 | result = pd.Series(pd.Series(VM).rolling(n).sum() / pd.Series(TR).rolling(n).sum(), name='Vortex_' + str(n)) 266 | return out(SETTINGS, df, result) 267 | 268 | 269 | def KST(df, r1, r2, r3, r4, n1, n2, n3, n4): 270 | """ 271 | KST Oscillator 272 | """ 273 | M = df['Close'].diff(r1 - 1) 274 | N = df['Close'].shift(r1 - 1) 275 | ROC1 = M / N 276 | M = df['Close'].diff(r2 - 1) 277 | N = df['Close'].shift(r2 - 1) 278 | ROC2 = M / N 279 | M = df['Close'].diff(r3 - 1) 280 | N = df['Close'].shift(r3 - 1) 281 | ROC3 = M / N 282 | M = df['Close'].diff(r4 - 1) 283 | N = df['Close'].shift(r4 - 1) 284 | ROC4 = M / N 285 | result = pd.Series(ROC1.rolling(n1).sum() + ROC2.rolling(n2).sum() * 2 + ROC3.rolling(n3).sum() * 3 + ROC4.rolling(n4).sum() * 4, name='KST_' + str(r1) + '_' + str(r2) + '_' + str(r3) + '_' + str(r4) + '_' + str(n1) + '_' + str(n2) + '_' + str(n3) + '_' + str(n4)) 286 | return out(SETTINGS, df, result) 287 | 288 | 289 | def RSI(df, n): 290 | """ 291 | Relative Strength Index 292 | """ 293 | i = 0 294 | UpI = [0] 295 | DoI = [0] 296 | while i + 1 <= len(df) - 1: # df.index[-1] 297 | UpMove = df.iat[i + 1, df.columns.get_loc('High')] - df.iat[i, df.columns.get_loc('High')] 298 | DoMove = df.iat[i, df.columns.get_loc('Low')] - df.iat[i + 1, df.columns.get_loc('Low')] 299 | if UpMove > DoMove and UpMove > 0: 300 | UpD = UpMove 301 | else: 302 | UpD = 0 303 | UpI.append(UpD) 304 | if DoMove > UpMove and DoMove > 0: 305 | DoD = DoMove 306 | else: 307 | DoD = 0 308 | DoI.append(DoD) 309 | i = i + 1 310 | UpI = pd.Series(UpI) 311 | DoI = pd.Series(DoI) 312 | PosDI = pd.Series(UpI.ewm(span=n, min_periods=n - 1).mean()) 313 | NegDI = pd.Series(DoI.ewm(span=n, min_periods=n - 1).mean()) 314 | result = pd.Series(PosDI / (PosDI + NegDI), name='RSI_' + str(n)) 315 | return out(SETTINGS, df, result) 316 | 317 | 318 | def TSI(df, r, s): 319 | """ 320 | True Strength Index 321 | """ 322 | M = pd.Series(df['Close'].diff(1)) 323 | aM = abs(M) 324 | EMA1 = pd.Series(M.ewm(span=r, min_periods=r - 1).mean()) 325 | aEMA1 = pd.Series(aM.ewm(span=r, min_periods=r - 1).mean()) 326 | EMA2 = pd.Series(EMA1.ewm(span=s, min_periods=s - 1).mean()) 327 | aEMA2 = pd.Series(aEMA1.ewm(span=s, min_periods=s - 1).mean()) 328 | result = pd.Series(EMA2 / aEMA2, name='TSI_' + str(r) + '_' + str(s)) 329 | return out(SETTINGS, df, result) 330 | 331 | 332 | def ACCDIST(df, n): 333 | """ 334 | Accumulation/Distribution 335 | """ 336 | ad = (2 * df['Close'] - df['High'] - df['Low']) / (df['High'] - df['Low']) * df['Volume'] 337 | M = ad.diff(n - 1) 338 | N = ad.shift(n - 1) 339 | ROC = M / N 340 | result = pd.Series(ROC, name='Acc/Dist_ROC_' + str(n)) 341 | return out(SETTINGS, df, result) 342 | 343 | 344 | def Chaikin(df): 345 | """ 346 | Chaikin Oscillator 347 | """ 348 | ad = (2 * df['Close'] - df['High'] - df['Low']) / (df['High'] - df['Low']) * df['Volume'] 349 | result = pd.Series(ad.ewm(span=3, min_periods=2).mean() - ad.ewm(span=10, min_periods=9).mean(), name='Chaikin') 350 | return out(SETTINGS, df, result) 351 | 352 | 353 | def MFI(df, n): 354 | """ 355 | Money Flow Index and Ratio 356 | """ 357 | PP = (df['High'] + df['Low'] + df['Close']) / 3 358 | i = 0 359 | PosMF = [0] 360 | while i < len(df) - 1: # df.index[-1]: 361 | if PP[i + 1] > PP[i]: 362 | PosMF.append(PP[i + 1] * df.iat[i + 1, df.columns.get_loc('Volume')]) 363 | else: 364 | PosMF.append(0) 365 | i=i + 1 366 | PosMF = pd.Series(PosMF) 367 | TotMF = PP * df['Volume'] 368 | MFR = pd.Series(PosMF / TotMF) 369 | result = pd.Series(MFR.rolling(n).mean(), name='MFI_' + str(n)) 370 | return out(SETTINGS, df, result) 371 | 372 | 373 | def OBV(df, n): 374 | """ 375 | On-balance Volume 376 | """ 377 | i = 0 378 | OBV = [0] 379 | while i < len(df) - 1: # df.index[-1]: 380 | if df.iat[i + 1, df.columns.get_loc('Close')] - df.iat[i, df.columns.get_loc('Close')] > 0: 381 | OBV.append(df.iat[i + 1, df.columns.get_loc('Volume')]) 382 | if df.iat[i + 1, df.columns.get_loc('Close')] - df.iat[i, df.columns.get_loc('Close')] == 0: 383 | OBV.append(0) 384 | if df.iat[i + 1, df.columns.get_loc('Close')] - df.iat[i, df.columns.get_loc('Close')] < 0: 385 | OBV.append(-df.iat[i + 1, df.columns.get_loc('Volume')]) 386 | i = i + 1 387 | OBV = pd.Series(OBV) 388 | result = pd.Series(OBV.rolling(n).mean(), name='OBV_' + str(n)) 389 | return out(SETTINGS, df, result) 390 | 391 | 392 | def FORCE(df, n): 393 | """ 394 | Force Index 395 | """ 396 | result = pd.Series(df['Close'].diff(n) * df['Volume'].diff(n), name='Force_' + str(n)) 397 | return out(SETTINGS, df, result) 398 | 399 | 400 | def EOM(df, n): 401 | """ 402 | Ease of Movement 403 | """ 404 | EoM = (df['High'].diff(1) + df['Low'].diff(1)) * (df['High'] - df['Low']) / (2 * df['Volume']) 405 | result = pd.Series(EoM.rolling(n).mean(), name='EoM_' + str(n)) 406 | return out(SETTINGS, df, result) 407 | 408 | 409 | def CCI(df, n): 410 | """ 411 | Commodity Channel Index 412 | """ 413 | PP = (df['High'] + df['Low'] + df['Close']) / 3 414 | result = pd.Series((PP - PP.rolling(n).mean()) / PP.rolling(n).std(), name='CCI_' + str(n)) 415 | return out(SETTINGS, df, result) 416 | 417 | 418 | def COPP(df, n): 419 | """ 420 | Coppock Curve 421 | """ 422 | M = df['Close'].diff(int(n * 11 / 10) - 1) 423 | N = df['Close'].shift(int(n * 11 / 10) - 1) 424 | ROC1 = M / N 425 | M = df['Close'].diff(int(n * 14 / 10) - 1) 426 | N = df['Close'].shift(int(n * 14 / 10) - 1) 427 | ROC2 = M / N 428 | temp = ROC1 + ROC2 429 | result = pd.Series(temp.ewm(span=n, min_periods=n).mean(), name='Copp_' + str(n)) 430 | return out(SETTINGS, df, result) 431 | 432 | 433 | def KELCH(df, n): 434 | """ 435 | Keltner Channel 436 | """ 437 | temp = (df['High'] + df['Low'] + df['Close']) / 3 438 | KelChM = pd.Series(temp.rolling(n).mean(), name='KelChM_' + str(n)) 439 | temp = (4 * df['High'] - 2 * df['Low'] + df['Close']) / 3 440 | KelChU = pd.Series(temp.rolling(n).mean(), name='KelChU_' + str(n)) 441 | temp = (-2 * df['High'] + 4 * df['Low'] + df['Close']) / 3 442 | KelChD = pd.Series(temp.rolling(n).mean(), name='KelChD_' + str(n)) 443 | result = pd.DataFrame([KelChM, KelChU, KelChD]).transpose() 444 | return out(SETTINGS, df, result) 445 | 446 | 447 | def ULTOSC(df): 448 | """ 449 | Ultimate Oscillator 450 | """ 451 | i = 0 452 | TR_l = [0] 453 | BP_l = [0] 454 | while i < len(df) - 1: # df.index[-1]: 455 | TR = max(df.iat[i + 1, df.columns.get_loc('High')], df.iat[i, df.columns.get_loc('Close')]) - min(df.iat[i + 1, df.columns.get_loc('Low')], df.iat[i, df.columns.get_loc('Close')]) 456 | TR_l.append(TR) 457 | BP = df.iat[i + 1, df.columns.get_loc('Close')] - min(df.iat[i + 1, df.columns.get_loc('Low')], df.iat[i, df.columns.get_loc('Close')]) 458 | BP_l.append(BP) 459 | i = i + 1 460 | result = pd.Series((4 * pd.Series(BP_l).rolling(7).sum() / pd.Series(TR_l).rolling(7).sum()) + (2 * pd.Series(BP_l).rolling(14).sum() / pd.Series(TR_l).rolling(14).sum()) + (pd.Series(BP_l).rolling(28).sum() / pd.Series(TR_l).rolling(28).sum()), name='Ultimate_Osc') 461 | return out(SETTINGS, df, result) 462 | 463 | 464 | def DONCH(df, n): 465 | """ 466 | Donchian Channel 467 | """ 468 | i = 0 469 | DC_l = [] 470 | while i < n - 1: 471 | DC_l.append(0) 472 | i = i + 1 473 | i = 0 474 | while i + n - 1 < len(df) - 1: # df.index[-1]: 475 | DC = max(df['High'].ix[i:i + n - 1]) - min(df['Low'].ix[i:i + n - 1]) 476 | DC_l.append(DC) 477 | i = i + 1 478 | DonCh = pd.Series(DC_l, name='Donchian_' + str(n)) 479 | result = DonCh.shift(n - 1) 480 | return out(SETTINGS, df, result) 481 | 482 | 483 | def STDDEV(df, n): 484 | """ 485 | Standard Deviation 486 | """ 487 | result = pd.Series(df['Close'].rolling(n).std(), name='STD_' + str(n)) 488 | return out(SETTINGS, df, result) 489 | -------------------------------------------------------------------------------- /data/AAPL_20140101_20141201.csv: -------------------------------------------------------------------------------- 1 | Date,Open,High,Low,Close,Volume,Adj Close 2 | 2014-01-02,555.680008,557.029945,552.020004,553.12999,58671200.0,76.765051 3 | 2014-01-03,552.8600230000001,553.699989,540.430046,540.9800190000001,98116900.0,75.078841 4 | 2014-01-06,537.450005,546.800018,533.599983,543.930046,103152700.0,75.48825500000001 5 | 2014-01-07,544.320015,545.9600519999999,537.919975,540.03997,79302300.0,74.948378 6 | 2014-01-08,538.8100360000001,545.5599900000001,538.68998,543.459969,64632400.0,75.423016 7 | 2014-01-09,546.800018,546.860046,535.349983,536.519997,69787200.0,74.459866 8 | 2014-01-10,539.829979,540.799988,531.110046,532.940048,76244000.0,73.96303 9 | 2014-01-13,529.910019,542.5,529.880005,535.7300190000001,94623200.0,74.35023000000001 10 | 2014-01-14,538.220009,546.730003,537.659996,546.3899690000001,83140400.0,75.82965 11 | 2014-01-15,553.5200120000001,560.200005,551.659996,557.360046,97909700.0,77.352111 12 | 2014-01-16,554.900017,556.850021,551.680023,554.2500150000001,57319500.0,76.920491 13 | 2014-01-17,551.4800190000001,552.069992,539.899994,540.6699980000001,106684900.0,75.035816 14 | 2014-01-21,540.990005,550.07,540.420006,549.069977,82131700.0,76.20159 15 | 2014-01-22,550.910019,557.290031,547.809975,551.509979,94996300.0,76.540221 16 | 2014-01-23,549.9400099999999,556.5,544.810013,556.180046,100809800.0,77.188347 17 | 2014-01-24,554.000023,555.620033,544.7499849999999,546.070015,107338700.0,75.785246 18 | 2014-01-27,550.07,554.799988,545.750008,550.500023,138719700.0,76.400056 19 | 2014-01-28,508.76000199999993,514.9999849999999,502.07002300000005,506.49997699999994,266380800.0,70.29359699999999 20 | 2014-01-29,503.950012,507.37001,498.62001,500.749992,125702500.0,69.495597 21 | 2014-01-30,502.539993,506.49997699999994,496.699966,499.779984,169625400.0,69.36097600000001 22 | 2014-01-31,495.179985,501.529984,493.549988,500.600029,116199300.0,69.474784 23 | 2014-02-03,502.610008,507.730019,499.299973,501.529984,100366000.0,69.60384599999999 24 | 2014-02-04,505.850029,509.459991,502.760025,508.79001600000004,94170300.0,70.61141500000001 25 | 2014-02-05,506.55995199999995,515.279991,506.249985,512.589996,82086200.0,71.138788 26 | 2014-02-06,510.05995199999995,513.499977,507.81002,512.509995,64441300.0,71.553437 27 | 2014-02-07,521.379997,522.930046,517.380013,519.679985,92570100.0,72.554466 28 | 2014-02-10,518.660042,531.990013,518.0,528.989998,86389800.0,73.854272 29 | 2014-02-11,530.610008,537.7499849999999,529.500023,535.959984,70564200.0,74.827377 30 | 2014-02-12,536.949966,539.560013,533.239975,535.919983,77025200.0,74.821793 31 | 2014-02-13,534.6599809999999,544.84996,534.20005,544.429977,76849500.0,76.009905 32 | 2014-02-14,542.4699860000001,545.9799730000001,541.209984,543.990021,68231100.0,75.948481 33 | 2014-02-18,546.0,551.190025,545.6100309999999,545.990013,65062900.0,76.227707 34 | 2014-02-19,544.7499849999999,546.889954,534.34996,537.370003,78442000.0,75.024235 35 | 2014-02-20,532.990036,537.000008,528.9999849999999,531.149994,76464500.0,74.155837 36 | 2014-02-21,532.790031,534.569992,524.600044,525.249992,69696200.0,73.332115 37 | 2014-02-24,523.149971,529.920006,522.420021,527.550018,72227400.0,73.653231 38 | 2014-02-25,529.379967,529.570038,521.0000150000001,522.060013,57988000.0,72.88675 39 | 2014-02-26,523.610008,525.0,515.599998,517.349998,69054300.0,72.229168 40 | 2014-02-27,517.139954,528.780006,516.049995,527.670021,75470500.0,73.669985 41 | 2014-02-28,529.08004,532.749977,522.119987,526.239975,92992200.0,73.470331 42 | 2014-03-03,523.4200440000001,530.649956,522.8099900000001,527.76001,59695300.0,73.682548 43 | 2014-03-04,530.999977,532.6400150000001,527.769997,531.240036,64785000.0,74.168408 44 | 2014-03-05,530.919975,534.750023,529.1299740000001,532.360008,50015700.0,74.324771 45 | 2014-03-06,532.790031,534.4400019999999,528.100044,530.7499849999999,46372200.0,74.09999 46 | 2014-03-07,531.0900190000001,531.9799730000001,526.050011,530.4399639999999,55182400.0,74.05670699999999 47 | 2014-03-10,528.3600230000001,533.330017,528.339996,530.919975,44646000.0,74.123723 48 | 2014-03-11,535.450012,538.740021,532.590027,536.090027,69806100.0,74.84553299999999 49 | 2014-03-12,534.509964,537.350029,532.0,536.6099849999999,49831600.0,74.918126 50 | 2014-03-13,537.4399639999999,539.660042,529.160042,530.649956,64435700.0,74.086024 51 | 2014-03-14,528.789993,530.8900150000001,523.000008,524.68998,59299800.0,73.25393000000001 52 | 2014-03-17,527.699982,529.969994,525.850006,526.740013,49886200.0,73.540143 53 | 2014-03-18,525.899994,531.9699860000001,525.200005,531.40004,52411800.0,74.19074599999999 54 | 2014-03-19,532.259979,536.23999,528.9999849999999,531.26001,56189000.0,74.171196 55 | 2014-03-20,529.889992,532.669975,527.34996,528.700005,52099600.0,73.813784 56 | 2014-03-21,531.929985,533.75,526.330017,532.870033,93511600.0,74.395978 57 | 2014-03-24,538.41996,540.500008,535.0599900000001,539.1899639999999,88925200.0,75.278327 58 | 2014-03-25,541.499977,545.750008,539.590027,544.98999,70573300.0,76.08809000000001 59 | 2014-03-26,546.5200120000001,549.0000150000001,538.8600230000001,539.779991,74942000.0,75.360703 60 | 2014-03-27,540.019997,541.499977,535.1199650000001,537.4599910000001,55507900.0,75.036799 61 | 2014-03-28,538.320038,538.940025,534.2499849999999,536.8600309999999,50141000.0,74.953036 62 | 2014-03-31,539.2300190000001,540.809975,535.930023,536.739975,42167300.0,74.936275 63 | 2014-04-01,537.760025,541.8700259999999,536.769989,541.649994,50190000.0,75.621781 64 | 2014-04-02,542.379997,543.479996,540.260002,542.549988,45105200.0,75.74743199999999 65 | 2014-04-03,541.3900150000001,542.5,537.6399690000001,538.7900089999999,40586000.0,75.222488 66 | 2014-04-04,539.809952,540.000023,530.579994,531.820023,68812800.0,74.249382 67 | 2014-04-07,528.019989,530.900002,521.8899690000001,523.4700320000001,72462600.0,73.083608 68 | 2014-04-08,525.1899639999999,526.1200259999999,518.699989,523.4399639999999,60972100.0,73.079411 69 | 2014-04-09,522.639999,530.490005,522.0200120000001,530.320015,51542400.0,74.03996 70 | 2014-04-10,530.680023,532.240005,523.1699980000001,523.4800190000001,59913000.0,73.085003 71 | 2014-04-11,519.000023,522.830017,517.139954,519.6100230000001,67929400.0,72.544698 72 | 2014-04-14,521.899956,522.160042,517.209969,521.679977,51418500.0,72.833692 73 | 2014-04-15,520.2700120000001,521.6399769999999,511.32999400000006,517.9600519999999,66622500.0,72.31434 74 | 2014-04-16,518.049988,521.090004,514.139992,519.01001,53691400.0,72.46092800000001 75 | 2014-04-17,519.999992,527.76001,519.200027,524.940025,71083600.0,73.28884000000001 76 | 2014-04-21,525.339981,532.1399769999999,523.96003,531.170021,45637200.0,74.158633 77 | 2014-04-22,528.3100360000001,531.8299559999999,526.500008,531.699966,50640800.0,74.23262 78 | 2014-04-23,529.060013,531.129967,524.450027,524.750008,98735000.0,73.262311 79 | 2014-04-24,568.210014,570.0000150000001,560.730003,567.770004,189977900.0,79.268493 80 | 2014-04-25,564.529984,571.990021,563.959984,571.93998,97568800.0,79.850679 81 | 2014-04-28,572.799973,595.749977,572.550034,594.0900190000001,167371400.0,82.943129 82 | 2014-04-29,593.739998,595.979996,589.509995,592.329979,84344400.0,82.69740300000001 83 | 2014-04-30,592.639999,599.430008,589.799988,590.089981,114160200.0,82.38466899999999 84 | 2014-05-01,591.9999849999999,594.799995,586.359962,591.4799730000001,61012000.0,82.578731 85 | 2014-05-02,592.3400190000001,594.199982,589.7100519999999,592.580025,47878600.0,82.732313 86 | 2014-05-05,590.1399690000001,600.999977,589.999992,600.96003,71766800.0,83.902277 87 | 2014-05-06,601.799995,604.410042,594.409973,594.409973,93641100.0,82.987799 88 | 2014-05-07,595.249992,597.289986,587.7300339999999,592.329979,70716100.0,82.69740300000001 89 | 2014-05-08,588.249992,594.409973,586.400017,587.990013,57574300.0,82.549993 90 | 2014-05-09,584.5399480000001,586.25,580.330025,585.53997,72899400.0,82.206023 91 | 2014-05-12,587.489975,593.659996,587.40004,592.830017,53302200.0,83.229499 92 | 2014-05-13,591.9999849999999,594.540016,590.699982,593.760025,39934300.0,83.360066 93 | 2014-05-14,592.430008,597.400002,591.740005,593.869987,41601000.0,83.375504 94 | 2014-05-15,594.699966,596.599983,588.0399480000001,588.819992,57711500.0,82.666517 95 | 2014-05-16,588.6299740000001,597.529991,585.399994,597.509964,69064100.0,83.886533 96 | 2014-05-19,597.849998,607.3300019999999,597.33004,604.5900190000001,79438800.0,84.880527 97 | 2014-05-20,604.509964,606.399994,600.730011,604.709969,58709000.0,84.897367 98 | 2014-05-21,603.8300019999999,606.700027,602.059975,606.309952,49214900.0,85.121994 99 | 2014-05-22,606.599998,609.850006,604.100021,607.2700269999999,50190000.0,85.256783 100 | 2014-05-23,607.25,614.730011,606.470009,614.129997,58052400.0,86.21987800000001 101 | 2014-05-27,615.879997,625.8599849999999,615.630005,625.629967,87216500.0,87.834399 102 | 2014-05-28,626.019989,629.8299559999999,623.779991,624.01001,78870400.0,87.60696800000001 103 | 2014-05-29,627.850044,636.87001,627.769989,635.37999,94118500.0,89.203239 104 | 2014-05-30,637.979996,644.1700440000001,628.900002,633.0000150000001,141005200.0,88.869106 105 | 2014-06-02,633.959984,634.830017,622.5000150000001,628.649956,92337700.0,88.258386 106 | 2014-06-03,628.4599910000001,638.740013,628.25,637.539986,73177300.0,89.506489 107 | 2014-06-04,637.4400099999999,647.8899690000001,636.110046,644.819992,83870500.0,90.52855500000001 108 | 2014-06-05,646.20005,649.370003,642.610008,647.349983,75951400.0,90.883749 109 | 2014-06-06,649.900002,651.259979,644.469971,645.570023,87484600.0,90.633854 110 | 2014-06-09,92.699997,93.879997,91.75,93.699997,75415000.0,92.084113 111 | 2014-06-10,94.730003,95.050003,93.57,94.25,62777000.0,92.62463100000001 112 | 2014-06-11,94.129997,94.760002,93.470001,93.860001,45681000.0,92.241357 113 | 2014-06-12,94.040001,94.120003,91.900002,92.290001,54749000.0,90.698433 114 | 2014-06-13,92.199997,92.440002,90.879997,91.279999,54525000.0,89.705848 115 | 2014-06-16,91.510002,92.75,91.449997,92.199997,35561000.0,90.609981 116 | 2014-06-17,92.309998,92.699997,91.800003,92.08000200000001,29726000.0,90.49205500000001 117 | 2014-06-18,92.269997,92.290001,91.349998,92.18,33514000.0,90.590329 118 | 2014-06-19,92.290001,92.300003,91.339996,91.860001,35528000.0,90.275848 119 | 2014-06-20,91.849998,92.550003,90.900002,90.910004,100898000.0,89.34223399999999 120 | 2014-06-23,91.32,91.620003,90.599998,90.83000200000001,43694000.0,89.263612 121 | 2014-06-24,90.75,91.739998,90.190002,90.279999,39036000.0,88.72309399999999 122 | 2014-06-25,90.209999,90.699997,89.650002,90.360001,36869000.0,88.801716 123 | 2014-06-26,90.370003,91.050003,89.800003,90.900002,32629000.0,89.332404 124 | 2014-06-27,90.82,92.0,90.769997,91.980003,64029000.0,90.393781 125 | 2014-06-30,92.099998,93.730003,92.089996,92.93,49589000.0,91.327395 126 | 2014-07-01,93.519997,94.07,93.129997,93.519997,38223000.0,91.907217 127 | 2014-07-02,93.870003,94.059998,93.089996,93.480003,28465000.0,91.867913 128 | 2014-07-03,93.66999799999999,94.099998,93.199997,94.029999,22891800.0,92.408424 129 | 2014-07-07,94.139999,95.989998,94.099998,95.970001,56468000.0,94.31497 130 | 2014-07-08,96.269997,96.800003,93.91999799999999,95.349998,65222000.0,93.70566 131 | 2014-07-09,95.440002,95.949997,94.760002,95.389999,36436000.0,93.74497099999999 132 | 2014-07-10,93.760002,95.550003,93.519997,95.040001,39686000.0,93.40100799999999 133 | 2014-07-11,95.360001,95.889999,94.860001,95.220001,34018000.0,93.577904 134 | 2014-07-14,95.860001,96.889999,95.650002,96.449997,42810000.0,94.786689 135 | 2014-07-15,96.800003,96.849998,95.029999,95.32,45477900.0,93.67617800000001 136 | 2014-07-16,96.970001,97.099998,94.739998,94.779999,53502000.0,93.14549 137 | 2014-07-17,95.029999,95.279999,92.57,93.089996,57298000.0,91.48463199999999 138 | 2014-07-18,93.620003,94.739998,93.019997,94.43,49988000.0,92.80152700000001 139 | 2014-07-21,94.989998,95.0,93.720001,93.940002,39079000.0,92.31998 140 | 2014-07-22,94.68,94.889999,94.120003,94.720001,55197000.0,93.086527 141 | 2014-07-23,95.41999799999999,97.879997,95.16999799999999,97.190002,92918000.0,95.513932 142 | 2014-07-24,97.040001,97.32,96.41999799999999,97.029999,45729000.0,95.356688 143 | 2014-07-25,96.849998,97.839996,96.639999,97.66999799999999,43469000.0,95.98565 144 | 2014-07-28,97.82,99.239998,97.550003,99.019997,55318000.0,97.312368 145 | 2014-07-29,99.33000200000001,99.440002,98.25,98.379997,43143000.0,96.68340500000001 146 | 2014-07-30,98.440002,98.699997,97.66999799999999,98.150002,33010000.0,96.457376 147 | 2014-07-31,97.160004,97.449997,95.33000200000001,95.599998,56843000.0,93.951349 148 | 2014-08-01,94.900002,96.620003,94.809998,96.129997,48511000.0,94.472207 149 | 2014-08-04,96.370003,96.58000200000001,95.16999799999999,95.589996,39958000.0,93.941519 150 | 2014-08-05,95.360001,95.68,94.360001,95.120003,55933000.0,93.47963 151 | 2014-08-06,94.75,95.480003,94.709999,94.959999,38558000.0,93.322386 152 | 2014-08-07,94.93,95.949997,94.099998,94.480003,46711000.0,93.31251400000001 153 | 2014-08-08,94.260002,94.82,93.279999,94.739998,41865000.0,93.569296 154 | 2014-08-11,95.269997,96.08000200000001,94.839996,95.989998,36585000.0,94.80385 155 | 2014-08-12,96.040001,96.879997,95.610001,95.970001,33795000.0,94.7841 156 | 2014-08-13,96.150002,97.239998,96.040001,97.239998,31916000.0,96.038404 157 | 2014-08-14,97.33000200000001,97.57,96.800003,97.5,28116000.0,96.29519300000001 158 | 2014-08-15,97.900002,98.190002,96.860001,97.980003,48951000.0,96.769265 159 | 2014-08-18,98.489998,99.370003,97.980003,99.160004,47572000.0,97.93468399999999 160 | 2014-08-19,99.410004,100.68,99.32,100.529999,69399000.0,99.28775 161 | 2014-08-20,100.440002,101.089996,99.949997,100.57,52699000.0,99.32725699999999 162 | 2014-08-21,100.57,100.940002,100.110001,100.58000200000001,33478000.0,99.337135 163 | 2014-08-22,100.290001,101.470001,100.190002,101.32,44184000.0,100.067989 164 | 2014-08-25,101.790001,102.16999799999999,101.279999,101.540001,40270000.0,100.285271 165 | 2014-08-26,101.41999799999999,101.5,100.860001,100.889999,33152000.0,99.643302 166 | 2014-08-27,101.019997,102.57,100.699997,102.129997,52369000.0,100.867977 167 | 2014-08-28,101.589996,102.779999,101.559998,102.25,68460000.0,100.986497 168 | 2014-08-29,102.860001,102.900002,102.199997,102.5,44595000.0,101.233408 169 | 2014-09-02,103.059998,103.739998,102.720001,103.300003,53564000.0,102.023525 170 | 2014-09-03,103.099998,103.199997,98.58000200000001,98.940002,125421000.0,97.717401 171 | 2014-09-04,98.849998,100.089996,97.790001,98.120003,85718000.0,96.907534 172 | 2014-09-05,98.800003,99.389999,98.309998,98.970001,58457000.0,97.747029 173 | 2014-09-08,99.300003,99.309998,98.050003,98.360001,46356700.0,97.144566 174 | 2014-09-09,99.08000200000001,103.08000200000001,96.139999,97.989998,189846300.0,96.779136 175 | 2014-09-10,98.010002,101.110001,97.760002,101.0,100869600.0,99.75194300000001 176 | 2014-09-11,100.410004,101.440002,99.620003,101.43,62353100.0,100.17663 177 | 2014-09-12,101.209999,102.190002,101.08000200000001,101.660004,64096900.0,100.403791 178 | 2014-09-15,102.809998,103.050003,101.440002,101.629997,61316500.0,100.374156 179 | 2014-09-16,99.800003,101.260002,98.889999,100.860001,66908100.0,99.613674 180 | 2014-09-17,101.269997,101.800003,100.589996,101.58000200000001,60926500.0,100.32477800000001 181 | 2014-09-18,101.93,102.349998,101.559998,101.790001,37299400.0,100.53218199999999 182 | 2014-09-19,102.290001,102.349998,100.5,100.959999,70902400.0,99.712437 183 | 2014-09-22,101.800003,102.139999,100.58000200000001,101.059998,52788400.0,99.8112 184 | 2014-09-23,100.599998,102.940002,100.540001,102.639999,63402200.0,101.371677 185 | 2014-09-24,102.160004,102.849998,101.199997,101.75,60171800.0,100.492676 186 | 2014-09-25,100.510002,100.709999,97.720001,97.870003,100092000.0,96.660623 187 | 2014-09-26,98.529999,100.75,98.400002,100.75,62370500.0,99.505033 188 | 2014-09-29,98.650002,100.440002,98.629997,100.110001,49766300.0,98.87294200000001 189 | 2014-09-30,100.809998,101.540001,100.529999,100.75,55264100.0,99.505033 190 | 2014-10-01,100.589996,100.690002,98.699997,99.18,51491300.0,97.954433 191 | 2014-10-02,99.269997,100.220001,98.040001,99.900002,47757800.0,98.665538 192 | 2014-10-03,99.440002,100.209999,99.040001,99.620003,43469600.0,98.388999 193 | 2014-10-06,99.949997,100.650002,99.41999799999999,99.620003,37051200.0,98.388999 194 | 2014-10-07,99.43,100.120003,98.730003,98.75,42094200.0,97.529747 195 | 2014-10-08,98.760002,101.110001,98.309998,100.800003,57404700.0,99.554418 196 | 2014-10-09,101.540001,102.379997,100.610001,101.019997,77376500.0,99.771693 197 | 2014-10-10,100.690002,102.029999,100.300003,100.730003,66331600.0,99.485283 198 | 2014-10-13,101.33000200000001,101.779999,99.809998,99.809998,53583400.0,98.576646 199 | 2014-10-14,100.389999,100.519997,98.57,98.75,63688600.0,97.529747 200 | 2014-10-15,97.970001,99.150002,95.18,97.540001,100933600.0,96.334699 201 | 2014-10-16,95.550003,97.720001,95.410004,96.260002,72154500.0,95.070518 202 | 2014-10-17,97.5,99.0,96.809998,97.66999799999999,68179700.0,96.46309000000001 203 | 2014-10-20,98.32,99.959999,98.220001,99.760002,77517300.0,98.527268 204 | 2014-10-21,103.019997,103.019997,101.269997,102.470001,94623900.0,101.20378000000001 205 | 2014-10-22,102.839996,104.110001,102.599998,102.989998,68263100.0,101.71735100000001 206 | 2014-10-23,104.08000200000001,105.050003,103.629997,104.83000200000001,71074700.0,103.53461800000001 207 | 2014-10-24,105.18,105.489998,104.529999,105.220001,47053900.0,103.919798 208 | 2014-10-27,104.849998,105.480003,104.699997,105.110001,34187700.0,103.811157 209 | 2014-10-28,105.400002,106.739998,105.349998,106.739998,47939900.0,105.421012 210 | 2014-10-29,106.650002,107.370003,106.360001,107.339996,52687900.0,106.01359599999999 211 | 2014-10-30,106.959999,107.349998,105.900002,106.980003,40654800.0,105.658052 212 | 2014-10-31,108.010002,108.040001,107.209999,108.0,44639300.0,106.665444 213 | 2014-11-03,108.220001,110.300003,108.010002,109.400002,52282600.0,108.048146 214 | 2014-11-04,109.360001,109.489998,107.720001,108.599998,41574400.0,107.25802900000001 215 | 2014-11-05,109.099998,109.300003,108.129997,108.860001,37435900.0,107.51481799999999 216 | 2014-11-06,108.599998,108.790001,107.800003,108.699997,34968500.0,107.822309 217 | 2014-11-07,108.75,109.32,108.550003,109.010002,33691500.0,108.129811 218 | 2014-11-10,109.019997,109.33000200000001,108.66999799999999,108.83000200000001,27195500.0,107.95126499999999 219 | 2014-11-11,108.699997,109.75,108.400002,109.699997,27442300.0,108.81423500000001 220 | 2014-11-12,109.379997,111.43,109.370003,111.25,46942400.0,110.35172299999999 221 | 2014-11-13,111.800003,113.449997,111.599998,112.82,59522900.0,111.90904599999999 222 | 2014-11-14,113.150002,114.190002,113.050003,114.18,44063600.0,113.25806499999999 223 | 2014-11-17,114.269997,117.279999,113.300003,113.989998,46746700.0,113.069597 224 | 2014-11-18,113.940002,115.690002,113.889999,115.470001,44224000.0,114.53765 225 | 2014-11-19,115.440002,115.739998,113.800003,114.66999799999999,41869200.0,113.744106 226 | 2014-11-20,114.910004,116.860001,114.849998,116.309998,43395500.0,115.37086399999998 227 | 2014-11-21,117.510002,117.57,116.029999,116.470001,57179300.0,115.529576 228 | 2014-11-24,116.849998,118.769997,116.620003,118.629997,47450800.0,117.67213100000001 229 | 2014-11-25,119.07,119.75,117.449997,117.599998,68840400.0,116.650449 230 | 2014-11-26,117.940002,119.099998,117.83000200000001,119.0,40768300.0,118.039146 231 | 2014-11-28,119.269997,119.400002,118.050003,118.93,24814400.0,117.96971200000002 232 | 2014-12-01,118.809998,119.25,111.269997,115.07,83814000.0,114.140878 233 | -------------------------------------------------------------------------------- /data/GOOGL_20140101_20141201.csv: -------------------------------------------------------------------------------- 1 | Date,Open,High,Low,Close,Volume,Adj Close 2 | 2014-01-02,1115.4599759999999,1117.750042,1108.2600300000001,1113.120033,3639100.0,557.117134 3 | 2014-01-03,1114.999987,1116.930062,1104.929989,1104.999987,3330000.0,553.053047 4 | 2014-01-06,1113.010036,1118.860015,1106.439952,1117.320052,3535000.0,559.219245 5 | 2014-01-07,1124.999987,1139.6899939999998,1121.159959,1138.860015,5100000.0,570.000007 6 | 2014-01-08,1145.9999619999999,1147.320052,1133.290029,1141.230079,4480500.0,571.186226 7 | 2014-01-09,1143.440025,1144.220006,1125.5599730000001,1130.239981,4164800.0,565.685676 8 | 2014-01-10,1139.080009,1139.080009,1122.2500539999999,1130.179983,4282700.0,565.6556469999999 9 | 2014-01-13,1126.470073,1146.910062,1117.1700560000002,1122.980036,4832900.0,562.0520700000001 10 | 2014-01-14,1137.9500369999998,1150.9999619999999,1128.090034,1149.400001,4960200.0,575.275276 11 | 2014-01-15,1152.990036,1154.999987,1143.790016,1148.6200199999998,3896400.0,574.884895 12 | 2014-01-16,1149.100009,1157.9300369999999,1148.000036,1156.219957,3364400.0,578.688667 13 | 2014-01-17,1156.850063,1160.629971,1144.200006,1150.529974,5397100.0,575.840828 14 | 2014-01-21,1160.9299640000002,1164.0000109999999,1151.3000769999999,1163.700018,3955800.0,582.432442 15 | 2014-01-22,1166.6100689999998,1167.890038,1158.860014,1165.019986,3139600.0,583.0930860000001 16 | 2014-01-23,1159.999987,1162.4900480000001,1154.3700019999999,1160.099984,3894300.0,580.630623 17 | 2014-01-24,1151.0099619999999,1153.5500220000001,1123.000036,1123.8300160000001,7777200.0,562.477485 18 | 2014-01-27,1126.09996,1126.49995,1082.2700539999998,1101.230079,8698400.0,551.166206 19 | 2014-01-28,1110.3199789999999,1125.749969,1109.939989,1123.010036,4415900.0,562.0670849999999 20 | 2014-01-29,1119.120009,1121.750066,1099.420001,1106.920062,4755000.0,554.014045 21 | 2014-01-30,1144.999987,1152.4900480000001,1127.2500539999999,1135.389977,10172600.0,568.263252 22 | 2014-01-31,1171.3499539999998,1186.539949,1151.1299589999999,1180.969963,11121400.0,591.076057 23 | 2014-02-03,1179.200006,1181.720066,1132.01006,1133.430025,9129000.0,567.282295 24 | 2014-02-04,1137.990036,1154.999987,1137.01006,1138.160032,5618100.0,569.649666 25 | 2014-02-05,1143.380026,1150.769968,1128.020035,1143.200031,4784200.0,572.172188 26 | 2014-02-06,1151.1299589999999,1160.159983,1147.5500470000002,1159.959988,3889300.0,580.560554 27 | 2014-02-07,1167.630044,1177.900038,1160.5599730000001,1177.440049,5267100.0,589.309334 28 | 2014-02-10,1171.8000650000001,1182.40005,1169.02001,1172.9300369999999,3886500.0,587.052071 29 | 2014-02-11,1180.1699820000001,1191.870063,1172.210055,1190.179982,4097400.0,595.6856769999999 30 | 2014-02-12,1189.0000109999999,1189.999986,1181.379953,1186.690067,3445500.0,593.9389719999999 31 | 2014-02-13,1180.749968,1199.899989,1179.659995,1199.899989,3669100.0,600.550545 32 | 2014-02-14,1195.609971,1204.390001,1192.80004,1202.80004,4369000.0,602.002022 33 | 2014-02-18,1201.4100740000001,1212.870038,1199.999986,1210.879965,4213500.0,606.046028 34 | 2014-02-19,1205.299979,1209.2200050000001,1197.500047,1202.340051,4202900.0,601.771797 35 | 2014-02-20,1203.1400310000001,1206.890062,1200.219981,1204.110008,3398100.0,602.657662 36 | 2014-02-21,1207.810039,1209.869989,1202.8400390000002,1203.790016,3720800.0,602.4975049999999 37 | 2014-02-24,1205.3599769999998,1220.1599820000001,1205.099984,1212.510047,3345200.0,606.8618849999999 38 | 2014-02-25,1215.939963,1224.499998,1210.419976,1219.999986,2874500.0,610.610604 39 | 2014-02-26,1224.00001,1228.8800130000002,1213.760016,1220.1699820000001,3960400.0,610.695687 40 | 2014-02-27,1218.390025,1224.2300050000001,1217.010059,1219.2100050000001,2517400.0,610.2152179999999 41 | 2014-02-28,1220.339978,1224.190006,1206.2199560000001,1215.64997,4622500.0,608.433418 42 | 2014-03-03,1206.750065,1207.8400390000002,1192.140056,1202.690042,4205300.0,601.946968 43 | 2014-03-04,1214.999986,1215.9999619999999,1209.499998,1214.909988,2932400.0,608.0630570000001 44 | 2014-03-05,1215.0499849999999,1223.080033,1211.4100740000001,1218.260028,2468100.0,609.739754 45 | 2014-03-06,1222.280052,1226.149958,1218.6000199999999,1219.609995,2533600.0,610.415413 46 | 2014-03-07,1226.800064,1226.990059,1211.440073,1214.789991,3027100.0,608.002999 47 | 2014-03-10,1215.689969,1217.640044,1204.090008,1211.57007,2426700.0,606.391426 48 | 2014-03-11,1213.770016,1214.320003,1196.640068,1199.989986,3422500.0,600.595589 49 | 2014-03-12,1196.4000740000001,1207.8500390000002,1184.190006,1207.300052,3924600.0,604.25428 50 | 2014-03-13,1207.950036,1210.499974,1184.759992,1189.060009,4686500.0,595.12513 51 | 2014-03-14,1181.9900599999999,1190.869965,1172.530047,1172.80004,4583200.0,586.9870070000001 52 | 2014-03-17,1179.250005,1197.070058,1178.110033,1192.100057,4319800.0,596.646675 53 | 2014-03-18,1194.6699939999999,1211.5300710000001,1193.060034,1211.260077,3626300.0,606.236275 54 | 2014-03-19,1211.800064,1211.990059,1194.410001,1199.250004,3222500.0,600.2252269999999 55 | 2014-03-20,1199.949987,1209.6099960000001,1195.3599769999998,1197.160055,3366000.0,599.179207 56 | 2014-03-21,1206.310076,1209.629995,1182.450049,1183.0400339999999,6410500.0,592.112129 57 | 2014-03-24,1184.190006,1184.899989,1145.9499640000001,1157.9300369999999,6068100.0,579.544563 58 | 2014-03-25,1165.9999619999999,1169.83999,1147.00006,1158.720018,4815500.0,579.9399490000001 59 | 2014-03-26,1162.01006,1171.57007,1131.500072,1131.970061,5154800.0,566.551582 60 | 2014-03-27,1130.849966,1131.940062,1102.100058,1114.280005,7636700.0,557.6977 61 | 2014-03-28,1119.0000109999999,1133.190031,1117.770042,1120.149983,4513200.0,560.635627 62 | 2014-03-31,1130.399977,1134.999987,1112.85004,1114.509999,3880700.0,557.812812 63 | 2014-04-01,1120.2699810000001,1137.500048,1118.000036,1134.8899900000001,2181000.0,568.013008 64 | 2014-04-02,1141.900062,1144.799992,1124.0000109999999,1135.099984,4168000.0,568.11811 65 | 2014-04-03,573.3900150000001,588.299988,566.01001,571.5,4018300.0,571.5 66 | 2014-04-04,578.549988,579.719971,544.48999,545.25,5363700.0,545.25 67 | 2014-04-07,544.789978,549.849976,530.530029,540.630005,3961600.0,540.630005 68 | 2014-04-08,545.049988,559.880005,544.700012,557.51001,3482500.0,557.51001 69 | 2014-04-09,565.840027,567.799988,555.380005,567.039978,3031600.0,567.039978 70 | 2014-04-10,568.0,568.210022,545.5,546.6900019999999,3294500.0,546.6900019999999 71 | 2014-04-11,537.9400019999999,547.590027,533.400024,537.76001,3174700.0,537.76001 72 | 2014-04-14,543.659973,553.02002,540.52002,545.200012,2541200.0,545.200012 73 | 2014-04-15,551.0,552.8900150000001,530.6400150000001,548.700012,3997800.0,548.700012 74 | 2014-04-16,557.700012,564.0,553.099976,563.900024,4582200.0,563.900024 75 | 2014-04-17,556.320007,557.0,539.400024,543.340027,5614700.0,543.340027 76 | 2014-04-21,544.0,544.0,534.0,539.369995,2425100.0,539.369995 77 | 2014-04-22,536.0,548.0,536.0,545.5,2331100.0,545.5 78 | 2014-04-23,543.669983,544.799988,528.130005,537.51001,1955700.0,537.51001 79 | 2014-04-24,541.6900019999999,542.5,531.0,534.4400019999999,2067400.0,534.4400019999999 80 | 2014-04-25,532.26001,533.8599849999999,522.5,523.099976,2370000.0,523.099976 81 | 2014-04-28,525.799988,525.900024,511.0,522.97998,3752800.0,522.97998 82 | 2014-04-29,523.8900150000001,537.76001,523.0,536.330017,2535200.0,536.330017 83 | 2014-04-30,535.119995,536.340027,529.090027,534.880005,2038500.0,534.880005 84 | 2014-05-01,534.25,539.909973,532.8599849999999,538.530029,2004300.0,538.530029 85 | 2014-05-02,541.4400019999999,542.400024,533.27002,533.869995,1780800.0,533.869995 86 | 2014-05-05,530.23999,535.719971,527.580017,535.330017,1228400.0,535.330017 87 | 2014-05-06,533.409973,534.549988,522.26001,522.570007,1835000.0,522.570007 88 | 2014-05-07,523.25,524.429993,511.089996,518.0,3074300.0,518.0 89 | 2014-05-08,515.719971,527.349976,514.460022,520.169983,2452000.0,520.169983 90 | 2014-05-09,518.650024,527.349976,514.280029,526.619995,2261200.0,526.619995 91 | 2014-05-12,531.840027,538.75,527.51001,538.429993,1948400.0,538.429993 92 | 2014-05-13,539.580017,543.98999,537.900024,541.539978,2012000.0,541.539978 93 | 2014-05-14,541.820007,541.820007,533.1099849999999,534.409973,1280900.0,534.409973 94 | 2014-05-15,533.1400150000001,534.0,525.3099980000001,529.119995,1832900.0,529.119995 95 | 2014-05-16,529.599976,530.840027,523.570007,528.299988,1907700.0,528.299988 96 | 2014-05-19,528.880005,539.349976,525.659973,538.830017,1976500.0,538.830017 97 | 2014-05-20,540.0,546.349976,536.570007,540.3900150000001,2425300.0,540.3900150000001 98 | 2014-05-21,542.900024,549.75,542.1099849999999,549.700012,1564700.0,549.700012 99 | 2014-05-22,552.200012,557.960022,551.0,555.450012,2149700.0,555.450012 100 | 2014-05-23,558.130005,565.0,554.169983,563.799988,2672500.0,563.799988 101 | 2014-05-27,567.780029,574.869995,564.150024,574.869995,2185800.0,574.869995 102 | 2014-05-28,574.570007,577.659973,569.950012,570.450012,1581600.0,570.450012 103 | 2014-05-29,573.3900150000001,573.47998,568.450012,570.5599980000001,1411100.0,570.5599980000001 104 | 2014-05-30,571.6400150000001,572.580017,565.789978,571.650024,1871700.0,571.650024 105 | 2014-06-02,569.75,570.409973,556.700012,564.340027,1660500.0,564.340027 106 | 2014-06-03,560.900024,562.400024,552.530029,554.51001,2031300.0,554.51001 107 | 2014-06-04,551.52002,558.580017,548.5599980000001,553.76001,1729100.0,553.76001 108 | 2014-06-05,557.1099849999999,565.0,555.049988,564.929993,1793400.0,564.929993 109 | 2014-06-06,568.159973,568.799988,559.580017,566.030029,1740200.0,566.030029 110 | 2014-06-09,566.75,572.0,565.219971,570.72998,1529700.0,570.72998 111 | 2014-06-10,568.780029,572.0,566.130005,568.299988,1483800.0,568.299988 112 | 2014-06-11,565.919983,568.969971,563.679993,567.5,1129000.0,567.5 113 | 2014-06-12,567.0,567.0,557.150024,559.5,1546500.0,559.5 114 | 2014-06-13,560.080017,560.650024,553.719971,560.349976,1353300.0,560.349976 115 | 2014-06-16,557.25,557.98999,550.0,552.299988,1971800.0,552.299988 116 | 2014-06-17,552.3599849999999,553.73999,547.469971,550.619995,1477600.0,550.619995 117 | 2014-06-18,552.799988,561.400024,551.580017,560.659973,2060600.0,560.659973 118 | 2014-06-19,561.150024,565.0,556.669983,564.98999,2627400.0,564.98999 119 | 2014-06-20,566.450012,566.77002,559.369995,566.52002,3160600.0,566.52002 120 | 2014-06-23,564.349976,574.4400019999999,563.5,574.289978,1722800.0,574.289978 121 | 2014-06-24,574.219971,582.25,569.159973,572.539978,2844300.0,572.539978 122 | 2014-06-25,573.549988,587.299988,573.26001,585.929993,2114700.0,585.929993 123 | 2014-06-26,589.299988,589.599976,579.599976,584.77002,2012400.0,584.77002 124 | 2014-06-27,585.450012,587.880005,582.619995,585.6900019999999,2021300.0,585.6900019999999 125 | 2014-06-30,586.76001,587.710022,583.289978,584.669983,1478900.0,584.669983 126 | 2014-07-01,587.650024,593.659973,586.289978,591.48999,1643200.0,591.48999 127 | 2014-07-02,592.26001,594.150024,589.1099849999999,590.780029,1195800.0,590.780029 128 | 2014-07-03,591.700012,594.25,589.0,593.080017,898900.0,593.080017 129 | 2014-07-07,593.51001,595.650024,587.9400019999999,590.76001,1336700.0,590.76001 130 | 2014-07-08,586.369995,587.969971,574.0,578.400024,2125200.0,578.400024 131 | 2014-07-09,578.950012,584.099976,577.0,583.3599849999999,1372800.0,583.3599849999999 132 | 2014-07-10,573.0,585.25,572.099976,580.039978,1436200.0,580.039978 133 | 2014-07-11,581.0,588.22998,580.580017,586.650024,1511600.0,586.650024 134 | 2014-07-14,590.599976,594.8599849999999,586.6900019999999,594.26001,1951600.0,594.26001 135 | 2014-07-15,595.150024,595.299988,585.3099980000001,593.0599980000001,1673800.0,593.0599980000001 136 | 2014-07-16,596.8900150000001,597.0,590.25,590.619995,1440800.0,590.619995 137 | 2014-07-17,588.969971,589.5,576.849976,580.820007,2935300.0,580.820007 138 | 2014-07-18,603.01001,606.700012,590.919983,605.1099849999999,4871600.0,605.1099849999999 139 | 2014-07-21,601.349976,604.159973,594.450012,598.4400019999999,2237900.0,598.4400019999999 140 | 2014-07-22,599.700012,608.8900150000001,599.26001,603.570007,1881600.0,603.570007 141 | 2014-07-23,602.049988,607.049988,601.349976,605.1900019999999,1106000.0,605.1900019999999 142 | 2014-07-24,605.530029,608.909973,601.0,603.01001,1355000.0,603.01001 143 | 2014-07-25,599.25,601.0,595.75,598.080017,1360000.0,598.080017 144 | 2014-07-28,597.75,601.099976,592.590027,599.02002,1358100.0,599.02002 145 | 2014-07-29,597.700012,598.48999,592.169983,593.950012,1366600.0,593.950012 146 | 2014-07-30,595.8099980000001,598.450012,592.700012,595.4400019999999,1215100.0,595.4400019999999 147 | 2014-07-31,588.960022,591.98999,577.679993,579.549988,2309500.0,579.549988 148 | 2014-08-01,578.549988,583.429993,570.299988,573.599976,2213300.0,573.599976 149 | 2014-08-04,576.51001,583.820007,572.26001,582.27002,1519400.0,582.27002 150 | 2014-08-05,579.380005,580.200012,570.3099980000001,573.1400150000001,1643800.0,573.1400150000001 151 | 2014-08-06,569.5,578.6400150000001,567.450012,574.48999,1322800.0,574.48999 152 | 2014-08-07,576.049988,578.3099980000001,569.429993,571.8099980000001,1163000.0,571.8099980000001 153 | 2014-08-08,572.02002,579.5599980000001,569.02002,577.9400019999999,1493300.0,577.9400019999999 154 | 2014-08-11,579.0,579.6900019999999,575.299988,577.25,1203400.0,577.25 155 | 2014-08-12,575.0,575.900024,569.909973,572.119995,1394500.0,572.119995 156 | 2014-08-13,576.450012,586.130005,575.200012,584.5599980000001,1903300.0,584.5599980000001 157 | 2014-08-14,586.6900019999999,587.799988,580.919983,584.650024,1272900.0,584.650024 158 | 2014-08-15,587.5,589.469971,580.76001,583.710022,1723400.0,583.710022 159 | 2014-08-18,587.099976,595.049988,586.549988,592.700012,1466000.0,592.700012 160 | 2014-08-19,595.590027,597.8099980000001,594.4400019999999,597.1099849999999,1043200.0,597.1099849999999 161 | 2014-08-20,596.950012,596.98999,593.0,595.409973,967300.0,595.409973 162 | 2014-08-21,594.900024,595.25,591.099976,592.419983,1132000.0,592.419983 163 | 2014-08-22,593.27002,594.98999,589.799988,592.539978,877200.0,592.539978 164 | 2014-08-25,594.77002,595.580017,589.26001,590.570007,1295600.0,590.570007 165 | 2014-08-26,592.0,592.049988,587.450012,588.119995,1471700.0,588.119995 166 | 2014-08-27,587.8099980000001,589.369995,580.900024,583.0,1364600.0,583.0 167 | 2014-08-28,580.02002,584.710022,577.880005,580.320007,1405800.0,580.320007 168 | 2014-08-29,582.349976,582.900024,578.23999,582.3599849999999,1206100.0,582.3599849999999 169 | 2014-09-02,582.950012,589.299988,582.400024,588.630005,1583000.0,588.630005 170 | 2014-09-03,591.72998,594.48999,586.5,589.52002,1579000.0,589.52002 171 | 2014-09-04,592.130005,598.0,590.599976,593.1400150000001,1630800.0,593.1400150000001 172 | 2014-09-05,595.130005,598.5,593.549988,597.780029,1799100.0,597.780029 173 | 2014-09-08,599.1400150000001,603.52002,598.02002,601.630005,1599200.0,601.630005 174 | 2014-09-09,600.27002,600.599976,590.47998,591.969971,1571200.0,591.969971 175 | 2014-09-10,591.73999,593.719971,587.1400150000001,593.419983,1160100.0,593.419983 176 | 2014-09-11,590.0,591.950012,586.039978,591.1099849999999,1501400.0,591.1099849999999 177 | 2014-09-12,590.3900150000001,591.47998,583.280029,584.900024,1851500.0,584.900024 178 | 2014-09-15,582.23999,583.919983,577.01001,581.6400150000001,1545400.0,581.6400150000001 179 | 2014-09-16,580.950012,590.150024,580.950012,588.780029,1579600.0,588.780029 180 | 2014-09-17,589.51001,596.070007,587.119995,593.289978,1719500.0,593.289978 181 | 2014-09-18,595.049988,597.5599980000001,593.02002,597.27002,1494500.0,597.27002 182 | 2014-09-19,599.48999,605.400024,597.76001,605.400024,4191600.0,605.400024 183 | 2014-09-22,602.5,603.799988,593.119995,597.27002,1782200.0,597.27002 184 | 2014-09-23,595.0,596.650024,590.23999,591.179993,1403700.0,591.179993 185 | 2014-09-24,591.570007,600.1099849999999,590.299988,598.419983,1758000.0,598.419983 186 | 2014-09-25,596.98999,598.070007,584.73999,585.25,1671000.0,585.25 187 | 2014-09-26,585.929993,589.570007,585.0,587.900024,1289100.0,587.900024 188 | 2014-09-29,581.830017,589.3099980000001,581.570007,587.8099980000001,1143700.0,587.8099980000001 189 | 2014-09-30,587.48999,591.0,584.5,588.409973,1571500.0,588.409973 190 | 2014-10-01,586.799988,588.719971,578.02002,579.630005,1447700.0,579.630005 191 | 2014-10-02,578.0,583.23999,574.049988,580.880005,1536300.0,580.880005 192 | 2014-10-03,584.099976,588.289978,583.5,586.25,1214500.0,586.25 193 | 2014-10-06,589.950012,592.400024,585.400024,587.780029,1286100.0,587.780029 194 | 2014-10-07,584.900024,585.849976,574.099976,574.099976,1545700.0,574.099976 195 | 2014-10-08,574.789978,584.6900019999999,567.6400150000001,583.73999,2207900.0,583.73999 196 | 2014-10-09,581.6099849999999,582.530029,569.030029,570.8099980000001,2411700.0,570.8099980000001 197 | 2014-10-10,567.469971,575.22998,555.01001,555.1900019999999,2978700.0,555.1900019999999 198 | 2014-10-13,555.130005,560.880005,544.429993,544.75,2755800.0,544.75 199 | 2014-10-14,550.1400150000001,558.630005,544.5,548.6900019999999,2609900.0,548.6900019999999 200 | 2014-10-15,542.080017,543.919983,528.419983,540.72998,3836000.0,540.72998 201 | 2014-10-16,527.0,540.98999,524.950012,536.919983,3805000.0,536.919983 202 | 2014-10-17,540.450012,543.450012,518.409973,522.969971,5996500.0,522.969971 203 | 2014-10-20,520.450012,533.159973,519.1400150000001,532.380005,2748200.0,532.380005 204 | 2014-10-21,537.27002,538.77002,530.200012,538.030029,2459500.0,538.030029 205 | 2014-10-22,541.049988,550.76001,540.22998,542.6900019999999,2973700.0,542.6900019999999 206 | 2014-10-23,548.280029,557.400024,545.5,553.650024,2151300.0,553.650024 207 | 2014-10-24,554.97998,555.0,545.159973,548.900024,2175400.0,548.900024 208 | 2014-10-27,547.76001,554.0,547.200012,549.880005,1596700.0,549.880005 209 | 2014-10-28,551.710022,559.200012,550.429993,558.9400019999999,1738700.0,558.9400019999999 210 | 2014-10-29,560.849976,564.969971,555.97998,558.450012,2053300.0,558.450012 211 | 2014-10-30,558.25,562.5,552.130005,560.27002,1611200.0,560.27002 212 | 2014-10-31,568.299988,568.72998,564.8099980000001,567.869995,2340500.0,567.869995 213 | 2014-11-03,563.530029,567.150024,561.630005,563.77002,1541700.0,563.77002 214 | 2014-11-04,561.159973,564.789978,558.299988,564.1900019999999,1386300.0,564.1900019999999 215 | 2014-11-05,566.789978,566.900024,554.150024,555.950012,1645300.0,555.950012 216 | 2014-11-06,555.5,556.799988,550.580017,551.6900019999999,1650700.0,551.6900019999999 217 | 2014-11-07,555.599976,555.599976,549.349976,551.820007,1589100.0,551.820007 218 | 2014-11-10,552.400024,560.630005,551.619995,558.22998,1304500.0,558.22998 219 | 2014-11-11,558.52002,562.5,556.23999,561.289978,1098300.0,561.289978 220 | 2014-11-12,561.150024,561.25,555.5,558.25,1094000.0,558.25 221 | 2014-11-13,560.8099980000001,560.820007,554.090027,556.4400019999999,1510200.0,556.4400019999999 222 | 2014-11-14,558.0,558.0,552.51001,555.1900019999999,1424900.0,555.1900019999999 223 | 2014-11-17,555.1900019999999,555.1900019999999,544.4400019999999,546.6400150000001,1680500.0,546.6400150000001 224 | 2014-11-18,547.929993,552.789978,543.799988,544.51001,1822000.0,544.51001 225 | 2014-11-19,544.75,548.219971,539.1900019999999,547.200012,1517100.0,547.200012 226 | 2014-11-20,542.090027,545.380005,541.5,543.76001,1750400.0,543.76001 227 | 2014-11-21,551.039978,551.039978,545.0,545.8900150000001,2506000.0,545.8900150000001 228 | 2014-11-24,546.570007,551.1900019999999,544.150024,547.47998,1653800.0,547.47998 229 | 2014-11-25,547.210022,552.5,546.909973,549.22998,1903600.0,549.22998 230 | 2014-11-26,549.22998,549.880005,545.22998,547.72998,1480200.0,547.72998 231 | 2014-11-28,547.0,549.599976,544.47998,549.080017,1210100.0,549.080017 232 | 2014-12-01,545.090027,548.789978,538.619995,539.650024,1994400.0,539.650024 233 | -------------------------------------------------------------------------------- /data/IBM_20140101_20141201.csv: -------------------------------------------------------------------------------- 1 | Date,Open,High,Low,Close,Volume,Adj Close 2 | 2014-01-02,187.21000700000002,187.399994,185.199997,185.529999,4546500.0,178.519329 3 | 2014-01-03,185.830002,187.350006,185.300003,186.639999,4063200.0,179.587385 4 | 2014-01-06,187.149994,187.360001,185.300003,186.0,4067800.0,178.97156999999999 5 | 2014-01-07,186.389999,190.350006,186.380005,189.71000700000002,5932300.0,182.54138600000002 6 | 2014-01-08,189.330002,189.419998,187.259995,187.970001,4603700.0,180.86713 7 | 2014-01-09,189.020004,189.5,186.550003,187.380005,4321300.0,180.299428 8 | 2014-01-10,188.309998,188.570007,186.279999,187.259995,4022400.0,180.183953 9 | 2014-01-13,186.259995,186.949997,183.860001,184.16000400000001,5784700.0,177.201102 10 | 2014-01-14,185.059998,186.429993,183.880005,185.919998,4619200.0,178.894591 11 | 2014-01-15,185.820007,188.649994,185.490005,187.740005,4816500.0,180.645825 12 | 2014-01-16,187.529999,188.990005,186.800003,188.759995,4770300.0,181.627272 13 | 2014-01-17,188.03999299999998,190.809998,187.860001,190.08999599999999,7644600.0,182.907016 14 | 2014-01-21,190.229996,190.389999,186.78999299999998,188.429993,11076300.0,181.30973999999998 15 | 2014-01-22,181.279999,183.5,179.669998,182.25,13796100.0,175.363272 16 | 2014-01-23,181.429993,183.720001,180.71000700000002,182.729996,6973900.0,175.82513 17 | 2014-01-24,181.25,182.809998,179.639999,179.639999,6890600.0,172.85189599999998 18 | 2014-01-27,179.610001,179.649994,177.66000400000001,177.899994,5208600.0,171.177641 19 | 2014-01-28,178.050003,178.449997,176.16000400000001,176.850006,5333300.0,170.167329 20 | 2014-01-29,175.979996,178.529999,175.889999,176.399994,4970900.0,169.734322 21 | 2014-01-30,177.169998,177.860001,176.360001,177.360001,4853700.0,170.658052 22 | 2014-01-31,176.110001,177.83999599999999,175.33999599999999,176.679993,5193400.0,170.00374 23 | 2014-02-03,176.020004,176.020004,172.720001,172.899994,7186800.0,166.366577 24 | 2014-02-04,173.529999,173.75,172.360001,172.83999599999999,4349800.0,166.308847 25 | 2014-02-05,172.190002,174.970001,172.190002,174.240005,4712300.0,167.655953 26 | 2014-02-06,173.970001,174.850006,173.78999299999998,174.669998,4292200.0,168.991084 27 | 2014-02-07,175.639999,177.559998,175.070007,177.25,4692900.0,171.487204 28 | 2014-02-10,176.970001,177.649994,176.25,177.139999,3540400.0,171.38078000000002 29 | 2014-02-11,176.809998,180.389999,176.800003,179.699997,4647300.0,173.85754599999999 30 | 2014-02-12,179.520004,181.25,179.259995,180.240005,3983000.0,174.379998 31 | 2014-02-13,178.220001,182.360001,177.860001,181.83999599999999,4482000.0,175.927969 32 | 2014-02-14,181.259995,184.429993,180.990005,183.690002,4659900.0,177.717828 33 | 2014-02-18,183.179993,184.0,182.320007,183.190002,4435200.0,177.234084 34 | 2014-02-19,182.740005,185.649994,182.41000400000001,182.949997,4671500.0,177.001881 35 | 2014-02-20,182.96000700000002,184.860001,182.78999299999998,184.259995,4968200.0,178.269288 36 | 2014-02-21,184.25,185.71000700000002,182.619995,182.78999299999998,5699300.0,176.84708 37 | 2014-02-24,182.820007,185.16000400000001,182.820007,183.449997,4595300.0,177.485625 38 | 2014-02-25,183.520004,184.600006,182.880005,183.229996,3902300.0,177.272777 39 | 2014-02-26,183.940002,185.279999,183.559998,184.059998,3740700.0,178.075793 40 | 2014-02-27,183.830002,185.949997,183.809998,185.270004,3827800.0,179.24646 41 | 2014-02-28,185.380005,186.119995,183.649994,185.169998,4667900.0,179.149705 42 | 2014-03-03,183.330002,184.639999,182.820007,184.259995,3950100.0,178.269288 43 | 2014-03-04,185.809998,187.16000400000001,185.679993,186.440002,4733000.0,180.378419 44 | 2014-03-05,186.570007,187.949997,186.399994,187.139999,3485200.0,181.055657 45 | 2014-03-06,187.369995,188.389999,186.899994,187.639999,3817300.0,181.539401 46 | 2014-03-07,188.350006,188.919998,187.179993,187.679993,4117800.0,181.578094 47 | 2014-03-10,187.550003,188.369995,185.850006,186.389999,4591200.0,180.330042 48 | 2014-03-11,187.41000400000001,188.449997,186.03999299999998,186.759995,4229500.0,180.688007 49 | 2014-03-12,186.009995,187.449997,185.889999,186.220001,4833000.0,180.16557 50 | 2014-03-13,186.41000400000001,187.0,183.71000700000002,183.899994,4913200.0,177.92099199999998 51 | 2014-03-14,183.889999,184.28999299999998,182.21000700000002,182.21000700000002,5490300.0,176.28595 52 | 2014-03-17,182.66000400000001,186.350006,182.66000400000001,185.809998,4938100.0,179.768897 53 | 2014-03-18,185.990005,187.899994,185.53999299999998,186.809998,3961300.0,180.736385 54 | 2014-03-19,185.600006,186.699997,183.5,184.71000700000002,4323900.0,178.704669 55 | 2014-03-20,184.470001,188.259995,184.169998,187.899994,5062600.0,181.790943 56 | 2014-03-21,188.5,188.699997,186.399994,186.669998,12535200.0,180.60093700000002 57 | 2014-03-24,187.429993,189.440002,187.369995,188.25,5738500.0,182.129569 58 | 2014-03-25,188.759995,195.399994,188.699997,195.03999299999998,10912700.0,188.698805 59 | 2014-03-26,194.979996,195.630005,191.96000700000002,192.619995,6851700.0,186.35748600000002 60 | 2014-03-27,191.91000400000001,192.669998,189.320007,189.830002,6767700.0,183.658202 61 | 2014-03-28,189.940002,192.619995,189.110001,190.449997,5194400.0,184.258039 62 | 2014-03-31,191.639999,193.770004,191.399994,192.490005,8537300.0,186.231723 63 | 2014-04-01,193.119995,195.130005,192.779999,194.5,5394100.0,188.176368 64 | 2014-04-02,194.240005,194.5,192.490005,193.550003,4924100.0,187.257257 65 | 2014-04-03,193.199997,193.380005,192.350006,192.690002,4091100.0,186.425217 66 | 2014-04-04,193.119995,193.970001,191.279999,191.770004,6089900.0,185.53513 67 | 2014-04-07,191.720001,195.309998,191.570007,194.520004,6740500.0,188.195722 68 | 2014-04-08,193.889999,194.169998,192.690002,193.28999299999998,5125000.0,187.005701 69 | 2014-04-09,193.880005,197.0,193.600006,196.639999,5480100.0,190.246791 70 | 2014-04-10,196.059998,199.21000700000002,195.66000400000001,195.679993,8417900.0,189.317996 71 | 2014-04-11,195.03999299999998,197.0,194.270004,195.190002,4835000.0,188.843937 72 | 2014-04-14,196.240005,198.240005,195.880005,197.770004,5431100.0,191.340057 73 | 2014-04-15,195.979996,197.41000400000001,195.419998,197.020004,5351300.0,190.614441 74 | 2014-04-16,198.050003,198.71000700000002,195.0,196.399994,8527300.0,190.014589 75 | 2014-04-17,187.25,190.699997,187.009995,190.009995,11255500.0,183.83234299999998 76 | 2014-04-21,189.800003,192.809998,189.740005,192.270004,5419700.0,186.018874 77 | 2014-04-22,192.009995,193.0,191.199997,192.149994,3878600.0,185.90276599999999 78 | 2014-04-23,191.78999299999998,192.41000400000001,190.110001,191.729996,4736400.0,185.496423 79 | 2014-04-24,192.220001,192.220001,190.029999,190.220001,4407100.0,184.035521 80 | 2014-04-25,190.53999299999998,190.669998,189.110001,189.630005,3871000.0,183.464707 81 | 2014-04-28,191.139999,193.990005,190.580002,193.139999,5638300.0,186.86058400000002 82 | 2014-04-29,193.58999599999999,195.940002,193.41000400000001,195.110001,4626300.0,188.766536 83 | 2014-04-30,194.380005,196.860001,194.350006,196.470001,4206800.0,190.08231999999998 84 | 2014-05-01,196.309998,196.740005,193.149994,193.529999,3674000.0,187.23790400000001 85 | 2014-05-02,193.75,193.83999599999999,191.25,191.440002,3049900.0,185.215858 86 | 2014-05-05,191.050003,191.490005,189.800003,191.259995,2222100.0,185.04170200000002 87 | 2014-05-06,190.929993,190.949997,189.25,190.029999,3188700.0,183.851696 88 | 2014-05-07,189.33999599999999,190.300003,186.929993,189.300003,3821000.0,184.211749 89 | 2014-05-08,189.16000400000001,190.570007,188.229996,188.91000400000001,2431900.0,183.832233 90 | 2014-05-09,188.979996,190.58999599999999,188.369995,190.080002,2261600.0,184.970782 91 | 2014-05-12,191.119995,193.020004,190.940002,192.570007,3777400.0,187.393858 92 | 2014-05-13,192.78999299999998,193.029999,191.759995,192.190002,2226600.0,187.024068 93 | 2014-05-14,191.91000400000001,191.990005,188.169998,188.720001,5251500.0,183.647338 94 | 2014-05-15,189.070007,189.080002,186.179993,186.46000700000002,4202200.0,181.44808999999998 95 | 2014-05-16,186.270004,187.41000400000001,185.929993,187.059998,3949500.0,182.031954 96 | 2014-05-19,186.610001,187.130005,186.03999299999998,187.0,3270700.0,181.973569 97 | 2014-05-20,186.25,186.699997,184.699997,184.889999,3026500.0,179.920284 98 | 2014-05-21,185.850006,187.16000400000001,184.949997,186.389999,2988000.0,181.379965 99 | 2014-05-22,186.449997,186.449997,185.029999,185.679993,2218000.0,180.689042 100 | 2014-05-23,185.83999599999999,186.139999,185.309998,185.940002,2562900.0,180.942063 101 | 2014-05-27,184.800003,185.649994,183.929993,184.779999,4793800.0,179.81323999999998 102 | 2014-05-28,184.479996,184.880005,182.940002,183.080002,3721600.0,178.15893799999998 103 | 2014-05-29,183.639999,183.779999,182.330002,183.759995,2759900.0,178.820653 104 | 2014-05-30,183.380005,184.570007,182.490005,184.360001,4620500.0,179.404531 105 | 2014-06-02,184.759995,186.279999,184.669998,185.690002,3200500.0,180.69878300000002 106 | 2014-06-03,185.550003,185.759995,184.119995,184.369995,2517100.0,179.41425700000002 107 | 2014-06-04,184.71000700000002,185.449997,184.199997,184.509995,2376800.0,179.550493 108 | 2014-06-05,184.66000400000001,186.08999599999999,183.919998,185.979996,2852200.0,180.980982 109 | 2014-06-06,186.470001,187.649994,185.899994,186.369995,3296700.0,181.360498 110 | 2014-06-09,186.220001,187.639999,185.96000700000002,186.220001,2728400.0,181.214536 111 | 2014-06-10,186.199997,186.220001,183.820007,184.28999299999998,4154900.0,179.336405 112 | 2014-06-11,183.610001,184.199997,182.009995,182.25,4061700.0,177.351246 113 | 2014-06-12,182.479996,182.550003,180.91000400000001,181.220001,4425300.0,176.34893300000002 114 | 2014-06-13,182.0,183.0,181.520004,182.559998,2773600.0,177.65291100000002 115 | 2014-06-16,182.399994,182.71000700000002,181.240005,182.350006,3556200.0,177.44856399999998 116 | 2014-06-17,181.899994,182.809998,181.559998,182.259995,2460900.0,177.360972 117 | 2014-06-18,182.03999299999998,183.610001,181.78999299999998,183.600006,3931800.0,178.664965 118 | 2014-06-19,184.119995,184.470001,182.360001,182.820007,3551100.0,177.905932 119 | 2014-06-20,182.58999599999999,182.669998,181.399994,181.550003,10686800.0,176.670064 120 | 2014-06-23,181.919998,182.25,181.0,182.139999,3231700.0,177.244202 121 | 2014-06-24,181.5,183.0,180.649994,180.880005,3875400.0,176.018075 122 | 2014-06-25,180.25,180.970001,180.059998,180.720001,2762800.0,175.862372 123 | 2014-06-26,180.869995,181.369995,179.270004,180.369995,3258500.0,175.521774 124 | 2014-06-27,179.770004,182.46000700000002,179.66000400000001,181.71000700000002,4575500.0,176.82576699999998 125 | 2014-06-30,181.330002,181.929993,180.259995,181.270004,4223800.0,176.397592 126 | 2014-07-01,181.699997,187.270004,181.699997,186.350006,6643100.0,181.341046 127 | 2014-07-02,186.33999599999999,188.990005,186.169998,188.389999,5093000.0,183.326206 128 | 2014-07-03,188.389999,188.809998,187.350006,188.529999,2422400.0,183.46244199999998 129 | 2014-07-07,187.610001,188.270004,187.440002,188.03999299999998,2958700.0,182.985608 130 | 2014-07-08,187.649994,188.080002,186.369995,187.220001,3135100.0,182.187657 131 | 2014-07-09,187.679993,188.899994,186.889999,188.419998,3309600.0,183.355399 132 | 2014-07-10,186.440002,188.050003,186.21000700000002,187.699997,3177800.0,182.65475 133 | 2014-07-11,187.729996,188.350006,186.71000700000002,188.0,2402500.0,182.94669 134 | 2014-07-14,188.550003,190.440002,188.529999,189.860001,4501100.0,184.756695 135 | 2014-07-15,189.53999299999998,190.080002,188.21000700000002,188.490005,4864700.0,183.423524 136 | 2014-07-16,192.240005,193.360001,190.759995,192.360001,7812600.0,187.189496 137 | 2014-07-17,192.360001,195.949997,192.0,192.490005,8872300.0,187.316007 138 | 2014-07-18,191.96000700000002,193.440002,190.0,192.5,8166400.0,187.325733 139 | 2014-07-21,191.300003,191.699997,189.25,190.850006,4154400.0,185.72009 140 | 2014-07-22,191.58999599999999,194.720001,191.559998,194.08999599999999,4853000.0,188.87299099999998 141 | 2014-07-23,194.110001,194.899994,193.570007,193.630005,3584200.0,188.425364 142 | 2014-07-24,193.949997,195.619995,193.75,195.240005,3612700.0,189.992089 143 | 2014-07-25,195.300003,195.899994,193.78999299999998,194.399994,3376400.0,189.174656 144 | 2014-07-28,194.300003,196.399994,193.649994,195.779999,3242400.0,190.51756699999999 145 | 2014-07-29,195.300003,195.889999,194.53999299999998,194.570007,3264100.0,189.3401 146 | 2014-07-30,195.199997,195.990005,192.899994,194.0,3943800.0,188.785414 147 | 2014-07-31,192.83999599999999,194.28999299999998,191.53999299999998,191.669998,4207500.0,186.51804099999998 148 | 2014-08-01,190.5,191.5,188.860001,189.149994,5181100.0,184.065772 149 | 2014-08-04,189.350006,189.949997,188.600006,189.639999,2125900.0,184.542607 150 | 2014-08-05,188.75,189.199997,186.440002,187.100006,3307900.0,182.070887 151 | 2014-08-06,185.360001,186.880005,184.440002,185.970001,3847000.0,182.041526 152 | 2014-08-07,186.639999,186.679993,183.580002,184.300003,2708600.0,180.406805 153 | 2014-08-08,184.399994,186.669998,183.580002,186.630005,2781500.0,182.687587 154 | 2014-08-11,187.809998,188.360001,186.279999,187.470001,2527200.0,183.509839 155 | 2014-08-12,187.449997,188.690002,186.809998,187.33999599999999,1858600.0,183.38258100000002 156 | 2014-08-13,188.0,188.479996,187.369995,187.949997,1797000.0,183.979695 157 | 2014-08-14,187.570007,188.169998,186.929993,187.880005,1929500.0,183.911182 158 | 2014-08-15,187.850006,188.880005,186.78999299999998,187.380005,2814800.0,183.421744 159 | 2014-08-18,188.100006,189.809998,187.759995,189.360001,2420300.0,185.359914 160 | 2014-08-19,190.03999299999998,190.25,189.360001,190.070007,2040100.0,186.054922 161 | 2014-08-20,189.860001,190.389999,189.25,190.100006,2177600.0,186.08428700000002 162 | 2014-08-21,190.899994,192.070007,190.5,191.229996,2496500.0,187.190407 163 | 2014-08-22,190.770004,191.880005,190.28999299999998,190.41000400000001,1940300.0,186.38773600000002 164 | 2014-08-25,191.389999,191.809998,190.71000700000002,191.16000400000001,1723600.0,187.121893 165 | 2014-08-26,191.020004,193.529999,191.020004,192.990005,3175400.0,188.91323799999998 166 | 2014-08-27,193.029999,194.130005,191.559998,192.25,2190200.0,188.188864 167 | 2014-08-28,191.470001,192.300003,190.66000400000001,192.0,1503600.0,187.944145 168 | 2014-08-29,192.279999,192.75,191.139999,192.300003,2909400.0,188.23781100000002 169 | 2014-09-02,192.679993,192.970001,190.929993,191.559998,2679700.0,187.513437 170 | 2014-09-03,192.389999,192.949997,191.860001,191.949997,1822800.0,187.895198 171 | 2014-09-04,191.690002,192.690002,190.059998,190.679993,2865000.0,186.652022 172 | 2014-09-05,190.529999,191.75,190.08999599999999,191.199997,2260200.0,187.16104199999998 173 | 2014-09-08,190.75,191.199997,189.509995,190.139999,2524200.0,186.123436 174 | 2014-09-09,190.33999599999999,190.740005,189.779999,189.990005,2403600.0,185.97661000000002 175 | 2014-09-10,190.119995,192.149994,190.100006,191.53999299999998,2764000.0,187.493856 176 | 2014-09-11,191.080002,192.779999,190.119995,191.720001,2298500.0,187.670061 177 | 2014-09-12,191.470001,191.600006,190.570007,191.279999,2901000.0,187.239353 178 | 2014-09-15,191.419998,192.490005,190.580002,191.809998,2456400.0,187.758156 179 | 2014-09-16,191.25,193.570007,190.820007,192.96000700000002,2561500.0,188.883873 180 | 2014-09-17,193.220001,193.639999,192.300003,192.800003,3210800.0,188.727249 181 | 2014-09-18,192.78999299999998,194.130005,192.71000700000002,193.75,2963300.0,189.65717800000002 182 | 2014-09-19,194.53999299999998,195.0,193.190002,194.0,8852000.0,189.901897 183 | 2014-09-22,193.720001,194.139999,192.630005,193.110001,3318000.0,189.030698 184 | 2014-09-23,192.75,193.070007,191.520004,191.619995,3301800.0,187.572168 185 | 2014-09-24,191.0,192.449997,189.880005,192.309998,3082600.0,188.247594 186 | 2014-09-25,192.050003,192.5,188.970001,189.009995,4151400.0,185.017301 187 | 2014-09-26,188.929993,190.330002,188.610001,190.059998,2493900.0,186.045124 188 | 2014-09-29,188.509995,189.96000700000002,188.119995,189.639999,2336300.0,185.633998 189 | 2014-09-30,189.639999,190.850006,189.149994,189.830002,2932600.0,185.819987 190 | 2014-10-01,189.91000400000001,190.399994,186.78999299999998,187.169998,3723200.0,183.216174 191 | 2014-10-02,187.66000400000001,187.779999,186.240005,186.91000400000001,2283100.0,182.961671 192 | 2014-10-03,188.110001,189.369995,187.559998,188.669998,3071500.0,184.68448700000002 193 | 2014-10-06,189.690002,190.889999,188.71000700000002,189.03999299999998,2099500.0,185.046666 194 | 2014-10-07,187.770004,188.119995,185.53999299999998,185.71000700000002,2991300.0,181.787023 195 | 2014-10-08,185.970001,189.600006,185.610001,189.360001,2984800.0,185.359914 196 | 2014-10-09,189.119995,189.5,186.08999599999999,186.419998,2625400.0,182.48201699999998 197 | 2014-10-10,185.860001,187.740005,185.100006,185.929993,5090200.0,182.002362 198 | 2014-10-13,185.490005,186.649994,183.419998,183.520004,3596700.0,179.643283 199 | 2014-10-14,184.889999,185.720001,183.58999599999999,183.800003,3924700.0,179.91736699999998 200 | 2014-10-15,182.46000700000002,183.78999299999998,178.75,181.75,6895800.0,177.91066899999998 201 | 2014-10-16,179.800003,181.479996,178.690002,179.83999599999999,5578600.0,176.04101200000002 202 | 2014-10-17,181.240005,182.83999599999999,180.220001,182.050003,4350200.0,178.20433400000002 203 | 2014-10-20,166.850006,170.330002,166.690002,169.100006,23416500.0,165.527896 204 | 2014-10-21,166.399994,166.679993,161.679993,163.229996,20949800.0,159.78188600000001 205 | 2014-10-22,162.41000400000001,165.41000400000001,161.100006,161.78999299999998,11084800.0,158.372302 206 | 2014-10-23,162.119995,162.830002,161.53999299999998,162.179993,7599400.0,158.754063 207 | 2014-10-24,162.080002,162.440002,161.449997,162.080002,6652100.0,158.656184 208 | 2014-10-27,162.0,162.91000400000001,161.809998,161.869995,4989100.0,158.450614 209 | 2014-10-28,162.0,163.600006,161.800003,163.600006,7895300.0,160.14408 210 | 2014-10-29,164.330002,164.619995,162.759995,163.46000700000002,4739300.0,160.007038 211 | 2014-10-30,163.5,164.619995,163.020004,164.350006,3896000.0,160.878237 212 | 2014-10-31,165.479996,165.58999599999999,163.619995,164.399994,5818000.0,160.927168 213 | 2014-11-03,164.25,164.53999299999998,163.380005,164.360001,4688200.0,160.88801999999998 214 | 2014-11-04,164.33999599999999,164.360001,162.240005,162.649994,4246900.0,159.214136 215 | 2014-11-05,163.130005,163.53999299999998,161.559998,161.820007,4104700.0,158.401682 216 | 2014-11-06,161.279999,161.529999,160.050003,161.46000700000002,4067600.0,159.131007 217 | 2014-11-07,161.419998,162.21000700000002,160.850006,162.070007,3494800.0,159.732209 218 | 2014-11-10,161.899994,164.470001,161.610001,163.490005,4958200.0,161.131724 219 | 2014-11-11,163.699997,163.899994,162.600006,163.300003,3534400.0,160.94446200000002 220 | 2014-11-12,162.279999,163.0,161.759995,161.919998,3377600.0,159.584363 221 | 2014-11-13,162.0,162.800003,161.800003,162.78999299999998,3239500.0,160.441809 222 | 2014-11-14,162.100006,164.490005,161.690002,164.16000400000001,4976700.0,161.792058 223 | 2014-11-17,164.16000400000001,164.970001,163.720001,164.16000400000001,4798900.0,161.792058 224 | 2014-11-18,164.729996,164.75,161.889999,161.889999,5410100.0,159.554797 225 | 2014-11-19,162.050003,162.100006,160.96000700000002,161.429993,3802200.0,159.101426 226 | 2014-11-20,160.949997,161.5,159.800003,160.639999,4182200.0,158.32282800000002 227 | 2014-11-21,161.830002,161.949997,160.75,160.919998,4076900.0,158.59878799999998 228 | 2014-11-24,161.53999299999998,163.860001,161.059998,162.149994,6618500.0,159.811042 229 | 2014-11-25,162.649994,163.5,161.559998,161.759995,4062300.0,159.426668 230 | 2014-11-26,161.929993,162.100006,161.009995,161.949997,3966000.0,159.613929 231 | 2014-11-28,162.75,163.369995,161.440002,162.169998,2405500.0,159.830757 232 | 2014-12-01,161.639999,163.320007,161.350006,161.53999299999998,4168400.0,159.20983999999999 233 | --------------------------------------------------------------------------------