年化29.6%:基于ETF评分的轮动策略加止损风控版本,更稳健(python代码+数据)

原创内容第801篇,专注量化投资、个人成长与财富自由。

昨天咱们交付了一个波动率的策略,近五年年化41.3%,卡玛1.69的基于ATR的波动率全球资产轮动(指标+策略代码)

今天我们要优化策略:年化29.6%:基于ETF评分的轮动策略再优化 | AI量化数据及策略运行工程细节(python代码+数据)

轮动策略效果不错,但有时候回撤比较大,在实盘时心理压力比较大。

引入严格的止损机制,提升策略的稳健性,下面是逻辑:

先看效果对比:

图片

一、动量轮动逻辑

  1. 评分机制:使用25日对数收益率的年化值乘以趋势判定系数R²,筛选趋势最强的ETF

    • 年化收益通过线性回归斜率计算,衡量资产上涨速度

    • R²评估趋势稳定性,过滤波动大的标的

    • 综合得分=年化收益×R²,兼顾收益与趋势质量

  2. 轮动规则:

    • 每日选择得分最高的ETF

    • 无持仓时直接买入最优ETF

    • 持仓ETF非最优时立即调仓

二、严格止损逻辑(三层风控)

  1. 动态止盈止损:

    • 持仓标的若单日跌幅≥4%立即清仓

    • 跟踪10日高点,跌破近期高点(cur2max10)作为预警信号

  2. 入场趋势过滤:

    • 买入前验证价格>4日均线(mean4)

    • 避免在短期下跌趋势中建仓

  3. 断线保护机制:

    • 若因止损清仓后,标的仍为最优选择时,需等待价格重新站上均线才允许再次买入

三、策略优势

  1. 动量+止损双驱动:既捕捉趋势延续收益,又规避趋势反转风险

  2. 多维度风控:

    • 硬性止损控制单日最大亏损

    • 均线过滤避免逆势建仓

    • 断线机制防止反复止损

  3. 低换手特性:R²因子过滤波动,减少无效调仓

四、潜在优化方向

  1. 参数优化:测试4日均线/4%止损阈值的最佳参数组合

  2. 动态止损:改用ATR波动率调整止损幅度

  3. 仓位管理:考虑分档建仓/金字塔加码

  4. 组合持仓:同时持有前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代码+数据)

aitraderv4.2开发计划,整合QMT。年化39.9%的因子与年化19.3%的策略哪个优?

年化18%-39.3%的策略集 | backtrader通过xtquant连接qmt实战

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

AI量化投资实验室

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值