Fixed-lag cross-correlation assumes the delay between two markets never moves. It does. Dynamic time warping aligns two series with a stretchable path, scoring shape similarity and recovering a lead-lag that varies through time.
Real prices are random numbers with memory, so an EMA of noise plus a cumulative sum makes a passable synthetic chart. Generate thousands to put error bars on a backtest, but never to prove edge.
Scoring strategies four ways then averaging the weights isn't rigorous: the metrics collapse to two correlated families and every input is a noisy in-sample estimate. Beat equal-weight out of sample.
You can't simulate a limit fill that never happened. Maker/taker on historical trades works only on thin venues; pure making is just prod tuning. And Avellaneda-Stoikov is risk times root holding time.
A quote stamped newer than light can travel isn't fast, your clocks disagree. Fix chrony first, then use an empirical latency floor (half the fastest ping) to catch and correct cross-venue drift.
A NATGAS daytrader legend claims a guaranteed 20-25h sell-wave cycle, 44 trades a month. Run it through the gauntlet: cause test, multiple-comparisons, permutation null, and cost arithmetic. It is folklore until proven otherwise.
Trend and reversion are one process split by the sign of beta. Regress a series on its own lag and OLS understates beta's magnitude in both cases, because the lagged regressor shares error terms with the target. You end up believing in less trend and less reversion than the market carries.
Replace the volatility term with volume in most alphas and the backtest barely moves, because they ride the same information clock. Feeding a model both is double-counting one factor. Keep one scale, and add their ratio, Amihud illiquidity, as the residual that actually carries new information.
Pick the model by interaction strength: ridge when near-additive, XGBoost when interactions dominate. XGBoost also handles NaNs natively, avoiding imputation lookahead; else use an IC-weighted ensemble.
A decision tree mines conditional alphas by carving feature space into boxes. It picks each split to maximize a similarity gain and predicts the mean return per leaf. Stop early or it memorizes noise.
One tree is fragile: a small data change flips its top split. Bagging averages many trees to cut variance; boosting fits each new tree to the residual to cut bias. XGBoost and LightGBM are boosting.
Relabel every long as a short and a return model should flip its sign. Linear models get this free through their weights; a tree relearns each split's mirror, so engineer the symmetry back.