Skip to content

Commit 207ff66

Browse files
authored
Merge pull request #116 from userFRM/release/v5.3.0
release: v5.3.0
2 parents 1f4d2f0 + 9c9a578 commit 207ff66

13 files changed

Lines changed: 62 additions & 22 deletions

File tree

CHANGELOG.md

Lines changed: 41 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,45 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
77

88
## [Unreleased]
99

10+
## [5.3.0] - 2026-04-04
11+
12+
### Breaking Changes
13+
14+
- **Go SDK**: `EodTick`, `OhlcTick`, `TradeTick`, `QuoteTick`, `TradeQuoteTick`, `PriceTick`, `SnapshotTradeTick` gain additional fields (raw prices, ext_conditions, price_type). `Right` is now `string` ("C"/"P") with `RightRaw int32` for raw access.
15+
- **Python SDK**: trade dicts gain `ext_condition1..4`. Quote/OHLC/EOD/TradeQuote dicts gain raw price and detail fields.
16+
- **Rust**: `normalize_right()` maps `"C"` -> `"call"`, `"P"` -> `"put"`, `"*"` -> `"both"` for v3 server.
17+
18+
### Added
19+
20+
- **`tdbe::exchange`** -- 78 exchange codes with O(1) lookup: `exchange_name()`, `exchange_symbol()`. (#112)
21+
- **`tdbe::conditions`** -- 149 trade conditions + 75 quote conditions with semantic flags (cancel, volume, high, low, last). (#112)
22+
- **`tdbe::sequences`** -- FPSS sequence tracking with wrapping-aware gap detection. (#112)
23+
- **`tdbe::errors`** -- 14 ThetaData HTTP error codes mapped to human-readable names. gRPC errors now include the ThetaData error name. (#113)
24+
- **OHLC price normalization** -- `row_price_value_normalized()` and `change_price_type()` handle mixed price_types across OHLC fields. (#106)
25+
- **Greeks from Price cells** -- `row_float()` decodes Price-typed cells. `implied_vol` header alias. (#106)
26+
- **Calendar v3 parser** -- handles text dates, text times, and type codes from v3 server. (#109)
27+
- **`normalize_right()`** -- maps C/P/* to call/put/both for v3 server. Go `RightStr()` helper. (#111)
28+
- **Full SDK parity** -- Python and Go SDKs now expose every field from every Rust tick type.
29+
- **Latency physics documentation** -- speed-of-light calculations, colocation guidance, Mermaid diagrams.
30+
31+
### Fixed
32+
33+
- **37% of OHLC intraday bars had wrong prices** -- mixed price_type per cell caused 10x errors. (#106)
34+
- **All Greeks returned 0.0** -- server sends Greeks as Price cells, not Number cells. (#106)
35+
- **`option_list_contracts` returned 0** -- v3 server uses "symbol" not "root", ISO dates, text right. (#97)
36+
- **Calendar endpoints returned zeros** -- v3 text format mismatch. (#109)
37+
- **Dev server FPSS crashes** -- binary Error frames and unknown codes handled gracefully. (#85)
38+
- **`PriceToF64` Go formula wrong** -- was `value / 10^pt`, corrected to `value * 10^(pt-10)`.
39+
- **Python `greeks_tick_to_dict` missing 15 fields** -- now has all 24.
40+
41+
### Documentation
42+
43+
- 14 documentation fixes across 13 files
44+
- Mermaid diagrams replacing ASCII art in VitePress docs
45+
- Latency physics section with speed-of-light calculations per geography
46+
- 3 new JVM deviations documented
47+
- v3 migration guide compliance verified
48+
1049
## [5.2.1] - 2026-04-04
1150

1251
### Fixed
@@ -610,7 +649,8 @@ See [TODO.md](TODO.md) for the production readiness checklist and performance ro
610649
- FIT decoder uses i64 accumulator with i32 saturation (no silent overflow)
611650
- Price type range enforced with `assert!` in release builds
612651

613-
[Unreleased]: https://github.com/userFRM/ThetaDataDx/compare/v5.2.1...HEAD
652+
[Unreleased]: https://github.com/userFRM/ThetaDataDx/compare/v5.3.0...HEAD
653+
[5.3.0]: https://github.com/userFRM/ThetaDataDx/compare/v5.2.1...v5.3.0
614654
[5.2.1]: https://github.com/userFRM/ThetaDataDx/compare/v5.2.0...v5.2.1
615655
[5.2.0]: https://github.com/userFRM/ThetaDataDx/compare/v5.1.1...v5.2.0
616656
[5.1.1]: https://github.com/userFRM/ThetaDataDx/compare/v5.1.0...v5.1.1

Cargo.lock

Lines changed: 4 additions & 4 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ No-JVM ThetaData Terminal - native Rust SDK for direct market data access.
4444

4545
```toml
4646
[dependencies]
47-
thetadatadx = "5.2"
47+
thetadatadx = "5.3"
4848
tokio = { version = "1", features = ["rt-multi-thread", "macros"] }
4949
```
5050

crates/tdbe/Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[package]
22
name = "tdbe"
3-
version = "0.3.0"
3+
version = "0.4.0"
44
edition = "2021"
55
rust-version = "1.85"
66
authors = ["userFRM"]

crates/thetadatadx/Cargo.toml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[package]
22
name = "thetadatadx"
3-
version = "5.2.1"
3+
version = "5.3.0"
44
edition = "2021"
55
rust-version = "1.85"
66
authors = ["userFRM"]
@@ -23,7 +23,7 @@ default = []
2323
config-file = ["dep:toml"]
2424

2525
[dependencies]
26-
tdbe = { version = "0.3.0", path = "../tdbe" }
26+
tdbe = { version = "0.4.0", path = "../tdbe" }
2727

2828
# gRPC + protobuf (tonic 0.14 extracted prost codec into tonic-prost)
2929
tonic = { version = "=0.14.5", features = ["tls-ring", "tls-native-roots", "channel", "transport"] }

docs-site/docs/getting-started.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ description: Install ThetaDataDx, configure credentials, and run your first quer
1111
```toml [Rust]
1212
# Add to your Cargo.toml
1313
[dependencies]
14-
thetadatadx = "5.2"
14+
thetadatadx = "5.3"
1515
tokio = { version = "1", features = ["rt-multi-thread", "macros"] }
1616
```
1717
```bash [Python]

docs-site/docs/getting-started/installation.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ description: Install ThetaDataDx for Rust, Python, Go, or C++.
1111
```toml [Rust]
1212
# Add to your Cargo.toml
1313
[dependencies]
14-
thetadatadx = "5.2"
14+
thetadatadx = "5.3"
1515
tokio = { version = "1", features = ["rt-multi-thread", "macros"] }
1616
```
1717
```bash [Python]

ffi/Cargo.toml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[package]
22
name = "thetadatadx-ffi"
3-
version = "5.2.1"
3+
version = "5.3.0"
44
edition = "2021"
55
description = "C FFI layer for thetadatadx — used by Go and C++ SDKs"
66
license = "GPL-3.0-or-later"
@@ -10,5 +10,5 @@ crate-type = ["cdylib", "staticlib"]
1010

1111
[dependencies]
1212
thetadatadx = { path = "../crates/thetadatadx" }
13-
tdbe = { version = "0.3.0", path = "../crates/tdbe" }
13+
tdbe = { version = "0.4.0", path = "../crates/tdbe" }
1414
tokio = { version = "1.50.0", features = ["rt-multi-thread"] }

sdks/python/Cargo.toml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[package]
22
name = "thetadatadx-py"
3-
version = "5.2.1"
3+
version = "5.3.0"
44
edition = "2021"
55
description = "Python bindings for thetadatadx — native ThetaData SDK powered by Rust"
66

@@ -11,7 +11,7 @@ crate-type = ["cdylib"]
1111
[dependencies]
1212
# The Rust SDK we're wrapping
1313
thetadatadx = { path = "../../crates/thetadatadx" }
14-
tdbe = { version = "0.3.0", path = "../../crates/tdbe" }
14+
tdbe = { version = "0.4.0", path = "../../crates/tdbe" }
1515

1616
# PyO3 bindings
1717
pyo3 = { version = "=0.28.2", features = ["extension-module"] }

sdks/python/pyproject.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ build-backend = "maturin"
44

55
[project]
66
name = "thetadatadx"
7-
version = "5.2.1"
7+
version = "5.3.0"
88
description = "No-JVM ThetaData Terminal — native Rust SDK for direct market data access (Python bindings)"
99
readme = "README.md"
1010
requires-python = ">=3.9"

0 commit comments

Comments
 (0)