Skip to main content

tradestation-python-client

Python Requests PyTest Docker ThreadPoolExecutor Thread Safety

Fully Thread-Safe · Streaming Ready
Built for TradeStation APIs

 

tradestation-python-client is an unofficial Python client for interacting with the TradeStation APIs.

📦 Installation (PyPI Package)

Install the package from PyPI:

pip install tradestation-python-client

Import it in your project:

from tradestation_python_client import TradeStationClient, TokenManager

This repository also includes a full development environment, but the primary distribution is a PyPI-installable client.

⚠️ Disclaimer

tradestation-python-client is an unofficial Python client for interacting with the TradeStation REST and Streaming APIs.
It is not affiliated with or endorsed by TradeStation Technologies, Inc.

  • By default, it connects to the SIM (sandbox) environment.
  • To use LIVE trading:
TokenManager(use_sim=False)

🧩 Overview

This client provides:

  • OAuth2 token handling with automatic refresh and thread safety
  • REST endpoints (Brokerage & Market Data)
  • Real-time streaming support
  • Parallel historical data fetching
  • Clean, modern Python interface

🔧 Core Modules

Module Description
auth.py OAuth2 token management with thread-safe refresh
base_client.py HTTP layer with retries, timeouts, and error handling
client.py Main high-level interface for all services
endpoints/broker.py Orders, balances, positions, accounts
endpoints/mkt_data.py Historical + intraday market data
endpoints/ts_stream.py Real-time streaming (bars, quotes, orders, etc.)

🧪 Testing

Run the test suite:

pytest -v

Includes tests for:

  • Token refresh
  • Thread safety
  • Streaming message parsing
  • HTTP error handling

🧰 Development Environment (DevContainer + Docker)

For contributors or advanced users, the repository provides a fully reproducible development environment.

Prerequisites

  • Docker Desktop
  • Visual Studio Code
  • Dev Containers extension

Setup

1️⃣ Clone the repository
git clone https://github.com/santarsierilorenzo/tradestation-python-client
cd tradestation-python-client
2️⃣ Open inside DevContainer
Ctrl + Shift + P → Dev Containers: Rebuild Without Cache and Reopen
3️⃣ Configure environment variables

Create a .env file:

TS_CLIENT_ID=your_client_id
TS_CLIENT_SECRET=your_client_secret
TS_REFRESH_TOKEN=your_refresh_token
4️⃣ Run an example
python -m examples.get_market_data_example

⚙️ Usage Examples

Basic Initialization

from tradestation_python_client import TradeStationClient, TokenManager

token_manager = TokenManager(use_sim=True)
ts = TradeStationClient(token_manager=token_manager)

Parallel Historical Data Fetching

data = ts.market_data.get_bars_between(
    symbol="AAPL",
    first_date="2025-01-01",
    last_date="2025-02-01",
    unit="Minute",
    interval=5,
    max_workers=10
)

Real-Time Streaming

ts.market_data_stream.stream_bars(
    symbol="AAPL",
    interval=1,
    unit="Minute",
    on_message=lambda msg: print(msg)
)

🪪 License

MIT © 2025 — Developed with ❤️ by Lorenzo Santarsieri

Metadata

Release files for tradestation-python-client 0.1.7

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

Source distribution (sdist)

Source distribution for tradestation-python-client 0.1.7
File Size Uploaded
tradestation_python_client-0.1.7.tar.gz 18.1 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for tradestation-python-client 0.1.7
File Interpreter ABI Platform
tradestation_python_client-0.1.7-py3-none-any.whl Python 3 none any Details

Total release size: 38.4 kB

Release files / tradestation_python_client-0.1.7.tar.gz

Download URL tradestation_python_client-0.1.7.tar.gz
Size 18.1 kB
Tags Source
SHA-256 checksum
How to use checksums
341b799e2e4d63d2ad9be31e47f70b183b5360c81c2df705764c05238d85a8c4
BLAKE2b-256 checksum
How to use checksums
7cacf5292288b5f8a9c05cabcab57650f5596e023aadb45b7ce2595836454f2f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.10.19

Release files / tradestation_python_client-0.1.7-py3-none-any.whl

Download URL tradestation_python_client-0.1.7-py3-none-any.whl
Size 20.3 kB
Tags Python 3
SHA-256 checksum
How to use checksums
89c2f7fad8d89ffac1fed8219b34f5121d10240d0a103bc57f4ec5b8105569cd
BLAKE2b-256 checksum
How to use checksums
779af8f4a4cd869f186894bf06548418ebacf64dd87669c53b534a63696c9d53
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.10.19

Release history Release notifications | RSS feed

This release

0.1.7 This release

2 release files

0.1.6

2 release files

0.1.5

2 release files

0.1.4

2 release files

0.1.3

2 release files

0.1.2

2 release files

0.1.1

2 release files

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