TrustedFunders

Blog - Temporal Cross-Validation in Financial Machine Learning: Preventing Leakage in Dependent Market Data

A rigorous framework for preventing information leakage when machine learning models are evaluated on dependent and non-stationary market data.

January 22, 2026 · Said Farah

Stock-market chart displayed on a computer monitor

Abstract

Machine learning in finance is uniquely exposed to information leakage, because predictions are made on dependent, non-stationary time series where both features and labels often span overlapping time intervals (López de Prado, 2018). Standard validation practices imported from independent and identically distributed (i.i.d.) settings – random train-test splits, k-fold cross-validation and unstructured hyperparameter tuning – systematically understate generalization error when applied to market data (Bailey et al., 2014; López de Prado, 2018). This article formalizes the main channels of leakage in financial machine learning workflows, including look-ahead bias, target leakage through label construction, overlapping labels, feature-driven leakage, cross-sectional channels and the subtleties introduced by data revisions (Kaufman & Rosset, 2014; Ince & Porter, 2006). Building on the literature on backtest overfitting and temporal evaluation, we then survey a set of validation frameworks designed to respect temporal order: chronological splits, rolling and expanding windows, walk-forward testing, and the purged and embargoed k-fold cross-validation schemes introduced by López de Prado (2018). For each, we discuss appropriate use cases and limitations. Finally, we propose a concrete research protocol for predictive modelling on financial time series that integrates temporal cross-validation, transaction-cost modelling and out-of-sample evaluation aimed at estimating investable rather than merely predictive performance (Bailey et al., 2015; Harvey & Liu, 2015).

Keywords

Financial machine learning; backtest overfitting; purged cross-validation; time-series cross-validation; information leakage; non-stationarity; systematic trading.

1. Introduction

Machine learning methods are now standard tools in quantitative finance, from high-frequency market making to medium-horizon factor investing and long-term asset allocation (López de Prado, 2018). However, directly transplanting validation procedures from i.i.d. machine learning into financial contexts leads to systematically over-optimistic performance estimates and a high incidence of backtest overfitting (Bailey et al., 2014; Bailey et al., 2015). The core problem is that market data are serially and cross-sectionally dependent, subject to non-stationarity and regime changes, and often revised ex post (Ang & Timmermann, 2012; Hamilton, 1994). Under these conditions, naive cross-validation procedures inadvertently leak information from the future into the training process or from the test set into model selection (Cawley & Talbot, 2010; Hyndman & Athanasopoulos, 2021).

The literature has responded with several strands of methodology. Forecasting research has long emphasized rolling-origin evaluation and time-series cross-validation as alternatives to random k-fold splits (Tashman, 2000; Hyndman & Athanasopoulos, 2021). In parallel, the financial machine learning literature has introduced purged and embargoed cross-validation schemes specifically designed for overlapping-label settings, along with combinatorial variants that support explicit estimation of the probability of backtest overfitting (Bailey et al., 2015; López de Prado, 2018). These advances complement broader work on multiple testing, the Deflated Sharpe Ratio and related methods for assessing whether reported Sharpe ratios are likely to be genuine rather than optimization artefacts (Bailey & López de Prado, 2014; Harvey & Liu, 2015).

This article focuses on the practical problem faced by quantitative researchers: how to design temporal cross-validation schemes that prevent leakage in dependent market data while still providing statistically efficient use of limited samples. Section 2 explains why financial time series break the core assumptions underlying standard validation. Section 3 catalogues the main forms of information leakage in financial machine learning pipelines. Section 4 surveys temporal validation frameworks and their appropriate use. Section 5 synthesizes these elements into a practical research protocol. Section 6 discusses limitations and open problems, including non-stationarity, regime changes, multiple testing and the gap between predictive and investable performance. Section 7 concludes.

2. Why Financial Time Series Break Standard Validation Assumptions

Standard cross-validation procedures assume that observations are i.i.d. and that the joint distribution of the data is stable over the validation region (Hastie et al., 2009). Randomly shuffling observations into k folds is valid only if there is no temporal or structural dependence and if the training and test sets are exchangeable draws from a common distribution. Neither condition holds in financial markets. Returns and other financial variables exhibit serial correlation, volatility clustering and time-varying higher moments (Cont, 2001). Cross-sectional dependence within and across asset classes is pervasive, driven by common factors, institutional constraints and investor flows (Cochrane, 2005).

Distributions also shift over time due to structural breaks, policy changes, technological innovation and changing market microstructure, which violate stationarity assumptions (Ang & Timmermann, 2012; Hamilton, 1994). As a result, naive random splits mix regimes and allow information from the future to influence model training and hyperparameter selection, because future regimes “contaminate” training statistics and cross-validated risk estimates (Cawley & Talbot, 2010). In particular, training procedures that standardize features using full-sample moments or tune regularization strength via shuffled k-fold cross-validation implicitly assume that the marginal and conditional distributions are time invariant (Hastie et al., 2009).

Moreover, many financial labels are constructed from forward-looking windows, such as h-period returns or triple-barrier events (López de Prado, 2018). When labels overlap in time, randomly assigning individual observations to folds creates mechanical overlap between the information sets of training and test observations (Bailey et al., 2015). Purged and embargoed cross-validation schemes were introduced precisely to address this pathology by removing overlapping-label observations from training and adding temporal buffers around test folds (López de Prado, 2018).

3. The Main Forms of Information Leakage

3.1 Look-ahead bias and target leakage

Look-ahead bias occurs when information that would not have been available at the decision time is used in feature construction, label definition or preprocessing. Classic examples include using end-of-day close prices to simulate intraday decisions, using revised macroeconomic series in place of real-time vintages, or normalizing features using statistics computed over the full sample (Ince & Porter, 2006; Kaufman & Rosset, 2014). In machine learning terms, this is a form of target leakage, because the model’s input representation indirectly embeds information that depends on future outcomes (Kaufman & Rosset, 2014).

In financial machine learning, target leakage is exacerbated by engineered labels. For example, a label may indicate whether a future return exceeds a threshold over the interval from t to t + h (López de Prado, 2018). If the feature set includes indicators constructed using prices or volumes beyond time t, or if the standardization of features is performed using statistics computed across the entire sample, the model effectively learns from the future (Hyndman & Athanasopoulos, 2021). This invalidates any out-of-sample performance estimate based on such data and is a major source of inflation in reported Sharpe ratios and classification metrics (Bailey et al., 2014).

3.2 Overlapping labels

Overlapping labels are ubiquitous when using horizon-based returns or event-based labelling schemes such as the triple-barrier method (López de Prado, 2018). Suppose labels are defined as h-period forward returns. Then the label window for observations at times t and t + 1 overlap over h - 1 periods. If a random k-fold cross-validation is applied at the observation level, it is almost inevitable that some of these overlapping windows are split across training and test sets (Bailey et al., 2015). The model then indirectly sees part of the test period when training, leading to optimistic estimates of generalization error (Bailey et al., 2015).

This problem persists even when the folds are contiguous in time if purging is not applied. The key insight is that the unit of independence is the label window, not the timestamp of the observation (López de Prado, 2018). Purged cross-validation addresses this by removing from the training set any observation whose label window intersects the test window, while embargo periods further buffer against leakage through serially correlated features (Bailey et al., 2015; López de Prado, 2018). Combinatorial Purged Cross-Validation extends this idea by evaluating many train–test block allocations to estimate the distribution of out-of-sample performance and the probability of backtest overfitting (Bailey et al., 2015).

3.3 Leakage through feature construction

Leakage can enter through feature construction even when labels are properly defined. Features that use forward-looking transformations, such as centered moving averages, symmetric filters or realized volatility computed over future intervals, trivially leak information (Kaufman & Rosset, 2014). More subtly, features derived from cross-sectional rankings or z-scores computed using contemporaneous data can embed forward information if the ranking universe includes assets whose prices incorporate news that has not yet impacted the target instrument (Harvey & Liu, 2015).

Preprocessing steps such as scaling, dimensionality reduction or feature selection also create leakage if they are fitted on the full dataset rather than on each training fold separately (Hastie et al., 2009). For example, principal component analysis of the entire return panel uses future covariance information to define factors, which then enter the model as features. Correct practice requires fitting all preprocessing transformations within each training split and applying them to the corresponding test set only for transformation, ensuring that test data never influence learned transformations or selected features (Cawley & Talbot, 2010; Hyndman & Athanasopoulos, 2021).

3.4 Cross-sectional leakage

Cross-sectional leakage arises when the dependence structure across instruments is ignored. If one uses a pooled panel of asset returns to train and test a model, and if some assets’ returns anticipate those of others (e.g., due to lead–lag relationships, index rebalancing or market microstructure effects), then random cross-sectional assignment of instruments to folds can leak information (Harvey & Liu, 2015). For instance, including both a stock and its sector ETF in the same fold, while using lag structures that allow the ETF to anticipate stock moves, may partially reveal test-period dynamics in the training set.

Methodologically, this calls for grouping schemes that respect economic structure. Grouped or clustered cross-validation, where instruments from the same sector, geography or capitalization bucket are kept together, reduces cross-sectional leakage by preventing information about an instrument’s future behaviour from entering the training set via correlated peers (Hansen et al., 2011). In extreme cases, validation must be performed at the portfolio level, where entire universes or regions are held out as test sets, particularly for strategies that exploit cross-sectional relationships and relative-value effects (Harvey & Liu, 2015).

3.5 Data revisions and survivorship bias

Financial datasets are often subject to revision, restatement and sample selection issues, which introduce subtler but material forms of leakage. Macroeconomic series are published in real time, then revised multiple times; accounting data can be restated years later; index constituent lists are maintained with survivorship bias unless explicitly corrected (Ince & Porter, 2006). Training and testing on a modern, cleaned dataset that incorporates revisions and excludes delisted assets creates a form of look-ahead bias: the model is evaluated on a data-generating process that was not accessible to historical decision-makers (Ince & Porter, 2006).

Robust research protocols therefore use point-in-time databases, real-time vintages of macro variables, and survivorship-bias-free universes where delisted assets remain in the sample with appropriate return paths (Ince & Porter, 2006; Harvey & Liu, 2015). In equity data, this typically requires using vendor feeds that store historical index constituent lists and corporate actions in a way that reflects the information set available at each point in time, rather than the ex post “corrected” history. These measures do not eliminate leakage but remove a major class of artefacts that otherwise dominate backtest performance (Bailey et al., 2014).

4. Temporal Validation Frameworks

4.1 Chronological train–test splits

The simplest temporal validation approach is a single chronological train-test split: train the model on the first training observations and evaluate on the subsequent test observations (Tashman, 2000). This respects temporal order and avoids explicit look-ahead, provided that preprocessing is restricted to the training period and no information from the test set is used in hyperparameter tuning. However, a single split exposes the evaluation to “lucky” or “unlucky” choices of test window, particularly in the presence of regime changes and structural breaks (Ang & Timmermann, 2012). It is an informative baseline but insufficient for robust model selection or for estimating the distribution of performance across market conditions (Hyndman & Athanasopoulos, 2021).

4.2 Rolling and expanding windows

Rolling and expanding window schemes generalize the chronological split by creating multiple train-test pairs that move through time (Hyndman & Athanasopoulos, 2021). In expanding windows, the training set starts at the beginning of the sample and grows as time progresses, with each fold training on all data up to a given origin and testing on the subsequent horizon; this is also known as an anchored walk-forward or rolling-origin evaluation (Tashman, 2000). In rolling windows, the training window has fixed length and slides forward, dropping the oldest observations as new ones enter, which is appropriate when recent data are more informative than distant history (Hyndman & Athanasopoulos, 2021).

Expanding windows are appropriate when older data remain informative and computational resources permit re-estimating models on growing samples (Hyndman & Athanasopoulos, 2021). Rolling windows are preferable when the process exhibits strong non-stationarity and time-varying parameters, as they down-weight stale regimes by construction (Ang & Timmermann, 2012). In both cases, the test window should be at least as long as the intended deployment horizon, and all fitting, feature selection and hyperparameter tuning must be nested within the training window to avoid leakage (Cawley & Talbot, 2010).

4.3 Walk-forward testing

Walk-forward testing is a practitioner term for rolling-origin evaluation where a full model selection pipeline is repeatedly executed over expanding or rolling windows, mimicking how models would be updated in production (Pardo, 2008). At each iteration, the researcher selects hyperparameters based only on past data, trains the final model and records performance over the subsequent test period. Aggregating these out-of-sample segments yields a more stable estimate of performance over multiple regimes and reduces sensitivity to a single split (Tashman, 2000).

While walk-forward testing respects temporal structure, it typically uses disjoint train-test blocks and does not by itself address overlapping-label leakage (López de Prado, 2018). When labels span multiple periods, walk-forward schemes must be combined with purging and embargo buffers to ensure that training labels do not overlap the test horizon and that feature windows do not reuse test-period observations in later training folds (Bailey et al., 2015; López de Prado, 2018).

4.4 Purged k-fold cross-validation and embargo periods

Purged k-fold cross-validation, introduced and formalized for finance by López de Prado (2018), adapts k-fold cross-validation to overlapping financial labels. The sample is partitioned into k contiguous time blocks. For each fold, one block is treated as the test set, and the training set consists of the remaining blocks after purging any observation whose label window intersects the test interval (Bailey et al., 2015; López de Prado, 2018). This removes mechanical overlap between training and test labels. An embargo period is then applied after each test block, removing from the training set an additional buffer of observations immediately following the test interval, to prevent leakage through serially correlated features that incorporate test-period data (Bailey et al., 2015).

Bailey et al. (2015) use this framework to define the Probability of Backtest Overfitting and show that standard hold-out methods are unreliable for strategy selection when many strategy variants are tested. Combinatorial Purged Cross-Validation (CPCV) extends the approach by evaluating all combinatorial assignments of blocks to training and test sets, producing a distribution of out-of-sample performance rather than a single estimate and enabling numerical estimation of the probability that the in-sample winner underperforms the median strategy out of sample (Bailey et al., 2015). In practice, purged k-fold with embargo is well-suited for medium-frequency strategies with overlapping events, where sample sizes are modest and leakage risk is high, and where the cost of discarding some training observations is outweighed by the reduction in bias (López de Prado, 2018).

5. A Practical Research Protocol

This section outlines a practical workflow for developing a predictive model on financial time series while minimizing information leakage. Consider a daily equity strategy that predicts returns over the next h days for a universe of stocks.

5.1 Define timestamps, labels and horizons

First, define a consistent timestamp convention. Let the feature set denote information known at the close of day t, and let the label be the h-day forward return from t to t + h (López de Prado, 2018). By construction, this label is not known at time t. If using event-based labeling, define for each event a start and end time, and associate the label with that interval; these intervals will later determine purging of overlapping events in cross-validation (López de Prado, 2018).

Document the economic rationale for the horizon and barrier definitions. Very short horizons are dominated by microstructure noise and transaction costs, while very long horizons mix multiple structural regimes and slow feedback for model adaptation (Cartea et al., 2015). The choice of horizon should align with the intended trading frequency, risk constraints and the liquidity profile of the universe being traded (Cochrane, 2005).

5.2 Construct features without look-ahead

All features must be computable using information available at time t. This implies using strictly lagged prices, volumes and fundamentals, as well as lagged or contemporaneously available macro indicators (Kaufman & Rosset, 2014). Rolling averages, volatilities or other transformations must use only data up to and including t, not centered windows that peek into the future. Any cross-sectional transformations, such as ranks or z-scores, should be computed within each time slice using only contemporaneous data and applied consistently across instruments (Harvey & Liu, 2015).

Preprocessing pipelines should be implemented in a way that allows refitting on arbitrary training subsets. For example, standardization parameters (means and variances) should be estimated on the training data for each fold and applied to the corresponding test data (Hastie et al., 2009). Feature selection procedures that depend on target values, such as mutual information filtering or lasso regularization paths, must also be nested within the training folds to avoid leaking label information into the test set. In practice, this is achieved by integrating cross-validation-compatible transformers and selectors into the modelling pipeline so that they are re-fitted within each split (Cawley & Talbot, 2010).

5.3 Design temporal splits with purging and embargo

Next, sort observations by time and construct k contiguous time blocks. For each fold, choose one or more blocks as the test set and define the training set as the remaining blocks, minus any observations whose label windows intersect the test interval (Bailey et al., 2015). For each test event, remove from the training set any event whose label window overlaps the test window. Then apply an embargo by excluding from the training set all events whose start times lie in a buffer interval immediately after the test period, of length proportional to the label horizon or feature persistence (Bailey et al., 2015; López de Prado, 2018).

This purged and embargoed k-fold scheme can be implemented as a custom cross-validation iterator in common machine learning libraries or via dedicated packages that extend scikit-learn’s KFold for time-series finance (Razavi, 2026). The number of folds k balances variance and bias of performance estimates: too few folds yield noisy estimates; too many increase dependence between folds and reduce the effective training size. Values between 5 and 10 are common in practice, with block boundaries aligned to natural market periods such as months or quarters to reflect regime and seasonality structure (López de Prado, 2018).

5.4 Nested hyperparameter selection

Hyperparameter tuning and model selection must be nested within the temporal cross-validation to avoid optimistic bias (Cawley & Talbot, 2010). A straightforward approach is nested cross-validation: an outer loop that defines purged temporal folds for performance estimation, and an inner loop on each training split for hyperparameter optimization using a coarser temporal splitting scheme. The inner loop can use a smaller number of folds or simpler rolling-origin schemes, provided temporal order and purging are preserved (Hyndman & Athanasopoulos, 2021).

In practice, computational constraints often require approximations. One alternative is to fix a small hyperparameter grid based on prior knowledge, evaluate it once using purged cross-validation and select a configuration that balances performance and stability across folds (Harvey & Liu, 2015). Crucially, the test data used in the final performance report must not have influenced hyperparameter choice: the outer test folds serve purely for evaluation, and any tuning must be contained within inner folds or earlier historical windows (Cawley & Talbot, 2010). The goal is not to find the absolute best hyperparameters ex post, but to approximate the model selection process that would have been feasible in real time.

5.5 Incorporate transaction costs and execution assumptions

Predictive performance metrics such as accuracy, AUC or information ratio must be translated into investable performance by incorporating transaction costs, slippage and market impact. This requires a trading rule that maps model outputs into positions, subject to constraints on turnover, leverage and risk (Cartea et al., 2015). The backtest engine should simulate realistic execution using contemporaneous bid–ask spreads, volume constraints and latency assumptions derived from observed market microstructure (Cartea et al., 2015).

Transaction costs and constraints must be applied consistently across all validation folds. For example, position limits and capital allocations should be fixed, and any parameter tuning of execution rules should be treated as part of the model selection process, subject to the same cross-validation discipline (Harvey & Liu, 2015). Ignoring costs in the validation loop and only applying them at the final stage leads to systematically overstated investable performance and can reverse the ranking of candidate models, particularly in high-turnover strategies (Bailey & López de Prado, 2014).

5.6 Final out-of-sample evaluation

Once a model architecture and hyperparameters have been selected, a final out-of-sample evaluation should be conducted on a hold-out period that was not used for any aspect of training or model selection (Tashman, 2000). This final test can use a single chronological split or a short walk-forward evaluation with frozen model-selection rules. Performance metrics should include risk-adjusted returns, drawdowns, turnover, capacity measures and sensitivity analyses to perturbations of the trading rule and execution assumptions (Cartea et al., 2015).

Even with rigorous temporal cross-validation and purging, the risk of backtest overfitting remains. Tools such as the Probability of Backtest Overfitting and the Deflated Sharpe Ratio provide quantitative diagnostics of how likely a reported Sharpe ratio could be due to noise given the number of trials and the structure of the validation (Bailey et al., 2014; Bailey et al., 2015). These should be viewed as complementary checks rather than guarantees: a low estimated probability of backtest overfitting increases confidence in the robustness of a strategy but does not eliminate model risk or implementation risk (Aparicio & López de Prado, 2018).

6. Limitations and Open Problems

Several fundamental challenges remain unresolved. First, non-stationarity and regime changes mean that any fixed validation scheme can only approximate future conditions. A model that validates well over past regimes may fail under new policy regimes, technological shifts or structural breaks, even when purged and embargoed cross-validation is used (Ang & Timmermann, 2012). Adaptive schemes that reweight or truncate old data, apply change-point detection, or segment evaluation by regime mitigate but do not eliminate this risk (Ang & Timmermann, 2012).

Second, multiple testing and research degrees of freedom make it difficult to quantify genuine out-of-sample predictability. The work of Bailey et al. (2014, 2015) and related contributions on deflated Sharpe ratios, false discovery rates and model confidence sets highlight the severity of this problem, showing that testing even modest numbers of strategy variants can almost guarantee at least one spuriously impressive backtest (Harvey & Liu, 2015; Aparicio & López de Prado, 2018). Practical methods for controlling family-wise error rates in large-scale strategy research, while preserving sufficient power to detect weak but real signals, remain an active area of investigation (Harvey & Liu, 2015).

Third, there is a persistent gap between predictive and investable performance. Even with leakage-aware temporal cross-validation, models are typically evaluated on simulated execution under stylized assumptions. Real-world frictions such as queue position effects, hidden liquidity, regulatory constraints and behavioural responses of other market participants are rarely captured in backtests (Cartea et al., 2015). Consequently, robust research protocols must treat validation results as upper bounds on realistic performance and must be complemented by conservative deployment, capacity limits and continuous monitoring of live-vs-backtest divergence (Cartea et al., 2015).

Finally, there is no universally sufficient validation method. Purged cross-validation with embargo is well-motivated for overlapping labels, but it comes at the cost of reduced sample size and increased variance of estimates (López de Prado, 2018). Rolling-origin evaluation emphasizes temporal robustness but may under-utilize data in early folds, and pure walk-forward schemes can be computationally expensive for complex models. Combining multiple validation schemes, stress-testing models under alternative splits and integrating economic prior knowledge remain the best available defences against overfitting, rather than any single “silver bullet” protocol (Aparicio & López de Prado, 2018; Harvey & Liu, 2015).

7. Conclusion

Temporal cross-validation in financial machine learning requires more than replacing random splits with chronological splits. The dependence, non-stationarity and overlapping structure of financial time series introduce specific channels of information leakage that, if unaddressed, render performance estimates unreliable and greatly increase the probability of backtest overfitting (Bailey et al., 2014; López de Prado, 2018). Techniques such as purged and embargoed k-fold cross-validation, combinatorial cross-validation and walk-forward testing provide a toolkit for constructing more honest evaluations, but they must be embedded within a disciplined research protocol that controls for multiple testing and incorporates realistic transaction-cost assumptions (Bailey et al., 2015; Harvey & Liu, 2015).

The framework outlined in this article is intended as a practical baseline for quantitative researchers, especially those deploying machine learning models into live trading systems. It aims to reduce, not eliminate, the risk of backtest overfitting, and it does not constitute investment advice or a guarantee of profitability. Ultimately, the value of temporal cross-validation lies in aligning research practices with the causal structure of financial decision-making: models must be trained on the past, tested on the future and evaluated on the basis of investable, not merely predictive, performance (López de Prado, 2018).

References

Ang, A., & Timmermann, A. (2012). Regime changes and financial markets. Annual Review of Financial Economics, 4(1), 313–337. https://doi.org/10.1146/annurev-financial-110311-101808

Aparicio, D., & López de Prado, M. (2018). How hard is it to pick the right model? Model confidence sets and backtest overfitting in finance. Algorithmic Finance, 7(1–2), 3–28. https://doi.org/10.3233/AF-180231

Bailey, D. H., Borwein, J., López de Prado, M., & Zhu, Q. J. (2014). Pseudo-mathematics and financial charlatanism: The effects of backtest overfitting on out-of-sample performance. Notices of the American Mathematical Society, 61(5), 458–471. https://www.ams.org/notices/201405/rnoti-p458.pdf

Bailey, D. H., Borwein, J., López de Prado, M., & Zhu, Q. J. (2015). The probability of backtest overfitting. Journal of Computational Finance, 18(4), 1–40. https://doi.org/10.2139/ssrn.2326253

Bailey, D. H., & López de Prado, M. (2014). The deflated Sharpe ratio: Correcting for selection bias, backtest overfitting and non-normality. Journal of Portfolio Management, 40(5), 94–107. https://doi.org/10.3905/jpm.2014.40.5.094

Cartea, Á., Jaimungal, S., & Penalva, J. (2015). Algorithmic and high-frequency trading. Cambridge University Press. https://doi.org/10.1017/CBO9781316683100

Cawley, G. C., & Talbot, N. L. C. (2010). On over-fitting in model selection and subsequent selection bias in performance evaluation. Journal of Machine Learning Research, 11, 2079–2107. http://www.jmlr.org/papers/v11/cawley10a.html

Cochrane, J. H. (2005). Asset pricing (Rev. ed.). Princeton University Press.

Cont, R. (2001). Empirical properties of asset returns: Stylized facts and statistical issues. Quantitative Finance, 1(2), 223–236. https://doi.org/10.1080/713665670

Hamilton, J. D. (1994). Time series analysis. Princeton University Press.

Hansen, P. R., Lunde, A., & Nason, J. M. (2011). The model confidence set. Econometrica, 79(2), 453–497. https://doi.org/10.3982/ECTA5771

Harvey, C. R., & Liu, Y. (2015). Backtesting (NBER Working Paper No. 24085). National Bureau of Economic Research. https://doi.org/10.3386/w24085

Hastie, T., Tibshirani, R., & Friedman, J. (2009). The elements of statistical learning: Data mining, inference, and prediction (2nd ed.). Springer. https://doi.org/10.1007/978-0-387-84858-7

Hyndman, R. J., & Athanasopoulos, G. (2021). Forecasting: Principles and practice (3rd ed.). OTexts. https://otexts.com/fpp3

Ince, O. S., & Porter, R. B. (2006). Individual equity return data from Thomson Datastream: Handle with care! Journal of Financial Research, 29(4), 463–479. https://doi.org/10.1111/j.1475-6803.2006.00189.x

Kaufman, S., & Rosset, S. (2014). Leakage in data mining: Formulation, detection, and avoidance. ACM Transactions on Knowledge Discovery from Data, 8(4), 1–21. https://doi.org/10.1145/2629332

López de Prado, M. (2018). Advances in financial machine learning. Wiley. https://doi.org/10.1002/9781119482086

Pardo, R. (2008). The evaluation and optimization of trading strategies (2nd ed.). Wiley.

Tashman, L. J. (2000). Out-of-sample tests of forecasting accuracy: An analysis and review. International Journal of Forecasting, 16(4), 437–450. https://doi.org/10.1016/S0169-2070(00)00065-0