From 47d22efadf09d9957fc7d0c6d9c16a4bf854cfc2 Mon Sep 17 00:00:00 2001 From: asoracca Date: Wed, 22 Jul 2026 19:22:38 +0000 Subject: [PATCH] feat: add strategy-selection bias research --- .github/workflows/tests.yml | 2 +- README.md | 16 +++ docs/SELECTION_BIAS.md | 42 +++++++ docs/SELECTION_BIAS_RESULTS.md | 40 +++++++ docs/assets/selection_bias.png | Bin 0 -> 105446 bytes engine/selection_bias.py | 194 +++++++++++++++++++++++++++++++++ pyproject.toml | 2 +- run_overfitting_study.py | 77 +++++++++++++ tests/test_selection_bias.py | 64 +++++++++++ 9 files changed, 435 insertions(+), 2 deletions(-) create mode 100644 docs/SELECTION_BIAS.md create mode 100644 docs/SELECTION_BIAS_RESULTS.md create mode 100644 docs/assets/selection_bias.png create mode 100644 engine/selection_bias.py create mode 100644 run_overfitting_study.py create mode 100644 tests/test_selection_bias.py diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index 638ae3f..f80db19 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -11,4 +11,4 @@ jobs: cache: pip - run: pip install -e ".[dev]" - run: python -m unittest discover -s tests -v - - run: ruff check engine tests run.py run_cross_sectional.py + - run: ruff check engine tests run.py run_cross_sectional.py run_overfitting_study.py diff --git a/README.md b/README.md index 0319aa0..9ff367c 100644 --- a/README.md +++ b/README.md @@ -55,6 +55,22 @@ explicitly first. Outputs are saved under `data/`, including every ledger, the cost-sensitivity table, and an equity chart. +## Strategy-selection bias research + +Version 1.1 adds a controlled multiple-testing experiment and an implementation +of combinatorially symmetric cross-validation. It demonstrates how searching +more zero-alpha strategy variants can manufacture an impressive in-sample +winner whose holdout performance does not persist. + +```bash +python run_overfitting_study.py +``` + +See [the selection-bias methodology](docs/SELECTION_BIAS.md) and +[recorded results](docs/SELECTION_BIAS_RESULTS.md). This diagnostic requires the +complete strategy/configuration set; applying it only to surviving backtests +would hide the selection process it is intended to measure. + ## Minimal network-free use ```python diff --git a/docs/SELECTION_BIAS.md b/docs/SELECTION_BIAS.md new file mode 100644 index 0000000..78c3a72 --- /dev/null +++ b/docs/SELECTION_BIAS.md @@ -0,0 +1,42 @@ +# Strategy-selection bias study + +## Research question + +If every tested strategy has zero true alpha, how does trying more alternatives +change the best reported Sharpe ratio and its out-of-sample performance? + +## Controlled experiment + +The runner generates correlated monthly returns under a global zero-alpha null. +It repeats the experiment for 5, 20, and 100 candidate strategies. Every +candidate has the same volatility and no expected excess return; a common shock +creates correlation between strategies. + +For each simulated dataset the study reports: + +- the best full-sample Sharpe selected with hindsight; +- the Sharpe of the first-half winner in the first half; +- that selected strategy's Sharpe in the untouched second half; +- probability of backtest overfitting estimated with combinatorially symmetric + cross-validation (CSCV). + +## CSCV and PBO + +The time series is divided into eight contiguous slices. Every choice of four +slices forms an in-sample set, and the complement forms its out-of-sample set, +creating 70 symmetric splits. For each split, the highest in-sample Sharpe is +selected and ranked against all configurations out of sample. PBO is the fraction +of selected winners whose out-of-sample relative rank is at or below the median. + +This follows the framework in Bailey et al., *The Probability of Backtest +Overfitting*: https://papers.ssrn.com/sol3/papers.cfm?abstract_id=2326253 + +## What the experiment can establish + +Because the data-generating process sets every alpha to zero, any impressive +winner is known to be selection noise. The experiment isolates the multiple- +testing mechanism and tests whether holdout and CSCV diagnostics reveal it. + +It does not estimate the PBO of every repository strategy. Applying CSCV to real +research requires recording the complete set of configurations attempted, not +only the configurations retained after looking at results. diff --git a/docs/SELECTION_BIAS_RESULTS.md b/docs/SELECTION_BIAS_RESULTS.md new file mode 100644 index 0000000..f7f16c2 --- /dev/null +++ b/docs/SELECTION_BIAS_RESULTS.md @@ -0,0 +1,40 @@ +# Selection-bias experiment results + +## Recorded run + +Each row summarizes 40 independently simulated 20-year monthly datasets. Every +candidate strategy has zero true alpha and 4% monthly volatility, with a 0.25 +common correlation. Intervals are normal-approximation 95% intervals for the +mean across repetitions. + +| Candidates tried | Best full-sample Sharpe | Selected holdout Sharpe | Mean PBO | +| ---: | ---: | ---: | ---: | +| 5 | 0.210 [0.168, 0.252] | 0.000 [-0.101, 0.102] | 0.584 [0.511, 0.657] | +| 20 | 0.389 [0.341, 0.436] | 0.011 [-0.094, 0.117] | 0.504 [0.448, 0.560] | +| 100 | 0.481 [0.441, 0.520] | 0.009 [-0.078, 0.095] | 0.514 [0.457, 0.571] | + +![Selection bias under a zero-alpha null](assets/selection_bias.png) + +## Interpretation + +Expanding the search from 5 to 100 configurations more than doubles the mean +best full-sample Sharpe, from 0.210 to 0.481, even though the simulation assigns +zero alpha to every candidate. The non-overlapping intervals make the direction +of this selection effect clear in the recorded design. + +The first-half winner's mean holdout Sharpe remains approximately zero for every +candidate count. Its intervals include zero comfortably. The apparent winner +therefore does not preserve its advantage on untouched observations. + +Mean PBO remains close to 0.5. Under the global null, the in-sample winner has +essentially random out-of-sample rank, so it falls below the median about half +the time. PBO is a diagnostic of ranking failure; it need not increase +monotonically with the number of candidates in this experiment. + +## What this does not prove + +The result does not show that all optimized strategies are false or that a +particular live strategy has zero alpha. It demonstrates a controlled mechanism: +searching a larger configuration set increases the best observed statistic even +when no candidate has genuine predictive value. A real application must retain +the complete research path, including failed and discarded configurations. diff --git a/docs/assets/selection_bias.png b/docs/assets/selection_bias.png new file mode 100644 index 0000000000000000000000000000000000000000..9ad4f6eee8eb2acdb665931edcbfe12d54c0d230 GIT binary patch literal 105446 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 z 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

J%$48>&rhG-B{f_Ti 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 d{%_0lb*Dh0Thej0 np.ndarray: + """Calculate column-wise annualized Sharpe ratios with a zero cash rate.""" + values = np.asarray(returns, dtype=float) + if values.ndim == 1: + values = values[:, None] + if values.shape[0] < 2: + raise ValueError("at least two return observations are required") + means = values.mean(axis=0) + volatility = values.std(axis=0, ddof=1) + return np.divide( + means * math.sqrt(periods_per_year), + volatility, + out=np.zeros_like(means), + where=volatility > 0, + ) + + +def _relative_rank(value: float, population: np.ndarray) -> float: + """Return a tie-aware rank strictly inside zero and one.""" + less = float(np.sum(population < value)) + equal = float(np.sum(population == value)) + return (less + 0.5 * equal) / len(population) + + +def combinatorially_symmetric_cv( + returns: pd.DataFrame, + n_slices: int = 8, + periods_per_year: int = 12, +) -> PBOResult: + """Estimate the probability that the in-sample winner ranks below median OOS. + + Time is divided into contiguous slices. Every combination of half the slices + forms an in-sample set; the complement is its out-of-sample set. For each + split, the best in-sample strategy is ranked among all strategies out of + sample. PBO is the fraction of selected strategies whose OOS rank is at or + below the median. + """ + if not isinstance(returns, pd.DataFrame) or returns.empty: + raise ValueError("returns must be a non-empty DataFrame") + if returns.shape[1] < 2: + raise ValueError("at least two strategy configurations are required") + if returns.isna().any().any() or not np.isfinite(returns.to_numpy()).all(): + raise ValueError("returns must contain only finite values") + if n_slices < 4 or n_slices % 2: + raise ValueError("n_slices must be an even integer of at least four") + if len(returns) < n_slices * 2: + raise ValueError("not enough observations for the requested slices") + + blocks = tuple(np.array_split(np.arange(len(returns)), n_slices)) + values = returns.to_numpy(dtype=float) + rows: list[dict[str, float | int | str]] = [] + half = n_slices // 2 + + for split_number, selected_blocks in enumerate(combinations(range(n_slices), half)): + selected = set(selected_blocks) + in_indices = np.concatenate([blocks[index] for index in selected_blocks]) + out_indices = np.concatenate([blocks[index] for index in range(n_slices) if index not in selected]) + in_scores = annualized_sharpe(values[in_indices], periods_per_year) + out_scores = annualized_sharpe(values[out_indices], periods_per_year) + winner_index = int(np.argmax(in_scores)) + relative_rank = _relative_rank(out_scores[winner_index], out_scores) + clipped_rank = min(1.0 - 1e-12, max(1e-12, relative_rank)) + logit_rank = math.log(clipped_rank / (1.0 - clipped_rank)) + rows.append( + { + "split": split_number, + "selected_strategy": str(returns.columns[winner_index]), + "in_sample_sharpe": float(in_scores[winner_index]), + "out_of_sample_sharpe": float(out_scores[winner_index]), + "out_of_sample_relative_rank": relative_rank, + "logit_rank": logit_rank, + "overfit": int(relative_rank <= 0.5), + } + ) + + frame = pd.DataFrame(rows) + return PBOResult( + probability_of_backtest_overfitting=float(frame["overfit"].mean()), + median_logit_rank=float(frame["logit_rank"].median()), + mean_selected_in_sample_sharpe=float(frame["in_sample_sharpe"].mean()), + mean_selected_out_of_sample_sharpe=float(frame["out_of_sample_sharpe"].mean()), + splits=len(frame), + split_results=frame, + ) + + +def simulate_null_strategies( + observations: int, + strategies: int, + rng: np.random.Generator, + common_correlation: float = 0.25, + monthly_volatility: float = 0.04, +) -> pd.DataFrame: + """Generate correlated zero-alpha strategy returns under a global null.""" + if observations < 16 or strategies < 2: + raise ValueError("simulation requires at least 16 observations and 2 strategies") + if not 0 <= common_correlation < 1 or monthly_volatility <= 0: + raise ValueError("invalid correlation or volatility") + common = rng.normal(size=(observations, 1)) + independent = rng.normal(size=(observations, strategies)) + standardized = math.sqrt(common_correlation) * common + math.sqrt(1.0 - common_correlation) * independent + return pd.DataFrame( + monthly_volatility * standardized, + columns=[f"strategy_{index:03d}" for index in range(strategies)], + ) + + +def run_selection_bias_experiment( + candidate_counts: tuple[int, ...] = (5, 20, 100), + repetitions: int = 40, + observations: int = 240, + n_slices: int = 8, + seed: int = 17, +) -> tuple[pd.DataFrame, pd.DataFrame]: + """Measure how trying more zero-alpha strategies manufactures winners.""" + if repetitions < 2: + raise ValueError("at least two repetitions are required") + if not candidate_counts or any(count < 2 for count in candidate_counts): + raise ValueError("candidate counts must contain values of at least two") + rng = np.random.default_rng(seed) + rows: list[dict[str, float | int]] = [] + + for candidate_count in candidate_counts: + for repetition in range(repetitions): + returns = simulate_null_strategies(observations, candidate_count, rng) + full_scores = annualized_sharpe(returns.to_numpy()) + winner = int(np.argmax(full_scores)) + midpoint = observations // 2 + first_half_scores = annualized_sharpe(returns.iloc[:midpoint].to_numpy()) + selected = int(np.argmax(first_half_scores)) + holdout_scores = annualized_sharpe(returns.iloc[midpoint:].to_numpy()) + pbo = combinatorially_symmetric_cv(returns, n_slices=n_slices) + rows.append( + { + "candidate_count": candidate_count, + "repetition": repetition, + "naive_best_full_sample_sharpe": float(full_scores[winner]), + "first_half_selected_sharpe": float(first_half_scores[selected]), + "selected_holdout_sharpe": float(holdout_scores[selected]), + "pbo": pbo.probability_of_backtest_overfitting, + } + ) + + raw = pd.DataFrame(rows) + summaries: list[dict[str, float | int]] = [] + for candidate_count in candidate_counts: + selected = raw[raw["candidate_count"] == candidate_count] + row: dict[str, float | int] = { + "candidate_count": candidate_count, + "repetitions": len(selected), + } + for output_name, column in ( + ("naive_best_sharpe", "naive_best_full_sample_sharpe"), + ("first_half_selected_sharpe", "first_half_selected_sharpe"), + ("selected_holdout_sharpe", "selected_holdout_sharpe"), + ("pbo", "pbo"), + ): + mean, low, high = _sample_mean_interval(selected[column].to_numpy()) + row[f"mean_{output_name}"] = mean + row[f"{output_name}_ci95_low"] = low + row[f"{output_name}_ci95_high"] = high + summaries.append(row) + summary = pd.DataFrame(summaries) + return raw, summary + + +def _sample_mean_interval(values: np.ndarray) -> tuple[float, float, float]: + if len(values) < 2: + raise ValueError("at least two values are required") + mean = float(np.mean(values)) + margin = 1.96 * float(np.std(values, ddof=1)) / math.sqrt(len(values)) + return mean, mean - margin, mean + margin diff --git a/pyproject.toml b/pyproject.toml index 2c1f310..e88c46b 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta" [project] name = "backtest-engine-asoracca" -version = "1.0.0" +version = "1.1.0" description = "A small event-driven backtesting engine with next-bar execution and auditable ledgers" requires-python = ">=3.10" dependencies = ["numpy>=1.26", "pandas>=2.1", "yfinance>=0.2.40", "matplotlib>=3.8"] diff --git a/run_overfitting_study.py b/run_overfitting_study.py new file mode 100644 index 0000000..f41f5b7 --- /dev/null +++ b/run_overfitting_study.py @@ -0,0 +1,77 @@ +"""Demonstrate strategy-selection bias under a controlled zero-alpha null.""" + +from pathlib import Path + +import matplotlib.pyplot as plt + +from engine.selection_bias import run_selection_bias_experiment + + +def main(): + output = Path("data/selection_bias") + output.mkdir(parents=True, exist_ok=True) + raw, summary = run_selection_bias_experiment() + raw.to_csv(output / "simulation_runs.csv", index=False) + summary.to_csv(output / "summary.csv", index=False) + + figure, axes = plt.subplots(1, 2, figsize=(11, 4.8)) + axes[0].errorbar( + summary["candidate_count"], + summary["mean_naive_best_sharpe"], + yerr=[ + summary["mean_naive_best_sharpe"] - summary["naive_best_sharpe_ci95_low"], + summary["naive_best_sharpe_ci95_high"] - summary["mean_naive_best_sharpe"], + ], + marker="o", + capsize=4, + label="Best full-sample Sharpe", + ) + axes[0].errorbar( + summary["candidate_count"], + summary["mean_selected_holdout_sharpe"], + yerr=[ + summary["mean_selected_holdout_sharpe"] - summary["selected_holdout_sharpe_ci95_low"], + summary["selected_holdout_sharpe_ci95_high"] - summary["mean_selected_holdout_sharpe"], + ], + marker="s", + capsize=4, + label="Selected strategy holdout Sharpe", + ) + axes[0].axhline(0, color="black", linewidth=0.8) + axes[0].set_xscale("log") + axes[0].set_xlabel("Number of strategies tried") + axes[0].set_ylabel("Mean annualized Sharpe") + axes[0].set_title("Selection manufactures an in-sample winner") + axes[0].legend() + + axes[1].errorbar( + summary["candidate_count"], + summary["mean_pbo"], + yerr=[ + summary["mean_pbo"] - summary["pbo_ci95_low"], + summary["pbo_ci95_high"] - summary["mean_pbo"], + ], + marker="o", + capsize=4, + color="#d9472b", + ) + axes[1].axhline(0.5, color="black", linewidth=0.8, linestyle="--") + axes[1].set_xscale("log") + axes[1].set_ylim(0, 1) + axes[1].set_xlabel("Number of strategies tried") + axes[1].set_ylabel("Mean probability of backtest overfitting") + axes[1].set_title("CSCV out-of-sample rank failure") + figure.tight_layout() + figure.savefig(output / "selection_bias.png", dpi=180) + documentation = Path("docs/assets/selection_bias.png") + documentation.parent.mkdir(parents=True, exist_ok=True) + figure.savefig(documentation, dpi=180) + plt.close(figure) + + print("ZERO-ALPHA STRATEGY-SELECTION EXPERIMENT") + print(summary.to_string(index=False, float_format=lambda value: f"{value:.3f}")) + print(f"\nSaved results to {output}/") + + +if __name__ == "__main__": + main() diff --git a/tests/test_selection_bias.py b/tests/test_selection_bias.py new file mode 100644 index 0000000..4c6d543 --- /dev/null +++ b/tests/test_selection_bias.py @@ -0,0 +1,64 @@ +import unittest + +import numpy as np +import pandas as pd + +from engine.selection_bias import ( + annualized_sharpe, + combinatorially_symmetric_cv, + run_selection_bias_experiment, + simulate_null_strategies, +) + + +class SelectionBiasTests(unittest.TestCase): + def test_annualized_sharpe_is_columnwise(self): + returns = np.array([[0.01, -0.01], [0.02, 0.01], [0.00, 0.00]]) + scores = annualized_sharpe(returns) + self.assertEqual(scores.shape, (2,)) + self.assertGreater(scores[0], scores[1]) + + def test_cscv_has_all_symmetric_splits(self): + rng = np.random.default_rng(4) + returns = pd.DataFrame(rng.normal(size=(40, 3))) + result = combinatorially_symmetric_cv(returns, n_slices=4) + self.assertEqual(result.splits, 6) + self.assertTrue(0 <= result.probability_of_backtest_overfitting <= 1) + self.assertEqual(len(result.split_results), 6) + + def test_stable_signal_has_low_overfitting_probability(self): + alternating = np.tile([0.009, 0.011], 40) + returns = pd.DataFrame( + { + "stable": alternating, + "unstable_a": np.r_[np.full(40, 0.03), np.full(40, -0.03)], + "unstable_b": np.r_[np.full(40, -0.02), np.full(40, 0.02)], + } + ) + result = combinatorially_symmetric_cv(returns, n_slices=8) + self.assertLess(result.probability_of_backtest_overfitting, 0.25) + + def test_null_simulation_is_reproducible(self): + first = simulate_null_strategies(20, 4, np.random.default_rng(9)) + second = simulate_null_strategies(20, 4, np.random.default_rng(9)) + pd.testing.assert_frame_equal(first, second) + + def test_experiment_is_reproducible(self): + first = run_selection_bias_experiment( + candidate_counts=(3, 6), repetitions=3, observations=40, n_slices=4 + ) + second = run_selection_bias_experiment( + candidate_counts=(3, 6), repetitions=3, observations=40, n_slices=4 + ) + pd.testing.assert_frame_equal(first[0], second[0]) + pd.testing.assert_frame_equal(first[1], second[1]) + + def test_invalid_inputs_are_rejected(self): + with self.assertRaises(ValueError): + combinatorially_symmetric_cv(pd.DataFrame({"only": [0.0] * 20})) + with self.assertRaises(ValueError): + combinatorially_symmetric_cv(pd.DataFrame({"a": [0.0] * 20, "b": [0.0] * 20}), n_slices=3) + + +if __name__ == "__main__": + unittest.main()