Dependence in the frequency domain

A periodogram complements autocorrelation by locating periodic structure in returns. Sampling length, the number of observed cycles and multiple comparisons constrain its interpretation.

The recorded study in the current app, viewed in the frequency domain. The periodogram describes periodic structure in the return series; a peak must be interpreted against sampling and multiplicity.Open full size
The recorded study in the current app, viewed in the frequency domain. The periodogram describes periodic structure in the return series; a peak must be interpreted against sampling and multiplicity.

Pages that carry the method, its edges and a study

Causalitywhat the gate checks before a search, what a refusal names, and what it cannot narrow down
Export fidelitythe distance between a translated file and the run it came from, target by target
Measurement protocolhow a published figure is produced, dated, and what its denominator is
Guard reportthree tested controls, their passing and biting inputs, and exact source paths
Validity domainthe conditions under which each result holds, with the control the build offers today
Best Sharpe of Na simulation of the luck ceiling: how far the best of N zero-edge strategies climbs, by track length, with its script and results file

A null that carries the serial dependence

Resampling uses a stationary bootstrap, so the null distribution preserves the block structure of a return series. Multiplicity control follows Romano and Wolf's stepwise method, studentising before taking the maximum and recentring per configuration.

White's Reality Check and Hansen's Superior Predictive Ability run on the same matrix. Bonferroni is computed and weighs in 0 decisions: it is returned so the distance between a conservative bound and the corrected one stays visible.

Politis, D. N., & Romano, J. P. (1994) The Stationary Bootstrap Journal of the American Statistical Association doi:10.1080/01621459.1994.10476870
Romano, J. P., & Wolf, M. (2005) Stepwise Multiple Testing as Formalized Data Snooping Econometrica doi:10.1111/j.1468-0262.2005.00615.x
White, H. (2000) A Reality Check for Data Snooping Econometrica doi:10.1111/1468-0262.00152
Hansen, P. R. (2005) A Test for Superior Predictive Ability Journal of Business & Economic Statistics doi:10.1198/073500105000000063
ACF of returns in Stochastly, Full desk · 155 nodes, light theme.Open full size
Autocorrelation by lag, with the reference band shown beside the observed values.

What a Sharpe is worth after the search that found it

The Deflated Sharpe compares the best configuration against the ceiling luck alone reaches across the trials that were run. The standard error carries skewness and kurtosis, and the ceiling uses the expected maximum of N trials with its Euler correction. The result returns the null distribution, the luck ceiling, and whether the observed value clears it.

The effective number of trials is derived from the p-value of the maximum rather than counted, and two estimators are published side by side because they disagree: a per-grid count depends on the order the configurations were swept in, and the stepwise one does not.

The Probabilistic and the Deflated Sharpe stay two separate calculations: the first asks whether a Sharpe clears a benchmark on the sample it was measured on, the second asks what the search that found it was worth. The overfitting probability is computed by CSCV over blocks of the configuration matrix.

Overfitting is tested on the configurations that ran ungated, and not on the survivors: asking the selection to grade itself returns the answer it was built to give.

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 doi:10.3905/jpm.2014.40.5.094
Bailey, D. H., Borwein, J., López de Prado, M., & Zhu, Q. J. (2016) The Probability of Backtest Overfitting The Journal of Computational Finance doi:10.21314/JCF.2016.322

Four conditions under which no number is returned

fewer than 30 effective observationsreported as insufficient, with the figure that failed
fewer than 30 common barsnot computed; the missing sample is named
fewer than 2 finished configurationsnot computed; the missing sample is named
a bootstrap p-value of exactly zeroreported as (1+count)/(B+1), since exact zero is an artefact of the draw count

A correction that returns a number on a sample too small to support it is worse than a refusal, because the number travels and the sample size does not.

Anchored walk-forward, with an embargo

Training is an anchored expanding walk-forward, and the embargo between the training block and the test block defaults to the label horizon. The report names the model that actually ran along the LightGBM to scikit-learn to ridge seam.

The ml family holds 38 nodes, 24 of them validated by executable checks. Machine-learning nodes are outside the export targets for a structural reason: their features are cross-sectional ranks computed across the universe of the run, which a single-symbol target cannot compute.

The backend charges no friction it was not given: zero declared cost means zero charged cost, and the report states it.

Tests that report, and gate 0 configurations

ADF, KPSS, Jarque-Bera and Kolmogorov-Smirnov run on returns; Engle-Granger and Johansen run on the equity curves. No threshold is wired to any of them: p-values and critical values are returned for a reader, and 0 configurations are excluded on their result.

KPSS with its parameters estimated on the same data is conservative, and that property is written beside the test itself.

Diagnostics wired as validated nodes

Ljung-Box, the Hurst exponent, GARCH and EGARCH conditional volatility, and change-point detection by BOCPD or CUSUM are nodes of the catalogue, each covered by executable validation.

Returns and the equity curve are separate inputs, and each result states which of the two it was computed on: a Hurst exponent on returns and a Hurst exponent on an equity curve answer different questions, and a figure that omits its input cannot be read.

A validation suite that tries to knock down a pass

Six controls attempt to refute a GO verdict, and their own error rates are measured: 0.017 false positives, 0.000 false negatives, and a power rising from 0.17 to 1.00 between 0.03 and 0.27 sigma.

No language model takes part in a verdict. The assistant triggers the validation suite and reads its output; the calculation remains separate from the conversation.

Where each method stops holding

The perimeter of a result, the direction of its known effects and the control available in the build are registered on one page, entry by entry.

Validity domain →