Experiments / expA_data_reality
expA_data_reality
Data reality check: what hfmarketdata.io actually returns (granularity, depth, timestamps, corporate actions, limits)
View benchmark implementation (benchmark.py) →
Hypothesis
Hypothesis — expA_data_reality#
Hypothesis
hfmarketdata.io advertises 1min→1day bars across stock/etf/futures/index/
fx/crypto plus daily options chains. We believe the advertised granularity
is real, but that session semantics, timestamp conventions, adjustment
behavior, missing-data patterns and response limits are NOT documented
precisely enough to design honest experiments — they must be measured.
Falsification criterion
Not a statistical hypothesis: this experiment FAILS if any downstream-
critical property (granularity, timestamp basis, adjustment arithmetic,
row caps, completeness) cannot be pinned down empirically, or if the
advertised 1-minute granularity turns out to be resampled/absent.
Artifact null(s)
None (no anomaly is claimed). This experiment EXISTS to seed the artifact
taxonomy that later experiments must beat.
Method
Eight probe families (A1–A8) through the single cached client:
inventory; history bounds per class (representative tickers AAPL, SPY, ES,
SPX, EURUSD, BTC); intraday session structure incl. a sparse ticker (AIZN);
daily-vs-1min aggregate comparison; AAPL 2020 4:1 split across all three
adjustment series; row-cap + pagination check on one year of SPY 1min;
latency profile; options coverage. All responses cached; manifest indexed.
Result
See analysis.md and results/expA_data_reality/20260812T054515Z/results.json.
54 network requests, 274 571 rows, 0 retries; re-run = 55 cache hits,
0 network requests.
Interpretation
Confidence n/a (no anomaly claim). Dataset is fit for Q1–Q3 research with
five load-bearing caveats (see data_source_profile.md §9).
Next experiment
expB_artifact_baselines: build the measured null distributions for
bid-ask bounce, stale prices, and non-synchronous lead-lag on THIS data.Analysis
Analysis — expA_data_reality#
Run: results/expA_data_reality/20260812T054515Z/results.json
(hardware manifest embedded; 54 network requests on first pass, 100 % cache
hits on re-run — the reproducibility anchor works).
What was established#
- Granularity is real. 1-minute bars are served for every advertised class; 1min is the floor. Options are daily chain snapshots (17 columns, with bid/ask/IV/Greeks/OI) over 67 quarters, 2010_q1 → 2026_q3_partial.
- Depth. stock/etf 1min from Jan 2000 (26+ years); futures & index from Jan 2008; fx from 2010; crypto from Apr 2013. Archive lags a few days (equities ended previous Friday on run date) — not a live feed.
- Timestamps are US/Eastern wall-clock, bar-start labeled, no TZ marker. Sessions: equities 04:00–19:59 ET, fx Sun 17:00 → Fri 16:59, futures ≈24 h, crypto 24/7, SPX prints until 16:20. Cross-asset closes are therefore non-synchronous by construction.
- Bars exist only where trades occurred — no zero-volume placeholders. Liquid RTH is complete (390/390); an illiquid name printed 38 bars/day.
- Daily ≠ aggregated 1min. Daily bars are RTH-only with the official auction close (312.41 vs 312.49) and include auction/consolidated volume missing from 1min bars (46.1 M vs 34.7 M extended / 25.7 M RTH).
- Adjustments verified on the AAPL 4:1 split (exact), and
adj_splitdivre-bases the whole history to the build date — adjusted series are not point-in-time stable. - Limits. Hard 50 000-row JSON cap (pagination verified: 218 006 rows of SPY 1min/2020, 0 dupes, monotonic); no rate limiting observed; 0.08–0.22 s small-request latency.
Interpretation (confidence framing)#
No anomaly is claimed; Level n/a. The experiment succeeded by its own criterion: every downstream-critical property was pinned down. Items 3–6 are direct seeds for the artifact taxonomy — each is a mechanism that can manufacture a fake anomaly (spurious lead-lag from non-synchronous sessions; spurious autocorrelation from stale prints; phantom overnight returns from auction-vs-last-bar close mismatch; look-ahead from rolling adjustment).
Verdict#
Complete. Proceed to expB_artifact_baselines (measure the artifact nulls); in parallel, Phase 1 literature work can start. Everything downstream must join bars explicitly on time with declared staleness rules — never implicit LOCF — and must state which close (auction vs last-bar) it uses.
README
expA_data_reality#
Data reality check: what hfmarketdata.io actually returns (granularity, depth, timestamps, corporate actions, limits)
Status: completed 2026-08-12 — see analysis.md and results/expA_data_reality/. Output: research/data_source_profile.md.
Result runs
- 20260812T054515Z / results.json 13.8 KiB