SPB Git forge

spb/wp15_uqo

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

# DECISION_LOG.md

Every major choice: date, decision, alternatives, reason, effect on interpretation, pre-specified vs data-driven, code/config reference.


2026-07-13 — Pin dataset revision. Decision: pin mito0o852/OHLCV-1m @ 776328445b7ac6e7815ef3a483e9c8ded1eb6d56. Alternatives: track main. Reason: reproducibility; the repo was modified as recently as 2026-05-03. Pre-specified (CLAUDE.md §3.1-B3). Ref: config/base.yaml.

2026-07-13 — Pilot months = 1992-06, 2009-06, 2025-12. Alternatives: crisis months (2008-10, 2020-03). Reason: one early/middle/recent per protocol; deliberately non-crisis so the pilot characterizes normal-times data quality; crisis months get audited in Stage C. Data-driven convenience. Ref: scripts/00_download_pilot.py.

2026-07-13 — Timestamp convention accepted as UTC, bar-start. Basis: empirical mapping to 09:30 ET session start in both EDT (1992-06) and EST (2025-12) months; seconds always zero. Effect: all session logic converts to America/New_York. Data-driven, verified. Ref: docs/DATA_AUDIT.md §4.

2026-07-13 — Session truncation by exchange calendar, not bar presence. Basis: 2025-12-24 half-day shows sparse post-13:00 prints (7% of morning volume) — likely off-exchange; treating them as RTH would contaminate close-time measures. Effect: RTH defined by XNYS calendar incl. early closes. Data-driven, verified. Ref: config/base.yaml (session.calendar).

2026-07-13 — Duplicate-key rule (provisional): aggregate (volume-sum, max high, min low, first open, last close). Basis: 14 duplicate pairs in 2025-12, all illiquid OTC, same minute/price, differing volume — consistent with feed corrections/multiple prints. Alternatives: keep-first, keep-max-volume, drop. Effect: negligible in baseline (liquid universe); sensitivity to be reported. Data-driven. Ref: config/sample_filters.yaml (baseline.duplicate_rule).

2026-07-13 — Code license MIT. For the research code only; data licensing unresolved (see DATA_AUDIT §1) — raw data are never redistributed in this repo. Routine choice.

2026-07-13 — Literature verification method. 45 references verified at DOI level via OpenAlex (Crossref for edge cases) in 4 parallel passes; metadata caveats (online-first vs print years for Diebold–Yılmaz 2012, Karolyi et al. 2012, Hautsch et al. 2015, Boehmer et al. 2021; incomplete registrar author deposits for Hasbrouck–Seppi 2001 and Barndorff-Nielsen–Shephard 2004) resolved in favor of print-issue citation. Attribution corrections: RoF 2015 systemic-risk paper is Hautsch–Schaumburg–Schienle (not Härdle et al.); JFQA AT-international paper is Boehmer–Fong–Wu 2021. Novelty scan (2018–2026) documented in LITERATURE_MAP.md; novelty claims in the manuscript are qualified by that search date. Pre-specified (§21.3). Ref: docs/LITERATURE_MAP.md, paper/bibliography/references.bib.

2026-07-13 — Stage C parameters. Spell break gap = 30 calendar days; split-candidate ratios {2,3,4,5,6,7,8,10,20,3/2,4/3,5/4} ± 2% and inverses, adjacent sessions ≤ 7 days apart. Alternatives: 14/60-day gaps, tighter ratio set. Over-inclusive by design at this stage; Stage D refines. Data-driven. Ref: scripts/05_stage_c_cross_audit.py, outputs/diagnostics/stage_c/.

2026-07-13 — Stage D parameters. (1) Split events: ratio ∈ {2..8,10,20,3/2}±1.5% (3/2: ±0.8%) + both-day dollar volume ≥ $50k + prev close ≥ $1 → 6,944 events (4,819 splits / 2,125 reverse); exclusion window = event day ±1 trading day (20,662 ticker-days). Alternatives: CRSP-style external validation (no license), wider windows. Data-driven, over-inclusion documented. (2) Universe screens (strictly lagged, month m uses m−1): days ≥ 10, median close ≥ $5, median RTH bars ≥ 100; top-{500,1000,3000} by prior-month RTH dollar volume. (3) Non-common heuristic from ticker shape (5th letter F/Y/Q/W/U; .WS/.U/.PR suffixes) — approximate, documented limitation (no security master in source). (4) Clean panel keeps ALL sessions with a session label; extended-hours panel = filter, not a second store. Early closes truncate rth via XNYS true close times. Refs: scripts/06–08, data/processed/minute/, data/metadata/universe_monthly.parquet.

2026-07-13 — Stage F baseline design + honest first result. Design: |z|≥6 shocks (MAD×seasonal standardization, lagged params, LOO EW market), isolation (|z_mkt|<1, simultaneous |z|>4 share ≤2%), outcomes at h∈{1..120} within session, estimand = ΔΔ (post−pre, real−matched placebo), day-block bootstrap. RESULT (1.85M events): average abnormal propagation ≈ 0 (ΔΔbreadth −1 to −3 ×10⁻⁴, tight SEs); no decade shows significant positive propagation; weak insignificant positive gradient at |z|>12. Interpretation: isolated idiosyncratic shocks to top-500 names are on average ABSORBED, not propagated — consistent with the "absorb ordinary shocks" half of the hypothesis. Pre-registered next probes (not p-hacking; measurement refinements specified in protocol §9): (i) cumulative breadth through h (not just at h); (ii) network-weighted receivers (correlation-neighbor breadth) — diffuse market-wide breadth may drown concentrated propagation; (iii) common-shock sample (the excluded simultaneous-extreme minutes) as the separate contagion object. All three are in CLAUDE.md §9.2/§10 and EMPIRICAL_DESIGN.md. Ref: outputs/estimates/stage_f_baseline.json.

2026-07-13 — Target journal changed to IRFA; provenance framing. User directive: prepare full submission for International Review of Financial Analysis. Manuscript converted to elsarticle (preprint,12pt,authoryear), elsarticle-harv bibliography; highlights, cover letter, declarations, data-availability produced (outputs/release/). Provenance framed as Finnhub.io-sourced aggregation with pinned public snapshot for reproducibility (user directive). JF-format main.tex retained for reference. Ref: paper/main_irfa.tex, outputs/release/.