% ============================================================================ \section{Methodology} \label{sec:methodology} % ============================================================================ \subsection{Point-in-time backtesting} The core of the design is a backtest that reproduces, for each target sale $i$ with date $\tau_i$ and price $P_i$, the information set available to a valuer on $\tau_i$. Let $\mathcal{S}$ denote the clean sample. The \emph{candidate pool} of $i$ is \begin{equation} \mathcal{C}_i = \{\, j \in \mathcal{S} : \tau_j < \tau_i,\; \tau_i - \tau_j \le 24 \text{ months},\; d_{ij} \le 25 \text{ km},\; u_j \neq u_i \,\}, \label{eq:pool} \end{equation} where $d_{ij}$ is the distance between the two properties and $u_j$ the assessment unit; the last condition excludes prior sales of the subject itself, so that the method is evaluated as a comparable-sales method rather than a repeat-sales one. Every quantity entering a valuation on $\tau_i$ is computed from sales with $\tau_j < \tau_i$: the regional price index used to time-adjust comparables is re-estimated at the start of every month $m$ from all sales in months before $m$ (Section~\ref{sec:index}); adjustment coefficients and benchmark models are re-estimated at the start of every quarter $q$ from all sales in quarters before $q$ (Sections~\ref{sec:config} and \ref{sec:benchmarks}). No configuration, hyperparameter or weight is chosen on test-period data: all are selected on the 2024 validation targets and frozen. A subtle but important consequence is that the price level of the target's own month is never observed. All methods, traditional and machine-learning alike, work at the level of the last fully observed month, exactly as a valuer must. This introduces a small, common and seasonal bias that we report rather than remove (Section~\ref{sec:stability}). \subsection{Point-in-time price index} \label{sec:index} For each evaluation month $m$ and administrative region $r$ we estimate, on all sales of region $r$ in months $0,\dots,m-1$, the within-municipality regression \begin{equation} \ln P_j = \alpha_{\mu(j)} + \mathbf{x}_j'\boldsymbol{\beta} + \sum_{s \le m-2} \delta_s^{(r,m)}\, \mathbb{1}[\text{month}_j = s] + \varepsilon_j, \label{eq:index} \end{equation} where $\alpha_{\mu}$ is a municipality fixed effect, $\mathbf{x}_j$ the characteristics (log living area, log lot area, age and its square, physical link, construction type, storeys, new-build indicator) and $\delta_s^{(r,m)}$ the effect of month $s$ relative to the last observed month $m-1$, whose effect is normalised to zero. The municipality fixed effects prevent the index from being contaminated by shifts in the composition of sales between expensive and inexpensive municipalities within a region. For regions with fewer than 200 sales the provincial index is used; otherwise the monthly effects are shrunk towards the provincial estimate with weight $n_s/(n_s+40)$, where $n_s$ is the number of regional sales in month $s$. A comparable sold in month $s < m$ and valued in month $m$ is time-adjusted by the factor $\exp(-\delta_s^{(r,m)})$, i.e.\ brought to the level of month $m-1$; comparables sold in the same month as the target, for which no effect can be estimated, are not adjusted. The index is thus a three-dimensional object (evaluation month, region, sale month), and the estimate of any historical month is allowed to change as later data arrive, as it does in reality \citep{clapham2006}. \subsection{Configurations of the sales comparison approach} \label{sec:config} A configuration is a tuple $c = (\text{selection}, d, t, k, \text{adjustment}, \text{weighting}, \text{reconciliation})$. Given the pool $\mathcal{C}_i$, the method proceeds in four steps. \paragraph{Selection.} Candidates satisfying $d_{ij}\le d$ and $\tau_i-\tau_j \le t$ are ranked by a score and the $k$ best are retained. Physical dissimilarity is measured by \begin{equation} D_{ij} = \Big[\Big(\tfrac{\Delta\ln A_{ij}}{0.25}\Big)^2 + \Big(\tfrac{\Delta\ln L_{ij}}{0.6}\Big)^2 + \Big(\tfrac{\Delta \text{age}_{ij}}{15}\Big)^2 + \mathbb{1}[\text{link}_i\neq\text{link}_j] + 0.5\,\mathbb{1}[\text{storeys}_i\neq\text{storeys}_j]\Big]^{1/2}, \label{eq:dissim} \end{equation} where $A$ is living area, $L$ lot area and $\Delta$ denotes the difference between subject and comparable; the denominators are typical within-market standard deviations, so that $D_{ij}$ is in standard-deviation units. Four scores are implemented: \emph{nearest}, $s^{\mathrm{geo}}_{ij} = d_{ij}$; \emph{most similar}, $s^{\mathrm{sim}}_{ij} = D_{ij} + d_{ij}/25$, in which distance (in km) acts only as a tie-breaker; \emph{compromise}, $s^{\mathrm{mix}}_{ij} = D_{ij} + d_{ij}/2$, which trades one standard deviation of dissimilarity against two kilometres; and \emph{least adjusted}, $s^{\mathrm{adj}}_{ij} = \sum_m |\hat\beta_m \Delta x_{ijm}| + d_{ij}/25$, the gross hedonic adjustment, which operationalises the professional advice to prefer comparables requiring the fewest adjustments. \paragraph{Adjustment.} Let $P_j^{T}$ denote the time-adjusted price of comparable $j$. Each retained comparable is converted into an indication of the subject's value $\hat P_{i|j}$ under one of eight schemes: \begin{enumerate}[label=(\alph*)] \item \emph{none}: $\hat P_{i|j} = P_j$ (not even time-adjusted); \item \emph{time only}: $\hat P_{i|j} = P_j^{T}$; \item \emph{conventional grid}: dollar adjustments in the spirit of professional practice, \begin{equation} \begin{aligned} \hat P_{i|j} = P_j^{T} &+ \tfrac{1}{2}\tfrac{P_j^{T}}{A_j}(A_i - A_j) + \Big[\tfrac{1}{2}\tfrac{\lambda_j P_j^{T}}{L_j}(L_i - L_j)\Big]_{\pm 0.15 P_j^{T}} \\ &+ \Big[-0.005\,P_j^{T}(\text{age}_i - \text{age}_j)\Big]_{\pm 0.20 P_j^{T}} \pm 0.05\,P_j^{T}\,\mathbb{1}[\text{link differs}], \end{aligned} \label{eq:conv} \end{equation} where $\lambda_j$ is the land share of the comparable's assessed value, $[\cdot]_{\pm b}$ denotes capping at $\pm b$, and the link adjustment is positive when the subject is detached and the comparable attached; the total adjustment is floored at $-60\%$ of $P_j^T$; \item \emph{hedonic grid}: $\hat P_{i|j} = P_j^{T}\exp\!\big(\hat{\boldsymbol\beta}'(\mathbf{x}_i-\mathbf{x}_j)\big)$, with $\hat{\boldsymbol\beta}$ the within-municipality coefficients of a regression of the time-adjusted log price on $\mathbf{x}$, estimated on all prior sales and re-estimated quarterly; \item \emph{regional grid}: as (d) with region-specific coefficients shrunk towards the global ones with weight $n_r/(n_r+300)$; \item \emph{local grid}: as (d) with coefficients $\hat{\mathbf{b}}_i$ re-estimated on the subject's own candidates within 10~km (at least 40 sales) by ridge regression penalised towards the regional grid $\hat{\boldsymbol\beta}^{\mathrm{reg}}$, \begin{equation} \hat{\mathbf{b}}_i = \arg\min_{\mathbf{b}} \sum_{j \in \mathcal{C}_i,\, d_{ij}\le 10} \big(\tilde y_j - \tilde{\mathbf{x}}_j'\mathbf{b}\big)^2 + \lambda\, \|\mathbf{b} - \hat{\boldsymbol\beta}^{\mathrm{reg}}\|^2, \qquad \lambda = 50, \label{eq:local} \end{equation} where tildes denote variables centred on the local pool; \item \emph{non-linear (GBM)}: $\hat P_{i|j} = P_j^{T}\exp\!\big(f(\mathbf{z}_i)-f(\mathbf{z}_j)\big)$, where $f$ is the gradient-boosting model of the time-adjusted log price on characteristics and location described in Section~\ref{sec:benchmarks} (the version without the assessed value); \item \emph{assessment ratio}: $\hat P_{i|j} = V_i \cdot P_j^{T}/V_j$, where $V$ is the assessed value in force at the sale, restricted to comparables in the same municipality and of the same roll vintage as the subject. \end{enumerate} Scheme (h) is the ratio method used by assessors and, informally, by many appraisers; it uses information (the assessed value) that schemes (a)--(g) do not, and we treat it as a distinct model in the horse race. \paragraph{Weighting and reconciliation.} Let $v_{ij} = \ln \hat P_{i|j}$ and let $w_{ij}$ be the weight of comparable $j$. Five weighting schemes are compared: equal weights; distance, $w_{ij} = 1/(0.25 + d_{ij})$; recency, $w_{ij} = \exp(-\text{months}_{ij}/6)$; similarity, $w_{ij} = 1/(0.1 + g_{ij})$ where $g_{ij}$ is the gross hedonic adjustment in log points; and the product of the three. Two reconciliation rules are compared: the (weighted) median of the $v_{ij}$, and the dollar-weighted mean \begin{equation} \hat P_i = \frac{\sum_j w_{ij}\, \hat P_{i|j}}{\sum_j w_{ij}} . \label{eq:recon} \end{equation} The standard deviation $\hat\sigma_i$ of the $v_{ij}$ across the retained comparables is recorded as a measure of uncertainty (Section~\ref{sec:intervals}). \paragraph{Experiments.} Experiment E1 maps the error surface over $k \in \{1,3,5,7,10,15,20,30,50\}$, $d \in \{0.5,1,2,5,10,25\}$~km and $t \in \{3,6,12,24\}$ months, for the nearest, most-similar and compromise selections and the time-only and hedonic adjustments, with equal weights and the median (1{,}296 configurations). Experiment E2 is the full factorial of selection (4) $\times$ adjustment (8) $\times$ weighting (5) $\times$ reconciliation (2) at three anchors $(k,d,t) = (3, 2\text{ km}, 6\text{ mo})$, $(5, 5\text{ km}, 12\text{ mo})$ and $(10, 10\text{ km}, 24\text{ mo})$ (960 configurations). All \nConfigs{} configurations are evaluated on every target. \subsection{Benchmark models} \label{sec:benchmarks} Sixteen named models are compared (Table~\ref{tab:models}). M1--M8 and M13 are configurations of the sales comparison approach that correspond to recognisable professional practices. M10 is a direct global hedonic model: the within-municipality coefficients augmented with region, county (MRC), municipality and neighbourhood-unit effects estimated as shrunken residual means, plus a median correction estimated on the validation targets. M11 is a gradient-boosting model (LightGBM, 127 leaves, learning rate 0.05, $L_1$ objective, number of trees chosen by early stopping on the chronologically last 10\% of the training period) of the time-adjusted log price on characteristics, coordinates, region, construction type and the month of sale; M11a excludes and M11b includes the assessed value, its land share and its roll vintage. Both are retrained at the start of every quarter on all prior sales. Because the $L_1$ objective targets the conditional median of the log price, the models estimate the point forecast that minimises expected absolute error \citep{gneiting2011}, which is the loss the MdAPE rewards; a squared-error objective would target the conditional mean of a left-skewed distribution and produce a negative median bias (Section~\ref{sec:benchspec}). M9 is an \emph{optimised reconciliation}: a convex combination, estimated by non-negative least squares on the validation targets, of the seven comparable-based indications at the $(5,5,12)$ anchor. M12 is a hybrid combining M11b with the GBM-adjusted and hedonic-adjusted comparable estimates, with weights estimated the same way. M0 is the single best of the \nConfigs{} configurations on the validation targets, among those that return a value for at least 97\% of targets. \begin{table}[H] \centering \caption{Models in the horse race} \label{tab:models} \small \begin{tabularx}{\textwidth}{lX} \toprule Model & Definition \\ \midrule M1 & Median of the 3 nearest sales ($\le 2$ km, $\le 6$ months), time adjustment only \\ M2 & Mean of the 5 nearest sales ($\le 5$ km, $\le 12$ months), time adjustment only \\ M3 & Median of the 5 most physically similar sales ($\le 5$ km, $\le 12$ months), time adjustment only \\ M4 & 5 nearest sales, distance-weighted mean, time adjustment only \\ M5 & 5 nearest sales, recency-weighted mean, time adjustment only \\ M6 & 5 nearest sales, conventional adjustment grid, median \\ M7 & 5 nearest sales, hedonic adjustment grid, median \\ M8a & 5 nearest sales, locally re-estimated grid, median \\ M8b & 5 nearest sales, non-linear (GBM) adjustments, median \\ M9 & Optimised reconciliation: NNLS combination of seven comparable-based indications (weights fitted on 2024) \\ M10 & Direct global hedonic model with region, MRC, municipality and neighbourhood effects \\ M11a / M11b & Gradient boosting without / with the assessed value, retrained quarterly \\ M12 & Hybrid: NNLS combination of M11b and GBM- and hedonic-adjusted comparables (weights fitted on 2024) \\ M13 & Assessment ratio: $V_i \times$ median price-to-assessment ratio of the 5 nearest same-roll sales ($\le 5$ km, $\le 12$ months) \\ M0 & Best of all \nConfigs{} configurations on 2024 (coverage $\ge 97\%$), frozen \\ \bottomrule \end{tabularx} \end{table} \subsection{Accuracy measures} \label{sec:measures} For each target $i$ and method (or configuration) $c$ that returns a value, the absolute percentage error is \begin{equation} \mathrm{APE}_i(c) = \frac{|\hat P_i(c) - P_i|}{P_i}, \qquad e_i(c) = \frac{\hat P_i(c) - P_i}{P_i}. \label{eq:ape} \end{equation} Over a set of targets $\mathcal{T}$, let $\mathcal{T}_c \subseteq \mathcal{T}$ be the targets for which $c$ returns a value. We report \begin{equation} \mathrm{MdAPE}(c) = \operatorname*{med}_{i \in \mathcal{T}_c} \mathrm{APE}_i(c), \qquad \mathrm{MAPE}(c) = \frac{1}{|\mathcal{T}_c|}\sum_{i \in \mathcal{T}_c} \mathrm{APE}_i(c), \qquad \mathrm{Bias}(c) = \operatorname*{med}_{i \in \mathcal{T}_c} e_i(c), \label{eq:metrics} \end{equation} together with the shares of estimates within $\pm5$, $\pm10$ and $\pm20\%$ of the price and the \emph{coverage} $|\mathcal{T}_c|/|\mathcal{T}|$ \citep{steurer2021,hyndman2006}. The MdAPE is the headline measure because valuation errors are heavy-tailed and the median is the natural loss of an appraiser who is judged on the typical file; the MAPE and the tolerance shares are reported alongside because they weight the tails differently. Coverage is reported because a restrictive configuration does not fail on difficult targets---it abstains---and an MdAPE computed on the targets it covers would flatter it. Configuration selection on the validation set is restricted to configurations with coverage of at least 97\%. \subsection{Inference} \label{sec:inference} Because all methods are evaluated on the same targets, comparisons are paired. For a pair of methods $(A,B)$ and the common set of covered targets, the difference in MAPE is the mean of the loss differential $\Delta_i = \mathrm{APE}_i(A) - \mathrm{APE}_i(B)$, the quantity tested by \citet{diebold1995} and \citet{giacomini2006}, and the difference in MdAPE is the difference of the two medians. Valuation errors are correlated within local markets and within periods, because neighbouring sales share unobserved amenities and the same index estimate; we therefore treat municipality--quarter cells as clusters. Confidence intervals are obtained from a cluster bootstrap \citep{cameron2008} that resamples cells with replacement $B = 999$ times and recomputes both statistics on each replication, and we also report a cluster-robust $t$ statistic for the mean differential, \begin{equation} t = \frac{\bar\Delta}{\Big[\sum_{g} \big(\sum_{i \in g} (\Delta_i - \bar\Delta)\big)^2\Big]^{1/2} / N}, \label{eq:dm} \end{equation} where $g$ indexes the clusters and $N$ the number of common targets. We also report the share of targets on which $A$ is more accurate than $B$. Section~\ref{sec:clusters} shows that the intervals are insensitive to the cluster definition. The second inferential issue is selection. Choosing the best of \nConfigs{} configurations on the same data that are used to report its accuracy would overstate it \citep{white2000,hansen2005}. We avoid this by selecting on the 2024 validation targets and reporting on the 2025--2026 test targets, and Section~\ref{sec:selection_stability} examines how the validation ranking carries over to the test period. \subsection{Hypotheses} Five hypotheses from the professional and academic debate are tested directly. \textbf{H1} (similarity versus proximity): a comparable that is very close but physically dissimilar is less informative than one that is farther away but similar. \textbf{H2} (number of comparables): adding comparables improves accuracy up to a threshold beyond which heterogeneity dominates, and the threshold rises with market density. \textbf{H3} (local adjustments): locally estimated adjustments outperform fixed grids but become unstable in small samples. \textbf{H4} (weighting and liquidity): the optimal weighting scheme depends on the liquidity of the submarket. \textbf{H5} (transparency): simple, transparent methods rival machine learning in homogeneous submarkets even if the latter dominates overall.