Skip to main content
Pre-release

This release is a pre-release and may not be stable for production use.

Build PyVersion PyPiVersion License Docs

ib_async

Update

Under new management. See original discussions for recent history. Create new discussions or PRs or issues under the new primary repo for ongoing updates.

New contributions welcome. We are open to adding more maintainers with commit access if your updates and understanding of IBKR/TWS and Python are all high quality.

This is a small project with a userbase of widely varying experience and knowledge, so if you open issues which are more about IBKR problems and less about client problems, we may not be able to assist you unless your problem is a direct client issue and not one of many IBKR API edge cases. Feel free to open Discussion topics about anything if you are unsure about a problem being IBKR, our client, or your own code usage.

Introduction

The goal of the ib_async library is to make working with the Trader Workstation API from Interactive Brokers as easy as possible.

The main features are:

  • An easy to use linear style of programming;
  • An IB component that automatically keeps in sync with the TWS or IB Gateway application;
  • A fully asynchonous framework based on asyncio and eventkit for advanced users;
  • Interactive operation with live data in Jupyter notebooks.

Be sure to take a look at the notebooks, the recipes and the API docs.

Installation

pip install ib_async

Requirements:

  • Python 3.10 or higher
    • We plan to support Python releases 2 years back which allows us to continue adding newer features and performance improvements over time.
  • A running IB Gateway application (or TWS with API mode enabled)
  • Make sure the API port is enabled and 'Download open orders on connection' is checked.
  • You may also want to increase the Java memory usage under Configure->Settings->Memory Allocation to 4096 MB minimum to prevent gateway crashes when loading bulk data.

The ibapi package from IB is not needed. ib_async implements the full IBKR API protocol internally.

Build Manually

First, install poetry:

pip install poetry -U

Installing Only Library

poetry install

Install Everything (enable docs + dev testing)

poetry install --with=docs,dev

Generate Docs

poetry install --with=docs
poetry run sphinx-build -b html docs html

Check Types

poetry run mypy ib_async

Build Package

poetry build

Upload Package (if maintaining)

poetry install
poetry config pypi-token.pypi your-api-token
poetry publish --build

Example

This is a complete script to download historical data:

from ib_async import *
# util.startLoop()  # uncomment this line when in a notebook

ib = IB()
ib.connect('127.0.0.1', 7497, clientId=1)

ib.reqMarketDataType(4)  # Use free, delayed, frozen data
contract = Forex('EURUSD')
bars = ib.reqHistoricalData(
    contract, endDateTime='', durationStr='30 D',
    barSizeSetting='1 hour', whatToShow='MIDPOINT', useRTH=True)

# convert to pandas dataframe (pandas needs to be installed):
df = util.df(bars)
print(df)

Output:

                   date      open      high       low     close  volume
0   2019-11-19 23:15:00  1.107875  1.108050  1.107725  1.107825      -1
1   2019-11-20 00:00:00  1.107825  1.107925  1.107675  1.107825      -1
2   2019-11-20 01:00:00  1.107825  1.107975  1.107675  1.107875      -1
3   2019-11-20 02:00:00  1.107875  1.107975  1.107025  1.107225      -1
4   2019-11-20 03:00:00  1.107225  1.107725  1.107025  1.107525      -1
..                  ...       ...       ...       ...       ...     ...
705 2020-01-02 14:00:00  1.119325  1.119675  1.119075  1.119225      -1

Documentation

The complete API documentation.

Changelog.

Community Resources

If you have other public work related to ib_async or ib_insync open an issue and we can keep an active list here.

Projects below are not endorsed by any entity and are purely for reference or entertainment purposes.

Disclaimer

The software is provided on the conditions of the simplified BSD license.

This project is not affiliated with Interactive Brokers Group, Inc.

Official Interactive Brokers API Docs

History

This library was originally created by Ewald de Wit as tws_async in early-2017 then became the more prominent ib_insync library in mid-2017. He maintained and improved the library for the world to use for free until his unexpected passing in early 2024. Afterward, we decided to rename the project to ib_async under a new github organization since we lost access to modify anything in the original repos and packaging and docs infrastructure.

The library is currently maintained by Matt Stancliff and we are open to adding more committers and org contributors if people show interest in helping out.

Metadata

Release files for ib_async_dataclass 1.0.3rc5

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for ib_async_dataclass 1.0.3rc5
File Size Uploaded Provenance Actions
ib_async_dataclass-1.0.3rc5.tar.gz 75.2 kB Without provenance Details for ib_async_dataclass-1.0.3rc5.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for ib_async_dataclass 1.0.3rc5
File Interpreter ABI Platform Actions
ib_async_dataclass-1.0.3rc5-py3-none-any.whl Python 3 none any Details for ib_async_dataclass-1.0.3rc5-py3-none-any.whl

Total release size: 153.0 kB

Release files / ib_async_dataclass-1.0.3rc5.tar.gz

Download URL ib_async_dataclass-1.0.3rc5.tar.gz
Size 75.2 kB
Tags Source
SHA-256 checksum
How to use checksums
d1d6bf4ed7bd8a7d01e389f6c7d2b4325a8286440680f1c00e8c773a2bf670c6
BLAKE2b-256 checksum
How to use checksums
c5a619c75228fd5d4022bbdf1522ba6d8b3e3d3e1073f716a98cc8e9bcf4d996
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via poetry/1.8.3 CPython/3.12.5 Darwin/23.6.0

Release files / ib_async_dataclass-1.0.3rc5-py3-none-any.whl

Download URL ib_async_dataclass-1.0.3rc5-py3-none-any.whl
Size 77.8 kB
Tags Python 3
SHA-256 checksum
How to use checksums
4f2f91f6df2df7c4ff5d817bd4773a5a8bf1a8ecfb3c9b51a220df460ea70182
BLAKE2b-256 checksum
How to use checksums
89ec1c71b7e40fe29d4028656b16062ceed75cab451e9260e5460127b8cef6e5
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via poetry/1.8.3 CPython/3.12.5 Darwin/23.6.0

Security for ib_async_dataclass 1.0.3rc5

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page