# Research data — provenance, and what is real money *(Checked into git deliberately: `data/` is gitignored working state, so this would not survive there. A copy sits at `data/research/README.md` next to the files themselves; this is the canonical one.)* Research-only datasets. **Nothing here is this system's own trading**, none of it is managed by any script in this repo, and none of it may be merged into an account journal or shown in the alpaca-trader UI (dan's explicit instruction, 2026-08-27). The repo now holds three separate sources of trade data. Confusing them would be the worst kind of error — two are real money and one is not. Always state which a number came from. | Dataset | Real money? | Who placed it | Where | |---|---|---|---| | **Alpaca `paper-main` / `Paper02qsr`** | **No** — paper | This system, automatically | `data//trades.jsonl` | | **Alpaca `live-1`** | **YES — real money** | This system, automatically | `data/live-1/trades.jsonl` | | **T212 round trips** | **YES — real money** | **dan, by hand** | `data/research/t212-round-trips.jsonl` | | **Mock orders** | **No** — simulated | yahoo-screener, signal-triggered | `data/research/mock-orders.jsonl` | ## t212-round-trips.jsonl Source: `GET localhost:4173/api/orders/round-trips` (yahoo-screener → Trading 212). Written by `scripts/backfill-t212-research.ts`. - **Real money, manually placed by dan.** Tests dan's EXECUTION of QSR, not the signal itself — he used "slightly different signals but basically the same as newlyA", and may have bought a day or more after a signal fired. - Scoped to **April 2026 onwards** — dan started QSR on T212 then. The feed also returns 75 older trips back to 2024-11 from a different, pre-QSR way of trading; those are excluded by default. - **`pctReturn` is severely censored by the disposition effect** — winners get sold and appear here, losers get held and don't. Hence an 89.7% "win rate", mean +16.19% against a median +4.63%, holds up to 615 days. Prefer `alpha` (return vs buy-and-hold, which controls for market beta); treat any absolute return from this file as an upper bound. ## mock-orders.jsonl Source: `GET localhost:4173/api/mock-orders` (yahoo-screener). Written by `scripts/backfill-mock-orders-research.ts`. - **Simulated. No broker ever saw these.** Never quote a figure from this file without saying so. - **Signal-generated, not hand-placed** — so this tests the SIGNAL, where the T212 file tests dan's execution of it. That difference is the point of having both. - Carries a `signal` field naming which signal fired (`setup`, `newlyA`, `triggered`), which is what makes "was newlyA right?" answerable at all — historical grade data does not exist beyond ~1 month, so it cannot be reconstructed any other way. - Buys pair to sells via `pairedId`. - **Most buys are still open** (259 of 330 at first snapshot). Scoring only closed pairs reproduces the censoring bias that produced three false findings on 2026-08-26 — fast winners close into the sample, laggards stay outside it. Use fixed-horizon forward returns computed from bars, for open and closed alike. ## Analysing any of this Use `src/journal/clustering.ts`. These datasets have the same repeated-row problem the Alpaca journal does: several orders share a ticker and a day, and outcomes are near-identical within a symbol-day. Collapse to symbol-day or session for significance, report the collapsed n, and never quote a raw row count as a sample size.