Commit Graph

38 Commits

Author SHA1 Message Date
d657f8506b docs: add execution delay impact experiment (008) 2026-06-15 18:51:13 +08:00
6e7087a543 docs: 添加实验007动量因子回看窗口优化研究
- 研究多周期融合(ensemble)对策略表现的影响
- 结论:多窗口融合不适用于本策略,维持25天单窗口
2026-06-12 12:37:38 +08:00
e4bb570e5f docs: 更新 kelly 文档 commit hash 2026-06-08 23:05:39 +08:00
8b7bcf206a feat(weight): 实现 Kelly 仓位权重模式
- config_loader.py: WeightType 枚举新增 KELLY
- simple_rotation.py: compute_position_weights 新增 kelly 分支
  - 公式: w_i = max(score_i, 0) / sum(max(score_j, 0))
  - 负分自动排除 (Kelly: 不下注负期望)
  - 全负分时 fallback 到等权
- _generate_signals 传递 scores 给 kelly 模式
- config_simple.yaml: weight 改为 kelly
- 新增策略总结文档: kelly_weight.md

回测对比 (2020-2026):
- equal: 年化 19.88%, 夏普 1.13, 回撤 -14.65%
- rank:  年化 22.90%, 夏普 1.12, 回撤 -16.27%
- kelly: 年化 30.13%, 夏普 1.15, 回撤 -20.44%
2026-06-08 23:05:26 +08:00
06df8767b9 docs: add select_num=1 strategy deep analysis report
- Asset contribution attribution (CL=F 59.1%, N225 -11.8%)
- IC analysis across lookback periods (only CL=F and ChiNext have robust positive IC)
- Hurst exponent analysis and asset classification
- Multi-factor direction recommendations
2026-06-07 12:26:13 +08:00
7b229ced14 docs: add strategy summary snapshot (2026-06-06, ca933e4)
First stage summary documenting core strategy logic, key design
decisions, and select_num/weight backtest comparison results.
Stored in dedicated docs/strategy_summaries/ directory with
date + commit hash naming for reproducibility.
2026-06-06 23:59:41 +08:00
921f84cb6a feat: 新增 standardized_slope (t-statistic) 因子并实验验证
- simple_rotation.py: 新增 standardized_slope_score 函数 (slope/SE)
- config_loader.py: FactorType 枚举新增 STANDARDIZED_SLOPE
- 对比实验结果: standardized_slope 年化 13.73% vs slope_r2 19.84%
- 结论: t-statistic 过度惩罚高波动资产的有效趋势信号,不适合本场景
- 文档更新: 动量因子对比调研报告新增 3.3 节详细分析
2026-06-06 16:40:01 +08:00
aff04318b1 chore: 动量因子对比调研报告移至 docs 目录 2026-06-06 16:19:10 +08:00
f3ba6eb799 docs: add momentum time window research report 2026-06-03 23:56:05 +08:00
74f0eebef0 docs(experiment): add 1-day holding deep attribution analysis (006)
- Rank decline: 70.3% (45/64), mostly rank=3 entry → rank=4/5 exit
- Threshold breach: 25.0% (16/64), all actual momentum drops
- 38% cases: own momentum rises but outranked by others
- N225/GDAXI highest 1-day rate (22-26%), A-shares lowest (3-6%)
- Optimization: min holding period, confidence filter, rank smoothing
2026-06-02 21:41:34 +08:00
361b82fa4a docs(experiment): add holding duration distribution analysis (006)
- Analyze holding period distribution from simple_rotation_detail.json
- 391 complete holding episodes across 11 assets
- Median holding: 7 days, mean: 10.9 days
- 75% of holdings within 16 days, 16.4% are 1-day switches
- NDX has longest avg holding (17.4d), HSI shortest (6.5d)
- Insight: consider minimum holding period to reduce noise trades
2026-06-02 21:36:46 +08:00
a47af0f0eb docs(experiment): add select_num A/B/C comparison report (005)
- Experiment: select_num = 1, 2, 3 comparison
- Period: 2020-01-10 ~ 2026-06-02 (1546 trading days)
- Key findings:
  - Top-1: highest return (600%), highest drawdown (-25.5%)
  - Top-3: best risk-adjusted return (Calmar 1.73, Sharpe 1.35)
  - Top-2: balanced middle ground (Calmar 1.69)
- Add rotation/experiment_select_num.py experiment script
- Save report to docs/experiments/005_select_num_comparison.md
2026-06-02 01:32:43 +08:00
43ce8056f1 docs: 添加 982fbe2 后代码变更总结文档
记录 framework_v2 配置系统重构和策略框架实现的关键变更
2026-05-24 14:27:06 +08:00
61b6f0b0a3 docs: V3轮动策略核心逻辑文档
核心内容:
- V2 vs V3核心差异对比表
- 动态阈值机制详解(三层守卫)
- 短债双重角色:阈值参考 + 空余仓位填充
- 三步筛选流程:动态阈值 → 类内竞争 → 跨类排序+填充
- 具体示例:正常/危机/极端危机三种场景
- V3关键修复:重复代码计分 + 数据守卫 + 空信号状态保持
- 三次修复历程:74a664d → be8ca0218bc9b8
- V3配置示例与回滚方案

回测绩效:
- CAGR: 27.81%
- 最大回撤: -24.36%
- 夏普: 1.40
- Calmar: 1.14
2026-05-19 01:13:43 +08:00
957769b501 docs: 添加V3动态阈值实施方案文档
详细说明了:
1. 当前代码流程分析
2. 需要修改的文件及具体代码
3. V2 vs V3逻辑对照表
4. 关键注意事项(BOND角色转变、信号格式兼容等)
5. 验证方式与预期结果
6. 回滚方案
2026-05-19 00:01:25 +08:00
969385f39c feat(rotation): 采用红利低波+短债指数组合作为防御类资产
配置变更:
- H30269.CSI(红利低波指数)归类为BOND大类
- 931862.CSI(短债指数)归类为BOND大类
- 添加正确的标注说明(注明实际是红利低波和短债指数)

防御效果分析:
- 红利低波提供'类债券'股票防御(高股息+低波动)
- 短债指数提供真正的债券防御(极低波动)
- 2008年熊市短债指数持仓172天(55%),贡献主要防御效果

回测验证:
- 组合配置净值173.83,累计收益17283%
- 比单红利低波配置高50%(115.14 → 173.83)
- 2008年少亏23%(-43.87% → -20.85%)

删除旧报告:红利低波防御配置分析报告.md
创建新报告:防御类资产组合配置分析报告.md
2026-05-16 22:54:51 +08:00
48bf3fde2e fix(rotation): 纠正指数代码标注,H30269.CSI为红利低波而非国债
配置变更:
- H30269.CSI正确标注为'红利低波'(中证红利低波动指数)
- 移除错误配置的931862.CSI(中证0-9个月国债指数,无对应ETF)
- 红利低波归类为DEFENSIVE大类(防御类资产)

分析发现:
- 之前'双国债配置'实际是红利低波+短债指数组合
- 红利低波具有'类债券'属性(高股息+低波动)
- 但本质仍是股票,熊市防御有限
- 短债指数才是2008年防御的主力

收益对比:
- 错误标注(双国债): 净值173.83
- 正确配置(红利低波): 净值115.14
- 差异原因:移除短债指数后防御能力下降

删除旧报告:国债配置实证分析报告.md
创建新报告:红利低波防御配置分析报告.md
2026-05-16 22:41:53 +08:00
306b4022da feat(rotation): 增加双国债配置实现动态久期选择
配置变更:
- 移除错误标注的H30269.CSI(标注为中证红利低波)
- 添加10年国债(931862.CSI)配置,久期8年,波动3-5%
- 添加30年国债(H30269.CSI)配置,久期20年,波动10-15%
- 修正ETF映射:931862→512890, H30269→511090

实证分析结果:
- 方案C(双国债)累计收益17283%,为三种配置最优
- 动态久期选择机制:牛市选30年获取弹性,熊市选10年增强防御
- 债券持仓占比43.9%(10年18.6% + 30年25.3%)
- 详细分析见 docs/experiments/国债配置实证分析报告.md
2026-05-16 22:21:27 +08:00
6308627f8c docs(experiments): 添加2001年收益深度分析章节
从四个维度分析2001年-41.1%收益的根因:

1. 策略原理层面:
   - 短期动量陷阱(25天窗口在长期下跌中产生噪音信号)
   - 分散化选股约束(必须从US/HK/EU/JP选Top3)
   - 空仓机制触发条件(所有标的动量<0才触发)

2. 信号分布分析:
   - 空仓31天(9.9%),部分生效但触发时机不理想
   - 股票持仓占比过高(NDX+HSI+GDAXI+N225≈167%)
   - 商品持仓不足(GC=F仅30.6%)

3. 大跌月份持仓分析:
   - 2月(-18%): HSI持仓87.5%,空仓仅8.3%
   - 3月(-18.2%): GC=F持仓57.7%,空仓19.2%

4. 宏观市场环境:
   - 互联网泡沫破裂(2000-2002)
   - 911事件冲击
   - 缺乏债券等防御资产

改进建议:
- 增加长期动量过滤(60/120天)
- 放松分散化约束
- 增加止损机制
- 回测起点后移至2005年
2026-05-16 20:57:40 +08:00
c782830f75 docs(experiments): 轮动策略改进版回测分析报告
新增改进版策略分析报告,展示空仓机制和大类冠军二次过滤后的表现:

核心内容:
- 策略改进说明:空仓机制、大类冠军二次过滤、min_score配置化
- 版本对比分析:累计收益+2708%、最大回撤改善10.8%
- 月度收益详细表格:2000-2026年完整数据
- 空仓天数统计:131天(1.6%),集中在2000-2002年

关键对比:
| 指标 | 原版 | 改进版 | 改善 |
|------|------|--------|------|
| 累计收益 | 11872% | 14580% | +2708% |
| 最大回撤 | -71.9% | -61.1% | +10.8% |
| 空仓天数 | 4天 | 131天 | +127天 |
2026-05-16 20:49:23 +08:00
788120387a docs: 更新回测分析报告反映空仓机制优化效果
主要更新内容:
- 回测概况:累计收益14580%(+2708%),年化25.2%,最大回撤-61.1%(改善10.8%)
- 年度收益:2000年-8.3%(改善17.7%),2001年-41.1%(改善7.6%)
- 回撤分析:新增空仓机制效果说明,低点净值从0.34提升至0.48
- 策略特点:新增空仓机制优势,已实现改进与待优化建议分离
2026-05-16 11:49:40 +08:00
06fc62c51b test(premium): add ETF溢价率计算验证脚本及校验报告
新增验证脚本 tests/verify_premium_calculation.py,支持批量验证config.yaml中所有ETF

验证结果:
- 11只ETF全部验证通过,溢价率计算与集思录完全一致
- 动态匹配原则正确:优先当天净值,不存在时用T-1净值
- 净值日期规则验证:
  - A股/港股/商品/债券/日本QDII:当天净值
  - 美股QDII/欧洲QDII/原油QDII:T-1净值

相关文档:
- ETF溢价率官方定义调研报告.md
- ETF溢价率计算校验报告.md
2026-05-16 10:24:28 +08:00
4c7538e6e1 docs: 月度收益表格增加年收益列
修改内容:
- 表格新增年收益列,直观展示各年度整体表现
- 年收益超过50%或跌幅超过20%用粗体标注
- 高亮年份: 2000(-26%), 2001(-48.7%), 2007(136.7%), 2008(-22.5%), 2024(82.1%)
2026-05-16 01:32:36 +08:00
c8e30dcbdf docs: 轮动策略回测分析报告(2000-2026)
内容:
- 年度收益汇总(26年完整数据)
- 月度收益详细表格(317个月)
- 4次重大回撤分析(互联网泡沫、金融危机、A股调整、新冠疫情)
- 策略特点总结与改进建议
2026-05-16 01:28:29 +08:00
e0d6f81ea1 docs: 仓位分配逻辑修改分析文档
- 记录动态权重vs固定仓位逻辑对比
- 分析收益下降原因(4479%→1678%)
- 说明固定仓位设计意义与改进方向
2026-05-16 00:31:14 +08:00
9a8a0d7c72 docs: 添加框架功能完善性分析与通用能力边界设计文档
- 框架功能完善性分析:评估现有轮动策略与新框架对比
- 通用能力与定制开发边界设计:明确框架只放抽象接口
- 总体完善度约45%,数据层和执行层缺失
2026-05-11 23:08:48 +08:00
c54ba442ad docs: 添加策略框架调研与设计方案
包含4份核心文档:
- 轮动策略系统架构分析报告
- 量化策略通用框架抽象设计
- Freqtrade架构调研与对比分析
- ETF轮动策略通用化重构方案

调研结论:三种策略可抽象通用框架
设计决策:因子注册器风格 + 5个核心回调钩子 + TopN/Trend/Reversal信号生成器
2026-05-11 22:17:41 +08:00
0e531a1876 docs: 添加完整项目文档
- universal_fetcher_README.md:统一数据获取接口完整文档
- universal_fetcher_QUICKSTART.md:5分钟快速上手指南
- universal_fetcher_ARCHITECTURE.md:架构设计说明
- universal_fetcher_TEST_REPORT.md:测试报告与修复记录
- flask_api_README.md:Flask API 完整文档
- FLASK_SERVICE_SUMMARY.md:项目实现总结

总计 2000+ 行文档,涵盖 API 说明、使用示例、架构设计
2026-05-07 21:20:03 +08:00
9776ae7de0 test(experiments): add France CAC40 and SEA ETF experiments
- Add France CAC40 market test (004)
- Add SEA ETF limited test (005)
- Add France in EU category test (006)
- Update experiment README with new results
- Modify emerging market test description
2026-05-06 22:23:12 +08:00
17e806045f experiment(rotation): 添加新兴市场大类(印度)影响验证
实验设计:
- A组:当前7大类配置(无新兴市场)
- B组:添加印度作为第8大类(EM = Emerging Market)
- 标的:^NSEI → 164824.SZ(工银瑞信印度市场LOF)

实验结果:
├─ 大类数量: 7 → 8 (+1) ✓ 跨类分散提升
├─ 累计收益: 1467.35% → 1261.83% (-205.52%)
├─ CAGR: 48.10% → 45.16% (-2.94%)
├─ Sharpe: 2.21 → 2.09 (-0.11)
├─ 日胜率: 56.45% → 57.25% (+0.80%) ✓
└─ 调仓次数: 459 → 451 (-8)

核心发现:
1. 大类数量增加确实提升跨类分散
2. 但收益反而下降205%(与预期相反)
3. 印度LOF流动性不足(日均~3000万)
4. 印度动量信号不如主流市场强
5. Top3权重被印度占用,错过其他机会

重要结论:添加新大类 ≠ 必然提升收益
- 标的本身表现能力比大类归属更重要
- 流动性、动量信号强度是关键因素

与001实验对比:
- 001(同大类添加):大类不变 → 收益-291%
- 003(新大类添加):大类+1 → 收益-205%
→ 标的质量比大类数量更重要

策略建议:
- 暂不添加印度(LOF流动性不足)
- 可测试东南亚科技ETF(513730.SH)

新增文件:
- tests/experiments/ab_test_emerging_market.py
- docs/experiments/003_emerging_market_india.md
2026-05-06 20:55:54 +08:00
6b59855c28 experiment(rotation): 同大类扩充与纳指vs标普替换对比实验
技术修复:
- SOCKS5代理IPv6问题:socks5:// → socks5h:// (hybrid_source.py, yfinance_source.py)

目录整理:
- scripts/ → 仅保留策略入口(daily_scheduler, run_rotation, run_cci_screener)
- 实验脚本移至 tests/experiments/
- 工具脚本移至 tests/utils/
- 实验记录新增 docs/experiments/
- results/ 添加到 gitignore

实验结果:

实验001 - 同大类扩充(添加标普500):
├─ 累计收益: 1467.35% → 1176.26% (-291%)
├─ CAGR: 48.10% → 43.82% (-4.28%)
├─ 调仓次数: 459 → 501 (+42次)
└─ 结论: 添加同大类标的不增加跨类分散,反而侵蚀收益

实验002 - 纳指vs标普替换对比:
├─ 累计收益: 1467.35% → 1118.77% (-348%)
├─ CAGR: 48.10% → 42.87% (-5.22%)
├─ Sharpe: 2.21 → 2.08 (-0.13)
├─ MaxDD: -17.33% → -15.14% (+2.18%)
└─ 结论: 纳指100优于标普500,成长风格更适合动量策略

策略建议:
- 保持纳指100作为美股大类代表
- 不添加同大类新标的(避免类内切换成本)
- 新增标的应优先考虑新大类(增加跨类分散)
2026-05-06 20:43:38 +08:00
a4e8a6050e docs: 跨市场动量策略有效性度量与资产组合优化文献综述
核心内容:
- 相关性结构:资产相关性低(ρ≈0.3),但动量收益相关性较高(ρ≈0.5)
  Moskowitz发现动量因子跨资产共同驱动
- 跨市场有效性度量框架(三层体系):
  Layer1定性:地理差异+资产类别+周期敏感度(0-9分)
  Layer2定量:分散化有效性指数DEI=(1-ρ)/(1+ρ)
  Layer3组合:综合评分Σw_i w_j Q_ij D_ij
- 选择偏差风险:池选择偏差=基于后视信息选池
  本策略恒生科技/铜存在中等偏差风险,建议随机池对照实验
- 高波动池机制:Conrad-Kaul风险补偿理论
  高波动→高动量收益(部分补偿+部分异象)
- 业界最佳实践:
  Bridgewater All Weather经济四季框架(增长/通胀四象限)
  AQR Risk Parity波动率倒数加权(风险平衡而非市值权重)
- 分散化收益公式:DR=Σwσ/σ_p,本策略≈14%
- 改进建议:
  增加债券标的(Risk Parity权重应高)
  减少A股同类冗余(创业板vs红利低波DEI=0.18)
  显式计算风险贡献而非等权

参考文献:
- Conrad & Kaul(1998)风险补偿理论
- Moskowitz et al.(2012)跨资产动量相关性
- AQR Risk Parity白皮书
- Bridgewater All Weather故事
- CFA资产配置原则

附录:5个核心公式+改进建议清单
2026-04-30 21:59:40 +08:00
336bceef92 docs: 基于动量因子的跨市场ETF轮动策略系统性文献综述
文献综述内容:
- 学术定位:资产定价、资产配置、量化投资、行为金融学、组合管理五大交叉领域
- 理论基础:Jegadeesh-Titman(1993)动量效应发现 + Barberis等(1998)行为金融解释
- 经典文献:截面动量、时间序列动量(Moskowitz 2012)、跨资产动量普遍性(Asness 2013)
- 实证证据:动量效应在股票/债券/商品/外汇等所有资产类别中显著
- 分散化依据:Markowitz(1952) MPT理论,跨大类资产低相关性降低组合波动
- 崩盘风险:Barroso-Santa-Clara(2015)动量崩盘现象与风险管理方法
- 待解决问题:动量起源之谜、因子标准化、动态窗口机制、因子衰减
- 中国A股:短期动量(1-3月)有效、行业轮动频繁、残差动量2024年表现优越

参考文献:
- 10篇经典学术论文(Jegadeesh-Titman, Moskowitz, Asness, Barberis等)
- 业界策略报告(AQR, QuantPedia, Robeco)
- 券商金工研报(华泰、东方、招商)

附录:动量因子公式对比 + 本策略V2配置摘要
2026-04-30 14:27:23 +08:00
48ff15d92a docs: 新增轮动策略核心逻辑V2文档
V2相对于V1的核心升级:
- 候选池: 22只(以A股行业为主) → 11只(全球7大类精选)
- 因子类型: slope_r2(等权回归) → weighted_momentum(加权回归,近期权重2.0)
- 选股模式: 纯Top5 → 跨大类分散化(每大类Top1→全局Top3,等权33%)
- 崩盘过滤: 无 → 有(连续3天跌>5%得分清零)
- 商品信号源: 指数价格 → 期货价格(AU.SHF/CL.NYM/CU.SHF)
- 加密货币: 保留 → 移除(全部使用A股场内ETF交易)

V2实证数据(2019-02~2026-04):
  累计收益1473%, CAGR 46.42%, Sharpe 2.22, MaxDD -17.33%, Calmar 2.68
  diversified=true全面优于false(2022年差异+17.63%)

文档包含完整配置清单、因子计算公式、分散化选股机制、
调仓控制逻辑、溢价率控制、跨市场数据对齐方案、V1 vs V2对比表
2026-04-30 13:49:42 +08:00
4df3ac4e31 chore(docs): reorganize documentation files into docs/ folder
Moved markdown documentation from root to docs/ directory to improve project structure.
2026-04-30 01:06:25 +08:00
c1fbd2c7db feat(strategy): finalize global rotation system with advanced risk controls
Summary of updates:
1. Core Logic (engine.py): Added 'score > 0' filtering to support automatic cash positions during market downturns.
2. Experimental Analysis: Added scripts/analyze_negative_scores.py, scripts/test_select_num.py, and scripts/ab_test_iterations.py.
3. Documentation: Created docs/strategy_evolution_report.md detailing the evolution from benchmark to the final 47% CAGR version.
4. Configuration: Finalized rotation.yaml with 11 core assets and optimal risk parameters.
2026-04-30 00:56:20 +08:00
48cd6dd524 docs(analysis): ETF轮动策略深度分析报告
包含:
- 收益归因分析: 高收益来源拆解、持仓分布、事件日历
- 选池偏差实验: 原始4只 vs 扩展9只 vs 反面池对比
- 后视镜偏差量化: 选池偏差仅贡献5-7% CAGR
- A股可交易全球资产完整候选池: 44个方向/5大类
- 关键结论: ETF价格优先于指数、未来预期CAGR区间
2026-04-29 22:51:15 +08:00
2829f80427 feat(backtest): 消除前视偏差,实现动态ETF池重建
消除回测前视偏差(Look-Ahead Bias):
- 新增 ETFDataCache 本地缓存系统,预下载全量ETF(含已退市)基础信息和日线数据
- 改造 ETFUniverseBuilder 支持纯历史模式,每个时间点只使用当时可获得的数据
- 动量.py 新增 dynamic 模式,回测中每60交易日动态重建ETF候选池
- momentum_experiment.py 同步支持动态重建
- 新增 ETF筛选引擎文档和动态池方案文档

无前视偏差实验结果(6组对比,2015-2026):
  A: 全仓1只       CAGR=3.32%, MaxDD=-63.19%, Sharpe=0.26
  B: 等权3只       CAGR=3.40%, MaxDD=-49.72%, Sharpe=0.30 ← 最优
  C: 反波动率3只   CAGR=1.73%, MaxDD=-38.59%, Sharpe=0.21
  D: 等权5只       CAGR=2.77%, MaxDD=-42.39%, Sharpe=0.29
  E: 反波动率5只   CAGR=-0.37%, MaxDD=-19.56%, Sharpe=-0.03
  F: 动量>0全选等权 CAGR=2.02%, MaxDD=-43.27%, Sharpe=0.24

最优方案: B(等权3只)夏普、Calmar、CAGR三项均最高
2026-04-29 22:15:01 +08:00