打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
基于指数回归的动量投资策略及其Python代码实现
userphoto

2022.06.06 浙江

关注

在股市,总能发现这样的情况,当股价上涨一段时间后,股价继续上涨的可能性要高于回落的可能性,一只比其它股票上涨得快的股票可能会继续比其他股票上涨得快,这就是动量效应,也就是股民(投资者,投机者)中所谓的“强者恒强,弱者恒弱”。

动量策略(Momentum Strategies)的基本思想是按照股票前一段时间的回报,将它们从高到低进行排名,买入表现最佳的股票(组合和仓位)并持有一段时间,然后在一定时间重复该过程(组合再平衡和头寸再平衡)。

动量投资的精髓在于追涨。但是追涨要系统性的方法,不然一不小心就追在山顶,高处不胜寒。特别是A股,可以这么说,我走过的最长的路就是A股的套路。所以不应该买这种短时间内暴涨暴跌的股, 主要太难把握,例如:

应该要买中长期稳步上升的牛股, 回头去看A股非常多这样的,所以,系统化方法非常重要, 比如:

有很多种方法来进行动量投资:

  1. 观察熟悉的股票,看哪些正在上涨,然后买进,但是自己熟悉的股票可能并不适合做动量投资。
  2. 一个个看A股近4000(2020-11-1)只股票走势图,显然太stupid了,并且看图掺杂了大量的主观因素。
  3. 也可以考虑50日均线高于100日均线的股票(就是所谓的双均线策略吧),但是选出大量的股票,没有明确的投资标的。
  4. 可以测量50日均线和100日均线之间的距离,这样就得到可以量化的动量,也可以进一步简化,只衡量价格和移动平均线之间的距离。
  5. 还有如支持向量回归, 动态时间规整(dynamic time warping)等等。

在《趋势永存》一书中,作者描述了一个基于指数回归的动量投资策略,非常有效,我在该策略的基础上做了简单的优化,使之更适用于A股:

线性回归计算得到的斜率可以用来度量股票动量,而指数回归的斜率是按百分数表示,显示出每日平均涨跌幅的百分比。然后用R2(判定系数: 价格序列与回归线的拟合程度)来衡量价格序列数据是否符合回归直线。然后降序找到排名前30的股票。

文字的表示总是抽象的,转为代码就是:

import numpy as npfrom scipy import statsdef momentum_score(ts): ''' input: 价格序列,按交易日期降序 output: 收益率指数回归的斜率*R2 ''' x = np.arange(len(ts)) log_ts = np.log(ts) slope, intercept, r_value, p_value, std_err = stats.linregress(x, log_ts) annualized_slope = (np.power(np.exp(slope), 90) -1) *100 # 90个交易日 return annualized_slope * (r_value ** 2)

排名方法有了,那按什么规则买入呢? 一个简单有效的方法是根据股票的ATR(Average True Range, 平均真实波幅)来决定。这是一个衡量股票价格波动的一种指标,是一段时间内真实波幅的平均值。python的技术分析库talib已经有ATR的实现,使用代码如下:

import talibdef get_atr(high, low, close):    '''    input: 最高价,最低价, 收盘价的序列    output: 20的ATR    '''    reutrn talib.ATR(high, low, close, timeperiod=20)

策略流程图

具体的交易规则

  1. 在周三进行交易(在A股,周一往往因为周末各种大事件,大消息,股价波动非常大,而周五,很多资金为了避免周末的不确定,也可能会减仓)。换成任何一个交易日也没有关系。
  2. 计算动量对股票进行排名。使用上述的momentum_score方法。
  3. 基于一个基点头寸规模。计算股票数量的公式为: 账户总值 * 0.001 / ATR。风险因子的设定也是因人而异。
  4. 判断市场趋势,上证指数在200日均线上,熊市不要买股票,不要接往下落的飞刀。
  5. 每周三的组合再平衡, 卖出: 该股票不再是股票池的前20%则卖掉,低于100日均线则卖出。有现金则继续按排名和ATR买入(有了前面的两步,也就没止损操作了)。
  6. 每双周三进行一次头寸再平衡, 把当前头寸规模和期望头寸规模做对比,排名后做更新,别忘记定期进行头寸再平衡的目的是避免遭遇随机风险。

排名示例(只为演示,不做建仓建议)

这个策略盈利的三个要点: 头寸再平衡,仓位再平衡以及坚定不移地执行。

传奇交易员理查德.丹尼斯曾说:

我说过很多次,你可以把我的交易法则登在报纸上,但没人会遵守它们。关键是统一性和纪律性。几乎每一个人都可以列出一串法则,而且不比我们的那些法则差多少。但它们不能给别人信心,而唯有对法则充满信心,你才会坚持这些法则,即使遭遇逆境。

《金融怪杰》

《趋势永存》的作者提到对该策略的优化,边际效用并不高,在针对A股做了某些特别变动后,的确没必要优化,但是, 用机器学习方法来优化,边际效用就会大幅提升,这也是我目前正在做的工作。

Note: 本文只是记录下自己看到过,实践过的一些方法,实践中其实做了很多优化,并不作为投资建议,买者自慎。

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
读《趋势永存:打败市场的动量策略》
《趋势永存——打败市场的动量策略》读书笔记
十年年化42.4%(不止损版本55.7%):ETF动量轮动+卡曼滤波+RSRS择时止损(代码+数据)
(100)海龟系统交易法则之技术精华
ATR平均真实波幅(2022.12.25)
“四年狂赚3000万!”伟大的交易员是天生造就还是后天培养?
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服