SPB Git forge

spb/wp15_uqo

Public MIT
3commits 1branches 1releases
7.6 MBsize
maindefault branch
54 min agolast push
TeX 53.6% Python 46.2%
14.0 KB · 191 lines markdown
Rendered Raw Blame History
1<!-- Author: Simon-Pierre Boucher — simon-pierre.boucher@uqo.ca -->2# ⚡ Faster, Wider, More Fragile?34**UQO Working Paper No. 15** — *The Evolution of Intraday Shock Propagation in U.S. Equity Markets, 1992–2026*56[![Paper](https://img.shields.io/badge/paper-PDF%20(43%20p.)-b31b1b?logo=latex&logoColor=white)](paper/main.pdf)7[![Journal version](https://img.shields.io/badge/IRFA%20manuscript-elsarticle%20(50%20p.)-b31b1b?logo=latex&logoColor=white)](paper/main_irfa.pdf)8[![Python](https://img.shields.io/badge/python-3.12%2B%20·%20uv-3776AB?logo=python&logoColor=white)](pyproject.toml)9[![Data](https://img.shields.io/badge/data-7.69%20bn%20one--minute%20bars%20·%2081%2C306%20tickers-4051b5)](docs/DATA_AUDIT.md)10[![Reproducible](https://img.shields.io/badge/reproducible-end--to--end%20pipeline%20(18%20scripts)-2e7d32)](scripts/)11[![Institution](https://img.shields.io/badge/UQO-D%C3%A9pt.%20des%20sciences%20administratives-16365c)](https://uqo.ca)12[![Author](https://img.shields.io/badge/author-Simon--Pierre%20Boucher-16365c)](mailto:simon-pierre.boucher@uqo.ca)1314> **TL;DR** — Using 7.69 billion one-minute bars on the full listed *and delisted* U.S. equity15> cross-section (1992–2026), we track how intraday shocks propagate. (1) Isolated idiosyncratic16> shocks barely spread: across 1.85 million isolated ±6σ minute events, the market-wide response17> against matched within-stock placebos is bracketed between zero (difference-in-differences,18> −1 to −3×10⁻⁴) and about 2 % of the base rate (pre-level-stratified, +19×10⁻⁴) at 1–120 minutes,19> in every decade. (2) Transmission is concentrated: the shocked stock's twenty closest20> lagged-correlation neighbours respond (+64×10⁻⁴ at five minutes, +51 in singleton minutes) and21> this network channel rose from +28 (1990s) to +90 (2020s) — a rise that partly reflects sharper22> identification of neighbours as the Epps effect receded. (3) Common information is impounded23> within the minute (one-minute pairwise correlation 0.004 in 1996 vs 0.30 in 2015), ordinary extreme24> minutes became ~10× rarer after decimalisation (~100× from the wide-tick 1990s), and severe co-jump25> minutes are roughly ten times more frequent in 2008 and 2020 than in calm years. Modern markets26> absorb the idiosyncratic, transmit it narrowly, and synchronise on the systemic.2728---2930## 📌 Status3132| Item | Value |33|---|---|34| Version | **1.1 (October 2026) — revised 2026-10-17** after a full editorial-board review (`docs/REVIEW-REPORT.md`, `docs/CHANGELOG-REVISION.md`); v1.0 = July 2026, tag `pre-revision-20261017` |35| SSRN | not yet submitted |36| Journal | *International Review of Financial Analysis* — submission package **regenerated for v1.1** in `outputs/release/` (manuscript 50 p., anonymous manuscript, highlights, cover letter, title page, online appendix), **not yet submitted**; before submitting: complete acknowledgments/funding, re-run the novelty scan, check the current Guide for Authors (`outputs/release/submission_checklist.md`) |37| Code & data | reproducible from `scripts/` (see Quick start); raw minute bars (88 GB) not redistributed |3839## 🎯 What this paper does4041Has the U.S. equity market become faster, wider and more fragile at the intraday horizon? The42paper answers with the longest and broadest minute-level panel assembled to date — every listed43and delisted common stock from 1992 to 2026 — and three complementary measurement devices:44451. **Shock-propagation event studies**: 1.85 million isolated ±6σ one-minute events, each matched to46   a within-stock placebo minute, tracked at horizons of 1 to 120 minutes for breadth (share of other47   stocks with a tail exceedance |z|>2), intensity, signed response, shock-magnitude gradient and48   network response (twenty nearest lagged-correlation neighbours);492. **Epps curves**: pairwise correlation as a function of sampling interval, by year;503. **Co-jump counts**: the number of stocks with extreme minute returns in the same minute, with a51   severity scale calibrated on calm, GFC and COVID periods.5253All headline numbers are macro-generated from machine-readable registries54(`paper/results_macros.tex`, 97 macros built by `scripts/15_build_results_macros.py`); in-text55references to table entries quote the generated tables.5657## 🏆 Headline results5859| Object | Estimate |60|---|---|61| Panel | 7,686,275,524 bars, 81,306 tickers, 221,957 listing spells |62| Isolated ±6σ events (real / placebo) | 1,854,384 / 1,766,058 (match rate 95.2 %; 71 % in the 1990s); 22 % of events alone in their minute |63| Market-wide breadth, ΔΔ 5 min / 30 min | −1.04 (0.90) / −3.10 (1.01) ×10⁻⁴ (base rate ≈ 0.10) |64| Market-wide breadth, pre-level-stratified 5 / 30 min | +19.5 (0.9) / +18.4 (1.0) ×10⁻⁴ (≈ 2 % of base rate) — upper bound |65| Pre-event level, real − placebo | +40.3 (1.2) ×10⁻⁴ (shocks arrive in active minutes; differenced out) |66| Network response (20 neighbours), 5 / 15 / 30 min | +64.0 (1.8) / +55.4 (1.8) / +49.6 (1.8) ×10⁻⁴; +51 (2.5) in singleton minutes; ticker-cluster SE 4.7 |67| Network response by decade (5 min) | 1990s +28 → 2000s +30 → 2010s +81 → 2020s +90 (placebo contrast +200 / −41 / −44 / +68) |68| Extreme minute returns (>1 %), 1990s → 2010s | 518 → 4.8 per 10,000 (÷108; 2002 → 2010s ÷10) |69| Epps: 1-min correlation, 1996 / 2015 / 2024 | 0.004 / 0.30 / 0.21 |70| Severe co-jump minutes per 1,000, 2017–19 / 2008 / 2020 | 9.5 / 91 / 84 (1992–97: 128 — tick artefact, not comparable) |71| Robustness | 11 designs (Table 8) + design diagnostics (Table 9) + network components (Table 10) |7273## 🗂 Repository layout7475```76intraday-fragility/77├── config/                   # all parameters (YAML) — no magic constants in code78├── src/intraday_fragility/   # package: download, audit, cleaning, features, shocks, networks, econometrics, tables, figures79├── scripts/                  # 00_download_pilot … 17_revision_checks (numbered pipeline)80├── tests/                    # pytest (7 tests)81├── data/                     # manifests only (raw bars never committed)82├── outputs/83│   ├── estimates/            # machine-readable estimates (707 MB, not committed)84│   ├── diagnostics/          # audit JSON reports85│   ├── figures/, tables/     # generated figures (PDF+PNG with source CSV) and LaTeX tables86│   └── release/              # IRFA submission package (manuscript, anonymous, highlights, cover letter, title page, online appendix)87├── appendix/                 # Internet Appendix (internet_appendix.tex → .pdf)88├── docs/                     # DATA_AUDIT, DATA_DICTIONARY, DECISION_LOG, EMPIRICAL_DESIGN, LIMITATIONS, LITERATURE_MAP, REPRODUCIBILITY, COMPUTE_LOG89├── logs/                     # pipeline logs90├── STATUS.md                 # stage-by-stage progress log91└── paper/92    ├── main.tex              # UQO working-paper version (template cover) → main.pdf93    ├── main_irfa.tex         # journal version (elsarticle, IRFA) → main_irfa.pdf94    ├── main_irfa_anon.tex    # anonymous journal version → main_irfa_anon.pdf95    ├── highlights.tex        # Elsevier highlights96    ├── sections/, figures/, tables/, bibliography/references.bib, results_macros.tex97```9899## 🚀 Quick start100101```bash102uv sync                                                 # or: pip install -e .103python -m intraday_fragility.cli probe-data104python -m intraday_fragility.cli download --start 1992-01 --end 2026-03   # 411 monthly parquet files, 87.7 GB105python -m intraday_fragility.cli verify-download106make                                                     # runs scripts/00 … 16 in order (see Makefile)107python scripts/15_build_results_macros.py                # → paper/results_macros.tex108cd paper && make                                         # UQO WP → main.pdf109cd paper && latexmk -pdf main_irfa.tex main_irfa_anon.tex   # journal + anonymous versions110```111112Full download and cleaning run on the MacLustr cluster (see `docs/COMPUTE_LOG.md`); the113estimation stages run on a 64 GB Apple-silicon node.114115## 🗃 Data116117Minute-level OHLCV bars from the Hugging Face dataset `mito0o852/OHLCV-1m`, pinned at revision118`776328445b7ac6e7815ef3a483e9c8ded1eb6d56` (411 monthly Parquet files, 87.7 GB, 1992-01 → 2026-03,119no missing months; upstream source Finnhub.io per the dataset card). Schema: UTC bar-start120timestamp, unadjusted OHLC, integer volume, ticker; **no zero-volume bars** (missing minute = no121trade). Delisted securities are present (only 22–26 % of 1992 tickers survive). Cleaning: exchange122calendar truncation, split/reverse-split screens (6,944 events), OHLC-violation and duplicate123screens, corporate-action filters before any variance-based measure. Full audit:124`docs/DATA_AUDIT.md`; variable definitions: `docs/DATA_DICTIONARY.md`. The dataset card carries no125licence — the raw data are therefore not redistributed (`docs/LIMITATIONS.md`).126127## 🔬 Methodology1281291. **Universe & cleaning** (`scripts/04`–`08`, `src/…/cleaning.py`): monthly audits, split refinement, clean minute panel by listing spell.1302. **Aggregates** (`09`–`10`): extreme-return frequencies, realised variance, Epps curves, staleness.1313. **Shock detection & propagation** (`11`–`14`, `src/…/shocks.py`, `networks.py`): isolated ±6σ events, matched within-stock placebos, breadth / gradient / network responses at 1–120 min, difference-in-differences by decade.1324. **Co-jumps** (`13`–`14`): market-wide extreme-minute counts and severity regimes.1335. **Inference** (`src/…/econometrics.py`): event-clustered and month-cluster bootstrap standard errors.1346. **Robustness** (`16`): 11 designs — post-decimalisation, mid-day, ex-announcement, calm/crisis, |z| ≥ 8/12, ex-non-common, placebo network.1357. **Design diagnostics** (`17`, added 2026-10-17, from stored event files): pre-event levels, co-arrival classes, pre-level-stratified estimator, ticker-cluster bootstrap, signed response, network-differential components by decade.1368. **Reporting** (`15`): results macros, LaTeX tables, CVD-safe vector figures.137138## 🖼 Figures & tables inventory139140| Figure | Content |141|---|---|142| `figP1_coverage`, `figP2_seasonality` | pilot coverage and intraday seasonality |143| `figE1_coverage` … `figE9_splits` | universe coverage, survivorship, seasonality, concentration, extreme minutes, realised variance, staleness, Epps curves, splits |144| `figF1_irf_decade` | propagation impulse responses by decade |145| `figF2_evolution` | evolution of breadth vs network channel |146| `figF3_gradient_state` | response gradient by liquidity tier and market state |147| `figF4_network` | nearest-neighbour network response |148| `figF5_cojumps` | co-jump counts and severity regimes |149150Tables (`paper/tables/*.tex`): sample construction (1), baseline propagation by horizon (2), design diagnostics (3), network mechanism (4), network components by decade (5), robustness battery (6); pilot summary and summary by decade in the online appendix.151152## ⚠️ Limitations153154- Bars are trade-conditional (no zero-volume bars) and the venue scope (consolidated vs single venue) is not documented upstream.155- Security-type classification relies on suffix heuristics; ETFs cannot be identified; non-common securities are excluded in robustness only.156- Data licence unspecified on the dataset card: research use with citation, no redistribution of derived minute data.157- Pre-2001 tick discreteness (52 % zero minute returns in 1996) precludes cross-regime comparisons of threshold-based series (extremes, co-jumps).158- Neighbour sets are identified from one-minute residual correlations; the secular rise of the network channel combines transmission and measurement precision (see `docs/REVIEW-REPORT.md` §8 for the analyses needed to separate them, not executed: raw data required).159- Real events arrive in minutes of elevated ambient activity; the market-wide response is bracketed (0 to ≈ 2 % of base rate), not pinned at zero.160161## 📝 Citation162163```bibtex164@techreport{boucher2026fragile,165  author      = {Boucher, Simon-Pierre},166  title       = {Faster, Wider, More Fragile? The Evolution of Intraday Shock Propagation in U.S. Equity Markets, 1992--2026},167  institution = {Universit\'e du Qu\'ebec en Outaouais, D\'epartement des sciences administratives},168  type        = {Working Paper},169  number      = {15},170  year        = {2026},171  month       = {October},172  note        = {Version 1.1}173}174```175176## 👤 Author & contact177178**Simon-Pierre Boucher** — Département des sciences administratives,179Université du Québec en Outaouais (UQO), Gatineau, QC.180📧 [simon-pierre.boucher@uqo.ca](mailto:simon-pierre.boucher@uqo.ca)181182## 🗒 Notes183184- Numbering: the project was first filed as `UQO_WP_001`; it is **Working Paper No. 15** since 2026-10-17 (No. 1 is the amenity-capitalisation paper).185- `paper/main.tex` (UQO cover, template of `Recherche-UQO/_modele-working-paper`) was created on 2026-10-17 from the IRFA manuscript; the pre-existing skeleton (“Preliminary — do not cite”) was discarded. Scientific content is identical to `main_irfa.tex`; only the cover, bibliography style (`aer`) and layout differ.186- Three PDFs are committed on purpose: `main.pdf` (working paper), `main_irfa.pdf` (journal), `main_irfa_anon.pdf` (anonymous review copy).187- `outputs/estimates/` (707 MB) is excluded from git; regenerate with the pipeline. `outputs/diagnostics/revision_checks.json` is a committed copy of the 2026-10-17 diagnostics registry.188- **Revision 2026-10-17 (v1.1)**: full editorial-board review — `docs/REVIEW-REPORT.md` (diagnosis, methodology verdicts, literature, maturity) and `docs/CHANGELOG-REVISION.md` (audit trail of every correction, references added/removed, reanalyses). The IRFA package in `outputs/release/` was regenerated from v1.1; if the sections change again, regenerate it (`latexmk -pdf main_irfa.tex main_irfa_anon.tex`, appendix, highlights, then copy to `outputs/release/`).189- Bibliography: 124 references, all verified against Crossref by DOI on 2026-10-17 (`outputs/diagnostics/bibliography/`).190- Original project brief: `docs/PROMPT_INITIAL_CLAUDE.md`; development conventions: `docs/CLAUDE.md`.191