fast_arrow
A simple yet robust (stock+options) API client for Robinhood

PLEASE NOTE - breaking changes introduced in 1.0.0 release
Sometime during Spring 2019, Robinhood changed how their API handles
authentication. In order to adapt to those changes, I've moved
"authentication" outside this library to fast_arrow_auth
,
https://github.com/westonplatter/fast_arrow_auth.
Please see:
- issue 35 for a
detailed account of the issue
- this comment for the approach I've taken to remediate auth issues
- this PR for a run down on exact code changes
I have released these changes under version 1.0.0 to follow semantic
version guidelines (since auth changes are incompatible API changes).
example
from fast_arrow import Client, Stock, OptionChain, Option
with open("fast_arrow_auth.json") as f:
auth_data = json.loads(f.read())
client = Client(auth_data)
symbol = "TLT"
stock = Stock.fetch(client, symbol)
stock_id = stock["id"]
option_chain = OptionChain.fetch(client, stock_id)
oc_id = option_chain["id"]
eds = option_chain['expiration_dates'][0:3]
ops = Option.in_chain(client, oc_id, expiration_dates=eds)
ops = Option.mergein_marketdata_list(client, ops)
install
Install the package from pypi,
pip install fast_arrow
design principles
You might be asking, "yet another Robinhood client? There's already a few out
there. What's different about this one?"
fast_arrow
holds to these design principles,
- focus on simple features that expose data. Don't interpret data.
- make stock & option operations easy to reason through & execute with code
- organize code in small and discrete python classes
- use fast_arrow_auth to handle authentication process
features
Here's what you can do with fast_arrow
(some features still in development)
Stocks
Options
Portfolio
Authentication/Security
Want to propose a feature? Open a feature request or open a Pull Request.
development
Install pipenv, and then run,
pipenv install --dev
Run the test suite via,
make test
Run all the examples (make sure you add username/password to config.debug.ini),
sh run_all_examples.sh
Run the test suite against a specific python version,
pipenv run tox -e py36
releases
Adding so I don't forget the next time I release a version,
python setup.py sdist bdist_wheel
twine upload dist/*
supporting libraries
projects using fast_arrow