Skip to content

point‑in‑time platform sec edgar + 6 sources 587,689 rows

Evaluate and run AI agents against what was knowable at the time.

PIT keeps the public record on a clock and hands an agent only the rows that were public at the instant you name. The harness runs it with the network off and hashes the whole trajectory into a receipt.

$ pip install -e harness/

Get access — $79/mo Run a query first — no account

pit-harness is not on PyPI yet, so that line reads a checkout. The harness and the audit tool are Apache-2.0 and cost nothing. The data plans are paid by card through Stripe, and your first key is on the dashboard when you get back.

receipt · pit-harness 0.1.0 · run over the built release receipt_version 1

0 egress attemptsnetwork clean · guard fail_closed

valid
true
run_id
90e6dcddc2613fa9
body_sha256
sha256:c727e8aba4dea4555e5a1b38c8426aacdf74333a0634e0a90fb1d9e12d37fa75
bundle
pit-eval-sec-2022-11_2023-03
corpus_version
sha256:29336a245255fdc7be9b5b0b1a6e90053e958a78a58166dbefeaeedce05eea7a
arms × clocks
9 cells · main/redacted/shifted × leaky/dump/pit
rows per arm
2,617
trajectory
260 events · sha256:cf285bb1…1c29a8
positive_control
shifted/pit · 1 of 8 recovered · mask_leaks

The last line is the probe. It puts a date question to the agent on the shifted arm and scores the free-text answer against the true date. This run used the stub agent that ships with the harness, whose answer repeats the instant it was handed, so one of the eight items came back with the true date in it. The threshold is zero recoveries, so the verdict is mask_leaks and the shifted arm's delta does not measure memorisation on this run.

pit-harness verify receipt.json recomputes body_sha256 from the body on your machine — how a run is recorded

one basket, one strategy, three clocks · 88 8-K filings · 2022-11-01 to 2023-03-31 · indexed to 100

The three lines run the same strategy over the same basket and the same price series, and the clock is the only input that differs between them. The arm that joins on the filed date ends at +5.13%, and it gets there by buying, on 47 of the 64 filings that carry an acceptance receipt, a mean of 6.05 hours before EDGAR accepted them, so that curve was never available to trade. On the two clocks that were, the same 88 filings return −2.02% on the nightly dump and +0.18% on the acceptance receipt. The difference between those two is smaller than its own spread across trades; the methods page has the per-event table, the basket rule and the exclusions.

+5.13% Naive filed-date join. Enters at the open of the filing’s own index day. On 47 of the 64 stamped filings that open is earlier than the acceptance receipt, by a mean of 6.05 hours.

−2.02% Nightly EDGAR dump. Treats a filing as knowable at 23:59:59Z on its index day and enters the next open.

+0.18% PIT acceptance clock. Enters the open after the acceptance receipt, and falls back to the filer clock on the 24 filings that carry no receipt.

the walk-forward loop, with one line replaced

for t in days("2022-11-01", "2023-03-31"): - rows = filings[filings.date_filed <= t] + rows = pit.fetch_all_as_of(ticker=tk, source="sec.edgar", known_at=t) stance = analyst(rows)

10.3% of filings are accepted after the day boundary that join uses 1.1h median distance between the two clocks 343d the largest one 14,975 filings measured on the far side of that boundary

sample · GET /v1/sample/news · SIVB · 9–10 March 2023 walking the window

as_of

2023-03-09T20:00:00Z

1 / 12 captured instants

0 countstatus ok · coverage complete

published_at
count 0
available_at
409 · availability.sec.edgar/2023-03-09
committed_at
count 0

Nothing SVB had filed was public at this minute. Both sources are certified complete for 2023-03-09, so the zero is an answer and not a hole.

coverage.touched 5

  • identity.ticker/SIVB@2023-03-09
  • sec.edgar/2023-03-09
  • sec.edgar/frontier:2020-02-18..2023-03-10;holes=0
  • us.federal_register.pi/2023-03-09
  • us.federal_register.pi/frontier:2020-02-18..2023-03-10;holes=0

coverage.missing 0

[]

Twelve real responses, captured 2026-08-26. Every one of them is replayable — run it yourself

What the SVB cut returned, minute by minute

Drag the scrubber. It walks twelve responses this repo's own /v1/sample/news returned for SVB across 9–10 March 2023, and the count holds at zero until 2023-03-10T22:23:03Z, the minute EDGAR stamped the 8-K as accepted. The index line for that filing carries the date 20230310 and nothing finer, which is twenty-two hours earlier and is what a join on the date column would have used.

Each response also lists the days it read, and those keys change from 03-09 to 03-10 when the cut crosses midnight. Ask about a day nobody has read and the call answers 409 with that day named in coverage.missing.

$ curl "https://pit.aqx.llc/v1/sample/news?example=svb&as_of=2023-03-09T20:00:00Z"

The five timestamps on a row, and the three you can query

Fifteen products on one clock

The rows an agent reads carry the same clock as the window it is evaluated on and the server it calls in production, so a run can be checked end to end against one timeline.

1 · Ingest

Every row is kept as it arrived, with a receipt for the minute it arrived.

Point-in-Time API LIVE Live Feed LIVE Flat Files LIVE Data Connectors BUILDING

2 · Test

A frozen window with matched control arms, so contamination comes out as a number.

Evaluation Harness BUILDING Benchmark Datasets LIVE Post-Cutoff Holdouts LIVE Eval Gates BUILDING

3 · Run

Agents call these at runtime, and every answer names the clock it used.

MCP Server LIVE Deterministic Replay BUILDING Decision Audit Logs LIVE

4 · Prove

The audit checks the agent's rationale against the rows the run served.

Reasoning Audits BUILDING Contamination Certificates BUILDING Certified Leaderboard PLANNED Academy PLANNED

Every product, with its interface and its status

works with

All of these reach PIT over plain REST and JSON, so none of them needs an adapter. Agents can connect over MCP instead, and a Power key adds parquet files that DuckDB and pandas open directly.

The agent cited a $2.25B raise that appeared in none of its rows

The audit reads the run's trajectory, lifts every figure, name, date and event assertion out of the agent's written rationale, and checks each one against the rows that run served.

pit-audit run --trajectory trajectory.jsonl --out findings.json verdict · unsupported

unsupported: 9 flagged of 12 claims over 5 rationales (5 at or above entity), worst number
  2023-03-08 main/pit     number[number] unmatched '$2.25B'
  2023-03-08 main/pit     number[number] unmatched '$2.25 billion'
  2023-03-08 main/pit     event[entity]  unmatched 'Form 8-K (2023-03-08) announcing large …'
  cell main/pit:     unsupported, 6 flagged, worst number
  cell redacted/pit: grounded,    1 flagged, worst vague
  cell shifted/pit:  grounded,    2 flagged, worst vague

On the 2023-03-08 session the main arm had been served 86 rows whose entire text is a company name and a form type, such as SVB FINANCIAL GROUP 8-K. The strings 2.25, capital and receivership appear in none of them. The matcher considered 966 served numbers before flagging the claim, and the nearest one it found was 1,844,552,234, an accession number read as a magnitude, 18.0% away and outside the loosest rung on the ladder. SVB did announce a raise that size, and the figure reached the agent through its training data rather than through the run. How a claim is matched, and what a rung means

What it costs

These are founding prices: monthly, self-serve, and you keep the one you sign up at. Every plan reads the same rows, and the rate limit, the key count and the flat files are what differ.

$0 Open source. The harness and the reasoning audit, Apache-2.0, on your own machine. No account.

Evaluation Harness

$29 Researcher. One person running event studies by hand. 60 requests a minute, 3 keys.

Researcher · $29

$79 Power. A harness or a backtest reading the corpus whole. Adds the 415 parquet partitions and the SSE stream.

Power · $79

$499 Desk. A team where several people and services each hold a key. 1,200 a minute, 25 keys.

Desk · $499

Enterprise Annual contract, custom windows, DPAs. Priced by email.

operations@aqx.llc

SEC filings run continuously from 2022-11-01 to 2023-03-31, the live tape records forward from 2026-08-26, and outside those windows coverage is day by day — every certified day is listed on the coverage page. Reasoning Audits meter per decision audited with an allowance in every plan; certificates price flat per run. Every plan covers work you do for yourself or your employer; if your own users end up holding PIT data you need a commercial license, which we price by email.

/health not read yet corpus_version sha256:29336a24…eea7a rows 587,689 span 2008-09-01..2024-08-06 written into this page on 2026-08-26; the bar rereads both endpoints on load