Honest ETF control universe (measure real alpha)#10
Merged
Conversation
Adds config_etf.yaml: the exact same multi-factor momentum engine (same signals/portfolio/risk/leverage params) pointed at a clean, survivorship-free basket of ~31 category-defined ETFs (sectors, size, intl, bonds, commodities). Purpose: measure how much real alpha survives once the hand-picked-winners stock universe is removed. Plus .github/workflows/honest-backtest.yml: manual-dispatch, read-only (no Alpaca, no secrets, no commits) job that runs the ETF backtest and prints strategy-vs-SPY to the job summary. Fully additive — does not change any existing strategy, config, state, account, dashboard, or workflow. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What
A survivorship-free control group for the momentum strategy. Same engine, honest pool.
config_etf.yaml— runs the exact sameMultiFactorStrategy(identical signals/portfolio/risk/leverage params) on a clean basket of ~31 category-defined ETFs (sectors, size, international, bonds, commodities). The only change vsconfig.yamlis the universe..github/workflows/honest-backtest.yml— manual-dispatch, read-only job (no Alpaca, no secrets, no commits) that runs the ETF backtest and prints strategy-vs-SPY to the job summary.Why
The stock backtests ride a hand-picked list of 100 of today's winners (it even contains SNOW/CRWD/DDOG, which were not public in 2016). ETFs are defined by category, not future performance, and almost never delist — so this removes the survivorship bias entirely. The gap between Total Return and Benchmark Return here is the honest alpha.
Isolation
Purely additive. Touches no existing strategy, config, state, account, dashboard, or workflow.
To run
GitHub requires
workflow_dispatchfiles to be on the default branch, so this must merge before it can be triggered. After merge: Actions tab → "Honest Backtest (ETF control)" → Run.🤖 Generated with Claude Code