1\newpage2\begin{appendices}3\section{Variable definitions and data lineage}4\label{app:variables}5\begin{table}[H]6\centering\scriptsize7\caption{Variable definitions and lineage}8\begin{tabular}{p{3.4cm}p{8.2cm}p{3.2cm}}9\toprule10Variable & Definition & Source / step \\11\midrule12$A_{i,q}$ & Earnings-release date: first \texttt{earnings\_events.event\_date} in $[E_q, F_q+10\,\mathrm{d}]$ & FinData Postgres extract (01a) \\13$F_{i,q}$, $V_{i,q}$ & SEC filing date; availability $=F+1$ day 00:00 ET & \texttt{/fundamentals} (02) \\14$S_{i,q}$ & $(X_q-\hat X_q)/TA_{q-1}$, $X=$ operating income, $\hat X_q=X_{q-4}+\frac14\sum_{k=0}^3(X_{q-1-k}-X_{q-5-k})$ & 02, \texttt{labels.py} \\15$D_{i,q}$ & $\mathbb 1[S_{i,q}\le-0.005]$ & 02 \\16Secondary targets & net-income surprise; $\Delta$ROA$_{yoy}\le-0.01$; $(CFO_q-CFO_{q-4})/TA\le-0.01$; current ratio $-10\%$ or coverage $<1$ from $\ge1$; $|S|\ge0.005$; EPS $<$ estimate & 02 \\17Intraday families (per bar length $f\in\{1,5,30\}$ min) & RV $=\sum r^2$; BPV $=\frac{\pi}{2}\sum|r_t||r_{t-1}|$; RJ $=\max(0,\mathrm{RV}-\mathrm{BPV})/\mathrm{RV}$; RS$^-$/RV; SJV $=(\mathrm{RS}^+-\mathrm{RS}^-)/\mathrm{RV}$; realized skewness/kurtosis; $\max r^2/\mathrm{RV}$; AC(1); drift $=\ln(C/O)$; opening/closing 30-min volume shares; volume Gini; down-bar volume share; present-bar share; RV share on SPY-down bars; $\beta=\sum r\,r^{SPY}/\sum (r^{SPY})^2$; vol-of-vol; RV/Var(daily) & 03, \texttt{features.py}, \texttt{samples.py} \\18Daily block & 20/60-day log returns, SD, Parkinson, skewness, kurtosis, overnight/intraday sums, volume ratios (20d, 5d vs 60d median), Amihud (60d), zero-return share, log dollar volume, max drawdown (60d), bars per day & 03 \\19Accounting block & gross/operating margin, NI/TA, CFO/TA, accruals, cash/TA, debt/TA, current ratio, capex/TA, R\&D/revenue, coverage, loss dummy, log assets, ROA, revenue growth, net issuance, log market cap, last surprise, mean of last four surprises, trailing adverse rate, information age & 02--04 \\20Returns & split- and dividend-adjusted close-to-close from raw bars and \texttt{corporate\_actions} (ex-date rule) & 03 \\21\bottomrule22\end{tabular}23\end{table}2425\section{Leakage battery}26\label{app:leakage}27Each guard is a unit test in \texttt{tests/}: (L1) future facts, (L2) fiscal-end joins, (L3) post-cutoff bars,28(L4) test-period transforms, (L5) DST/timezone, (L6) identifier drift, (L7) splits/dividends, (L8) release-day bars,29(L9) overlapping windows across splits, (L10) survivorship report, (L11) ingestion dates, (L12) randomised placebos.30The live test \texttt{test\_asof\_equivalence} verifies that the local as-of join reproduces the API's31\texttt{as\_of} output on random entities and instants.3233\section{Additional tables}34\label{app:tables}35\begin{table}[H]\centering\footnotesize36\caption{Continuous target: ridge forecasts of the winsorised surprise (test period)}37\input{tables/tab10b_continuous}38\end{table}39\begin{table}[H]\centering\footnotesize40\caption{Transfer to held-out firms (20\% of firms never seen in training)}41\input{tables/tab09b_firmholdout}42\end{table}43\begin{table}[H]\centering\footnotesize44\caption{Announcement-window abnormal returns on the ex-ante signal}45\input{tables/tab11b_car}46\begin{minipage}{\textwidth}\vspace{0.3em}\footnotesize\emph{Notes.} CAR from $c+1$ to $A_q+1$, market-adjusted, winsorised 1/99\%; firm and sector$\times$quarter fixed effects; two-way clustered SEs. $^{*}$, $^{**}$, $^{***}$: 10, 5, 1\%.\end{minipage}47\end{table}4849\section{Reproducibility}50\label{app:repro}51The pipeline (\texttt{scripts/00}--\texttt{09}) runs on the FinData storage node against the local API; manifests in52\texttt{artifacts/manifests} pin dataset versions and hashes; the design freeze hash is recorded before the first53model fit. Raw extracts are deleted after feature extraction and are reproducible from the pinned versions.54\end{appendices}55