aszerW 3530e05875 docs: 新增动量时间窗口选择调研报告
- 综合 arXiv 学术论文与 A 股实证研究,分析最优动量窗口
- 核心发现:25日窗口偏短,最优区间为60-240日
- 动态窗口选择(DMS)可提升Sharpe 52%,回撤减半
- 提供三阶段优化方案:多窗口等权 → 动态选择 → 经济周期自适应
2026-04-09 11:27:24 +08:00

ETF轮动策略系统

基于多因子动量的ETF轮动量化交易系统支持多市场数据A股/港股/美股/加密货币),提供回测分析、定时调度和自动通知功能。

架构设计

┌─────────────────────────────────────────────────────────────────────────────┐
│                              应用层 (Applications)                           │
├─────────────────────────────────────────────────────────────────────────────┤
│  ┌─────────────────┐  ┌─────────────────┐  ┌─────────────────┐               │
│  │   run_rotation  │  │ daily_scheduler │  │   test_chart    │               │
│  │   (回测入口)     │  │   (定时调度)     │  │   (图表测试)     │               │
│  └────────┬────────┘  └────────┬────────┘  └─────────────────┘               │
└───────────┼────────────────────┼──────────────────────────────────────────────┘
            │                    │
            ▼                    ▼
┌─────────────────────────────────────────────────────────────────────────────┐
│                            策略层 (Strategies)                               │
├─────────────────────────────────────────────────────────────────────────────┤
│  ┌─────────────────────────────────────────────────────────────────────┐    │
│  │                    ETF Rotation Strategy                            │    │
│  │  ┌─────────────┐  ┌─────────────┐  ┌─────────────┐  ┌───────────┐ │    │
│  │  │   Engine    │  │   Report    │  │  Portfolio  │  │   Signal  │ │    │
│  │  │  (回测引擎)  │  │  (报告生成)  │  │  (持仓跟踪)  │  │ (信号生成) │ │    │
│  │  └─────────────┘  └─────────────┘  └─────────────┘  └───────────┘ │    │
│  └─────────────────────────────────────────────────────────────────────┘    │
└─────────────────────────────────────────────────────────────────────────────┘
            │
            ▼
┌─────────────────────────────────────────────────────────────────────────────┐
│                            核心层 (Core)                                     │
├─────────────────────────────────────────────────────────────────────────────┤
│  ┌─────────────────┐  ┌─────────────────┐  ┌─────────────────┐               │
│  │  Data Sources   │  │     Factors     │  │     Utils       │               │
│  │  ┌───────────┐  │  │  ┌───────────┐  │  │  ┌───────────┐  │               │
│  │  │ Tushare   │  │  │  │  Momentum │  │  │  │  Metrics  │  │               │
│  │  │ (A股指数)  │  │  │  │  (动量因子) │  │  │  │ (绩效计算) │  │               │
│  │  ├───────────┤  │  │  └───────────┘  │  │  └───────────┘  │               │
│  │  │ YFinance  │  │  │                 │  │                 │               │
│  │  │ (港美加密) │  │  │  ┌───────────┐  │  │  ┌───────────┐  │               │
│  │  ├───────────┤  │  │  │   CCI     │  │  │  │   Chart   │  │               │
│  │  │SSH Tunnel │  │  │  │ (CCI因子)  │  │  │  │ (图表绘制) │  │               │
│  │  │(代理支持)  │  │  │  └───────────┘  │  │  └───────────┘  │               │
│  │  └───────────┘  │  │                 │  │                 │               │
│  └─────────────────┘  └─────────────────┘  └─────────────────┘               │
└─────────────────────────────────────────────────────────────────────────────┘
            │
            ▼
┌─────────────────────────────────────────────────────────────────────────────┐
│                          基础设施层 (Infrastructure)                         │
├─────────────────────────────────────────────────────────────────────────────┤
│  ┌─────────────────┐  ┌─────────────────┐  ┌─────────────────┐               │
│  │  Notification   │  │   OSS Storage   │  │   Database      │               │
│  │  ┌───────────┐  │  │  ┌───────────┐  │  │  ┌───────────┐  │               │
│  │  │  DingTalk │  │  │  │  Aliyun   │  │  │  │ PostgreSQL│  │               │
│  │  │  (钉钉)   │  │  │  │   OSS     │  │  │  │           │  │               │
│  │  └───────────┘  │  │  └───────────┘  │  │  └───────────┘  │               │
│  └─────────────────┘  └─────────────────┘  └─────────────────┘               │
└─────────────────────────────────────────────────────────────────────────────┘

核心特性

1. 多市场数据支持

  • A股指数: 通过 Tushare 获取沪深300、中证500等17只指数
  • 港股/美股/加密货币: 通过 YFinance 获取恒生科技、纳斯达克、BTC、ETH等
  • 交易日历对齐: 以A股交易日为基准非A股市场数据前向填充

2. 混合数据源架构

# config/strategies/rotation.yaml
ssh_tunnel:
  enabled: true
  host: "x.x.x.x"          # 阿里云香港ECS
  key_path: "hk_ecs.pem"   # SSH私钥相对路径

data_source:
  china_indices: "tushare"
  global_indices: "yfinance"

3. 定时调度系统

# 本地运行
python scripts/daily_scheduler.py

# Docker运行
docker run -d --name etf-scheduler \
  -v $(pwd)/hk_ecs.pem:/app/hk_ecs.pem:ro \
  192.168.0.115:5000/etf-scheduler:latest

4. 自动报告通知

  • 策略绩效对比表格(转置布局)
  • 最新调仓信号(支持调入/调出/维持标记)
  • 净值曲线、回撤分析、持仓分布
  • 钉钉图文推送OSS图床

项目结构

.
├── config/
│   └── strategies/
│       └── rotation.yaml          # 策略配置code_list/benchmark/SSH等
├── core/
│   ├── common/
│   │   ├── notify.py              # 钉钉通知
│   │   ├── oss_utils.py           # 阿里云OSS
│   │   └── utils.py               # 通用工具
│   ├── data/
│   │   ├── hybrid_source.py       # 混合数据源Tushare+YFinance
│   │   └── yfinance_source.py     # YFinance数据源
│   └── factors/
│       ├── momentum.py            # 动量因子计算
│       └── cci.py                 # CCI因子计算
├── strategies/
│   └── rotation/
│       ├── engine.py              # 回测引擎
│       ├── report.py              # 报告生成
│       ├── portfolio.py           # 持仓跟踪
│       └── signal.py              # 信号生成
├── scripts/
│   ├── run_rotation.py            # 回测入口
│   └── daily_scheduler.py         # 定时调度
├── Dockerfile                     # 应用镜像
├── Dockerfile_base                # 基础镜像
├── build-and-push.sh              # 构建脚本
└── docker-compose.yml             # 部署配置

快速开始

1. 环境配置

# 创建 .env 文件
cp .env.example .env

# 编辑配置
vim .env

2. 本地运行

# 安装依赖
pip install -r requirements.txt

# 运行回测
python scripts/run_rotation.py

# 定时调度
python scripts/daily_scheduler.py --run-now

3. Docker部署

# 构建并推送
./build-and-push.sh etf-scheduler

# 运行容器
docker-compose up -d

配置说明

rotation.yaml

# 标的配置(字典格式)
code_list:
  "000300.SH": "沪深300"
  "HSTECH": "恒生科技"
  "BTC": "比特币"

# 基准配置
benchmark:
  code: "000300.SH"
  name: "沪深300指数"

# SSH隧道用于YFinance
ssh_tunnel:
  enabled: true
  host: "your-ecs-ip"
  key_path: "hk_ecs.pem"

# 回测参数
start_date: "2020-01-01"
factor_type: "slope_r2"
select_num: 5
rebalance_days: 1

技术栈

  • Python 3.12: 核心语言
  • Pandas/NumPy: 数据处理
  • Matplotlib: 图表绘制
  • Tushare/YFinance: 金融数据
  • Schedule: 定时任务
  • Docker: 容器化部署
  • OSS: 图片存储
  • DingTalk: 消息通知
Description
No description provided
Readme 4.8 MiB
Languages
Python 97.5%
HTML 1.9%
Shell 0.6%