\section{Spatial and regional heterogeneity}\label{sec:het} \subsection{Task A by municipality size, class and price segment} Tables~\ref{tab:het_a_mun_size}, \ref{tab:het_a_property_class} and \ref{tab:het_a_segment} report the four-to-six-month MAE by municipality size (sales 2021--2026: large $\ge 5{,}000$, medium 500--4{,}999, small $< 500$), by class and by price segment. The ranking of models is the same in every group; what changes is the level of error and the gain over the naive reference. Errors are 40\% larger in small municipalities than in large ones for every model, and the hierarchical network's partial pooling does not narrow the gap: in small municipalities HSHN-partial is no better than HSHN-none. The gain over the municipal median is largest for condominiums, whose prices are most heterogeneous within a municipality, and the errors are largest in the lowest price segment (below \$250{,}000), where the models over-predict: the provider's \$50{,}000 floor and the thinness of low-price markets make this segment the hardest and the most biased. \subsection{Task B by level, class and cell size} Tables~\ref{tab:het_b_level}, \ref{tab:het_b_class} and~\ref{tab:het_b_size_level} report the three-month MAE by geographic level, class and municipal size (large: at least 50 sales in the origin month). Forecast errors scale with the noise of the target: municipal index changes are twice as volatile as regional ones, and the MASE of the best model relative to no change is similar across levels (0.69 for regions, 0.77 for municipalities with LightGBM), so the pooled models extract a similar share of the predictable variation at every level. Condominium indices are the most predictable in absolute terms and houses the least. Hierarchical pooling (BHPF, HSHN) does not improve on the pooled models in small municipalities: the gain over the no-change forecast is the same in large and small municipal cells, and the municipal intercepts shrink to zero. Figure~\ref{fig:error_map} maps the three-month MAE of the best model relative to no change by region: the gain is largest in the regions with the strongest seasonal cycle and smallest in the sparse eastern regions. Table~\ref{tab:mun_dist_b} and Figure~\ref{fig:mun_distribution} give the distribution of the three-month MASE across the 192 municipal cells: LightGBM beats the no-change forecast in \MunSharelightgbmpanel\% of the cells with a median MASE of \MunMedMASElightgbmpanel, QANSS in \MunShareqanss\%, the AR(2) in \MunSharearTwocell\%, and the pooled ridge in \MunShareridgepanel\% with a long right tail (90th percentile \MunPninetyridgepanel{} against \MunPninetylightgbmpanel{} for LightGBM): the linear pooled model is the one most often harmed by the heterogeneity of municipal dynamics, which is what the tree model's interactions absorb. Tables~\ref{tab:het_b_size_level}, \ref{tab:het_a_mun_size} and~\ref{tab:het_a_segment} in Appendix~\ref{app:supp} give the breakdowns by cell size and by price segment. \input{tables/tab_mun_dist_b} \begin{figure}[htbp]\centering \includegraphics[width=0.6\textwidth]{figures/fig_mun_distribution.pdf} \caption{Task B, horizon 3: distribution of the MASE relative to no change across the 192 municipal cells.}\label{fig:mun_distribution} \end{figure} \input{tables/tab_het_b_level} \input{tables/tab_het_b_class} \begin{figure}[htbp]\centering \includegraphics[width=0.7\textwidth]{figures/fig_error_map.pdf} \caption{Task B: ratio of the best model's three-month MAE to the no-change MAE by administrative region.}\label{fig:error_map} \end{figure} \input{tables/tab_het_a_property_class}