Skip to content

Szigor-Research/verifiable-equity-data

Verifiable Equity Data

CI License

Build content-addressed, offline-verifiable snapshots from free US-listed equity data sources.

The project archives exact response bytes before normalization, records when each response was retrieved, publishes an explicit capability matrix, and proves that normalized artifacts can be rebuilt without network access. It is data plumbing and evidence infrastructure, not a bundled market-data database.

What It Collects

Capability Source Status
Current US-listed directory Nasdaq Trader symbol directories Observed at capture time
Issuer ticker/CIK crosswalk SEC ticker/exchange JSON Optional, partial identity
Raw daily bars Alpaca free IEX feed Optional, explicit symbols or bounded prefix
All-adjustment daily bars Alpaca free IEX feed Optional, stored separately from raw bars
Historical membership Repeated daily snapshots Prospective from first capture only
Corporate actions and delisting values No complete free authority Explicitly unavailable

This project does not claim survivorship-free history before collection begins. It does not turn current symbols into a historical universe, infer missing delisting proceeds, or treat one price provider as independently validated investment evidence.

Why Another Collector

Libraries such as OpenBB, Qlib, finagg, and yfinance make data access convenient. This project focuses on a different boundary:

  • source bytes are immutable and hashed;
  • source and retrieval timestamps are distinct;
  • normalized outputs are deterministic;
  • verification is offline and byte-for-byte;
  • missing capabilities remain machine-readable blockers;
  • credentials and authorization headers never enter the archive.

Install

python -m venv .venv
source .venv/bin/activate       # Windows: .venv\Scripts\activate
python -m pip install -e .

For development:

python -m pip install -e ".[dev]"

Quick Start

Capture the complete current directory without an account. Output must be outside a Git worktree.

ved preflight
ved snapshot --output /data/ved/directory-2026-07-20
ved verify /data/ved/directory-2026-07-20

Add an SEC issuer crosswalk by setting a real operator contact:

VED_SEC_USER_AGENT=Research Operator operator@example.org

Add bounded raw and adjusted Alpaca IEX bars with free Data API credentials:

VED_ALPACA_API_KEY_ID=...
VED_ALPACA_API_SECRET_KEY=...
ved preflight --require-bars
ved snapshot \
  --output /data/ved/bars-2026-07-20 \
  --symbol AAPL \
  --symbol MSFT \
  --start 2026-07-17 \
  --end 2026-07-17

--symbol can be repeated. --max-instruments N selects the first N normalized directory symbols deterministically. An unbounded price request is rejected.

The same workflow is available as a Python API:

from pathlib import Path

from verifiable_equity_data import SnapshotBuilder, verify_snapshot
from verifiable_equity_data.sources import UrllibFreeHTTPClient

builder = SnapshotBuilder(UrllibFreeHTTPClient())
result = builder.build(Path("/data/ved/current"), maximum_instruments=100)
verified = verify_snapshot(result.root)
assert verified.bundle_id == result.manifest.bundle_id

Snapshot Layout

snapshot/
├── manifest.json
├── source/
│   ├── <role>-<sha256>.bin
│   └── ...
├── normalized/
│   ├── corporate_actions.csv
│   ├── execution_bars.csv       # only when bars were requested
│   ├── feature_bars.csv         # only when bars were requested
│   ├── instruments.csv
│   ├── memberships.csv
│   └── security_directory.csv
└── quality/
    └── source_coverage.json

manifest.json binds every source and artifact path, byte count, row count, SHA-256 digest, retrieval timestamp, selected symbol, capability result, and acceptance blocker. ved verify reparses the archived Nasdaq, SEC, and Alpaca responses, rerenders every normalized file, and rejects any mismatch.

Data Flow

flowchart LR
    N["Nasdaq Trader"] --> A["Immutable source archive"]
    S["SEC identity"] --> A
    P["Alpaca IEX bars"] --> A
    A --> R["Deterministic offline rebuild"]
    R --> M["Content-addressed manifest"]
    R --> C["Capability matrix"]
    M --> V["ved verify"]
    C --> V
Loading

Source Terms

The Apache-2.0 license covers this software, not downloaded data. Users are responsible for each source's terms, account restrictions, pacing limits, and redistribution rules. The manifest records the relevant terms URL for every archived response.

Raw responses should remain local unless their source terms explicitly permit redistribution.

Project Status

Version 0.1 is an alpha evidence pipeline. The next planned capabilities are:

  1. daily snapshot-chain manifests and continuity verification;
  2. provider-neutral bar adapters;
  3. independent price overlap reports;
  4. source-bound corporate-action plugins;
  5. explicit delisting and terminal-value evidence.

See Snapshot Contract for the validation rules.

The implementation was originally developed inside Szigor Research's private JANOS market lab, then separated and generalized so the evidence layer can evolve in public without exposing JANOS research, data, credentials, or execution code.

License

Apache License 2.0. Copyright 2026 Szigor Research.

About

Content-addressed, replay-verifiable snapshots of free US-listed equity data sources.

Topics

Resources

License

Code of conduct

Contributing

Security policy

Stars

3 stars

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages