Files
etf/run_us_rotation.py
aszerW 105af19690 feat(strategy): 新增纯美股动量轮动策略
新增美股轮动策略模块:
- strategies/us_rotation/config.yaml: 47只美股标的池,动量窗口250天,Top5选股
- strategies/us_rotation/strategy.py: USRotationStrategy实现
- run_us_rotation.py: 回测入口脚本

回测结果 (2016-2026, 约10年):
- 总收益: 7675% (年化52.49%)
- 基准NDX收益: 540% (年化19.72%)
- 超额年化收益: 32.78%
- 夏普比率: 1.33 (基准0.80)
- 最大回撤: 42.15%
- 卡玛比率: 1.25
- 胜率: 56.1%
- 平均持仓: 2.7天

年度最佳: 2020年+221% (超额176%)
年度防守: 2022年-10.5% (基准-33.7%, 超额+23.3%)

持仓Top5: NVDA(35.8%), AMD(30.1%), SHOP(26%), AVGO(23.9%), FICO(23.3%)
2026-05-13 01:27:09 +08:00

55 lines
1.2 KiB
Python

#!/usr/bin/env python3
"""
美股动量轮动策略回测入口
运行方式:
python run_us_rotation.py
python run_us_rotation.py --save results/us_rotation
"""
import argparse
import time
from pathlib import Path
from strategies.us_rotation.strategy import USRotationStrategy
def main():
parser = argparse.ArgumentParser(description='美股动量轮动策略回测')
parser.add_argument(
'--config',
type=str,
default='strategies/us_rotation/config.yaml',
help='配置文件路径'
)
parser.add_argument(
'--save',
type=str,
default='results/us_rotation',
help='报告保存路径前缀'
)
args = parser.parse_args()
start_time = time.time()
print("=" * 60)
print("美股动量轮动策略")
print("=" * 60)
print(f"配置文件: {args.config}")
print(f"保存路径: {args.save}")
# 创建策略实例
strategy = USRotationStrategy.from_yaml(args.config)
# 运行回测
result = strategy.run_backtest(save_path=args.save)
elapsed = time.time() - start_time
print(f"\n总耗时: {elapsed:.1f}")
return result
if __name__ == "__main__":
main()