# One-day collection audit / 13 November 2026

229 grouped rows from 189,352 genuine recorded frames: ES 74,297; MES 112,251; SYSTEM 2,804. Session is labelled in America/New_York and spans UTC midnight. hour_utc is the start of a UTC hourly bucket. product identifies the recorder product, collector_outcome preserves its recorded quality code, recorded_frames counts all rows in that group. basis identifies observed collector telemetry, not market quotes.

This is an actual complete-day grouping of the archived ES/MES hedge-recorder frame table. It is not the full all-product collector, every option contract, an uninterrupted BBO feed or a tradable historical dataset. A frame can be an unsuccessful request, health record or qualified observation. No bid/ask, IV, Greeks, strikes, contract identities or account identifiers are distributed.

## Useful exercise

In Excel: Insert a pivot table. Put hour_utc in Rows, collector_outcome in Columns, product in Filters and SUM(recorded_frames) in Values. Compare qualified frames with other outcomes. Sum all groups to 189352. Missing groups mean zero recorded rows for that product/outcome/hour, not an exchange outage. Never treat SYSTEM rows as market quotes.

In Python (standard library):

```python
import csv
from collections import Counter
counts = Counter()
with open("one-day-collection-audit.csv", newline="") as f:
    for row in csv.DictReader(f):
        counts[row["product"], row["collector_outcome"]] += int(row["recorded_frames"])
assert sum(counts.values()) == 189352
for key, count in sorted(counts.items()):
    print(key, count)
```

Source: original recorder-day Parquet frames. The source audit verified archive rows/hashes on 14 November; public export scanned only frame time, product and quality. These are operational counts, not licensed quote data or performance claims. Original collected prices remain private. No original observations changed.
