\newpage \begin{appendices} \section{Variable definitions and data lineage} \label{app:variables} \begin{table}[H] \centering\scriptsize \caption{Variable definitions and lineage} \begin{tabular}{p{3.4cm}p{8.2cm}p{3.2cm}} \toprule Variable & Definition & Source / step \\ \midrule $A_{i,q}$ & Earnings-release date: first \texttt{earnings\_events.event\_date} in $[E_q, F_q+10\,\mathrm{d}]$ & FinData Postgres extract (01a) \\ $F_{i,q}$, $V_{i,q}$ & SEC filing date; availability $=F+1$ day 00:00 ET & \texttt{/fundamentals} (02) \\ $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} \\ $D_{i,q}$ & $\mathbb 1[S_{i,q}\le-0.005]$ & 02 \\ Secondary 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 \\ Intraday 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} \\ Daily 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 \\ Accounting 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 \\ Returns & split- and dividend-adjusted close-to-close from raw bars and \texttt{corporate\_actions} (ex-date rule) & 03 \\ \bottomrule \end{tabular} \end{table} \section{Leakage battery} \label{app:leakage} Each guard is a unit test in \texttt{tests/}: (L1) future facts, (L2) fiscal-end joins, (L3) post-cutoff bars, (L4) test-period transforms, (L5) DST/timezone, (L6) identifier drift, (L7) splits/dividends, (L8) release-day bars, (L9) overlapping windows across splits, (L10) survivorship report, (L11) ingestion dates, (L12) randomised placebos. The live test \texttt{test\_asof\_equivalence} verifies that the local as-of join reproduces the API's \texttt{as\_of} output on random entities and instants. \section{Additional tables} \label{app:tables} \begin{table}[H]\centering\footnotesize \caption{Continuous target: ridge forecasts of the winsorised surprise (test period)} \input{tables/tab10b_continuous} \end{table} \begin{table}[H]\centering\footnotesize \caption{Transfer to held-out firms (20\% of firms never seen in training)} \input{tables/tab09b_firmholdout} \end{table} \begin{table}[H]\centering\footnotesize \caption{Announcement-window abnormal returns on the ex-ante signal} \input{tables/tab11b_car} \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} \end{table} \section{Reproducibility} \label{app:repro} The pipeline (\texttt{scripts/00}--\texttt{09}) runs on the FinData storage node against the local API; manifests in \texttt{artifacts/manifests} pin dataset versions and hashes; the design freeze hash is recorded before the first model fit. Raw extracts are deleted after feature extraction and are reproducible from the pinned versions. \end{appendices}