{"repo":"wenqi9115-glitch/systematic-etf-relative-strength-alpha-attribution","free":true,"listed":false,"github":"https://github.com/wenqi9115-glitch/systematic-etf-relative-strength-alpha-attribution","clone":"git clone https://github.com/wenqi9115-glitch/systematic-etf-relative-strength-alpha-attribution.git","description":"Systematic ETF relative-strength research, overlapping-sleeve portfolio construction, LEAN implementation, and factor attribution.","language":"Jupyter Notebook","stars":104,"topics":["algorithmic-trading","factor-models","portfolio-construction","python","quantconnect","quantitative-finance"],"license":"MIT","category":"trading","readme_excerpt":"Systematic ETF Relative-Strength Strategy & Alpha Attribution I built this project to answer a fairly narrow question: can a simple relative-strength rule rotate among liquid commodity and industry ETFs, and how much of the resulting return is actually unexplained alpha? The backtest looked attractive at first. The attribution work changed the conclusion. Standard Fama-French controls left a positive intercept, but adding direct proxies for the exposures the strategy was trading raised model R² from 14.0% to 63.6% and reduced the annualized intercept from 16.5% to 0.38%. My final interpretation is therefore a rules-based way to manage commodity and industry exposure, not evidence of persistent standalone alpha. Strategy The candidate set is GLD , SLV , USO , SMH , and XBI ; SPY is used only as the comparator. For ETF \\(i\\) on date \\(t\\), the signal is its 20-session adjusted return less the corresponding SPY return: $$ RS {i,t}^{20}=\\left(\\frac{P {i,t}}{P {i,t-20}}-1\\right)-\\left(\\frac{P {SPY,t}}{P {SPY,t-20}}-1\\right). $$ At each rebalance, the two highest finite signals receive 2.5% sleeves. Each sleeve remains active for ten trading sessions, so repeated selections accumulate: $$ w {i,t}=0.025\\sum {k=0}^{9}\\mathbf{1}\\{i\\text{ was selected at }t-k\\}. $$ This construction makes the portfolio limits easy to audit. Ten active sleeves cap a single ETF at 25%; two selections per day cap total gross exposure at 50%. The parameters are fixed in configs/strategy config.json . The 2","default_branch":null,"files":null,"tree":[],"storefront":"/r/wenqi9115-glitch","claimed":false,"request_supported":{"post":"https://gitbuyer.com/r/wenqi9115-glitch/systematic-etf-relative-strength-alpha-attribution/request-supported","requests":0},"note":"indexed from public GitHub; nothing is for sale on this page. Clone it from GitHub. Paid listings live at /search."}