Skip to content

ThetaDataDxRust SDK for ThetaData market data

Three public surfaces — historical request/response (MDDS gRPC), real-time streaming (FPSS), and whole-universe daily blobs (FLATFILES) — plus a local Greeks calculator, exposed in Rust, Python, TypeScript, and C++ from a single Rust core.

Quick install

bash
cargo add thetadatadx tokio --features tokio/rt-multi-thread,tokio/macros
bash
pip install thetadatadx

# With DataFrame adapters
pip install thetadatadx[pandas]
bash
npm install thetadatadx
bash
# Build the FFI library once, then include sdks/cpp/include/thetadx.hpp

Minimal example

rust
use thetadatadx::{ThetaDataDxClient, Credentials, DirectConfig};

#[tokio::main]
async fn main() -> Result<(), thetadatadx::Error> {
    let creds = Credentials::from_file("creds.txt")?;
    let client = ThetaDataDxClient::connect(&creds, DirectConfig::production()).await?;

    let quotes = client.stock_history_quote("AAPL", "20250115", "60000").await?;
    for q in &quotes {
        println!("{}: bid={} ask={}", q.date, q.bid, q.ask);
    }
    Ok(())
}
python
from thetadatadx import ThetaDataDxClient, Credentials, Config

creds = Credentials.from_file("creds.txt")
client = ThetaDataDxClient(creds, Config.production())

quotes = client.stock_history_quote("AAPL", "20250115", "60000")
for q in quotes:
    print(f"{q.date}: bid={q.bid:.2f} ask={q.ask:.2f}")
typescript
import { ThetaDataDxClient } from 'thetadatadx';

const client = await ThetaDataDxClient.connectFromFile('creds.txt');

const quotes = client.stockHistoryQuote('AAPL', '20250115', '60000');
for (const q of quotes) {
    console.log(`${q.date}: bid=${q.bid} ask=${q.ask}`);
}
cpp
#include "thetadx.hpp"

auto creds = tdx::Credentials::from_file("creds.txt");
auto client = tdx::Client::connect(creds, tdx::Config::production());

auto quotes = client.stock_history_quote("AAPL", "20250115", "60000");
for (const auto& q : quotes) {
    std::cout << q.date << ": bid=" << q.bid << " ask=" << q.ask << std::endl;
}

What ships

AxisThetaDataDx
LanguagesRust, Python, TypeScript, C++
Historical endpointsFull typed historical surface (plus 4 _stream SDK-only variants)
Real-time streamingFPSS with SPKI pinning, SPSC ring, reconnect policy
Local Greeks calculator23 Greeks + IV solver in Rust
Async Python surface*_async variant of every endpoint
DataFrame outputArrow / polars / pandas via explicit conversion

Historical decode runs in Rust and materialises typed structs (or an Arrow RecordBatch, zero-copy at the PyO3 boundary).

Released under the Apache-2.0 License.