斜率*R平方的轮动
在动量轮动策略中,将斜率(Slope)与 R 平方(R-Squared)的乘积作为综合评分,是一种高效的量化筛选方法。这种评分机制的核心逻辑是:用斜率衡量趋势强度,用 R 平方验证趋势稳定性,两者相乘形成‘质量动量’指标,优先选择‘涨得快且稳’的资产。以下从实现原理、参数优化、实证效果和风险控制四个维度展开分析:
【1】评分机制的数学原理与实现
1. 斜率与 R 平方的协同逻辑
斜率(Slope)
:通过线性回归计算价格趋势的 “速度”,反映动量强度。例如,某资产过去 20 日价格拟合为 Y = 10 + 0.8X,斜率 0.8 表示每日平均上涨 0.8 元,趋势强劲。R 平方(R-Squared)
:衡量价格走势与趋势线的贴合程度,取值 0-1。若 R 平方 = 0.75,说明 75% 的价格波动可由趋势线解释,趋势稳定性高。 乘积评分(Score)
: Score = Slope × R²。例如,斜率 0.8 且 R 平方 0.75 的资产得分为 0.6,而斜率 1.0 但 R 平方 0.3 的资产得分仅为 0.3,后者因趋势不稳定被排除。
2. 标准化处理避免量纲偏差
直接相乘可能受资产价格绝对值影响(如高价股斜率数值天然更大)。因此,需对价格序列进行归一化。
【2】实现方式逻辑
策略参数采用下面的一些ETF列表,周期使用25天
# 策略参数
class StrategyParams:
def __init__(self):
self.etf_pool = {
'518880': '黄金ETF', # 黄金ETF(大宗商品)
'513100': '纳指100', # 纳指100(海外资产)
'513030': '德国ETF', # 德国
'513090': '港股ETF', # 港股
'159915': '创业板100', # 创业板100(成长股,科技股,中小盘)
'510180': '上证180', # 上证180(价值股,蓝筹股,中大盘)
}
self.m_days = 25 # 动量参考天数
self.target_num = 1 # 持有标的数量
self.start_date = datetime(2020, 1, 1) # 回测开始日期
self.end_date = datetime.now() # 回测结束日期
self.min_transaction_amount = 100 # 最小交易金额,避免小额交易易回测出来的结果如下图,

在第三方量化平台实现以后的效果也是差不多的曲线

【3】次方量化平台实现方式
虽然我们本地已经调试出了年化70%的策略,不过还是把一个行业ETF去掉了,保留了66%的收益率,等下发布到前端。

参数配置如下,由于这个策略的收益率和回撤并没有比简单的动量有多少上涨,而且这里的最少持有天数是1天,对于下次可能调仓时间无法预估,虽然很少1天就调仓的记录。

【4】操作教程
选择ETF池子,不要选择多了,意义不大。

设置参数,后台配置的时候,选择斜率就是了。

回测结果,最上面的策略原理和逻辑是简化的版本,不过大概意思是这个意思。我们自己实现的比这个复杂很多。为了策略的保密性,没有公开全部实现逻辑。

上一篇:RSRS动量轮动策略 下一篇:区间涨幅,动量效应
次方量化-技术博客
发表评论:
◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。