Skip to main content

Python client library for ThetaData market data APIs

Project description

thetadata-python

Python client library for accessing ThetaData market data APIs over gRPC.

This package provides a ThetaClient for querying US stock, option, and index market data from ThetaData. Results can be returned as either Polars or Pandas DataFrames.

Features

  • Direct client access to ThetaData services
  • Stock, option, and index endpoints
  • Return data as Polars or Pandas DataFrames
  • Built-in response decompression
  • Simple authentication with a credentials file or explicit credentials

Requirements

  • Python 3.12+
  • An active ThetaData subscription

Installation

pip install thetadata

Authentication

You can authenticate in three ways.

1. Default credentials file

By default, ThetaClient() looks for ./creds.txt.

File format:

email@example.com
your-password
from thetadata import ThetaClient

client = ThetaClient()

2. Explicit credentials

from thetadata import ThetaClient

client = ThetaClient(email="email@example.com", password="your-password")

3. Environment variable

Set THETADATA_CREDENTIALS_FILE to point to your credentials file.

export THETADATA_CREDENTIALS_FILE=/path/to/creds.txt
$env:THETADATA_CREDENTIALS_FILE = "C:\path\to\creds.txt"

Quick Start

Default Polars output

from datetime import date
from thetadata import ThetaClient

client = ThetaClient()

bars = client.stock_history_eod(
    symbol="AAPL",
    start_date=date(2024, 1, 2),
    end_date=date(2024, 1, 5),
)

print(bars)

Pandas output

from datetime import date
from thetadata import ThetaClient

client = ThetaClient(dataframe_type="pandas")

quotes = client.stock_history_quote(
    symbol="AAPL",
    date=date(2024, 1, 2),
    interval="1m",
)

print(quotes.head())

Reuse authentication across clients

from thetadata import ThetaClient

polars_client = ThetaClient(dataframe_type="polars")
pandas_client = ThetaClient(
    existing_authorized_client=polars_client,
    dataframe_type="pandas",
)

Common Examples

Stock symbols

from thetadata import ThetaClient

client = ThetaClient()
df = client.stock_list_symbols()

Stock intraday OHLC

from datetime import date, time
from thetadata import ThetaClient

client = ThetaClient()
df = client.stock_history_ohlc(
    symbol="AAPL",
    date=date(2024, 1, 2),
    interval="1m",
    start_time=time(9, 30),
    end_time=time(16, 0),
)

Option chain snapshot greeks

from datetime import date
from thetadata import ThetaClient

client = ThetaClient()
df = client.option_snapshot_greeks_all(
    symbol="SPY",
    expiration=date(2025, 3, 21),
    strike="*",
    right="both",
)

Index history

from datetime import date
from thetadata import ThetaClient

client = ThetaClient()
df = client.index_history_eod(
    symbol="SPX",
    start_date=date(2024, 1, 2),
    end_date=date(2024, 1, 10),
)

DataFrame Output

ThetaClient supports two output modes:

  • dataframe_type="polars" (default)
  • dataframe_type="pandas"

Logging

import logging

logging.basicConfig(level=logging.INFO)

This will surface library logging, including authentication and request-related messages.

Errors

The package exposes custom exceptions in thetadata.errors:

  • AuthenticationError
  • NoDataFoundError

Example:

from datetime import date
from thetadata import ThetaClient
from thetadata.errors import AuthenticationError, NoDataFoundError

try:
    client = ThetaClient()
    df = client.stock_history_eod(
        symbol="AAPL",
        start_date=date(2024, 1, 1),
        end_date=date(2024, 1, 31),
    )
except AuthenticationError:
    print("Authentication failed")
except NoDataFoundError:
    print("No data returned for query")

Notes

  • Some methods accept symbol: str while others expect symbol: list[str].
  • Snapshot endpoints may return rapidly changing data.
  • Time-based requests use datetime.date and datetime.time values.

License

Apache-2.0

Project details


Release history Release notifications | RSS feed

This version

1.0.4

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

thetadata-1.0.4.tar.gz (40.1 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

thetadata-1.0.4-py3-none-any.whl (40.4 kB view details)

Uploaded Python 3

File details

Details for the file thetadata-1.0.4.tar.gz.

File metadata

  • Download URL: thetadata-1.0.4.tar.gz
  • Upload date:
  • Size: 40.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for thetadata-1.0.4.tar.gz
Algorithm Hash digest
SHA256 43473ca43b0ba51284333b4f25ca63a2347242e45b76b556efadce59411ac842
MD5 8bee5cfd6abaa86ed24206e34f5ca749
BLAKE2b-256 b6d435cb1f3f3f199008b37243c8ce52d08f3972c56057baf78da9b246e1de60

See more details on using hashes here.

Provenance

The following attestation bundles were made for thetadata-1.0.4.tar.gz:

Publisher: publish.yml on AXIOMXLLC/thetadata-python

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file thetadata-1.0.4-py3-none-any.whl.

File metadata

  • Download URL: thetadata-1.0.4-py3-none-any.whl
  • Upload date:
  • Size: 40.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for thetadata-1.0.4-py3-none-any.whl
Algorithm Hash digest
SHA256 527587c4e1a3b2535b65826e6d82765b44b687106729e038aa772dbf44d493b0
MD5 7cc085eedbc3a10cc94598c6e3a0bbd7
BLAKE2b-256 4b65a8605c6dabf2ff319f247de813adf4b78522d1c52d2c569929fa91f4fcc2

See more details on using hashes here.

Provenance

The following attestation bundles were made for thetadata-1.0.4-py3-none-any.whl:

Publisher: publish.yml on AXIOMXLLC/thetadata-python

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page