前言:
现时朋友们对“动量策略python”都比较关切,各位老铁们都想要学习一些“动量策略python”的相关资讯。那么小编同时在网上汇集了一些有关“动量策略python””的相关内容,希望姐妹们能喜欢,各位老铁们一起来了解一下吧!在股市,总能发现这样的情况,当股价上涨一段时间后,股价继续上涨的可能性要高于回落的可能性,一只比其它股票上涨得快的股票可能会继续比其他股票上涨得快,这就是动量效应,也就是股民(投资者,投机者)中所谓的“强者恒强,弱者恒弱”。
动量策略(Momentum Strategies)的基本思想是按照股票前一段时间的回报,将它们从高到低进行排名,买入表现最佳的股票(组合和仓位)并持有一段时间,然后在一定时间重复该过程(组合再平衡和头寸再平衡)。
动量投资的精髓在于追涨。但是追涨要系统性的方法,不然一不小心就追在山顶,高处不胜寒。特别是A股,可以这么说,我走过的最长的路就是A股的套路。所以不应该买这种短时间内暴涨暴跌的股, 主要太难把握,例如:
应该要买中长期稳步上升的牛股, 回头去看A股非常多这样的,所以,系统化方法非常重要, 比如:
有很多种方法来进行动量投资:
观察熟悉的股票,看哪些正在上涨,然后买进,但是自己熟悉的股票可能并不适合做动量投资。一个个看A股近4000(2020-11-1)只股票走势图,显然太stupid了,并且看图掺杂了大量的主观因素。也可以考虑50日均线高于100日均线的股票(就是所谓的双均线策略吧),但是选出大量的股票,没有明确的投资标的。可以测量50日均线和100日均线之间的距离,这样就得到可以量化的动量,也可以进一步简化,只衡量价格和移动平均线之间的距离。还有如支持向量回归, 动态时间规整(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)
策略流程图
具体的交易规则
在周三进行交易(在A股,周一往往因为周末各种大事件,大消息,股价波动非常大,而周五,很多资金为了避免周末的不确定,也可能会减仓)。换成任何一个交易日也没有关系。计算动量对股票进行排名。使用上述的momentum_score方法。基于一个基点头寸规模。计算股票数量的公式为: 账户总值 * 0.001 / ATR。风险因子的设定也是因人而异。判断市场趋势,上证指数在200日均线上,熊市不要买股票,不要接往下落的飞刀。每周三的组合再平衡, 卖出: 该股票不再是股票池的前20%则卖掉,低于100日均线则卖出。有现金则继续按排名和ATR买入(有了前面的两步,也就没止损操作了)。每双周三进行一次头寸再平衡, 把当前头寸规模和期望头寸规模做对比,排名后做更新,别忘记定期进行头寸再平衡的目的是避免遭遇随机风险。
排名示例(只为演示,不做建仓建议)
这个策略盈利的三个要点: 头寸再平衡,仓位再平衡以及坚定不移地执行。
传奇交易员理查德.丹尼斯曾说:
我说过很多次,你可以把我的交易法则登在报纸上,但没人会遵守它们。关键是统一性和纪律性。几乎每一个人都可以列出一串法则,而且不比我们的那些法则差多少。但它们不能给别人信心,而唯有对法则充满信心,你才会坚持这些法则,即使遭遇逆境。
《金融怪杰》
《趋势永存》的作者提到对该策略的优化,边际效用并不高,在针对A股做了某些特别变动后,的确没必要优化,但是, 用机器学习方法来优化,边际效用就会大幅提升,这也是我目前正在做的工作。
Note: 本文只是记录下自己看到过,实践过的一些方法,实践中其实做了很多优化,并不作为投资建议,买者自慎。
标签: #动量策略python #动量策略代码