SPB Git forge

spb/wp6_uqo

Public
3commits 1branches 1releases
6.7 MBsize
maindefault branch
21 min agolast push
TeX 62.4% Python 37.5%
11.1 KB

# 🌐 Intraday Volatility Transmission Across Asset Classes

UQO Working Paper No. 6 — A Connectedness Analysis of Equities, Foreign Exchange, Commodities, and Cryptocurrencies

Paper Python Data Reproducible Institution Author

TL;DR — Daily realized volatility is built from 5-minute bars (2008–2026) for 10 instruments — equity futures (ES, NQ), FX (EURUSD, USDJPY, GBPUSD), commodities (GC, CL), crypto (BTC, ETH) and the VIX — and the Diebold–Yilmaz connectedness of log RV is estimated on the 2,514 trading days common to all series (2016-03 → 2026-03; VAR(4), 10-day GFEVD, residual-bootstrap 90 % intervals). Total spillover is 54.8 % [53.1, 56.9]. ES and NQ are the only robust net transmitters (+36.0 / +25.6 pp); the RV of the VIX (−20.6), crude oil (−14.2) and sterling (−13.2) are net receivers; BTC/ETH net positions are indistinguishable from zero. Crypto's exposure to traditional assets rises from < 10 % of forecast-error variance (2017, 2019) to 20–46 % (2020–2025), with the flow running from U.S. equities to crypto: in the spot-ETF era BTC is a significant net receiver (−12.4 [−20.4, −2.1]). Connectedness peaks in 2025 (71.5 %). Intraday (time stamps converted from Eastern to UTC), the U.S. cash session generates 53–63 % of equity/VIX daily variance while bitcoin's hourly profile is nearly flat (peak/trough 1.2); weekend bitcoin volatility does not predict Monday equity volatility.


# 📌 Status

Item Value
Version 1.1 (October 2026) — revised 2026-10-17 by the editorial-board review (v1.0: May 2026)
SSRN not yet submitted
Journal — (realistic targets: IRFA, JIFMIM; see docs/REVIEW-REPORT.md §9)
Code & data VAR/GFEVD stage fully reproducible from the committed results/daily_rv_all.csv (scripts/02_…, ≈ 1 min); intraday stage from local 1-minute bars (scripts/03_…); raw 5-minute DuckDB files not redistributed

# 🎯 What this paper does

The paper measures how realized-volatility shocks travel across asset classes at the daily frequency, using realized volatility from 5-minute data rather than range- or return-based proxies, and exploits the intraday data a second time to study trading sessions. Ten instruments are followed over 2008–2026; the generalized forecast-error variance decomposition of a VAR on log realized volatility yields directional, net and total spillovers with bootstrap intervals:

text
RV_{i,t} = Σ_k r²_{i,t,k} (5-min)  →  y = ln √(252·RV) on common trading days  →  VAR(4), GFEVD(H = 10)  →  TSI, TO, FROM, NET (+ 90 % bootstrap CI)

Full-sample, robustness-grid (15 specifications), rolling (200/250/500 trading days), regime (pre-COVID, COVID crash, 2022 hikes, spot-ETF era) and calendar-year decompositions are complemented by Granger tests with HAC inference, a UTC-correct hourly/session analysis (Asian / European / U.S.) and session-ordered predictive regressions between equity futures, the VIX and bitcoin.

# 🏆 Headline results

Object Estimate (v1.1)
Total spillover index, 2016-03 → 2026-03 (T = 2,514) 54.8 % [53.1, 56.9]
Net spillover ES / NQ +36.0 [29.9, 41.5] / +25.6 [19.0, 31.3] pp
Net spillover VIX (RV of index changes) / CL / GBPUSD −20.6 / −14.2 / −13.2 pp (all CIs exclude 0)
Net spillover BTC / ETH +1.7 [−3.3, 6.4] / −2.4 [−7.9, 2.1] pp
Own-shock share BTC / ETH ; BTC↔ETH 66.7 / 64.9 % ; 27–28 %
Share of BTC variance from traditional assets 6.3 % full sample ; 6.8 % (2019) → 34 % (2020) → 46 % (2025)
Spot-ETF era (2024-01 → 2026-03): NET BTC / ETH −12.4 [−20.4, −2.1] / −19.5 [−27.7, −9.2] pp
COVID crash (T = 85, VAR(1)): NET USDJPY +81.8 [+7.3, +135.3] pp
Rolling TSI (200 td): mean / min / max 61.9 % / 50.5 % (2017-10-27) / 73.4 % (2025-09-24)
Granger ES → RV(VIX) F = 19.9, HAC Wald 62.8, p < 0.001
U.S.-session share of daily variance: ES / NQ / VIX 53 / 54 / 63 % ; BTC hourly peak/trough = 1.2
Weekend BTC RV → Monday ES U.S.-session RV coef −0.04 (s.e. 0.05), not significant

# 🗂 Repository layout

text
intraday-volatility-connectedness/
├── data/raw/README.md        # 4 DuckDB 5-min databases (not committed) + 1-min bars used by 03_ (sibling WP 12)
├── scripts/
│   ├── 01_analysis.py        # stage 1 (May 2026): RV construction → results/daily_rv_all.csv ; stages 3–8 superseded
│   ├── 02_connectedness_revision.py   # stage 2 (Oct 2026): trading-day panel, log RV, VAR/GFEVD, bootstrap, robustness, rolling, regimes, yearly, Granger
│   └── 03_intraday_sessions.py        # stage 3 (Oct 2026): ET→UTC conversion, hourly profile, session RV, session-ordered regressions
├── results/                  # daily_rv_all.csv, table1_… (v1.0) ; rev_*.csv (v1.1)
├── figures/                  # fig1…fig8 PNG (copied into paper/figures)
├── paper/                    # main.tex + sections/ + appendix/ + tables/ (generated .tex) + references.bib → main.pdf
└── docs/                     # REVIEW-REPORT.md, CHANGELOG-REVISION.md, main_pre-revision-20261017.pdf

# 🚀 Quick start

bash
python3 -m pip install -r requirements.txt
# optional stage 1: place the four DuckDB files in data/raw/ (or export WP6_DATA_DIR) — ≈ 10 min, ≈ 8 GB RAM
python3 scripts/01_analysis.py
# stage 2 (no raw data needed): all connectedness results, tables and figures 2–4, 6–8 — ≈ 1 min
python3 scripts/02_connectedness_revision.py
# stage 3: intraday sessions (export WP6_MINUTE_DIR=/path/to/1-min parquets) — ≈ 35 s
python3 scripts/03_intraday_sessions.py
cd paper && make                    # latexmk → main.pdf

# 🗃 Data

5-minute OHLCV bars from FirstRate Data, 2008–2026, time stamps in U.S. Eastern time: continuous futures (ES, NQ, GC, CL), spot FX (EURUSD, USDJPY, GBPUSD), spot crypto (BTC, ETH, composite of exchanges) and the VIX index. Realized volatility is the daily sum of squared 5-minute log returns on Eastern-time calendar days (≥ 20 bars; returns beyond 20 sample s.d. dropped — a v1.0 choice disclosed in v1.1). The VAR panel is the set of trading days on which all ten instruments have an own RV (CBOE calendar, no forward filling). Intraday sessions use 1-minute bars of the same vendor converted to UTC. See data/raw/README.md.

# 🔬 Methodology

  1. Realized volatility per instrument and day (01_analysis.py), log-transformed for the VAR (ADF/KPSS reported).
  2. Diebold–Yilmaz (2012) connectedness: VAR(4) (Hannan–Quinn), generalized FEVD at H = 10, TSI / TO / FROM / NET and net pairwise spillovers; residual bootstrap (B = 500) for 90 % intervals.
  3. Robustness grid: levels vs log, p ∈ {1,2,3,6}, H ∈ {5,20}, weekend-inclusive crypto RV, sub-periods, exclusion of VIX / crypto.
  4. Rolling windows of 200 / 250 / 500 trading days; regimes (4) and calendar years with intervals.
  5. Granger causality (F and HAC Wald) on daily log RV.
  6. Sessions: hourly profile in UTC, session RV shares, session-ordered predictive regressions, weekend-BTC → Monday-ES test.

# 🖼 Figures & tables inventory

Figure Content
fig1_rv_timeseries daily realized volatility, 10 instruments (v1.0)
fig2_connectedness_heatmap full-sample GFEVD shares
fig3_rolling_spillover rolling TSI, 200/250/500 trading days
fig4_net_spillovers_regimes net spillovers by regime with 90 % intervals
fig5_hourly_volatility hourly
fig6_net_directional_btc_es rolling net spillovers BTC and ES
fig7_network_graph network of net pairwise spillovers
fig8_yearly_crypto_integration BTC net spillover and exposure to traditional assets by year

Tables (paper/tables/*.tex, generated from results/rev_*.csv): RV descriptives, full connectedness with CIs, robustness grid, regimes (summary + 4 full matrices), calendar years, Granger, sessions, session-ordered regressions, weekend test, construction audit, lag selection, rolling summary.

# ⚠️ Limitations

  • 5-minute returns beyond 20 s.d. were dropped before RV was computed (v1.0 pipeline; raw bars not available to re-run); composite crypto feed shows cross-venue price oscillations in 2017 (BTC RV > 1,000 % annualized on a few days — reproduced on the vendor's 1-minute feed).
  • Continuous futures splice contracts at roll dates; roll returns are not removed.
  • Linear, symmetric VAR; i.i.d. residual bootstrap (indicative intervals); 10 instruments, no fixed-income series.
  • A "day" is an Eastern-time calendar day, which splits the Globex session; crypto weekend variance enters only in a robustness check.

# 📝 Citation

bibtex
@techreport{boucher2026connectedness,
  author      = {Boucher, Simon-Pierre},
  title       = {Intraday Volatility Transmission Across Asset Classes: A Connectedness Analysis of Equities, Foreign Exchange, Commodities, and Cryptocurrencies},
  institution = {Universit\'e du Qu\'ebec en Outaouais, D\'epartement des sciences administratives},
  type        = {Working Paper},
  number      = {6},
  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

  • Revision 2026-10-17 (v1.0 → v1.1): scientific review by the editorial board — see docs/REVIEW-REPORT.md (diagnosis, verdicts, recommended analyses not executed, publication readiness) and docs/CHANGELOG-REVISION.md (audit trail of every correction, references verified/added/removed, re-analyses). Pre-revision state: git tag pre-revision-20261017, docs/main_pre-revision-20261017.pdf.
  • Main corrections: trading-day panel instead of forward-filled calendar days; log RV; bootstrap intervals; Eastern→UTC time stamps in the intraday analysis; subtitle "Fixed Income" → "Foreign Exchange" (no fixed-income instrument in the sample); bibliography converted to references.bib (natbib/aer), 45 → 70 verified references.
  • results/table2…table4*.csv and rolling_total_spillover.csv are the v1.0 outputs, kept for the audit; v1.1 outputs are prefixed rev_.
  • The original flat manuscript (paper.tex, May 2026) is archived in Recherche-UQO/_archives/versions-mai-2026/intraday-volatility-connectedness--flat-tex-20260520/.