Committing the prior uncommitted working-tree state that predates this session's data-source work (was already modified/untracked at session start) so the tree is clean before push. Includes: event-study + research report integrity/forward observation work, prices tests, research hash migration script, and the 2026-08-23/24 engineering-log + test-evidence notes. Verified green as part of the full 362-test suite.
8.7 KiB
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_idfor each release; release_published_ator equivalent provider release time;- explicit
known_atsemantics 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:
- provider documentation defining
provider_release_id,release_published_at, and the meaning ofknown_at; - the exact raw response/file as delivered by the provider;
- the provider's release manifest or metadata file;
- a correction/revision example showing whether a later revision changes a prior bar and how both vintages are retrieved;
- the provider timezone and session-calendar definition;
- a symbol mapping file for the requested SET instruments;
- delivery metadata proving when the archive was available to the client, not only when the market session occurred;
- 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