这是一个基于动量因子的 ETF 轮动策略,通过分析 ETF 的动量得分和市场情绪来进行交易决策。
flowchart TD
A[开始] --> B[初始化]
B --> C{是否有持仓?}
C -->|是| D[检查每个持仓ETF的市场情绪]
C -->|否| E[检查中证2000ETF市场情绪]
D --> F{是否出现卖出信号?}
E --> F
F -->|是| G[清空所有持仓]
F -->|否| H[计算ETF动量得分]
H --> I{是否有ETF
超过动量阈值?}
I -->|是| J[选择得分最高的ETF]
I -->|否| K[保持空仓]
J --> L[调整持仓]
G --> M[结束]
K --> M
L --> M
subgraph 市场情绪检测
direction TB
S1[检查整体市场情绪] --> S2[检查ETF价格走势]
S2 --> S3[检查成交量]
S3 --> S4[检查MACD指标]
end
subgraph 动量得分计算
direction TB
M1[计算年化收益] --> M2[计算判定系数]
M2 --> M3[计算最终得分]
end
-
初始化配置
- 设置基准指数:沪深300
- 配置交易成本和滑点
- 定义 ETF 池:包含科技、消费、医药等多个主题 ETF
- 设置动量参考天数:20天
-
市场情绪检测
- 分析整体市场涨跌家数
- 监控 ETF 价格走势
- 观察成交量变化
- 计算 MACD 技术指标
-
动量因子计算
- 计算对数收益率
- 拟合趋势线获取斜率
- 计算年化收益率
- 结合判定系数得到最终得分
-
交易执行
- 动态调整持仓
- 设置动量阈值筛选
- 控制持仓数量
- 实现风险控制
- 市场情绪恶化时及时清仓
- 使用动量阈值筛选优质标的
- 控制单一标的持仓比例
- 实时监控 ETF 走势和成交量
- 采用函数式编程风格,逻辑清晰
- 结合技术指标和市场情绪
- 灵活的仓位管理机制
- 完善的风险控制体系