|
| 1 | +# Stock alpha research suite |
| 2 | + |
| 3 | +这个研究脚本做三件事: |
| 4 | + |
| 5 | +1. 复用 `russell_1000_multi_factor_defensive` 的现有真实数据代理回测结果。 |
| 6 | +2. 公平比较它和两个高弹性 ETF 策略: |
| 7 | + - `hybrid_growth_income` |
| 8 | + - `semiconductor_rotation_income` |
| 9 | +3. 研究一个新的 price-only 进攻型个股候选:`qqq_plus_stock_alpha_v1`。 |
| 10 | + |
| 11 | +## 代码位置 |
| 12 | + |
| 13 | +- 研究脚本:`research/backtest_stock_alpha_suite.py` |
| 14 | +- 结果目录:`research/results/` |
| 15 | +- defensive 基线代码:`../UsEquityStrategies/src/us_equity_strategies/strategies/russell_1000_multi_factor_defensive.py` |
| 16 | + |
| 17 | +## 怎么跑 |
| 18 | + |
| 19 | +默认会自动发现最新的 `official_monthly_v2_alias` Russell 数据 run: |
| 20 | + |
| 21 | +```bash |
| 22 | +PYTHONPATH=/Users/lisiyi/Projects/UsEquityStrategies/src:/Users/lisiyi/Projects/QuantPlatformKit/src \ |
| 23 | +/Users/lisiyi/Projects/InteractiveBrokersPlatform/.venv/bin/python \ |
| 24 | +research/backtest_stock_alpha_suite.py |
| 25 | +``` |
| 26 | + |
| 27 | +也可以显式指定数据目录和结果目录: |
| 28 | + |
| 29 | +```bash |
| 30 | +PYTHONPATH=/Users/lisiyi/Projects/UsEquityStrategies/src:/Users/lisiyi/Projects/QuantPlatformKit/src \ |
| 31 | +/Users/lisiyi/Projects/InteractiveBrokersPlatform/.venv/bin/python \ |
| 32 | +research/backtest_stock_alpha_suite.py \ |
| 33 | + --data-run-dir /Users/lisiyi/Projects/_local_runs/r1000_multifactor_defensive_20260403_official_monthly_v2_alias \ |
| 34 | + --results-dir /Users/lisiyi/Projects/InteractiveBrokersPlatform/research/results |
| 35 | +``` |
| 36 | + |
| 37 | +## 输出文件 |
| 38 | + |
| 39 | +- `stock_strategy_comparison.csv` |
| 40 | +- `stock_strategy_comparison.md` |
| 41 | +- `stock_strategy_ablations.csv` |
| 42 | +- `stock_strategy_equity_curves.csv` |
| 43 | +- `stock_strategy_rolling_36m_alpha_vs_qqq.csv` |
| 44 | +- `stock_strategy_workspace_mapping.json` |
| 45 | + |
| 46 | +## 当前数据假设 |
| 47 | + |
| 48 | +### Defensive / offensive 个股侧 |
| 49 | + |
| 50 | +- universe:IWB 历史持仓代理,不是 FTSE Russell 官方 PIT 成分 |
| 51 | +- price:Yahoo / yfinance |
| 52 | +- ticker 修复:沿用 `official_monthly_v2_alias` 的 identifier-based alias |
| 53 | +- offensive 的 `resid_mom_6_1` / `resid_mom_12_1` 在 V1 里是 **相对 QQQ 的简单超额收益 proxy**,不是严格回归残差动量 |
| 54 | +- group normalization 当前使用 **sector 内 z-score** |
| 55 | + |
| 56 | +### ETF 策略侧 |
| 57 | + |
| 58 | +- full strategy 按当前默认逻辑回测 |
| 59 | +- normalized comparison 通过把账户规模放在 income layer 阈值下方,或者把阈值抬高,来关闭收入层 |
| 60 | +- `SPYI` / `QQQI` / `BOXX` 的早期缺失历史,在收益矩阵里按 **上市前 0% 日收益** 处理,相当于近似现金腿;结果里需要把这点当 caveat 看 |
| 61 | + |
| 62 | +## 研究重点 |
| 63 | + |
| 64 | +- full strategy vs normalized strategy 两层比较 |
| 65 | +- full sample / 2018-2021 / 2022 / 2023+ |
| 66 | +- rolling 36m alpha vs QQQ |
| 67 | +- offensive V1 最少一轮 ablation: |
| 68 | + - universe |
| 69 | + - 持仓数 / 单票上限 / 行业上限 |
| 70 | + - regime |
| 71 | + - 暴露档位 |
| 72 | + |
| 73 | +## 不在本次 V1 的内容 |
| 74 | + |
| 75 | +- 基本面质量因子 |
| 76 | +- earnings revision / PEAD |
| 77 | +- 机器学习 / LLM 交易信号 |
| 78 | +- 付费数据源接入 |
| 79 | + |
| 80 | +这些都留到后续 V2 研究。 |
0 commit comments