SPB Git forge

spb/wp15_uqo

Public MIT
3commits 1branches 1releases
7.6 MBsize
maindefault branch
1 h agolast push
TeX 53.6% Python 46.2%
11.6 KB · 181 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(36%20p.)-b31b1b?logo=latex&logoColor=white)](paper/main.pdf)7[![Journal version](https://img.shields.io/badge/IRFA%20manuscript-elsarticle%20(41%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(17%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) Markets absorb16> idiosyncratic shocks: across 1.85 million isolated ±6σ minute events, abnormal market-wide17> propagation against matched within-stock placebos is economically zero at 1–120 minutes, in every18> decade. (2) Transmission is concentrated and intensifying: the shocked stock's twenty closest19> lagged-correlation neighbours respond strongly (+64×10⁻⁴ abnormal jump probability at five20> minutes) and this network channel tripled from the 1990s (+28) to the 2020s (+90) while21> market-wide spillover stayed at zero. (3) Tail synchronisation migrated to the market-wide22> minute: ordinary extreme minute returns became 108× rarer than in the 1990s, the Epps curve23> flattened (one-minute pairwise correlation 0.004 in 1996 vs 0.30 in 2015), and severe co-jump24> minutes spike by orders of magnitude in 2008 and 2020. Modern markets absorb the idiosyncratic25> and transmit the systemic.2627---2829## 📌 Status3031| Item | Value |32|---|---|33| Version | 1.0 (July 2026) — UQO working-paper cover added 2026-10-17 |34| SSRN | not yet submitted |35| Journal | *International Review of Financial Analysis* — submission package ready in `outputs/release/` (manuscript, anonymous manuscript, highlights, cover letter, title page, online appendix), **not yet submitted** (`outputs/release/submission_checklist.md`: online appendix and data-licence note still open) |36| Code & data | reproducible from `scripts/` (see Quick start); raw minute bars (88 GB) not redistributed |3738## 🎯 What this paper does3940Has the U.S. equity market become faster, wider and more fragile at the intraday horizon? The41paper answers with the longest and broadest minute-level panel assembled to date — every listed42and delisted common stock from 1992 to 2026 — and three complementary measurement devices:43441. **Shock-propagation event studies**: 1.85 million isolated ±6σ one-minute events, each matched to45   a within-stock placebo minute, tracked at horizons of 1 to 120 minutes for breadth (share of other46   stocks jumping), gradient (response by liquidity/size tier) and network response (twenty nearest47   lagged-correlation neighbours);482. **Epps curves**: pairwise correlation as a function of sampling interval, by year;493. **Co-jump counts**: the number of stocks with extreme minute returns in the same minute, with a50   severity scale calibrated on calm, GFC and COVID periods.5152All headline numbers are macro-generated from machine-readable registries53(`paper/results_macros.tex`, built by `scripts/15_build_results_macros.py`); no number is hand-typed.5455## 🏆 Headline results5657| Object | Estimate |58|---|---|59| Panel | 7,686,275,524 bars, 81,306 tickers, 221,957 listing spells |60| Isolated ±6σ events (real / placebo) | 1,854,384 / 1,766,058 |61| Abnormal market-wide breadth, 5 min / 30 min | −1.04 (0.90) / −3.10 (1.01) ×10⁻⁴ — zero |62| Network response (20 neighbours), 5 / 15 / 30 min | +64.0 (1.8) / +55.4 (1.8) / +49.6 (1.8) ×10⁻⁴ |63| Network response by decade (5 min) | 1990s +28 → 2000s +30 → 2010s +81 → 2020s +90 |64| Extreme minute returns (>1%), 1990s → 2010s | 518 → 4.8 per million (÷108) |65| Epps: 1-min correlation, 1996 / 2015 / 2024 | 0.004 / 0.30 / 0.21 |66| Severe co-jump minutes, calm / GFC / COVID | 3.5 / 9.3 / 6.4 per 10,000 ; COVID severe share 83.7 % vs 9.53 % pre-COVID |67| Robustness (Table VIII) | 11 designs incl. placebo-network falsification, month-cluster bootstrap, post-decimalisation |6869## 🗂 Repository layout7071```72intraday-fragility/73├── config/                   # all parameters (YAML) — no magic constants in code74├── src/intraday_fragility/   # package: download, audit, cleaning, features, shocks, networks, econometrics, tables, figures75├── scripts/                  # 00_download_pilot … 16_robustness (numbered pipeline)76├── tests/                    # pytest (7 tests)77├── data/                     # manifests only (raw bars never committed)78├── outputs/79│   ├── estimates/            # machine-readable estimates (707 MB, not committed)80│   ├── diagnostics/          # audit JSON reports81│   ├── figures/, tables/     # generated figures (PDF+PNG with source CSV) and LaTeX tables82│   └── release/              # IRFA submission package (manuscript, anonymous, highlights, cover letter, title page, online appendix)83├── appendix/                 # Internet Appendix (internet_appendix.tex → .pdf)84├── docs/                     # DATA_AUDIT, DATA_DICTIONARY, DECISION_LOG, EMPIRICAL_DESIGN, LIMITATIONS, LITERATURE_MAP, REPRODUCIBILITY, COMPUTE_LOG85├── logs/                     # pipeline logs86├── STATUS.md                 # stage-by-stage progress log87└── paper/88    ├── main.tex              # UQO working-paper version (template cover) → main.pdf89    ├── main_irfa.tex         # journal version (elsarticle, IRFA) → main_irfa.pdf90    ├── main_irfa_anon.tex    # anonymous journal version → main_irfa_anon.pdf91    ├── highlights.tex        # Elsevier highlights92    ├── sections/, figures/, tables/, bibliography/references.bib, results_macros.tex93```9495## 🚀 Quick start9697```bash98uv sync                                                 # or: pip install -e .99python -m intraday_fragility.cli probe-data100python -m intraday_fragility.cli download --start 1992-01 --end 2026-03   # 411 monthly parquet files, 87.7 GB101python -m intraday_fragility.cli verify-download102make                                                     # runs scripts/00 … 16 in order (see Makefile)103python scripts/15_build_results_macros.py                # → paper/results_macros.tex104cd paper && make                                         # UQO WP → main.pdf105cd paper && latexmk -pdf main_irfa.tex main_irfa_anon.tex   # journal + anonymous versions106```107108Full download and cleaning run on the MacLustr cluster (see `docs/COMPUTE_LOG.md`); the109estimation stages run on a 64 GB Apple-silicon node.110111## 🗃 Data112113Minute-level OHLCV bars from the Hugging Face dataset `mito0o852/OHLCV-1m`, pinned at revision114`776328445b7ac6e7815ef3a483e9c8ded1eb6d56` (411 monthly Parquet files, 87.7 GB, 1992-01 → 2026-03,115no missing months; upstream source Finnhub.io per the dataset card). Schema: UTC bar-start116timestamp, unadjusted OHLC, integer volume, ticker; **no zero-volume bars** (missing minute = no117trade). Delisted securities are present (only 22–26 % of 1992 tickers survive). Cleaning: exchange118calendar truncation, split/reverse-split screens (6,944 events), OHLC-violation and duplicate119screens, corporate-action filters before any variance-based measure. Full audit:120`docs/DATA_AUDIT.md`; variable definitions: `docs/DATA_DICTIONARY.md`. The dataset card carries no121licence — the raw data are therefore not redistributed (`docs/LIMITATIONS.md`).122123## 🔬 Methodology1241251. **Universe & cleaning** (`scripts/04`–`08`, `src/…/cleaning.py`): monthly audits, split refinement, clean minute panel by listing spell.1262. **Aggregates** (`09`–`10`): extreme-return frequencies, realised variance, Epps curves, staleness.1273. **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.1284. **Co-jumps** (`13`–`14`): market-wide extreme-minute counts and severity regimes.1295. **Inference** (`src/…/econometrics.py`): event-clustered and month-cluster bootstrap standard errors.1306. **Robustness** (`16`): 11 designs — post-decimalisation, mid-day, ex-announcement, calm/crisis, |z| ≥ 8/12, ex-non-common, placebo network.1317. **Reporting** (`15`, `src/…/tables.py`, `figures.py`): results macros, LaTeX tables, CVD-safe vector figures.132133## 🖼 Figures & tables inventory134135| Figure | Content |136|---|---|137| `figP1_coverage`, `figP2_seasonality` | pilot coverage and intraday seasonality |138| `figE1_coverage` … `figE9_splits` | universe coverage, survivorship, seasonality, concentration, extreme minutes, realised variance, staleness, Epps curves, splits |139| `figF1_irf_decade` | propagation impulse responses by decade |140| `figF2_evolution` | evolution of breadth vs network channel |141| `figF3_gradient_state` | response gradient by liquidity tier and market state |142| `figF4_network` | nearest-neighbour network response |143| `figF5_cojumps` | co-jump counts and severity regimes |144145Tables (`paper/tables/*.tex`): data audit, sample cascade, propagation estimates by horizon and decade, gradient, network, co-jumps, Epps, robustness battery (Table VIII).146147## ⚠️ Limitations148149- Bars are trade-conditional (no zero-volume bars) and the venue scope (consolidated vs single venue) is not documented upstream.150- Security-type classification relies on suffix heuristics; non-common securities are excluded in robustness only.151- Data licence unspecified on the dataset card: research use with citation, no redistribution of derived minute data.152- Extended online appendix tables still to be finalised before journal submission.153154## 📝 Citation155156```bibtex157@techreport{boucher2026fragile,158  author      = {Boucher, Simon-Pierre},159  title       = {Faster, Wider, More Fragile? The Evolution of Intraday Shock Propagation in U.S. Equity Markets, 1992--2026},160  institution = {Universit\'e du Qu\'ebec en Outaouais, D\'epartement des sciences administratives},161  type        = {Working Paper},162  number      = {15},163  year        = {2026},164  month       = {July}165}166```167168## 👤 Author & contact169170**Simon-Pierre Boucher** — Département des sciences administratives,171Université du Québec en Outaouais (UQO), Gatineau, QC.172📧 [simon-pierre.boucher@uqo.ca](mailto:simon-pierre.boucher@uqo.ca)173174## 🗒 Notes175176- 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).177- `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.178- Three PDFs are committed on purpose: `main.pdf` (working paper), `main_irfa.pdf` (journal), `main_irfa_anon.pdf` (anonymous review copy).179- `outputs/estimates/` (707 MB) is excluded from git; regenerate with the pipeline.180- Original project brief: `docs/PROMPT_INITIAL_CLAUDE.md`; development conventions: `docs/CLAUDE.md`.181