% Author: Simon-Pierre Boucher — contact@spboucher.ai
%
% ═══════════════════════════════════════════════════════════════════════
% APPENDICES
% ═══════════════════════════════════════════════════════════════════════
\appendix

\section{Additional Figures}
\label{app:figures}

\begin{figure}[H]
    \centering
    \includegraphics[width=0.85\textwidth]{figures/fig6_shap_importance.png}
    \caption{Feature Importance Bar Chart: Mean Absolute SHAP Values (XGBoost). These values reflect predictive contributions, not causal importance.}
    \label{fig:shap_bar}
\end{figure}

\begin{figure}[H]
    \centering
    \includegraphics[width=\textwidth]{figures/fig11_shap_interactions.png}
    \caption{SHAP Values for Interaction Terms: (a) Waterfront $\times$ Log(Living Area); (b) Pool $\times$ South Region}
    \label{fig:shap_interactions}
\end{figure}


\section{Full OLS Coefficient Table}
\label{app:ols_full}

Table~\ref{tab:ols_full} reports the complete set of standardized OLS coefficients, including all categorical controls.

\begin{landscape}
\begin{table}[H]
\centering
\caption{Full OLS Regression Results Including All Categorical Controls (Standardized)}
\label{tab:ols_full}
\begin{threeparttable}
\scriptsize
\renewcommand{\arraystretch}{0.9}
\begin{tabular}{lrrlclrrl}
\toprule
Variable & Coeff. & SE & Sig. & & Variable & Coeff. & SE & Sig. \\
\midrule
Constant & 12.510 & 0.010 & *** & & Roof: Metal & 0.070 & 0.008 & *** \\
$\ln$(Living Area)$^\dagger$ & 0.312 & 0.003 & *** & & Roof: Shingle/Comp & $-$0.074 & 0.008 & *** \\
Bedrooms$^\dagger$ & $-$0.068 & 0.002 & *** & & Roof: Tile & $-$0.110 & 0.008 & *** \\
Bathrooms$^\dagger$ & 0.236 & 0.003 & *** & & Roof: Slate & 0.008 & 0.017 & \\
Age$^\dagger$ & $-$0.042 & 0.014 & ** & & Roof: Other & 0.033 & 0.008 & *** \\
Age$^{2\dagger}$ & 0.051 & 0.002 & *** & & Roof: Unknown & 0.004 & 0.008 & \\
Stories$^\dagger$ & 0.000 & 0.000 & & & Constr: Concrete/Block & 0.269 & 0.003 & *** \\
Bath/Bed Ratio$^\dagger$ & $-$0.021 & 0.002 & *** & & Constr: Stucco & 0.149 & 0.002 & *** \\
Sqft/Bed$^\dagger$ & $-$0.002 & 0.002 & & & Constr: Stone & 0.145 & 0.005 & *** \\
$\ln$(Lot Size)$^\dagger$ & 0.070 & 0.001 & *** & & Constr: Wood/Frame & 0.103 & 0.002 & *** \\
Pool & 0.029 & 0.003 & *** & & Constr: Vinyl & 0.012 & 0.002 & *** \\
Spa & 0.033 & 0.003 & *** & & Constr: Steel & 0.027 & 0.014 & * \\
Basement & $-$0.042 & 0.002 & *** & & Constr: Other & 0.075 & 0.002 & *** \\
Fireplace & $-$0.002 & 0.002 & & & Constr: Unknown & 0.177 & 0.002 & *** \\
Garage & 0.109 & 0.002 & *** & & Found: Concrete & 0.217 & 0.005 & *** \\
Waterfront & $-$0.135 & 0.032 & *** & & Found: Crawlspace & 0.181 & 0.006 & *** \\
Central Air & 0.069 & 0.001 & *** & & Found: Slab & 0.122 & 0.005 & *** \\
Forced Air & $-$0.023 & 0.002 & *** & & Found: Pier/Raised & 0.161 & 0.006 & *** \\
Hardwood & 0.125 & 0.001 & *** & & Found: Stone & 0.032 & 0.010 & ** \\
Parking$^\dagger$ & 0.000 & 0.099 & & & Found: Other & 0.144 & 0.006 & *** \\
Luxury$^\dagger$ & 0.044 & 0.002 & *** & & Found: Unknown & 0.174 & 0.005 & *** \\
Walk$^\dagger$ & $-$0.011 & 0.001 & *** & & Northeast & 0.487 & 0.003 & *** \\
Bike$^\dagger$ & 0.072 & 0.001 & *** & & South & 0.022 & 0.003 & *** \\
Transit$^\dagger$ & 0.052 & 0.001 & *** & & West & 0.401 & 0.003 & *** \\
School Rating$^\dagger$ & $-$0.049 & 0.001 & *** & & sqft$\times$Age$^\dagger$ & $-$0.110 & 0.014 & *** \\
School Count$^\dagger$ & $-$0.002 & 0.001 & *** & & Pool$\times$South & 0.008 & 0.001 & *** \\
School Dist.$^\dagger$ & $-$0.016 & 0.001 & *** & & WF$\times$sqft$^\dagger$ & 0.137 & 0.009 & *** \\
Tax Rate$^\dagger$ & $-$0.029 & 0.001 & *** & & Base$\times$North & $-$0.025 & 0.001 & *** \\
Condo & $-$0.037 & 0.004 & *** & & Condo$\times$Walk$^\dagger$ & 0.082 & 0.001 & *** \\
HOA & $-$0.108 & 0.002 & *** & & Age$\times$Lux$^\dagger$ & 0.044 & 0.001 & *** \\
$\ln$(HOA+1)$^\dagger$ & 0.044 & 0.001 & *** & & & & & \\
New Constr. & 0.103 & 0.003 & *** & & & & & \\
Foreclosure & $-$0.406 & 0.010 & *** & & & & & \\
\midrule
\multicolumn{9}{l}{$R^2 = 0.634$, Adj.\ $R^2 = 0.634$, $N = 788{,}842$, $F = 18{,}712.5$, RMSE $= 0.489$} \\
\bottomrule
\end{tabular}
\begin{tablenotes}
\footnotesize
\item \textit{Notes:} HC3 robust standard errors. $^\dagger$Standardized continuous variables. Reference categories: Roof = Flat; Construction = Brick; Foundation = Basement; Region = Midwest. *** $p<0.001$, ** $p<0.01$, * $p<0.05$.
\end{tablenotes}
\end{threeparttable}
\end{table}
\end{landscape}


\section{Robustness Agenda}
\label{app:robustness_agenda}

The following robustness checks and extensions are planned or completed. Items marked with $\checkmark$ have been completed in this version; unmarked items are left for future work.

\begin{enumerate}[nosep]
    \item[$\checkmark$] ZIP3-level fixed effects (Section~\ref{sec:progressive_fe}).
    \item County-level and MSA-level fixed effects.
    \item Spatial lag and spatial error model estimation.
    \item Spatial cross-validation (train on some regions, test on others) at finer geographic levels.
    \item[$\checkmark$] Inter-quantile Wald tests for coefficient equality across quantiles (Section~\ref{sec:qr_results}).
    \item[$\checkmark$] Re-estimation excluding imputed observations (Section~\ref{sec:imputation_sensitivity}).
    \item CatBoost benchmark with native categorical handling.
    \item Nested cross-validation for hyperparameter tuning.
    \item[$\checkmark$] SHAP stability comparison across XGBoost, LightGBM, and Random Forest (Section~\ref{sec:shap_results}).
    \item Integration of climate risk data from First Street Foundation or FEMA flood maps.
    \item Replication using transaction prices from recently sold listings.
    \item GAM/spline models to decompose the ML gain into non-linearity versus spatial partitioning.
    \item Comparison of sample distribution to ACS and Census benchmarks by state and price tier.
    \item Calibration plots by price decile for all models.
    \item[$\checkmark$] Winsorization sensitivity (Section~\ref{sec:winsorization}).
    \item[$\checkmark$] Feature ablation analysis for XGBoost (Section~\ref{sec:ablation}).
    \item[$\checkmark$] XGBoost with latitude/longitude coordinates (Section~\ref{sec:geo_features}).
    \item[$\checkmark$] XGBoost without geographic features (Section~\ref{sec:geo_features}).
    \item[$\checkmark$] Moran's $I$ subsample stability (Section~\ref{sec:spatial_autocorrelation}).
    \item[$\checkmark$] Quantile regression stability across 10 subsamples (Section~\ref{sec:qr_stability}).
\end{enumerate}


\section{Reproducibility Checklist}
\label{app:reproducibility}

\begin{table}[H]
\centering
\caption{Reproducibility Checklist}
\label{tab:reproducibility}
\begin{threeparttable}
\small
\begin{tabular}{p{6cm}p{3cm}p{4cm}}
\toprule
Item & Status & Notes \\
\midrule
\multicolumn{3}{l}{\textit{Data}} \\
Data source identified & Yes & Zillow active listings \\
Sample construction documented & Yes & Table~\ref{tab:attrition} \\
Missing data rates reported & Yes & Table~\ref{tab:missing} \\
Imputation method documented & Yes & State-level medians \\
Imputation sensitivity tested & Yes & Table~\ref{tab:imputation} \\
\midrule
\multicolumn{3}{l}{\textit{Methodology}} \\
Model specifications documented & Yes & Eq.~\ref{eq:ols}--\ref{eq:moran} \\
Hyperparameters reported & Yes & Section~\ref{sec:methodology} \\
Random seeds reported & Yes & Seed = 42 \\
Validation design documented & Yes & Section~\ref{sec:validation_designs} \\
\midrule
\multicolumn{3}{l}{\textit{Results}} \\
Point estimates reported & Yes & Tables~\ref{tab:ols_results}--\ref{tab:shap_stability} \\
Standard errors / CIs reported & Yes (OLS, QR) & HC3 standard errors \\
Multiple comparisons addressed & Partially & Inter-quantile tests \\
Effect sizes in natural units & Yes & Table~\ref{tab:ols_unstd} \\
\midrule
\multicolumn{3}{l}{\textit{Robustness}} \\
Sensitivity to data quality & Yes & Sections~\ref{sec:imputation_sensitivity}--\ref{sec:winsorization} \\
Sensitivity to model choice & Yes & Table~\ref{tab:ml_comparison} \\
Sensitivity to validation design & Yes & Tables~\ref{tab:geo_holdout}--\ref{tab:geo_role} \\
Cross-model stability & Yes & Table~\ref{tab:shap_stability} \\
\midrule
\multicolumn{3}{l}{\textit{Code and Data Availability}} \\
Code available & Yes & Replication package (\texttt{src/}, \texttt{scripts/}, pinned \texttt{requirements.txt}) \\
Data available & On request & Subject to Zillow ToS \\
\bottomrule
\end{tabular}
\begin{tablenotes}
\small
\item \textit{Notes:} This checklist follows recommended practices for empirical reproducibility in applied economics.
\end{tablenotes}
\end{threeparttable}
\end{table}
