策略概述
这是一个基于市场温度判断的沪深300成分股轮动策略,核心思想是根据不同的市场环境(冷、温、热)调整选股标准,实现攻守兼备的投资效果。
_ 这策略指标很好巴菲特来了都说好!13年长期回测收益37.%,回撤仅21.%。另外大佬写的代码也是很优雅! _
_
_
一、策略核心逻辑详解
1. ** 市场温度判断机制 **
策略通过分析沪深300指数的220日走势,将市场分为三个状态:
- ** 冷市场 ** :指数位于220日低点附近(底部20%区间)
- ** 温市场 ** :指数从低点反弹超过20%,但未达高点
- ** 热市场 ** :指数位于220日高点附近(顶部10%区间)
温度判断公式:
市场位置 = (5日均线 - 220日最低点) / (220日最高点 - 220日最低点)
2. ** 三层选股体系 **
根据市场温度采用不同的选股标准:
** 冷市场(防御模式) ** :
- PB < 1(破净股)
- 经营现金流/净利润 > 2.0
- ROA/PB 降序排列
- 要求较低:净利润增速 > -15%
** 温市场(平衡模式) ** :
- PB < 1
- 经营现金流/净利润 > 1.0
- ROA/PB 降序排列
- 要求提升:净利润增速 > 0%
** 热市场(进攻模式) ** :
- PB > 3(高估值成长股)
- 经营现金流/净利润 > 0.5
- ROA 降序排列
- 高要求:净利润增速 > 20%
3. ** 动量过滤机制 **
通过25日加权回归计算股票动量得分:
- 使用对数价格+线性回归+加权R²
- 过滤掉动量过高(>10.5)和过低(<-1.0)的股票
- 保留原基本面排序顺序
4. ** 仓位管理规则 **
- 固定持有5只股票
- 月度调仓(仅当月首个交易日)
- 闲置资金(>10%)配置低风险ETF
- 涨停不卖、跌停不买
二、策略特点分析
** 优点: **
- ** 多因子综合 ** :结合估值(PB)、质量(现金流)、成长(净利润)、动量四维因子
- ** 择时机制 ** :市场温度判断提供天然择时信号
- ** 风控措施 ** :
- ST股、科创板、创业板排除
- 股价过高排除(>组合市值95%/5)
- 极端涨跌停保护
- ** 防御配置 ** :股票池为空时自动转入低风险ETF
- ** 成本控制 ** :佣金设置合理,考虑最低佣金限制
** 创新点: **
- ** 市场温度自适应 ** :选股标准随市场环境动态变化
- ** 现金流质量重视 ** :不同市场对现金流要求不同
- ** 动量+基本面结合 ** :先用基本面筛选,再用动量过滤
- ** 闲置资金利用 ** :自动配置低风险资产提升资金效率
三、潜在问题与优化方向
** 1. 策略源码 **
代码几百行,篇幅太大。
全部源码免费获取:关注 gzh :量化学习实战笔记 后台回复:whitev2.1
** 2. 调仓频率过低 **
-
月度调仓可能错过市场变化
-
** 优化建议 ** :
增加季度内小调仓机制
if context.current_dt.day in [1, 15]: # 每月两次
# 部分调仓逻辑
** 3. 风控不足 **
# 建议增加:
# 1. 单股最大回撤止损
for stock in context.portfolio.positions:
returns = (current_price - cost_price) / cost_price
if returns < -0.15: # 亏损15%止损
order_target_value(stock, 0)
# 2. 组合最大回撤控制
if context.portfolio.returns < -0.10:
# 降低仓位至50%
** 4. 选股因子可优化 **
建议增加:
- ** 估值因子 ** :PE、PS、股息率
- ** 技术因子 ** :波动率、换手率
- ** 资金因子 ** :北向资金、主力资金
** 5. 回滚逻辑冗余 **
# track_back_market_temp函数实际未使用
# 可简化为:
def Market_temperature(context):
if not hasattr(g, 'last_temp_date') or \
(context.current_dt - g.last_temp_date).days >= 30:
# 重新计算温度
g.last_temp_date = context.current_dt
** 6. 持仓分散化不足 **
- 5只股票可能行业集中
- ** 优化 ** :增加行业限制,每个行业不超过2只
** 7. ETF选择逻辑 **
# 当前逻辑:所有低风险ETF等权重
# 优化建议:根据市场温度调整ETF配置比例
if g.market_temperature == "hot":
etf_ratio = 0.3 # 热市场增加防御
else:
etf_ratio = 0.1
** 8. 动量计算优化 **
# 当前使用25日,可考虑多周期
def MOM_multi(stock):
scores = []
for days in [20, 60, 120]:
score = MOM(stock, days)
scores.append(score)
return np.mean(scores) # 多周期平均
四、实施建议
** 短期优化(1-2周) **
- 增加止损止盈机制
- 优化数据获取逻辑
- 添加日志记录关键指标
** 中期优化(1个月) **
- 引入行业分散约束
- 增加技术面过滤
- 优化调仓频率
** 长期优化(3个月) **
- 建立因子评价体系
- 引入机器学习优化参数
- 开发策略监控面板
五、风险提示
- ** 小盘股风险 ** :策略可能在冷市场选中小盘股
- ** 流动性风险 ** :部分低PB股票流动性较差
- ** 因子失效 ** :PB等因子可能阶段性失效
- ** 过度优化 ** :参数基于历史数据,需定期检验
结语
该策略体现了"温度择时+因子选股"的成熟思路,框架设计合理。通过上述优化,可在保持原策略逻辑的基础上,提升稳定性、适应性和风险控制能力。建议先从风险控制优化开始,逐步完善选股体系。
代码几百行,篇幅太大。
全部源码免费获取:关注 gzh :量化学习实战笔记 后台回复:whitev2.1
** 免责声明 ** :本文仅为策略分析,不构成投资建议。请大家尊重初创者的成果,不要删除代码出处。本文仅作知识交流,不构成投资建议。 ** 市场有风险,投资需谨慎! ** 。