SPB Git forge

spb/wp15_uqo

Public MIT
3commits 1branches 1releases
7.6 MBsize
maindefault branch
3 min agolast push
TeX 53.6% Python 46.2%
14.0 KB

# ⚡ Faster, Wider, More Fragile?

UQO Working Paper No. 15 — The Evolution of Intraday Shock Propagation in U.S. Equity Markets, 1992–2026

Paper Journal version Python Data Reproducible Institution Author

TL;DR — Using 7.69 billion one-minute bars on the full listed and delisted U.S. equity cross-section (1992–2026), we track how intraday shocks propagate. (1) Isolated idiosyncratic shocks barely spread: across 1.85 million isolated ±6σ minute events, the market-wide response against matched within-stock placebos is bracketed between zero (difference-in-differences, −1 to −3×10⁻⁴) and about 2 % of the base rate (pre-level-stratified, +19×10⁻⁴) at 1–120 minutes, in every decade. (2) Transmission is concentrated: the shocked stock's twenty closest lagged-correlation neighbours respond (+64×10⁻⁴ at five minutes, +51 in singleton minutes) and this network channel rose from +28 (1990s) to +90 (2020s) — a rise that partly reflects sharper identification of neighbours as the Epps effect receded. (3) Common information is impounded within the minute (one-minute pairwise correlation 0.004 in 1996 vs 0.30 in 2015), ordinary extreme minutes became ~10× rarer after decimalisation (~100× from the wide-tick 1990s), and severe co-jump minutes are roughly ten times more frequent in 2008 and 2020 than in calm years. Modern markets absorb the idiosyncratic, transmit it narrowly, and synchronise on the systemic.


# 📌 Status

Item Value
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
SSRN not yet submitted
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)
Code & data reproducible from scripts/ (see Quick start); raw minute bars (88 GB) not redistributed

# 🎯 What this paper does

Has the U.S. equity market become faster, wider and more fragile at the intraday horizon? The paper answers with the longest and broadest minute-level panel assembled to date — every listed and delisted common stock from 1992 to 2026 — and three complementary measurement devices:

  1. Shock-propagation event studies: 1.85 million isolated ±6σ one-minute events, each matched to a within-stock placebo minute, tracked at horizons of 1 to 120 minutes for breadth (share of other stocks with a tail exceedance |z|>2), intensity, signed response, shock-magnitude gradient and network response (twenty nearest lagged-correlation neighbours);
  2. Epps curves: pairwise correlation as a function of sampling interval, by year;
  3. Co-jump counts: the number of stocks with extreme minute returns in the same minute, with a severity scale calibrated on calm, GFC and COVID periods.

All headline numbers are macro-generated from machine-readable registries (paper/results_macros.tex, 97 macros built by scripts/15_build_results_macros.py); in-text references to table entries quote the generated tables.

# 🏆 Headline results

Object Estimate
Panel 7,686,275,524 bars, 81,306 tickers, 221,957 listing spells
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
Market-wide breadth, ΔΔ 5 min / 30 min −1.04 (0.90) / −3.10 (1.01) ×10⁻⁴ (base rate ≈ 0.10)
Market-wide breadth, pre-level-stratified 5 / 30 min +19.5 (0.9) / +18.4 (1.0) ×10⁻⁴ (≈ 2 % of base rate) — upper bound
Pre-event level, real − placebo +40.3 (1.2) ×10⁻⁴ (shocks arrive in active minutes; differenced out)
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
Network response by decade (5 min) 1990s +28 → 2000s +30 → 2010s +81 → 2020s +90 (placebo contrast +200 / −41 / −44 / +68)
Extreme minute returns (>1 %), 1990s → 2010s 518 → 4.8 per 10,000 (÷108; 2002 → 2010s ÷10)
Epps: 1-min correlation, 1996 / 2015 / 2024 0.004 / 0.30 / 0.21
Severe co-jump minutes per 1,000, 2017–19 / 2008 / 2020 9.5 / 91 / 84 (1992–97: 128 — tick artefact, not comparable)
Robustness 11 designs (Table 8) + design diagnostics (Table 9) + network components (Table 10)

# 🗂 Repository layout

text
intraday-fragility/
├── config/                   # all parameters (YAML) — no magic constants in code
├── src/intraday_fragility/   # package: download, audit, cleaning, features, shocks, networks, econometrics, tables, figures
├── scripts/                  # 00_download_pilot … 17_revision_checks (numbered pipeline)
├── tests/                    # pytest (7 tests)
├── data/                     # manifests only (raw bars never committed)
├── outputs/
│   ├── estimates/            # machine-readable estimates (707 MB, not committed)
│   ├── diagnostics/          # audit JSON reports
│   ├── figures/, tables/     # generated figures (PDF+PNG with source CSV) and LaTeX tables
│   └── release/              # IRFA submission package (manuscript, anonymous, highlights, cover letter, title page, online appendix)
├── appendix/                 # Internet Appendix (internet_appendix.tex → .pdf)
├── docs/                     # DATA_AUDIT, DATA_DICTIONARY, DECISION_LOG, EMPIRICAL_DESIGN, LIMITATIONS, LITERATURE_MAP, REPRODUCIBILITY, COMPUTE_LOG
├── logs/                     # pipeline logs
├── STATUS.md                 # stage-by-stage progress log
└── paper/
    ├── main.tex              # UQO working-paper version (template cover) → main.pdf
    ├── main_irfa.tex         # journal version (elsarticle, IRFA) → main_irfa.pdf
    ├── main_irfa_anon.tex    # anonymous journal version → main_irfa_anon.pdf
    ├── highlights.tex        # Elsevier highlights
    ├── sections/, figures/, tables/, bibliography/references.bib, results_macros.tex

# 🚀 Quick start

bash
uv sync                                                 # or: pip install -e .
python -m intraday_fragility.cli probe-data
python -m intraday_fragility.cli download --start 1992-01 --end 2026-03   # 411 monthly parquet files, 87.7 GB
python -m intraday_fragility.cli verify-download
make                                                     # runs scripts/00 … 16 in order (see Makefile)
python scripts/15_build_results_macros.py                # → paper/results_macros.tex
cd paper && make                                         # UQO WP → main.pdf
cd paper && latexmk -pdf main_irfa.tex main_irfa_anon.tex   # journal + anonymous versions

Full download and cleaning run on the MacLustr cluster (see docs/COMPUTE_LOG.md); the estimation stages run on a 64 GB Apple-silicon node.

# 🗃 Data

Minute-level OHLCV bars from the Hugging Face dataset mito0o852/OHLCV-1m, pinned at revision 776328445b7ac6e7815ef3a483e9c8ded1eb6d56 (411 monthly Parquet files, 87.7 GB, 1992-01 → 2026-03, no missing months; upstream source Finnhub.io per the dataset card). Schema: UTC bar-start timestamp, unadjusted OHLC, integer volume, ticker; no zero-volume bars (missing minute = no trade). Delisted securities are present (only 22–26 % of 1992 tickers survive). Cleaning: exchange calendar truncation, split/reverse-split screens (6,944 events), OHLC-violation and duplicate screens, corporate-action filters before any variance-based measure. Full audit: docs/DATA_AUDIT.md; variable definitions: docs/DATA_DICTIONARY.md. The dataset card carries no licence — the raw data are therefore not redistributed (docs/LIMITATIONS.md).

# 🔬 Methodology

  1. Universe & cleaning (scripts/04–08, src/…/cleaning.py): monthly audits, split refinement, clean minute panel by listing spell.
  2. Aggregates (09–10): extreme-return frequencies, realised variance, Epps curves, staleness.
  3. 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.
  4. Co-jumps (13–14): market-wide extreme-minute counts and severity regimes.
  5. Inference (src/…/econometrics.py): event-clustered and month-cluster bootstrap standard errors.
  6. Robustness (16): 11 designs — post-decimalisation, mid-day, ex-announcement, calm/crisis, |z| ≥ 8/12, ex-non-common, placebo network.
  7. 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.
  8. Reporting (15): results macros, LaTeX tables, CVD-safe vector figures.

# 🖼 Figures & tables inventory

Figure Content
figP1_coverage, figP2_seasonality pilot coverage and intraday seasonality
figE1_coverage … figE9_splits universe coverage, survivorship, seasonality, concentration, extreme minutes, realised variance, staleness, Epps curves, splits
figF1_irf_decade propagation impulse responses by decade
figF2_evolution evolution of breadth vs network channel
figF3_gradient_state response gradient by liquidity tier and market state
figF4_network nearest-neighbour network response
figF5_cojumps co-jump counts and severity regimes

Tables (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.

# ⚠️ Limitations

  • Bars are trade-conditional (no zero-volume bars) and the venue scope (consolidated vs single venue) is not documented upstream.
  • Security-type classification relies on suffix heuristics; ETFs cannot be identified; non-common securities are excluded in robustness only.
  • Data licence unspecified on the dataset card: research use with citation, no redistribution of derived minute data.
  • Pre-2001 tick discreteness (52 % zero minute returns in 1996) precludes cross-regime comparisons of threshold-based series (extremes, co-jumps).
  • 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).
  • 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.

# 📝 Citation

bibtex
@techreport{boucher2026fragile,
  author      = {Boucher, Simon-Pierre},
  title       = {Faster, Wider, More Fragile? The Evolution of Intraday Shock Propagation in U.S. Equity Markets, 1992--2026},
  institution = {Universit\'e du Qu\'ebec en Outaouais, D\'epartement des sciences administratives},
  type        = {Working Paper},
  number      = {15},
  year        = {2026},
  month       = {October},
  note        = {Version 1.1}
}

# 👤 Author & contact

Simon-Pierre Boucher — Département des sciences administratives, Université du Québec en Outaouais (UQO), Gatineau, QC. 📧 simon-pierre.boucher@uqo.ca

# 🗒 Notes

  • 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).
  • 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.
  • Three PDFs are committed on purpose: main.pdf (working paper), main_irfa.pdf (journal), main_irfa_anon.pdf (anonymous review copy).
  • 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.
  • 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/).
  • Bibliography: 124 references, all verified against Crossref by DOI on 2026-10-17 (outputs/diagnostics/bibliography/).
  • Original project brief: docs/PROMPT_INITIAL_CLAUDE.md; development conventions: docs/CLAUDE.md.