原创内容第801篇,专注量化投资、个人成长与财富自由。
昨天咱们交付了一个波动率的策略,近五年年化41.3%,卡玛1.69的基于ATR的波动率全球资产轮动(指标+策略代码)。
今天我们要优化策略:年化29.6%:基于ETF评分的轮动策略再优化 | AI量化数据及策略运行工程细节(python代码+数据)
轮动策略效果不错,但有时候回撤比较大,在实盘时心理压力比较大。
引入严格的止损机制,提升策略的稳健性,下面是逻辑:
先看效果对比:
一、动量轮动逻辑
-
评分机制:使用25日对数收益率的年化值乘以趋势判定系数R²,筛选趋势最强的ETF
-
年化收益通过线性回归斜率计算,衡量资产上涨速度
-
R²评估趋势稳定性,过滤波动大的标的
-
综合得分=年化收益×R²,兼顾收益与趋势质量
-
-
轮动规则:
-
每日选择得分最高的ETF
-
无持仓时直接买入最优ETF
-
持仓ETF非最优时立即调仓
-
二、严格止损逻辑(三层风控)
-
动态止盈止损:
-
持仓标的若单日跌幅≥4%立即清仓
-
跟踪10日高点,跌破近期高点(cur2max10)作为预警信号
-
-
入场趋势过滤:
-
买入前验证价格>4日均线(mean4)
-
避免在短期下跌趋势中建仓
-
-
断线保护机制:
-
若因止损清仓后,标的仍为最优选择时,需等待价格重新站上均线才允许再次买入
-
三、策略优势
-
动量+止损双驱动:既捕捉趋势延续收益,又规避趋势反转风险
-
多维度风控:
-
硬性止损控制单日最大亏损
-
均线过滤避免逆势建仓
-
断线机制防止反复止损
-
-
低换手特性:R²因子过滤波动,减少无效调仓
四、潜在优化方向
-
参数优化:测试4日均线/4%止损阈值的最佳参数组合
-
动态止损:改用ATR波动率调整止损幅度
-
仓位管理:考虑分档建仓/金字塔加码
-
组合持仓:同时持有前2名ETF分散风险
from bt_algos_extend import Task, Engine def ranking_ETFs(): t = Task() t.name = '基于ETF历史评分的轮动策略' # 排序 t.period = 'RunDaily' t.weight = 'WeighEqually' t.order_by_signal = 'trend_score(close,25)' t.start_date = '20180101' # t.end_date = '20240501' t.symbols = [ '518880.SH', # 黄金ETF(大宗商品) '513100.SH', # 纳指100(海外资产) '159915.SZ', # 创业板100(成长股,科技股,中小盘) '510180.SH', # 上证180 ] t.benchmark = '510300.SH' return t def ranking_ETFs_risk_control(): t = Task() t.name = '基于ETF历史评分的轮动策略-带止损风控' # 排序 t.period = 'RunDaily' t.weight = 'WeighEqually' t.order_by_signal = 'trend_score(close,25)' t.select_buy = ['close>ma(close,4)'] # 入场条件 t.select_sell = ['(1-close/shift(close,1))>0.04'] # 止损条件 t.start_date = '20180101' # t.end_date = '20240501' t.symbols = [ '518880.SH', # 黄金ETF(大宗商品) '513100.SH', # 纳指100(海外资产) '159915.SZ', # 创业板100(成长股,科技股,中小盘) '510180.SH', # 上证180(价值股,蓝筹股,中大盘) ] t.benchmark = '510300.SH' return t res = Engine().run_tasks([ranking_ETFs(),ranking_ETFs_risk_control()]) import matplotlib.pyplot as plt print(res.stats) from matplotlib import rcParams rcParams['font.family'] = 'SimHei' #res.plot_weights() (res.prices.pct_change()+1).cumprod().plot() plt.show()
代码在如下位置:
代码和数据下载:AI量化实验室——2025量化投资的星辰大海
AI量化实验室 星球,已经运行三年多,1400+会员。
aitrader代码,因子表达式引擎、遗传算法(Deap)因子挖掘引擎等,支持vnpy,qlib,backtrader和bt引擎,内置多个年化30%+的策略,每周五迭代一次,代码和数据在星球全部开源。
扩展 • 历史文章
EarnMore(赚得更多)基于RL的投资组合管理框架:一致的股票表示,可定制股票池管理。(附论文+代码)
deap系统重构,再新增一个新的因子,年化39.1%,卡玛提升至2.76(附python代码)
deap时间序列函数补充,挖掘出年化39.12%的轮动因子,卡玛比率2.52
年化19.3%,回撤仅8%的实盘策略,以及backtrader整合CTPBee做实盘(附python代码和数据)
近四年年化收益19.3%,而最大回撤仅8%,卡玛比率2.34,投资应该是一件简单的事情。(附python代码+数据)