Building an AI agent? Start with /llms.txt for the full site index.
Market Structure & Reference
Cross-sectional equity factor VALUES (size / value / momentum / quality / low-vol families) — one row per (ticker, date, factor_name), each with its raw factor_value, family, definition, and formula_version. Factor values are COORDINATES only: no signal, no score, no buy/sell label. Not a forecast, not a recommendation.
GET /v2/datasets/factor-libraryThis dataset is in build and not yet queryable via the API. The coverage and honest limitations below are the real database state; it moves off "Building" once serving lands (targeted 8/1).
| Field | Type | Description |
|---|---|---|
factor_name | text | e.g. dividend_yield_z |
factor_value | numeric | raw coordinate |
factor_family | enum | size/value/momentum/quality/low_vol |
factor_definition | text | |
formula_version | text | |
as_of_source_date | date | PIT input date |
276,456 rows, 2026-05-08..2026-05-28 (a 3-week prototype window — NOT deep history yet). factor_value is a raw coordinate; as_of_source_date carries the input data date (PIT). formula_version pins the recipe. RED-LINE: zero signal/score/rating columns by design.
A real response from this endpoint. Rows are returned under "data", and provenance is carried in the shape shown below — it is not identical across datasets, so read this page's rather than assuming another's.
{ "dataset_id": "factor-library", "row_count": 3, "data": [ { "ticker": "2330", "trade_date": "2026-05-08", "factor_name": "mom_return_1m_z", "factor_value": 0.36200502, "factor_family": "momentum", "formula_version": "factor_library_v1.0.0", "as_of_source_date": null }, { "ticker": "2330", "trade_date": "2026-05-08", "factor_name": "mom_return_3m_z", "factor_value": 0.47261153, "factor_family": "momentum", "formula_version": "factor_library_v1.0.0", "as_of_source_date": null }, { "ticker": "2330", "trade_date": "2026-05-08", "factor_name": "mom_return_6m_z", "factor_value": 0.54743423, "factor_family": "momentum", "formula_version": "factor_library_v1.0.0", "as_of_source_date": null } ]}Captured from the live API on 2026-07-20.
curl "https://api.twmarketdata.com/v2/datasets/factor-library?symbol=2330" \ -H "X-API-Key: sk_live_..."| Parameter | Required | Type | Description |
|---|---|---|---|
symbol | Yes | string | Ticker, e.g. 2330. |
start_date | No | string (YYYY-MM-DD) | Start of the query range. |
end_date | No | string (YYYY-MM-DD) | End of the query range. |
limit | No | integer | Maximum rows to return. |
A first call:
import requests resp = requests.get( "https://api.twmarketdata.com/v2/datasets/factor-library", params={"symbol": "2330"}, headers={"X-API-Key": "sk_live_..."},)resp.raise_for_status()print(resp.json()["data"])With a date-range filter:
import requests # The full verified example — the same call with every supported filter set.resp = requests.get( "https://api.twmarketdata.com/v2/datasets/factor-library", params={"symbol": "2330"}, headers={"X-API-Key": "sk_live_..."},)resp.raise_for_status()for row in resp.json()["data"]: print(row)This endpoint is GET /v2/datasets/factor-library. The full machine-readable schema (parameters, security, response envelope) lives in the OpenAPI spec.