Python SDK for the Options Analysis Suite API: 17 pricing models, auto-calibration, GEX/DEX exposure, IV surfaces, and pre-computed market data.
Project description
Options Analysis Suite — Python SDK
Type-safe Python client for the Options Analysis Suite API.
Status: alpha (
0.1.0a2) — full coverage of every typed/v1/*operationId, plus aCalibrationdomain helper. Drift-checked against the deployed OpenAPI spec.
Install
pip install options-analysis-suite
Quickstart
from oas import OASClient, TradierCredentials
with OASClient(api_key="oas_live_...") as client:
# Data: cached EOD analytics
snap = client.snapshot("SPY")
print(snap.atmIv, snap.netGex, snap.maxPain)
if snap.maxPainCurve:
for row in snap.maxPainCurve:
print(row.strike, row.totalPain)
# Compute: 17 pricing models, full Greeks, exposure, expected move...
price = client.price(model="bs", is_call=True, S=650, K=650, r=0.05,
q=0.012, sigma=0.15, t=0.25)
greeks = client.greeks(model="heston", is_call=True, S=650, K=650, r=0.05,
q=0.012, sigma=0.15, t=0.25)
# Calibrate once, persist, reuse — never re-touches the calibrationId TTL.
cal = client.calibrate(
"SPY", model="heston",
broker=TradierCredentials(token="..."),
)
cal.save("spy_heston.json")
# Evaluate the calibrated model anywhere across the chain.
fair = cal.price(is_call=True, K=655, expiry="2026-06-19")
# Stream batched metrics without manually paging.
for m in client.iter_metrics(["SPY", "QQQ", "IWM", "DIA"], batch_size=50):
print(m.symbol, m.ivRank)
Calibration round-trip
A Calibration is the durable wrapper around a /v1/compute/calibrate result.
The fitted params dict survives a JSON round-trip; the 30-second-only
calibrationId is intentionally not surfaced.
# Load a saved calibration in another process / hours later.
from oas import Calibration, OASClient
cal = Calibration.from_json("spy_heston.json")
with OASClient(api_key="oas_live_...") as client:
cal.bind(client) # attach so cal.price() / cal.greeks() can fire HTTP
price = cal.price(is_call=True, K=650, S=650, r=0.05, q=0.012,
sigma=0.15, t=0.25)
Errors
Every error subclass carries the HTTP status, the server's structured code
field (when present), and any extra fields the server returned.
from oas.errors import NotFoundError, RateLimitError, CalibrationQuotaError
try:
snap = client.snapshot("UNKNOWN")
except NotFoundError as e:
print(f"warehouse miss: {e}")
except RateLimitError as e:
print(f"slow down — retry in {e.retry_after}s (bucket: {e.bucket})")
except CalibrationQuotaError as e:
print(f"calibration quota exhausted; resets at {e.resets_at}")
The full hierarchy: OASError → AuthenticationError, ValidationError,
PermissionDeniedError (with .required_scope), NotFoundError,
RateLimitError (with .retry_after, .bucket),
CalibrationQuotaError (with .resets_at),
ConcurrencyLimitError (with .current, .max), ServerError.
Models
Response objects are typed Pydantic v2 models — import them from
oas._generated.models for type hints. The classes use extra='ignore'
so additive server fields (e.g., a new metric in MetricsResponse) don't
break older SDK versions — older SDKs will simply omit unknown fields.
License
MIT licensed.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file options_analysis_suite-0.1.0a2.tar.gz.
File metadata
- Download URL: options_analysis_suite-0.1.0a2.tar.gz
- Upload date:
- Size: 63.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
913a7764c9816ec2bdc958555610a3a80a419f9a035bd2d9bf92a67e087e8458
|
|
| MD5 |
24d430d9675ec0dcbeb1d908de38adc5
|
|
| BLAKE2b-256 |
f021c43fb2181aa886144c3eb6c9c202244bdbab843225bd474447bd42a7cf2e
|
Provenance
The following attestation bundles were made for options_analysis_suite-0.1.0a2.tar.gz:
Publisher:
publish.yml on Options-Analysis-Suite/options-analysis-suite-python
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
options_analysis_suite-0.1.0a2.tar.gz -
Subject digest:
913a7764c9816ec2bdc958555610a3a80a419f9a035bd2d9bf92a67e087e8458 - Sigstore transparency entry: 1399515769
- Sigstore integration time:
-
Permalink:
Options-Analysis-Suite/options-analysis-suite-python@e5e703c1bd8fcc30c3df21cc2aba5d8c29399493 -
Branch / Tag:
refs/tags/v0.1.0a2 - Owner: https://github.com/Options-Analysis-Suite
-
Access:
private
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@e5e703c1bd8fcc30c3df21cc2aba5d8c29399493 -
Trigger Event:
push
-
Statement type:
File details
Details for the file options_analysis_suite-0.1.0a2-py3-none-any.whl.
File metadata
- Download URL: options_analysis_suite-0.1.0a2-py3-none-any.whl
- Upload date:
- Size: 27.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
bb8f9a339869194560e038ec2ca97013cbed0a923ae9d3681d911d96d353c329
|
|
| MD5 |
7fd26ff2cf4deca492190fdbb3c78348
|
|
| BLAKE2b-256 |
359cdaa84b85007fc1d02def861072130ef8be22a3b5ccf0921621f3d869f506
|
Provenance
The following attestation bundles were made for options_analysis_suite-0.1.0a2-py3-none-any.whl:
Publisher:
publish.yml on Options-Analysis-Suite/options-analysis-suite-python
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
options_analysis_suite-0.1.0a2-py3-none-any.whl -
Subject digest:
bb8f9a339869194560e038ec2ca97013cbed0a923ae9d3681d911d96d353c329 - Sigstore transparency entry: 1399515775
- Sigstore integration time:
-
Permalink:
Options-Analysis-Suite/options-analysis-suite-python@e5e703c1bd8fcc30c3df21cc2aba5d8c29399493 -
Branch / Tag:
refs/tags/v0.1.0a2 - Owner: https://github.com/Options-Analysis-Suite
-
Access:
private
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@e5e703c1bd8fcc30c3df21cc2aba5d8c29399493 -
Trigger Event:
push
-
Statement type: