All Projects → timkpaine → pyEX

timkpaine / pyEX

Licence: Apache-2.0 license
Python interface to IEX and IEX cloud APIs

Programming Languages

python
139335 projects - #7 most used programming language
Makefile
30231 projects

Projects that are alternatives of or similar to pyEX

Pyex
Python interface to IEX and IEX cloud APIs
Stars: ✭ 311 (-23.59%)
Mutual labels:  finance, stock-market, stocks, stock-data, algorithmic-trading
Algobot
A C++ stock market algorithmic trading bot
Stars: ✭ 78 (-80.84%)
Mutual labels:  finance, stock-market, stocks, stock-data, algorithmic-trading
IEX CPP API
Unofficial C++ Lib for the IEXtrading API
Stars: ✭ 34 (-91.65%)
Mutual labels:  finance, iex, stocks, stock-data, financial-analysis
robinhood.tools
📈🤑💰 Advanced trading tools and resources for Robinhood Web.
Stars: ✭ 27 (-93.37%)
Mutual labels:  stock-market, stocks, stock-data, algorithmic-trading
Robinhood
Unofficial Documentation of Robinhood Trade's Private API
Stars: ✭ 1,569 (+285.5%)
Mutual labels:  stock-market, stocks, stock-data, algorithmic-trading
Tradestation
EasyLanguage indicators and systems for TradeStation
Stars: ✭ 65 (-84.03%)
Mutual labels:  finance, stock-market, stocks
Ta Rs
Technical analysis library for Rust language
Stars: ✭ 248 (-39.07%)
Mutual labels:  finance, stock-market, stocks
intrinio-realtime-java-sdk
Intrinio Java SDK for Real-Time Stock Prices
Stars: ✭ 22 (-94.59%)
Mutual labels:  stock-market, stocks, stock-data
Sec Edgar Downloader
Download SEC filings from the EDGAR database using Python
Stars: ✭ 146 (-64.13%)
Mutual labels:  finance, stock-market, stocks
Qlib
Qlib is an AI-oriented quantitative investment platform, which aims to realize the potential, empower the research, and create the value of AI technologies in quantitative investment. With Qlib, you can easily try your ideas to create better Quant investment strategies. An increasing number of SOTA Quant research works/papers are released in Qlib.
Stars: ✭ 7,582 (+1762.9%)
Mutual labels:  finance, stock-data, algorithmic-trading
Turingtrader
The Open-Source Backtesting Engine/ Market Simulator by Bertram Solutions.
Stars: ✭ 132 (-67.57%)
Mutual labels:  finance, stocks, algorithmic-trading
NSE-Stock-Scanner
National Stock Exchange (NSE), India based Stock screener program. Supports Live Data, Swing / Momentum Trading, Intraday Trading, Connect to online brokers as Zerodha Kite, Risk Management, Emotion Control, Screening, Strategies, Backtesting, Automatic Stock Downloading after closing, live free day trading data and much more
Stars: ✭ 78 (-80.84%)
Mutual labels:  stock-market, stocks, algorithmic-trading
Intrinio Realtime Node Sdk
Intrinio NodeJS SDK for Real-Time Stock & Crypto Prices
Stars: ✭ 30 (-92.63%)
Mutual labels:  finance, stock-market, stock-data
Iex Api
The IEX API provides any individual or academic, public or private institution looking to develop applications that require stock market data to access near real-time quote and trade data for all stocks trading on IEX.
Stars: ✭ 683 (+67.81%)
Mutual labels:  finance, stock-market, stocks
Financedatabase
This is a database of 180.000+ symbols containing Equities, ETFs, Funds, Indices, Futures, Options, Currencies, Cryptocurrencies and Money Markets.
Stars: ✭ 554 (+36.12%)
Mutual labels:  finance, stock-market, stock-data
Tushare
TuShare is a utility for crawling historical data of China stocks
Stars: ✭ 11,288 (+2673.46%)
Mutual labels:  finance, stock-market, stock-data
cira
Cira algorithmic trading made easy. A Façade library for simpler interaction with alpaca-trade-API from Alpaca Markets.
Stars: ✭ 21 (-94.84%)
Mutual labels:  finance, stock-market, stocks
Pyportfolioopt
Financial portfolio optimisation in python, including classical efficient frontier, Black-Litterman, Hierarchical Risk Parity
Stars: ✭ 2,502 (+514.74%)
Mutual labels:  finance, financial-analysis, algorithmic-trading
Yahoo Finance Api
PHP client for Yahoo Finance API 📈
Stars: ✭ 179 (-56.02%)
Mutual labels:  finance, stock-market, stocks
Reddit Hyped Stocks
A web application to explore currently hyped stocks on Reddit
Stars: ✭ 173 (-57.49%)
Mutual labels:  finance, stocks, algorithmic-trading

🚨 This library is no longer actively maintained 🚨

Python interface to IEX Cloud

Build Status Coverage License PyPI

Getting Started

Install

Install from pip

pip install pyEX

or from source

python setup.py install

Extensions

  • pyEX[async]: asyncio integration for streaming APIs
  • pyEX[studies]: Technical indicators and other calculations

Demos + Docs

Overview

pyEX supports the IEX Cloud api through 2 interfaces. The first is a simple function call, passing in the api version and token as arguments

In [1]: import pyEX as p

In [2]: p.chart?
Signature: p.chart(symbol, timeframe='1m', date=None, token='', version='', filter='')
Docstring:
Historical price/volume data, daily and intraday

https://iexcloud.io/docs/api/#historical-prices
Data Schedule
1d: -9:30-4pm ET Mon-Fri on regular market trading days
    -9:30-1pm ET on early close trading days
All others:
    -Prior trading day available after 4am ET Tue-Sat

Args:
    symbol (str); Ticker to request
    timeframe (str); Timeframe to request e.g. 1m
    date (datetime): date, if requesting intraday
    token (str); Access token
    version (str); API version
    filter (str); filters: https://iexcloud.io/docs/api/#filter-results

Returns:
    dict: result

For most calls, there is a convenience method that returns a dataframe as well:

In [5]: [_ for _ in dir(p) if _.endswith('DF')]
Out[5]:
['advancedStatsDF',
 'auctionDF',
 'balanceSheetDF',
 'batchDF',
 'bookDF',
 'bulkBatchDF',
 'bulkMinuteBarsDF',
 'calendarDF',
...

Since the token rarely changes, we have a Client object for convenience:

In [6]: p.Client?
Init signature: p.Client(api_token=None, version='v1', api_limit=5)
Docstring:
IEX Cloud Client

Client has access to all methods provided as standalone, but in an authenticated way

Args:
    api_token (str): api token (can pickup from IEX_TOKEN environment variable)
    version (str): api version to use (defaults to v1)
                      set version to 'sandbox' to run against the IEX sandbox
    api_limit (int): cache calls in this interval
File:           ~/Programs/projects/iex/pyEX/pyEX/client.py
Type:           type
Subclasses:

The client will automatically pick up the API key from the environment variable IEX_TOKEN, or it can be passed as an argument. To use the IEX Cloud test environment, simple set version='sandbox'.

In [8]: c = p.Client(version='sandbox')

In [9]: c.chartDF('AAPL').head()
Out[9]:
              open   close    high     low    volume   uOpen  uClose   uHigh    uLow   uVolume  change  changePercent   label  changeOverTime
date
2019-11-27  271.31  274.04  277.09  268.75  16994433  267.69  271.99  271.82  266.32  16811747    0.00         0.0000  Nov 27        0.000000
2019-11-29  271.30  272.19  280.00  279.20  12135259  270.90  275.02  270.00  267.10  11927464   -0.60        -0.2255  Nov 29       -0.002232
2019-12-02  279.96  265.23  276.41  267.93  23831255  279.97  266.80  281.32  269.29  24607845   -3.20        -1.1646   Dec 2       -0.013820
2019-12-03  261.54  271.05  259.96  262.09  30331487  259.87  271.34  269.02  260.71  30518449   -4.93        -1.8450   Dec 3       -0.032745
2019-12-04  272.81  273.56  271.26  267.06  17109161  267.30  262.82  274.99  270.83  17230517    2.39         0.8955   Dec 4       -0.023411

Improvements over native API, other libraries, etc

  • pyEX will transparently cache requests according to the refresh interval as defined on the IEX Cloud website (and in the docstrings), to avoid wasting credits. It can also cache to disk, or integrate with your own custom caching scheme.
  • pyEX fully implements the streaming APIs

Demo

Rules Engine

pyEX implements methods for interacting with the Rules Engine.

rule = {
        'conditions': [['changePercent','>',500],
                       ['latestPrice','>',100000]],
        'outputs': [{'frequency': 60,
                     'method': 'email',
                     'to': 'your_email@domain'
                    }]
        }

c.createRule(rule, 'MyTestRule', 'AAPL', 'all')  # returns {"id": <ruleID>, "weight": 2}

c.rules()  # list all rules
c.ruleInfo("<ruleID>")
c.ruleOutput("<ruleID>")
c.pauseRule("<ruleID>")
c.resumeRule("<ruleID>")
c.deleteRule("<ruleID>")

We also provide helper classes in python for constructing rules such that they abide by the rules schema (dictated in the schema() helper function)

Methods

Data

pyEX provides wrappers around both static and SSE streaming data. For most static data endpoints, we provide both JSON and DataFrame return functions. For market data endpoints, we provide async wrappers as well using aiohttp (to install the dependencies, pip install pyEX[async]).

DataFrame functions will have the suffix DF, and async functions will have the suffix Async.

SSE streaming data can either be used with callbacks:

newsSSE('AAPL', on_data=my_function_todo_on_data)

or via async generators (after installing pyEX[async]):

async for data in newsSSE('AAPL'):

Full API

Please see the readthedocs for a full API spec. Implemented methods are provided in CATALOG.md.

All methods share a common naming convention. If the API method is called technicals, there will be technicals and technicalsDF methods on the client. Additionally, most methods are provided in a scope, e.g. wti is available as client.wti and client.commodities.wti, analystDays from Wall Street Horizon is available as client.premium.analystDays, etc.

Development

See CONTRIBUTING.md for guidelines.

License

This software is licensed under the Apache 2.0 license. See the LICENSE and AUTHORS files for details.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].