# Price Provider Feasibility — 2026-08-24 ## Decision **No candidate passes `pit-daily-v1` from public evidence currently available.** The repository must not add a provider adapter that emits `point_in_time=true` yet. Existing Yahoo/revised vendor history remains `quality=revised_vendor_history` and `point_in_time=false`. This is a source-evidence decision, not a statement that the candidates cannot provide the required semantics under a commercial contract. ## Gate used A provider must be able to supply an evidence-bearing archive with all of the following: - stable `provider_release_id` for each release; - `release_published_at` or equivalent provider release time; - explicit `known_at` semantics that can be mapped to the provider release time; - daily bars with session date, OHLC, adjusted close, volume, and market timezone; - raw payload and normalized snapshot retained immutably; - a manifest binding release identity, period, symbols, raw hash, normalized hash, parser version, and source URL; - correction/revision behavior documented well enough to replay what was knowable at the decision time; - evidence that the SET symbols and SET50 benchmark requested by this project are covered. The local implementation enforces this as `archive_contract=pit-daily-v1`; the implementation itself is not provider evidence. ## Candidate matrix | Candidate | Publicly verified capability | PIT evidence gap | Decision | |---|---|---|---| | SET Historical Data Request | SET offers historical trading/statistics data as a one-time service, with data sent by email after payment. [1] | No public release ID per historical vintage, release publication time, known-at semantics, immutable archive contract, or correction replay semantics. | **Reject for PIT claim**. Useful as a historical data content source only until SET supplies a release/archive contract. | | SETSMART | SETSMART contains real-time and historical trading information for securities, derivatives, and indices. [2] | Public page does not establish timestamped historical snapshots, release identity, known-at semantics, or immutable archive replay. | **Not sufficient**. Do not build a PIT adapter from the web UI description alone. | | SMART Marketplace | SET describes an API platform with historical intraday data and equity EOD trading price/statistics. [3] | Public page does not establish per-release identity, release publication time, historical corrections/revisions, or immutable PIT archive semantics. | **Promising but unproven**. Request the API/archive data contract before implementation. | | ICE SET data | ICE advertises historical and end-of-day SET data, native exchange timestamps plus ICE UTC system timestamps, and an ICE historical archive. [4] [7] | The public pages do not prove that the SET daily archive exposes provider release IDs, release publication times, or point-in-time correction/replay semantics. Coverage and fields for this project also require confirmation. | **Best commercial candidate; conditional**. Ask ICE for a concrete sample archive and contract. | | LSEG Tick History / S3 Direct | LSEG explicitly advertises full historical market data and point-in-time updates through S3 Direct, with persistent access in the customer's S3 environment. [5] [6] | Public material still does not prove that SET is covered for the requested symbols or expose the release/update metadata needed to map each daily bar to `known_at=provider_release_time`. The point-in-time claim is strong, but the SET-specific evidence packet is missing. | **Strongest PIT candidate; not yet accepted**. Request SET venue coverage, sample files, release/update metadata, and revision replay evidence before writing an adapter. | | Databento Historical / Corporate Actions | Databento's venue page lists the Stock Exchange of Thailand, and its market-data pages describe aggregates through day-level bars, point-in-time instrument definitions, and nanosecond event timestamps. [8] [10] [11] | Databento's explicit PIT/replay contract is for corporate-action records: records are retained by `ts_record` and described as known at points in time. [9] The public market-data material does not establish price-bar release IDs, release publication times, client availability/`known_at`, or correction-vintage replay for SET prices. | **Reject for PIT price claim**. Retain as a possible SET coverage/reference-data lead; do not build a price adapter or promote its event timestamps to `known_at`. | | Exchange Data International (EDI) | EDI advertises daily EOD pricing across 170+ exchanges, OHLCV-style closing data, API/S3/SFTP delivery, and Thailand Stock Exchange coverage identified as `XBKK`; its July 2025 ETA sheet lists confirmed Thailand equity delivery at 14:30 GMT. [12] [14] | EDI documents unconfirmed-to-confirmed republish and correction files in `Repush1/2/3`, but its FAQ says there is currently no time-series database for EOD prices. [12] [13] Public material does not establish stable provider release IDs, actual release-published timestamps per file, immutable retention, or retrievable vintage manifests. | **Closest conditional candidate; not accepted**. Request a customer evidence packet before writing an adapter. | ## Required provider evidence packet Before writing a production adapter, obtain one complete historical sample covering at least one SET symbol and the SET50 benchmark. The sample should include: 1. provider documentation defining `provider_release_id`, `release_published_at`, and the meaning of `known_at`; 2. the exact raw response/file as delivered by the provider; 3. the provider's release manifest or metadata file; 4. a correction/revision example showing whether a later revision changes a prior bar and how both vintages are retrieved; 5. the provider timezone and session-calendar definition; 6. a symbol mapping file for the requested SET instruments; 7. delivery metadata proving when the archive was available to the client, not only when the market session occurred; 8. licensing/retention terms that permit immutable local replay for internal research and paper testing. The fixture is accepted only if the complete packet can be normalized into the existing contract and replayed after changing neither the raw payload nor its manifest. ## Implementation decision No files under `backend/app/` or `backend/scripts/` were changed for this feasibility pass. This avoids creating a fake adapter around a source whose PIT semantics are still unverified. The next implementation action is one of: - obtain a **market-data provider evidence packet** from EDI first, because its public docs expose SET coverage and correction/re-push behavior; this means provider documentation plus a representative market-data sample, not customer/vendor business data; or - build the smallest ICE adapter if ICE supplies a valid evidence packet; or - build the smallest LSEG adapter if LSEG supplies a valid evidence packet; or - keep the gate blocked and document the provider rejection if neither does. Databento was checked as an additional candidate. Its public documentation is useful evidence for SET venue presence and PIT corporate-action history, but it does not close the PIT **price-vintage** gate. No Databento price adapter is justified from the public material currently available. [8] [9] [11] EDI is currently the closest public price-feed lead: its correction/re-push workflow and confirmed Thailand ETA are relevant to vintage capture, but an ETA is not an actual per-release publication timestamp and the public contract still lacks the immutable release metadata required by `pit-daily-v1`. Treat EDI as a request-for-evidence path, not as a qualified provider. [12] [13] [14] In parallel, continue collecting BOT **independent** releases. Repeated observations of one published release still do not count toward the 12-release threshold. ## Sources [1] https://www.set.or.th/en/services/connectivity-and-data/data/historical [2] https://www.set.or.th/en/services/connectivity-and-data/data/web-based [3] https://www.set.or.th/en/services/connectivity-and-data/data/smart-marketplace [4] https://developer.ice.com/fixed-income-data-services/catalog/stock-exchange-thailand-set [5] https://www.lseg.com/en/data-analytics/market-data/data-feeds/tick-history [6] https://www.lseg.com/en/data-analytics/market-data/data-feeds/tick-history/s3-direct [7] https://www.ice.com/fixed-income-data-services/access-and-delivery/connectivity-and-feeds/ice-consolidated-history [8] https://databento.com/venues [9] https://databento.com/docs/venues-and-datasets/corporate-actions [10] https://databento.com/historical [11] https://databento.com/equities [12] https://www.exchange-data.com/product/end-day-pricing-data [13] https://www.exchange-data.com/faqs-end-of-day-prices [14] https://www.exchange-data.com/wp-content/uploads/2025/09/ETA-Coverage-17-July-2025.xls