SPB Git

Repository Public Research preview

Commit

Wide IRF/connectedness tables fixed (resizebox + minipage notes); 43 p.

Simon-Pierre Boucher committed · Nov 9, 2026 parent 90dc9d9
4 changed files +9 −80 Browse files
modified paper/main.pdf +0 −0

Binary file not shown.

modified paper/tables/tab_connect.tex +0 −33
@@ -1,33 +0,0 @@
1 −\begin{table}[tp]\centering\footnotesize
2 −\begin{threeparttable}
3 −\caption{Connectedness of factor changes (five-minute VAR) and of factor volatilities (daily HAR-VAR)}
4 −\label{tab:connect}
5 −\begin{tabular}{llcccccc}
6 −\toprule
7 −\multicolumn{8}{l}{\textit{Panel A: five-minute factor changes, US hours (08:00--16:00~ET), generalized FEVD at 12 steps (one hour)}} \\
8 −\midrule
9 −Period & $p$ & $n$ & \multicolumn{3}{c}{From others (\%)} & Total & Impact corr. \\
10 − & & & Short rate & Level & Curvature & (\%) & (SR,L / SR,C / L,C) \\
11 −\midrule
12 −2011--2026 & 6 & 363,335 & 13.7 & 2.3 & 14.7 & 10.3 & $-$0.10 / $-$0.40 / $-$0.12 \\
13 −2011--2015 & 6 & 113,551 & 27.0 & 16.6 & 35.2 & 26.2 & $-$0.13 / $-$0.60 / $-$0.42 \\
14 −2016--2019 & 6 & 92,485 & 41.8 & 8.4 & 39.1 & 29.8 & $-$0.30 / $-$0.80 / $-$0.04 \\
15 −2020--2021 & 6 & 46,015 & 30.1 & 17.1 & 40.0 & 29.1 & 0.02 / $-$0.67 / $-$0.45 \\
16 −2022--2026 & 6 & 111,284 & 4.4 & 1.4 & 5.5 & 3.8 & $-$0.06 / $-$0.22 / 0.10 \\
17 −\midrule
18 −\multicolumn{8}{l}{\textit{Panel B: daily log realized variances (five-minute sampling), 2011--2026, generalized FEVD at 10 days}} \\
19 −\midrule
20 − & & & Level & Slope & Curvature & Total & \\
21 −\midrule
22 −Share of Level variance due to & & & 40.6 & 39.2 & 20.2 & & \\
23 −Share of Slope variance due to & & & 39.3 & 39.7 & 21.0 & & \\
24 −Share of Curvature variance due to & & & 24.3 & 25.3 & 50.3 & & \\
25 −To others & & & 63.6 & 64.5 & 41.2 & 56.5 & \\
26 −Net & & & 4.2 & 4.2 & $-$8.5 & & \\
27 −\bottomrule
28 −\end{tabular}
29 −\begin{tablenotes}[flushleft]\footnotesize
30 −\item \textit{Notes:} Panel A: VAR($p$) on five-minute changes (bp) in the short rate ($\Delta L+\Delta S$), the level and the curvature, estimated on within-day observations only (no lags across days), lag order by BIC (maximum 6); ``from others'' is the share of the 12-step generalized forecast-error variance of each variable due to shocks to the other two \citep{pesaran1998generalized,diebold2012better}; ``Total'' is the Diebold--Yilmaz total connectedness index; the last column gives the contemporaneous residual correlations. Panel B: VAR(5) on the daily log realized variances of the three factors ($n=3,958$), 10-day generalized FEVD; rows give the decomposition of each variable's forecast-error variance, ``To others'' the column sums excluding own shares, ``Net'' to-minus-from. Rolling 250-day estimates are in Figure~\ref{fig:connect}. No standard errors are reported.
31 −\end{tablenotes}
32 −\end{threeparttable}
33 −\end{table}
\ No newline at end of file
modified paper/tables/tab_lp.tex +0 −38
@@ -1,38 +0,0 @@
1 −\begin{table}[tp]\centering\footnotesize
2 −\begin{threeparttable}
3 −\caption{Local-projection responses to announcement-window shocks: persistence of the initial move}
4 −\label{tab:lp}
5 −\begin{tabular}{llccccccccc}
6 −\toprule
7 − & & \multicolumn{4}{c}{Minutes after release} & \multicolumn{5}{c}{Yield days after release} \\
8 −\cmidrule(lr){3-6}\cmidrule(lr){7-11}
9 −Release & Response & 25 & 60 & 120 & 240 & 0 & 1 & 2 & 5 & 10 \\
10 −\midrule
11 −FOMC statement ($n=125$) & 2-year yield & 1.00$^{**}$ & 1.02$^{**}$ & 1.04$^{**}$ & 1.05$^{**}$ & 1.07$^{**}$ & 0.99$^{**}$ & 1.16$^{**}$ & 1.23$^{**}$ & 1.67$^{**}$ \\
12 − & 10-year yield & 0.54$^{**}$ & 0.68$^{**}$ & 0.62$^{**}$ & 0.65$^{**}$ & 0.66$^{**}$ & 0.70$^{**}$ & 0.74$^{**}$ & 1.15$^{**}$ & 1.73$^{**}$ \\
13 − & Short rate & $-$0.17$^{**}$ & $-$0.19$^{**}$ & $-$0.19$^{**}$ & $-$0.18$^{**}$ & $-$0.22$^{**}$ & $-$0.14$^{**}$ & $-$0.17$^{**}$ & $-$0.22$^{**}$ & $-$0.21$^{**}$ \\
14 − & Level & 0.09 & 0.29 & 0.19 & 0.23 & 0.22 & 0.35 & 0.28 & 0.86$^{**}$ & 1.46$^{**}$ \\
15 − & Slope & $-$0.26$^{**}$ & $-$0.48$^{**}$ & $-$0.37$^{**}$ & $-$0.41$^{**}$ & $-$0.43$^{**}$ & $-$0.49 & $-$0.45 & $-$1.09$^{**}$ & $-$1.66$^{**}$ \\
16 − & Curvature & 3.57$^{**}$ & 3.34$^{**}$ & 3.56$^{**}$ & 3.52$^{**}$ & 3.68$^{**}$ & 3.08$^{**}$ & 3.80$^{**}$ & 3.19$^{**}$ & 3.69$^{**}$ \\
17 −\addlinespace
18 −CPI release ($n=187$) & 2-year yield & 1.00$^{**}$ & 1.02$^{**}$ & 0.97$^{**}$ & 0.95$^{**}$ & 0.96$^{**}$ & 0.91$^{**}$ & 0.83$^{**}$ & 0.80$^{**}$ & 0.62 \\
19 − & 10-year yield & 0.71$^{**}$ & 0.73$^{**}$ & 0.69$^{**}$ & 0.67$^{**}$ & 0.64$^{**}$ & 0.59$^{**}$ & 0.61$^{**}$ & 0.70$^{**}$ & 0.53 \\
20 − & Short rate & $-$0.05$^{**}$ & $-$0.05$^{**}$ & $-$0.04$^{*}$ & $-$0.04$^{*}$ & $-$0.03 & $-$0.03 & $-$0.04$^{*}$ & $-$0.05 & $-$0.03 \\
21 − & Level & 0.38$^{**}$ & 0.39$^{**}$ & 0.37$^{**}$ & 0.35$^{**}$ & 0.30$^{**}$ & 0.26$^{*}$ & 0.34$^{*}$ & 0.51$^{*}$ & 0.37 \\
22 − & Slope & $-$0.43$^{**}$ & $-$0.44$^{**}$ & $-$0.41$^{**}$ & $-$0.39$^{**}$ & $-$0.33$^{**}$ & $-$0.29$^{*}$ & $-$0.38$^{*}$ & $-$0.55$^{*}$ & $-$0.40 \\
23 − & Curvature & 2.88$^{**}$ & 2.92$^{**}$ & 2.77$^{**}$ & 2.77$^{**}$ & 2.82$^{**}$ & 2.71$^{**}$ & 2.35$^{**}$ & 2.00$^{**}$ & 1.57 \\
24 −\addlinespace
25 −Employment report ($n=189$) & 2-year yield & 1.00$^{**}$ & 0.98$^{**}$ & 1.04$^{**}$ & 1.08$^{**}$ & 1.14$^{**}$ & 1.20$^{**}$ & 1.05$^{**}$ & 1.08$^{**}$ & 1.10$^{**}$ \\
26 − & 10-year yield & 0.85$^{**}$ & 0.84$^{**}$ & 0.91$^{**}$ & 0.93$^{**}$ & 0.93$^{**}$ & 0.97$^{**}$ & 0.85$^{**}$ & 0.85$^{**}$ & 0.96$^{**}$ \\
27 − & Short rate & $-$0.11$^{**}$ & $-$0.10$^{**}$ & $-$0.09$^{**}$ & $-$0.09$^{**}$ & $-$0.08$^{**}$ & $-$0.07$^{*}$ & $-$0.06$^{*}$ & $-$0.05 & $-$0.03 \\
28 − & Level & 0.58$^{**}$ & 0.58$^{**}$ & 0.65$^{**}$ & 0.65$^{**}$ & 0.61$^{**}$ & 0.63$^{**}$ & 0.55$^{**}$ & 0.54$^{**}$ & 0.70$^{*}$ \\
29 − & Slope & $-$0.69$^{**}$ & $-$0.68$^{**}$ & $-$0.74$^{**}$ & $-$0.74$^{**}$ & $-$0.69$^{**}$ & $-$0.70$^{**}$ & $-$0.61$^{**}$ & $-$0.59$^{**}$ & $-$0.73$^{**}$ \\
30 − & Curvature & 2.67$^{**}$ & 2.57$^{**}$ & 2.63$^{**}$ & 2.80$^{**}$ & 3.05$^{**}$ & 3.20$^{**}$ & 2.80$^{**}$ & 2.88$^{**}$ & 2.68$^{**}$ \\
31 −\addlinespace
32 −\bottomrule
33 −\end{tabular}
34 −\begin{tablenotes}[flushleft]\footnotesize
35 −\item \textit{Notes:} Each cell is the slope coefficient $\beta_h$ of the regression, across scheduled events of the given type (2011--2026), of the cumulated change in the response variable from five minutes before the release to horizon $h$ on the change in the implied 2-year yield over the $[-5,+25)$-minute window (both in basis points), so that $\beta_h$ is in basis points per basis point of the window move. A coefficient of 1 means that the initial 2-year move is fully persistent (for the 2-year yield itself $\beta_{25}=1$ by construction); values below 1 indicate reversal, above 1 continuation. Intraday horizons use the minute-level futures-based factors; daily horizons cumulate the futures-based factor changes to the end of the yield day of the release (0) and of the following 1, 2, 5 and 10 yield days. $^{*}$ and $^{**}$: $|\beta_h/\mathrm{se}|>1.96$ and $>2.58$ with heteroskedasticity-robust (HC0) standard errors; 95\% bootstrap intervals are in Figure~\ref{fig:lp}. No multiple-testing adjustment is applied to this descriptive table.
36 −\end{tablenotes}
37 −\end{threeparttable}
38 −\end{table}
\ No newline at end of file
modified scripts/13_irf.py +9 −9
@@ -151,8 +151,8 @@ vol["rolling_total_max_date"] = str(R.loc[R.total.idxmax(), "date"].date()); vol
151 151 json.dump({"counts": counts, "lp": lp, "var5m": var_res, "vol_connectedness": vol}, open(OUT / "irf.json", "w"), indent=1, default=str)
152 152 # ---------- tables ----------
153 153 def f2(x): return f"{x:.2f}".replace("-", "$-$")
154 −lines = ["\\begin{table}[tp]\\centering\\footnotesize", "\\begin{threeparttable}", "\\caption{Local-projection responses to announcement-window shocks: persistence of the initial move}", "\\label{tab:lp}",
155 − "\\begin{tabular}{llccccccccc}", "\\toprule", " & & \\multicolumn{4}{c}{Minutes after release} & \\multicolumn{5}{c}{Yield days after release} \\\\", "\\cmidrule(lr){3-6}\\cmidrule(lr){7-11}",
154 +lines = ["\\begin{table}[tp]\\centering\\footnotesize", "\\caption{Local-projection responses to announcement-window shocks: persistence of the initial move}", "\\label{tab:lp}",
155 + "\\resizebox{\\textwidth}{!}{%", "\\begin{tabular}{llccccccccc}", "\\toprule", " & & \\multicolumn{4}{c}{Minutes after release} & \\multicolumn{5}{c}{Yield days after release} \\\\", "\\cmidrule(lr){3-6}\\cmidrule(lr){7-11}",
156 156 "Release & Response & 25 & 60 & 120 & 240 & 0 & 1 & 2 & 5 & 10 \\\\", "\\midrule"]
157 157 for typ, lab in (("FOMC", "FOMC statement"), ("CPI", "CPI release"), ("EMP", "Employment report")):
158 158 key = f"{typ}_all"; first = True
@@ -163,11 +163,11 @@ for typ, lab in (("FOMC", "FOMC statement"), ("CPI", "CPI release"), ("EMP", "Em
163 163 cells.append("--" if c is None else f"{f2(c['beta'])}{star}")
164 164 lines.append(f"{lab + f' ($n={lp[key][chr(110)+'_events']}$)' if first else ''} & {vl} & " + " & ".join(cells) + " \\\\"); first = False
165 165 lines.append("\\addlinespace")
166 −lines += ["\\bottomrule", "\\end{tabular}", "\\begin{tablenotes}[flushleft]\\footnotesize", "\\item \\textit{Notes:} Each cell is the slope coefficient $\\beta_h$ of the regression, across scheduled events of the given type (2011--2026), of the cumulated change in the response variable from five minutes before the release to horizon $h$ on the change in the implied 2-year yield over the $[-5,+25)$-minute window (both in basis points), so that $\\beta_h$ is in basis points per basis point of the window move. A coefficient of 1 means that the initial 2-year move is fully persistent (for the 2-year yield itself $\\beta_{25}=1$ by construction); values below 1 indicate reversal, above 1 continuation. Intraday horizons use the minute-level futures-based factors; daily horizons cumulate the futures-based factor changes to the end of the yield day of the release (0) and of the following 1, 2, 5 and 10 yield days. $^{*}$ and $^{**}$: $|\\beta_h/\\mathrm{se}|>1.96$ and $>2.58$ with heteroskedasticity-robust (HC0) standard errors; 95\\% bootstrap intervals are in Figure~\\ref{fig:lp}. No multiple-testing adjustment is applied to this descriptive table.",
167 − "\\end{tablenotes}", "\\end{threeparttable}", "\\end{table}"]
166 +lines += ["\\bottomrule", "\\end{tabular}}", "\\begin{minipage}{\\textwidth}\\footnotesize", "\\textit{Notes:} Each cell is the slope coefficient $\\beta_h$ of the regression, across scheduled events of the given type (2011--2026), of the cumulated change in the response variable from five minutes before the release to horizon $h$ on the change in the implied 2-year yield over the $[-5,+25)$-minute window (both in basis points), so that $\\beta_h$ is in basis points per basis point of the window move. A coefficient of 1 means that the initial 2-year move is fully persistent (for the 2-year yield itself $\\beta_{25}=1$ by construction); values below 1 indicate reversal, above 1 continuation. Intraday horizons use the minute-level futures-based factors; daily horizons cumulate the futures-based factor changes to the end of the yield day of the release (0) and of the following 1, 2, 5 and 10 yield days. $^{*}$ and $^{**}$: $|\\beta_h/\\mathrm{se}|>1.96$ and $>2.58$ with heteroskedasticity-robust (HC0) standard errors; 95\\% bootstrap intervals are in Figure~\\ref{fig:lp}. No multiple-testing adjustment is applied to this descriptive table.",
167 + "\\end{minipage}", "\\end{table}"]
168 168 (TAB / "tab_lp.tex").write_text("\n".join(lines))
169 −lines = ["\\begin{table}[tp]\\centering\\footnotesize", "\\begin{threeparttable}", "\\caption{Connectedness of factor changes (five-minute VAR) and of factor volatilities (daily HAR-VAR)}", "\\label{tab:connect}",
170 − "\\begin{tabular}{llcccccc}", "\\toprule", "\\multicolumn{8}{l}{\\textit{Panel A: five-minute factor changes, US hours (08:00--16:00~ET), generalized FEVD at 12 steps (one hour)}} \\\\", "\\midrule",
169 +lines = ["\\begin{table}[tp]\\centering\\footnotesize", "\\caption{Connectedness of factor changes (five-minute VAR) and of factor volatilities (daily HAR-VAR)}", "\\label{tab:connect}",
170 + "\\resizebox{\\textwidth}{!}{%", "\\begin{tabular}{llcccccc}", "\\toprule", "\\multicolumn{8}{l}{\\textit{Panel A: five-minute factor changes, US hours (08:00--16:00~ET), generalized FEVD at 12 steps (one hour)}} \\\\", "\\midrule",
171 171 "Period & $p$ & $n$ & \\multicolumn{3}{c}{From others (\\%)} & Total & Impact corr. \\\\", " & & & Short rate & Level & Curvature & (\\%) & (SR,L / SR,C / L,C) \\\\", "\\midrule"]
172 172 for reg, lab in (("full", "2011--2026"), ("2011_2015", "2011--2015"), ("2016_2019", "2016--2019"), ("2020_2021", "2020--2021"), ("2022_2026", "2022--2026")):
173 173 r = var_res[reg]; rc = r["resid_corr"]
@@ -179,9 +179,9 @@ for i, n in enumerate(["Level", "Slope", "Curvature"]):
179 179 lines.append(f"Share of {n} variance due to & & & {th[i][0]:.1f} & {th[i][1]:.1f} & {th[i][2]:.1f} & & \\\\")
180 180 lines.append(f"To others & & & {vol['to_others_pct'][0]:.1f} & {vol['to_others_pct'][1]:.1f} & {vol['to_others_pct'][2]:.1f} & {vol['total_connectedness_pct']:.1f} & \\\\")
181 181 lines.append(f"Net & & & {vol['net_pct'][0]:.1f} & {vol['net_pct'][1]:.1f} & {vol['net_pct'][2]:.1f} & & \\\\".replace(" -", " $-$"))
182 −lines += ["\\bottomrule", "\\end{tabular}", "\\begin{tablenotes}[flushleft]\\footnotesize",
183 − f"\\item \\textit{{Notes:}} Panel A: VAR($p$) on five-minute changes (bp) in the short rate ($\\Delta L+\\Delta S$), the level and the curvature, estimated on within-day observations only (no lags across days), lag order by BIC (maximum 6); ``from others'' is the share of the 12-step generalized forecast-error variance of each variable due to shocks to the other two \\citep{{pesaran1998generalized,diebold2012better}}; ``Total'' is the Diebold--Yilmaz total connectedness index; the last column gives the contemporaneous residual correlations. Panel B: VAR({vol['p_bic']}) on the daily log realized variances of the three factors ($n={vol['n']:,}$), 10-day generalized FEVD; rows give the decomposition of each variable's forecast-error variance, ``To others'' the column sums excluding own shares, ``Net'' to-minus-from. Rolling 250-day estimates are in Figure~\\ref{{fig:connect}}. No standard errors are reported.",
184 − "\\end{tablenotes}", "\\end{threeparttable}", "\\end{table}"]
182 +lines += ["\\bottomrule", "\\end{tabular}}", "\\begin{minipage}{\\textwidth}\\footnotesize",
183 + f"\\textit{{Notes:}} Panel A: VAR($p$) on five-minute changes (bp) in the short rate ($\\Delta L+\\Delta S$), the level and the curvature, estimated on within-day observations only (no lags across days), lag order by BIC (maximum 6); ``from others'' is the share of the 12-step generalized forecast-error variance of each variable due to shocks to the other two \\citep{{pesaran1998generalized,diebold2012better}}; ``Total'' is the Diebold--Yilmaz total connectedness index; the last column gives the contemporaneous residual correlations. Panel B: VAR({vol['p_bic']}) on the daily log realized variances of the three factors ($n={vol['n']:,}$), 10-day generalized FEVD; rows give the decomposition of each variable's forecast-error variance, ``To others'' the column sums excluding own shares, ``Net'' to-minus-from. Rolling 250-day estimates are in Figure~\\ref{{fig:connect}}. No standard errors are reported.",
184 + "\\end{minipage}", "\\end{table}"]
185 185 (TAB / "tab_connect.tex").write_text("\n".join(lines))
186 186 print(json.dumps(counts)); print("FOMC all 2y persistence:", {h: round(lp["FOMC_all"]["dy2"][h]["beta"], 2) for h in lp["FOMC_all"]["dy2"] if lp["FOMC_all"]["dy2"][h]})
187 187 print("FOMC all 10y:", {h: round(lp["FOMC_all"]["dy10"][h]["beta"], 2) for h in lp["FOMC_all"]["dy10"] if lp["FOMC_all"]["dy10"][h]})
188 188
Menu

Theme