SPB Git forge

spb/wp22_uqo

Public
6commits 1branches 0releases
142.4 MBsize
maindefault branch
1 h agolast push
TeX 55.1% Python 44.2%

WP22: fit wide tables, Monte Carlo figure labels, README headline results, anonymous version

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Simon-Pierre Boucher committed 1 h ago (Oct 21, 2026) parent 0c96ca9

39 changed files +51 −17

modified figures/fig_mc_coverage.pdf +0 −0

Binary file not shown.

modified figures/fig_mc_rmse.pdf +0 −0

Binary file not shown.

modified paper/figures/fig_mc_coverage.pdf +0 −0

Binary file not shown.

modified paper/figures/fig_mc_rmse.pdf +0 −0

Binary file not shown.

modified paper/main.pdf +0 −0

Binary file not shown.

modified paper/main_anon.pdf +0 −0

Binary file not shown.

modified paper/tables/tab_ablation_real.tex +2 −1
@@ -2,6 +2,7 @@
2 2 \centering\scriptsize
3 3 \caption{Real-data ablations at the municipality level: RMSE of monthly changes against the full model (×100) and one-step-ahead standardized innovation diagnostics}\label{tab:ablation_real}
4 4 \begin{threeparttable}
5 +\resizebox{\textwidth}{!}{%
5 6 \begin{tabular}{lrrrrrrrrr}
6 7 \toprule
7 8 Variant & H: $\Delta$ vs full & H: OOS $z$ & H: \\% in band & C: $\Delta$ vs full & C: OOS $z$ & C: \\% in band & P: $\Delta$ vs full & P: OOS $z$ & P: \\% in band \\
@@ -14,7 +15,7 @@ Gaussian innovations & 3.16 & 1.27 & 88 & 1.74 & 1.08 & 92 & 1.92 & 1.24 & 88 \\
14 15 Municipality-level location FE & 3.49 & 1.35 & 87 & 1.55 & 1.11 & 91 & 1.64 & 1.27 & 88 \\
15 16 No MRC level & 3.66 & 1.34 & 87 & 1.47 & 1.21 & 90 & 1.71 & 1.31 & 87 \\
16 17 \bottomrule
17 −\end{tabular}
18 +\end{tabular}}
18 19 \begin{tablenotes}\footnotesize\item OOS $z$ = root mean square of the standardized one-step-ahead prediction error of the cell's monthly mean deviation (1 if calibrated); \% in band = share of innovations inside $\pm 1.96$.\end{tablenotes}
19 20 \end{threeparttable}
20 21 \end{table}
modified paper/tables/tab_aggregation.tex +1 −0
@@ -2,6 +2,7 @@
2 2 \centering\footnotesize
3 3 \caption{Provincial aggregation: stock-weighted, transaction-weighted and equal-weighted bottom-up aggregates of municipal indices versus the direct provincial path (log ×100, January 2021 to September 2026)}\label{tab:aggregation}
4 4 \begin{threeparttable}
5 +
5 6 \begin{tabular}{lrrrrrr}
6 7 \toprule
7 8 Class & Weights & Municipalities & Bottom-up total change & Direct total change & RMSE vs direct & Max gap \\
modified paper/tables/tab_benchmarks_province.tex +2 −1
@@ -2,6 +2,7 @@
2 2 \centering\footnotesize
3 3 \caption{Province-level benchmark indices, January 2021 to September 2026: cumulative log change (×100) and standard deviation of monthly log changes (×100)}\label{tab:bench_prov}
4 4 \begin{threeparttable}
5 +\resizebox{\textwidth}{!}{%
5 6 \begin{tabular}{lrrrrrrr}
6 7 \toprule
7 8 Method & H: total & H: s.d. $\Delta$ & C: total & C: s.d. $\Delta$ & P: total & P: s.d. $\Delta$ & sec. \\
@@ -31,7 +32,7 @@ QHPI v2.1 architecture & 55.6 & 1.87 & 37.2 & 1.02 & 50.6 & 1.91 & 18 \\
31 32 SHARP stage 1 without time-varying prices & 56.7 & 1.91 & 41.0 & 1.06 & 51.3 & 1.98 & 21 \\
32 33 SHARP-HPI & 56.9 & 1.91 & 41.5 & 1.04 & 50.9 & 1.97 & 21 \\
33 34 \bottomrule
34 −\end{tabular}
35 +\end{tabular}}
35 36 \begin{tablenotes}\footnotesize\item H = houses, C = condominiums, P = plexes. Rolling TD = rolling time dummy; GEKS on bilateral double-imputation Fisher links with movement splice; HMTS = hedonic multilateral time series (Ishaak et al., 2024); QHPI = re-implementation of the QWHPI v2.1 architecture; last column = wall-clock seconds for the house sample on one Apple M-series core.\end{tablenotes}
36 37 \end{threeparttable}
37 38 \end{table}
modified paper/tables/tab_benchmarks_region.tex +1 −0
@@ -2,6 +2,7 @@
2 2 \centering\footnotesize
3 3 \caption{Region-level benchmarks (16 administrative regions): mean standard deviation of monthly log changes (×100) and RMSE of 12-month log changes against the Case–Shiller repeat-sales index (×100)}\label{tab:bench_region}
4 4 \begin{threeparttable}
5 +
5 6 \begin{tabular}{lrrrrrr}
6 7 \toprule
7 8 Method & H: s.d. $\Delta$ & H: RMSE vs RS & C: s.d. $\Delta$ & C: RMSE vs RS & P: s.d. $\Delta$ & P: RMSE vs RS \\
modified paper/tables/tab_bootstrap.tex +2 −1
@@ -2,6 +2,7 @@
2 2 \centering\footnotesize
3 3 \caption{Cluster bootstrap (40 draws, resampling fine-location cells) versus model-based standard errors, condominiums (×100)}\label{tab:bootstrap}
4 4 \begin{threeparttable}
5 +\resizebox{\textwidth}{!}{%
5 6 \begin{tabular}{lrrrrrrr}
6 7 \toprule
7 8 Cell (condominiums) & Sales & Model s.e. level & Bootstrap s.e. level & Ratio & Model s.e. 12-m & Bootstrap s.e. 12-m & Ratio \\
@@ -25,7 +26,7 @@ region 04 & 1{,}187 & 2.07 & 3.44 & 1.67 & 2.89 & 4.33 & 1.50 \\
25 26 region 06 & 46{,}957 & 0.98 & 0.91 & 0.93 & 1.37 & 1.12 & 0.81 \\
26 27 region 17 & 608 & 2.18 & 3.53 & 1.62 & 3.07 & 4.25 & 1.38 \\
27 28 \bottomrule
28 −\end{tabular}
29 +\end{tabular}}
29 30
30 31 \end{threeparttable}
31 32 \end{table}
modified paper/tables/tab_completeness.tex +1 −0
@@ -2,6 +2,7 @@
2 2 \centering\small
3 3 \caption{Completeness of the two main characteristics and share of new constructions in the headline sample, by year and class}\label{tab:completeness}
4 4 \begin{threeparttable}
5 +
5 6 \begin{tabular}{lrrrrrr}
6 7 \toprule
7 8 Headline sample (\% of sales) & 2021 & 2022 & 2023 & 2024 & 2025 & 2026 \\
modified paper/tables/tab_completeness_supp.tex +1 −0
@@ -2,6 +2,7 @@
2 2 \centering\small
3 3 \caption{Completeness of characteristics by year of sale, all raw rows (including land, non-residential and unmatched sales)}\label{tab:completeness_supp}
4 4 \begin{threeparttable}
5 +
5 6 \begin{tabular}{lrrrrrr}
6 7 \toprule
7 8 Variable (\% non-missing) & 2021 & 2022 & 2023 & 2024 & 2025 & 2026 \\
modified paper/tables/tab_composition.tex +1 −0
@@ -2,6 +2,7 @@
2 2 \centering\footnotesize
3 3 \caption{Synthetic composition shock (houses): the smallest 40\% of houses are removed from the sample from January 2024; change in the 2023-to-2024 mean log index (×100)}\label{tab:composition}
4 4 \begin{threeparttable}
5 +
5 6 \begin{tabular}{lrrrr}
6 7 \toprule
7 8 Region & Method & 2023$\to$2024 change, original & Same, shocked sample & Shock effect \\
modified paper/tables/tab_exclusions.tex +1 −0
@@ -2,6 +2,7 @@
2 2 \centering\small
3 3 \caption{Population definition: exclusion ledger of the Vrai Prix snapshot (769,995 registered sales, 2021-01-04 to 2026-10-07)}\label{tab:exclusions}
4 4 \begin{threeparttable}
5 +
5 6 \begin{tabular}{lrr}
6 7 \toprule
7 8 Rule (first match, in priority order) & Rows & \% of raw \\
modified paper/tables/tab_external.tex +2 −1
@@ -2,6 +2,7 @@
2 2 \centering\scriptsize
3 3 \caption{Comparison with external indices: change of the annual mean log index from 2021 to 2026 (January--September), log ×100, and correlations of 12-month and 1-month log changes}\label{tab:external}
4 4 \begin{threeparttable}
5 +\resizebox{\textwidth}{!}{%
5 6 \begin{tabular}{lrrrrrrr}
6 7 \toprule
7 8 SHARP series & External series & Geography & SHARP 2026 vs 2021 & External 2026 vs 2021 & Gap & Corr. 12-m & Corr. 1-m \\
@@ -29,7 +30,7 @@ house (CMM/CMQ) & CREA MLS HPI, Composite NSA & Québec CMA & 47.9 & 44.3 & +3.6
29 30 house (CMM/CMQ) & CREA MLS HPI, Single Family NSA & Québec CMA & 47.9 & 45.5 & +2.4 & 0.56 & -0.09 \\
30 31 house (CMM/CMQ) & Teranet-NB, NSA (repeat sales) & Québec CMA & 47.9 & 43.7 & +4.3 & 0.63 & 0.54 \\
31 32 \bottomrule
32 −\end{tabular}
33 +\end{tabular}}
33 34 \begin{tablenotes}\footnotesize\item Teranet--National Bank: repeat sales on all registry transfers, CMA, all residential types. CREA MLS HPI: benchmark hedonic on brokered resales, CMA / provincial aggregate. SHARP metropolitan series = stock-weighted aggregates of municipal cells inside the Montréal (CMM) and Québec (CMQ) metropolitan communities; all series rebased to 2021 average = 100 before comparison.\end{tablenotes}
34 35 \end{threeparttable}
35 36 \end{table}
modified paper/tables/tab_external_rs.tex +1 −0
@@ -2,6 +2,7 @@
2 2 \centering\footnotesize
3 3 \caption{Repeat-sales and median-price changes computed on the Vrai Prix data for the geographies of the external indices (annual means, log ×100)}\label{tab:external_rs}
4 4 \begin{threeparttable}
5 +
5 6 \begin{tabular}{lrrr}
6 7 \toprule
7 8 Sample (this data) & Pairs & Repeat sales 2026 vs 2021 & Median price 2026 vs 2021 \\
modified paper/tables/tab_grades.tex +1 −0
@@ -2,6 +2,7 @@
2 2 \centering\small
3 3 \caption{Distribution of reliability grades across cell-months (percent of cell-months)}\label{tab:grades}
4 4 \begin{threeparttable}
5 +
5 6 \begin{tabular}{lrrrrrr}
6 7 \toprule
7 8 Level / class & A & B & C & D & E & Cell-months \\
modified paper/tables/tab_mc_bias.tex +2 −1
@@ -2,6 +2,7 @@
2 2 \centering\scriptsize
3 3 \caption{Monte Carlo: mean bias of monthly log changes (×100) at the municipality level}\label{tab:mc_bias}
4 4 \begin{threeparttable}
5 +\resizebox{\textwidth}{!}{%
5 6 \begin{tabular}{lrrrrrrrrr}
6 7 \toprule
7 8 Method & baseline & turning point & flat quality up & rising quality down & drifting hedonics & heavy tails & sparse & no local dynamics & idiosyncratic towns \\
@@ -12,7 +13,7 @@ QHPI v2.1 arch. & -0.001 & -0.000 & +0.046 & -0.045 & +0.001 & -0.005 & -0.005 &
12 13 SHARP-HPI (smoothed) & +0.003 & +0.003 & +0.052 & -0.043 & +0.004 & -0.005 & +0.004 & +0.002 & -0.005 \\
13 14 SHARP-HPI (filtered) & +0.001 & +0.001 & +0.050 & -0.045 & +0.002 & -0.012 & +0.008 & +0.001 & +0.005 \\
14 15 \bottomrule
15 −\end{tabular}
16 +\end{tabular}}
16 17
17 18 \end{threeparttable}
18 19 \end{table}
modified paper/tables/tab_mc_coverage.tex +2 −1
@@ -2,6 +2,7 @@
2 2 \centering\scriptsize
3 3 \caption{Monte Carlo: empirical coverage (\%) of nominal 95\% intervals for municipal index levels}\label{tab:mc_coverage}
4 4 \begin{threeparttable}
5 +\resizebox{\textwidth}{!}{%
5 6 \begin{tabular}{lrrrrrrrrr}
6 7 \toprule
7 8 Method & baseline & turning point & flat quality up & rising quality down & drifting hedonics & heavy tails & sparse & no local dynamics & idiosyncratic towns \\
@@ -14,7 +15,7 @@ SHARP: no EB pooling of $\tau^2$ & 97 & 97 & 96 & 96 & 98 & 91 & 98 & 99 & 93 \\
14 15 SHARP: local linear trend & 97 & 97 & 96 & 96 & 97 & 90 & 97 & 98 & 93 \\
15 16 SHARP: Gaussian & 98 & 98 & 97 & 97 & 98 & 92 & 98 & 98 & 97 \\
16 17 \bottomrule
17 −\end{tabular}
18 +\end{tabular}}
18 19
19 20 \end{threeparttable}
20 21 \end{table}
modified paper/tables/tab_mc_design.tex +1 −0
@@ -2,6 +2,7 @@
2 2 \centering\footnotesize
3 3 \caption{Monte Carlo scenarios (60 months, 4 regions × 3 MRCs × 5 municipalities, log-normal municipality sizes)}\label{tab:mc_design}
4 4 \begin{threeparttable}
5 +
5 6 \begin{tabular}{lrrrrrr}
6 7 \toprule
7 8 Scenario & Drift (\\%/m) & $\tau$ prov/reg/MRC/mun (\\%) & Quality trend (\\%/m) & $\beta\_{fa}$ drift & $t$ d.f. / contamination & Sales scale \\
modified paper/tables/tab_mc_lag.tex +1 −0
@@ -2,6 +2,7 @@
2 2 \centering\small
3 3 \caption{Monte Carlo: timing diagnostics at the municipality level}\label{tab:mc_lag}
4 4 \begin{threeparttable}
5 +
5 6 \begin{tabular}{lrrrrr}
6 7 \toprule
7 8 Scenario & Reps & SHARP lag (months) & SHARP revision RMSE & QHPI lag & sec./rep \\
modified paper/tables/tab_mc_rmse_municipality.tex +2 −2
@@ -2,6 +2,7 @@
2 2 \centering\scriptsize
3 3 \caption{Monte Carlo: RMSE of monthly log changes (×100) at the municipality level, by scenario (Monte Carlo standard error in parentheses)}\label{tab:mc_rmse_municipality}
4 4 \begin{threeparttable}
5 +\resizebox{\textwidth}{!}{%
5 6 \begin{tabular}{lrrrrrrrrr}
6 7 \toprule
7 8 Method & baseline & turning point & flat quality up & rising quality down & drifting hedonics & heavy tails & sparse & no local dynamics & idiosyncratic towns \\
@@ -19,9 +20,8 @@ SHARP: fixed quality prices & 1.58 (0.02) & 1.58 (0.02) & 1.58 (0.02) & 1.58 (0.
19 20 SHARP: local linear trend & 1.61 (0.02) & 1.61 (0.02) & 1.61 (0.02) & 1.61 (0.02) & 1.65 (0.02) & 4.95 (0.08) & 2.45 (0.04) & 1.40 (0.02) & 2.51 (0.02) \\
20 21 SHARP: Gaussian & 2.25 (0.04) & 2.25 (0.04) & 2.24 (0.04) & 2.23 (0.04) & 2.29 (0.04) & 6.77 (0.09) & 3.21 (0.05) & 2.13 (0.04) & 2.84 (0.03) \\
21 22 SHARP: municipality-level location FE & 2.05 (0.04) & 2.05 (0.04) & 2.05 (0.04) & 2.05 (0.04) & 2.08 (0.04) & 2.84 (0.06) & 3.30 (0.08) & 1.88 (0.04) & 2.81 (0.03) \\
22 −SHARP: stock-weighted bottom-up & — & — & — & — & — & — & — & — & — \\
23 23 \bottomrule
24 −\end{tabular}
24 +\end{tabular}}
25 25 \begin{tablenotes}\footnotesize\item Averages over cells and replications; see Table~\ref{tab:mc_design} for the scenarios. Lower is better; the final two scenarios are the deliberate counter-examples.\end{tablenotes}
26 26 \end{threeparttable}
27 27 \end{table}
modified paper/tables/tab_mc_rmse_province.tex +2 −2
@@ -2,6 +2,7 @@
2 2 \centering\scriptsize
3 3 \caption{Monte Carlo: RMSE of monthly log changes (×100) at the province level, by scenario (Monte Carlo standard error in parentheses)}\label{tab:mc_rmse_province}
4 4 \begin{threeparttable}
5 +\resizebox{\textwidth}{!}{%
5 6 \begin{tabular}{lrrrrrrrrr}
6 7 \toprule
7 8 Method & baseline & turning point & flat quality up & rising quality down & drifting hedonics & heavy tails & sparse & no local dynamics & idiosyncratic towns \\
@@ -13,7 +14,6 @@ Rolling TD 13 m & 1.39 (0.03) & 1.39 (0.03) & 1.40 (0.03) & 1.39 (0.03) & 1.44 (
13 14 Repeat sales & 5.32 (0.10) & 5.32 (0.10) & 5.33 (0.10) & 5.33 (0.10) & 5.37 (0.10) & 7.42 (0.17) & 9.57 (0.21) & 5.28 (0.10) & 5.66 (0.13) \\
14 15 QHPI v2.1 arch. & 1.39 (0.03) & 1.39 (0.03) & 1.40 (0.03) & 1.39 (0.03) & 1.44 (0.03) & 1.41 (0.03) & 2.36 (0.05) & 1.39 (0.03) & 1.44 (0.03) \\
15 16 SHARP-HPI (smoothed) & 1.25 (0.02) & 1.25 (0.02) & 1.25 (0.02) & 1.25 (0.03) & 1.29 (0.03) & 1.26 (0.02) & 2.14 (0.04) & 1.22 (0.02) & 1.37 (0.03) \\
16 −SHARP-HPI (filtered) & — & — & — & — & — & — & — & — & — \\
17 17 SHARP: no EB pooling of $\tau^2$ & 1.25 (0.02) & 1.25 (0.02) & 1.25 (0.02) & 1.25 (0.03) & 1.29 (0.03) & 1.26 (0.02) & 2.14 (0.04) & 1.22 (0.02) & 1.37 (0.03) \\
18 18 SHARP: fixed quality prices & 1.25 (0.02) & 1.25 (0.02) & 1.26 (0.02) & 1.25 (0.03) & 1.29 (0.03) & 1.26 (0.02) & 2.13 (0.04) & 1.22 (0.02) & 1.37 (0.03) \\
19 19 SHARP: local linear trend & 1.25 (0.02) & 1.25 (0.02) & 1.25 (0.02) & 1.25 (0.03) & 1.29 (0.03) & 1.26 (0.02) & 2.14 (0.04) & 1.22 (0.02) & 1.37 (0.03) \\
@@ -21,7 +21,7 @@ SHARP: Gaussian & 1.59 (0.03) & 1.59 (0.03) & 1.59 (0.03) & 1.59 (0.03) & 1.63 (
21 21 SHARP: municipality-level location FE & 1.88 (0.04) & 1.88 (0.04) & 1.88 (0.04) & 1.88 (0.04) & 1.92 (0.05) & 1.96 (0.05) & 3.18 (0.09) & 1.87 (0.04) & 1.96 (0.05) \\
22 22 SHARP: stock-weighted bottom-up & 1.26 (0.02) & 1.26 (0.02) & 1.27 (0.02) & 1.26 (0.03) & 1.31 (0.03) & 1.75 (0.04) & 2.15 (0.04) & 1.23 (0.02) & 1.40 (0.03) \\
23 23 \bottomrule
24 −\end{tabular}
24 +\end{tabular}}
25 25 \begin{tablenotes}\footnotesize\item Averages over cells and replications; see Table~\ref{tab:mc_design} for the scenarios. Lower is better; the final two scenarios are the deliberate counter-examples.\end{tablenotes}
26 26 \end{threeparttable}
27 27 \end{table}
modified paper/tables/tab_mc_rmse_region.tex +2 −2
@@ -2,6 +2,7 @@
2 2 \centering\scriptsize
3 3 \caption{Monte Carlo: RMSE of monthly log changes (×100) at the region level, by scenario (Monte Carlo standard error in parentheses)}\label{tab:mc_rmse_region}
4 4 \begin{threeparttable}
5 +\resizebox{\textwidth}{!}{%
5 6 \begin{tabular}{lrrrrrrrrr}
6 7 \toprule
7 8 Method & baseline & turning point & flat quality up & rising quality down & drifting hedonics & heavy tails & sparse & no local dynamics & idiosyncratic towns \\
@@ -19,9 +20,8 @@ SHARP: fixed quality prices & 1.40 (0.02) & 1.40 (0.02) & 1.41 (0.02) & 1.40 (0.
19 20 SHARP: local linear trend & 1.39 (0.02) & 1.39 (0.02) & 1.40 (0.02) & 1.39 (0.02) & 1.43 (0.02) & 2.34 (0.06) & 2.23 (0.04) & 1.23 (0.02) & 1.57 (0.03) \\
20 21 SHARP: Gaussian & 1.70 (0.03) & 1.70 (0.03) & 1.70 (0.03) & 1.70 (0.03) & 1.74 (0.03) & 2.72 (0.07) & 2.70 (0.05) & 1.58 (0.03) & 1.84 (0.03) \\
21 22 SHARP: municipality-level location FE & 1.97 (0.04) & 1.97 (0.04) & 1.97 (0.04) & 1.97 (0.04) & 2.01 (0.04) & 2.18 (0.06) & 3.24 (0.08) & 1.87 (0.04) & 2.11 (0.04) \\
22 −SHARP: stock-weighted bottom-up & — & — & — & — & — & — & — & — & — \\
23 23 \bottomrule
24 −\end{tabular}
24 +\end{tabular}}
25 25 \begin{tablenotes}\footnotesize\item Averages over cells and replications; see Table~\ref{tab:mc_design} for the scenarios. Lower is better; the final two scenarios are the deliberate counter-examples.\end{tablenotes}
26 26 \end{threeparttable}
27 27 \end{table}
modified paper/tables/tab_moran.tex +1 −0
@@ -2,6 +2,7 @@
2 2 \centering\footnotesize
3 3 \caption{Residual spatial autocorrelation of stage-1 residuals (June of each year)}\label{tab:moran}
4 4 \begin{threeparttable}
5 +
5 6 \begin{tabular}{lrrrr}
6 7 \toprule
7 8 Class / scope & Months tested & Mean Moran's $I$ (10-NN) & Mean $z$ & \% months significant \\
modified paper/tables/tab_mun_bands.tex +1 −0
@@ -2,6 +2,7 @@
2 2 \centering\small
3 3 \caption{Municipalities by number of roll-matched sales, 2021–2026}\label{tab:mun_bands}
4 4 \begin{threeparttable}
5 +
5 6 \begin{tabular}{lrr}
6 7 \toprule
7 8 Sales 2021–2026 & Municipalities & Sales \\
modified paper/tables/tab_placebo.tex +1 −0
@@ -2,6 +2,7 @@
2 2 \centering\footnotesize
3 3 \caption{Placebo: sale months permuted within municipality (three replications); estimated deviations should be flat}\label{tab:placebo}
4 4 \begin{threeparttable}
5 +
5 6 \begin{tabular}{lrrrrr}
6 7 \toprule
7 8 Class / level & Cells & s.d. of deviation ($\times$100) & Median max $|$12-m change$|$ ($\times$100) & \% of 12-m changes outside 95\\% band & Median $\tau$ ($\times$100) \\
modified paper/tables/tab_policies.tex +2 −1
@@ -2,6 +2,7 @@
2 2 \centering\small
3 3 \caption{Provincial monthly change (×100): first and third release versus final}\label{tab:policies}
4 4 \begin{threeparttable}
5 +\resizebox{\textwidth}{!}{%
5 6 \begin{tabular}{lrrrrrrr}
6 7 \toprule
7 8 Class & Months & MAE first release & Bias first release & MAE third release & RMSE first & RMSE third & Mean $|\Delta|$ \\
@@ -10,7 +11,7 @@ condo & 52 & 0.16 & +0.013 & 0.15 & 0.21 & 0.20 & 0.77 \\
10 11 house & 52 & 0.16 & -0.013 & 0.16 & 0.20 & 0.20 & 1.50 \\
11 12 plex & 52 & 0.26 & -0.014 & 0.26 & 0.35 & 0.35 & 1.53 \\
12 13 \bottomrule
13 −\end{tabular}
14 +\end{tabular}}
14 15 \begin{tablenotes}\footnotesize\item Full re-estimation policy (smoothed at each vintage). A revision-limited policy freezes the value at the third release; the frozen-first-release (movement-splice) policy is in Table~\ref{tab:revisions_frozen}.\end{tablenotes}
15 16 \end{threeparttable}
16 17 \end{table}
modified paper/tables/tab_priors.tex +1 −0
@@ -2,6 +2,7 @@
2 2 \centering\small
3 3 \caption{Empirical-Bayes priors for the innovation standard deviation of cell deviations}\label{tab:priors}
4 4 \begin{threeparttable}
5 +
5 6 \begin{tabular}{lrr}
6 7 \toprule
7 8 Class / level & Prior median $\tau$ (\\% per month) & Prior variance of $\log\tau^2$ \\
modified paper/tables/tab_repeat_sales.tex +1 −0
@@ -2,6 +2,7 @@
2 2 \centering\footnotesize
3 3 \caption{Agreement between SHARP-HPI and Case–Shiller repeat-sales indices estimated on the same cells (cells with at least 300 pairs)}\label{tab:repeat_sales}
4 4 \begin{threeparttable}
5 +
5 6 \begin{tabular}{lrrrrrr}
6 7 \toprule
7 8 Level / class & Cells & Pairs & Corr. levels (median) & Corr. 12-m changes (median) & RMSE levels (median, $\times$100) & RS $-$ SHARP total change (median, $\times$100) \\
modified paper/tables/tab_revisions.tex +2 −1
@@ -2,6 +2,7 @@
2 2 \centering\footnotesize
3 3 \caption{Real-time vintages: mean absolute revision of the monthly log change (×100) between the $k$-th release and the final retrospective estimate}\label{tab:revisions}
4 4 \begin{threeparttable}
5 +\resizebox{\textwidth}{!}{%
5 6 \begin{tabular}{lrrrrrrr}
6 7 \toprule
7 8 Class / level & Rel. 1 & Rel. 2 & Rel. 3 & Rel. 6 & Rel. 12 & 12-m change, rel. 1 & \% $|$rev$|>1$ pt \\
@@ -16,7 +17,7 @@ plex / province & 0.26 & 0.25 & 0.26 & 0.27 & 0.24 & 0.35 & 0 \\
16 17 plex / region & 0.76 & 0.64 & 0.59 & 0.57 & 0.61 & 1.55 & 26 \\
17 18 plex / municipality & 1.58 & 1.42 & 1.35 & 1.29 & 1.27 & 3.95 & 48 \\
18 19 \bottomrule
19 −\end{tabular}
20 +\end{tabular}}
20 21 \begin{tablenotes}\footnotesize\item Releases simulated monthly from July 2022 to October 2026 with a 10-day publication delay; municipalities with at least 1,500 sales. Final = smoothed full-sample panel.\end{tablenotes}
21 22 \end{threeparttable}
22 23 \end{table}
modified paper/tables/tab_revisions_frozen.tex +1 −0
@@ -2,6 +2,7 @@
2 2 \centering\footnotesize
3 3 \caption{Frozen-first-release (one-sided filtered) policy: mean absolute gap of the monthly log change (×100) between the real-time value and the final smoothed estimate}\label{tab:revisions_frozen}
4 4 \begin{threeparttable}
5 +
5 6 \begin{tabular}{lrrrr}
6 7 \toprule
7 8 Class / level & Rel. 1 vs final & Rel. 12 vs final & 12-m change, rel. 1 & Rel. 1 vs last real-time \\
modified paper/tables/tab_sample_by_year.tex +1 −0
@@ -2,6 +2,7 @@
2 2 \centering\small
3 3 \caption{Headline estimation sample by year and property class}\label{tab:sample_by_year}
4 4 \begin{threeparttable}
5 +
5 6 \begin{tabular}{lrrrr}
6 7 \toprule
7 8 Year & Houses & Condominiums & Plexes & Total \\
modified paper/tables/tab_stage1.tex +1 −0
@@ -2,6 +2,7 @@
2 2 \centering\small
3 3 \caption{Stage-1 robust hedonic regressions (selected coefficients; dependent variable log price)}\label{tab:stage1}
4 4 \begin{threeparttable}
5 +
5 6 \begin{tabular}{lrrr}
6 7 \toprule
7 8 Regressor & Houses & Condominiums & Plexes \\
modified paper/tables/tab_top_municipalities.tex +1 −0
@@ -2,6 +2,7 @@
2 2 \centering\footnotesize
3 3 \caption{SHARP-HPI, September 2026 (2021 average = 100), twelve largest municipalities by sales: index [95\% interval] grade}\label{tab:top_mun}
4 4 \begin{threeparttable}
5 +
5 6 \begin{tabular}{lrrr}
6 7 \toprule
7 8 Municipality & Houses & Condominiums & Plexes \\
modified paper/tables/tab_trimming.tex +1 −0
@@ -2,6 +2,7 @@
2 2 \centering\footnotesize
3 3 \caption{Sensitivity of the provincial time-dummy path to the sample screens (log ×100)}\label{tab:trimming}
4 4 \begin{threeparttable}
5 +
5 6 \begin{tabular}{lrrrrrr}
6 7 \toprule
7 8 Class & Sample & Sales & Total change (Huber) & Total change (OLS) & RMSE monthly vs headline & Max level gap \\
modified paper/tables/tab_vintages.tex +2 −1
@@ -2,6 +2,7 @@
2 2 \centering\small
3 3 \caption{Earlier extractions of the transaction table compared with the final snapshot (publication lag audit)}\label{tab:vintages}
4 4 \begin{threeparttable}
5 +\resizebox{\textwidth}{!}{%
5 6 \begin{tabular}{lrrrrrrr}
6 7 \toprule
7 8 Extraction & Rows & Last date & Lag (days) & Final rows $\le$ last date & Share present & Deleted & Price revised \\
@@ -11,7 +12,7 @@ Extraction & Rows & Last date & Lag (days) & Final rows $\le$ last date & Share
11 12 2026-10-10 & 766{,}596 & 2026-09-29 & 11 & 766{,}682 & 99.99\\% & 0 & 0 \\
12 13 2026-10-17 & 769{,}333 & 2026-10-06 & 11 & 769{,}678 & 99.96\\% & 0 & 0 \\
13 14 \bottomrule
14 −\end{tabular}
15 +\end{tabular}}
15 16
16 17 \end{threeparttable}
17 18 \end{table}
modified scripts/61_tables.py +7 −2
@@ -37,9 +37,11 @@ def esc(s) -> str:
37 37 return str(s).replace("&", "\\&").replace("%", "\\%").replace("_", "\\_").replace("−", "$-$").replace("→", "$\\to$").replace("#", "\\#").replace("≤", "$\\le$").replace("≥", "$\\ge$").replace("×", "$\\times$")
38 38
39 39
40 −def table(name: str, header: list[str], rows: list[list], caption: str, label: str, align: str | None = None, notes: str = "", size: str = "\\small", longtable: bool = False) -> None:
40 +def table(name: str, header: list[str], rows: list[list], caption: str, label: str, align: str | None = None, notes: str = "", size: str = "\\small", longtable: bool = False, fit: bool | None = None) -> None:
41 41 align = align or "l" + "r" * (len(header) - 1)
42 42 body = "\n".join(" & ".join(esc(c) for c in r) + " \\\\" for r in rows)
43 + fit = (len(header) > 7) if fit is None else fit
44 + open_fit, close_fit = ("\\resizebox{\\textwidth}{!}{%", "}") if fit else ("", "")
43 45 if longtable:
44 46 tex = f"""{{{size}
45 47 \\begin{{longtable}}{{{align}}}
@@ -64,13 +66,14 @@ def table(name: str, header: list[str], rows: list[list], caption: str, label: s
64 66 \\centering{size}
65 67 \\caption{{{caption}}}\\label{{{label}}}
66 68 \\begin{{threeparttable}}
69 +{open_fit}
67 70 \\begin{{tabular}}{{{align}}}
68 71 \\toprule
69 72 {' & '.join(esc(h) for h in header)} \\\\
70 73 \\midrule
71 74 {body}
72 75 \\bottomrule
73 −\\end{{tabular}}
76 +\\end{{tabular}}{close_fit}
74 77 {('\\begin{tablenotes}\\footnotesize\\item ' + notes + '\\end{tablenotes}') if notes else ''}
75 78 \\end{{threeparttable}}
76 79 \\end{{table}}
@@ -283,6 +286,8 @@ def t_simulation():
283 286 if x.height:
284 287 macro(f"MC{lvl}{m}{sc}Rmse", 100 * x["rmse_ret"][0] if x["rmse_ret"][0] is not None else None, "{:.2f}"); macro(f"MC{lvl}{m}{sc}Cov", 100 * x["cov95"][0] if x["cov95"][0] is not None else None, "{:.0f}"); macro(f"MC{lvl}{m}{sc}Bias", 100 * x["bias_ret"][0] if x["bias_ret"][0] is not None else None, "{:.3f}")
285 288 macro(f"MC{lvl}{m}{sc}Share", 100 * x["share_est"][0] if x["share_est"][0] is not None else None, "{:.0f}"); macro(f"MC{lvl}{m}{sc}Lag", x["lag_xcorr"][0], "{:+.2f}"); macro(f"MC{lvl}{m}{sc}Rev", 100 * x["revision_rmse"][0] if x["revision_rmse"][0] is not None else None, "{:.2f}")
289 + if all(c == "—" for c in r[1:]):
290 + continue
286 291 rows.append(r)
287 292 table(f"tab_mc_rmse_{lvl}", ["Method"] + [s.replace("_", " ") for s in scen], rows, f"Monte Carlo: RMSE of monthly log changes (×100) at the {lvl} level, by scenario (Monte Carlo standard error in parentheses)", f"tab:mc_rmse_{lvl}", size="\\scriptsize", longtable=False,
288 293 notes="Averages over cells and replications; see Table~\\ref{tab:mc_design} for the scenarios. Lower is better; the final two scenarios are the deliberate counter-examples.")
289 294