\section{Problem Formalization}
\label{sec:formalization}

% TODO content notes:
% - Define the backtest setting formally: price series P_t, signal S_t,
%   position p_t, and the honesty constraint p_t = f(P_{<=t}, S_{<=t}) only
%   (no access to P_{>t}).
% - Define lookahead bias precisely: any computation where p_t depends,
%   directly or via a vectorized operation (e.g. shift(-1), rolling window
%   misaligned by one bar, future-looking groupby), on P_{>t}.
% - Show the general shape of the bug class in vectorized code: a single
%   missing .shift(1) or an inclusive/exclusive boundary error in a rolling
%   window. Use abstract pseudocode here; the concrete K12 diff goes in
%   Section 4.
% - State the falsifiability criterion that motivates Section 5: if a
%   strategy is profitable on data with zero true signal (pure GBM noise),
%   the profit must be an artifact of the backtest mechanics, not of the
%   strategy logic.
