DashboardThree-Axis ProbesCrypto Shared Data PoolOverview — the central data layer

finding · findings/evolution/shared_data/README.md

Overview — the one shared data layer every test reads from

This is the front door to a folder that defines a single, frozen set of real market-data slices. Instead of each experiment grabbing its own data its own way, they all read from this one agreed-upon definition — so the answers stay comparable and reproducible.

In plain English. Think of this as the shared pantry for a research kitchen. Everyone who runs an experiment ("orthogonality" tests — checking whether a new measurement actually tells us something new, rather than repeating what we already measure) cooks from the same ingredients, cut the same way, from the same shelves. Because the ingredient list is locked and the cuts are identical every time, when two cooks disagree it's about the recipe — not because one used last week's milk and the other used a different brand. This page is the label on the pantry door: what's inside, why it's organised this way, and the house rules for using it.

What is this?

The folder is the hub-and-spoke entry point for the shared data layer: a short overview page (this one) that links out to deeper "spoke" documents. It holds a central, version-locked definition of real data slices that every orthogonality-related audit reads from. A "slice" here is one rectangle of data: a specific trading symbol, at a specific sensitivity setting, over a specific two-month calendar window.

Two different families of audits both feed off this same grid of slices:

What lives in the folder:

Why it matters

The whole point of an orthogonality study is to trust the comparison. If every experiment pulled data in a slightly different way, you could never tell whether two results disagreed because of the idea being tested or because of mismatched inputs. By locking the data definition once and having every audit read from it, the folder removes that ambiguity. It is deliberately a "non-audit" folder: it holds the raw material and its provenance, but it issues no verdicts of its own — the judgments happen in the sibling audit folders that build on top of it.

How it works

The big architecture change (2026-05-30)

Originally the plan was fetch-to-file-then-read: pull each slice down into a local Parquet file (a compact columnar data file) and read from that. That fetcher (fetch_multi_slice.py) was never actually run — its index file manifest.json is empty — and it was removed. The replacement, orthogonality_probe.py, queries each slice live and directly from ClickHouse (the fast analytics database where the bar data is stored, running on the "bigblack" server). There is no intermediate file step anymore.

One firm rule: the probe is read-only — it only runs SELECT queries and never writes to the database. The locked pre-spec.md stays the single source of truth for what's in scope, and the probe simply mirrors it.

What the probe measures

For each slice it computes Axis-1 orthogonality using two fast statistics:

It runs across all slices and reports, per candidate feature, how robust that "newness" looks from one slice to the next — i.e. is the feature consistently novel, or only in a lucky window?

Running it

python findings/evolution/shared_data/orthogonality_probe.py --smoke   # one-cell sanity check
python findings/evolution/shared_data/orthogonality_probe.py           # full 2021+ grid

The --smoke run is a quick one-cell sanity check; the full run sweeps the whole grid. Per-candidate results land in a results/ folder that is deliberately kept out of version control.

Key numbers

6
crypto symbols
21
symbol × threshold combos
21
active 2-month slices
441
total grid cells
438
populated cells
3
empty cells (ETH@100)
24
below-floor cells (flagged)
1000
min-bar reliability floor

Reading the grid: 21 symbol/sensitivity combinations × 21 time windows = 441 cells. 3 cells are empty, leaving 438 with real data; of those, 24 cells (mostly at the most-sensitive 750 setting) hold too few bars to be trusted, so they're flagged and left out of the averages rather than silently included.

The locked scope (the "pantry inventory")

dimensionwhat's in itplain meaning
SubstrateCrypto only — table opendeviationbar_cache.open_deviation_barsOne source: the crypto bar database. Forex was removed in v2.
SymbolsBTCUSDT · ETHUSDT · BNBUSDT · LTCUSDT · ADAUSDT · XRPUSDTSix major crypto pairs (Bitcoin, Ethereum, etc.).
Thresholds100, 250, 500, 750 dbps per symbol; ETH only 100 & 250; LTC@100 dropped (broken)The sensitivity dial for forming a bar. 1 dbps = 0.001%, so 250 dbps = a 0.25% price move. Smaller number = more sensitive = more bars.
Combos21 (symbol, threshold) pairsNot every symbol uses every setting, so it's 21 valid pairs, not 24.
Time slices21 windows, slice01…slice21, 2021-01 → 2026-02Each slice is a 2-month calendar window.

The spokes (where to go for depth)

Each spoke is a focused document you click into from the hub:

spokewhat it's forwhen to read
purpose.mdWhy this folder exists; how it relates to the two sibling auditsRead second
slicing-methodology.mdThe reasoning behind 24 × 2-month slices, alignment with Terry's design, bar-density math, symbol choicesTo understand why the slicing looks this way
pre-spec.md LOCKEDThe frozen scope (v2, crypto-only): active windows, symbols, threshold tiersTo know what's IN the dataset
scope-expansion-options.mdThe broader scopes (Options B and C) considered — a restore reference if scope ever widensTo add symbols / forex / thresholds
orthogonality_probe.py PROBEThe canonical program: reads each slice live, measures Axis-1 orthogonality, reports cross-slice robustnessTo measure orthogonality across slices
orthogonality_probe.mdPlain-English guide to the probe (read-only contract, floors, candidate registry)Read before running the probe
data-quality-notes.mdPer-cell quirks: LTC@100 empty, BTC/ETH start 2021-01-01, ETH@100 ends 2025-06-17Read before trusting any cell
slicing-robustness-findings.mdRobustness map of all 441 cells plus the slicing decisions and smoke-test validationTo gauge the slicing's robustness
manifest.json / manifest.mdThe old index schema from the Parquet designHistorical reference only

The house rules (how to use it)

Bottom line. This is the locked, read-only "single source of data truth" for the orthogonality research: one shared grid of 21 crypto symbol-settings × 21 two-month windows (441 cells, 438 with data), queried live from ClickHouse by one canonical probe — so every experiment compares apples to apples and no verdicts get baked into the data itself.