专业网站建设品牌,十四年专业建站经验,服务6000+客户--广州京杭网络
免费热线:400-683-0016      微信咨询  |  联系我们

动量因子_python

当前位置:网站建设 > 技术支持
资料来源:网络整理       时间:2023/3/9 2:33:37       共计:3596 浏览

动量因子?

在经典物理学上有一个描述表示物体质量和速度的乘积的物理量,物理学家们将其命名为动量,通俗来讲这个物理量描述的是运动物体的作用效果。

一辆高速运动质量很大的卡车就拥有一个很强大的动量,而一个低速运动的自行车的动量反而就不那么大了。换一句话说动量很大的大卡车相比与低速运动的自行车而言,很难停下。而在过去的股票市场中,很多投资者都喜欢采取追涨杀跌的方式购买股票(或是一些其他标的的投资)。但是这一切都只是一种假设,在学术界并没有一个严格的论证(虽然没有论证但是很多投资者已经基于动量因子构建了一些动量策略获得了不菲的利润)。

而直到1993年,Jegadeesh和Titman发表在上的论文首次从经济学的角度探讨了从1965年到1989年的美国股票市场上发生的动量效应。

首先我们来看一下动量因子的定义,我们可以利用计算个股(或其他投资标的)过去N个时间窗口的收益回报, 收益回报的计算公式如下:

?

那么这个return就可以被称为价格的动量,这里我们使用了收盘价作为计算动量的标注,在实际的因子开发和挖掘中我们还会使用不同的计算方法,例如

?

?

来计算受盘中最高价和最低价的调整的调整收盘价动量。这样做的逻辑是,在日线的层面上我们收盘价往往可以表示市场主力资本对标的物的价值判断(由于夜间停盘时无法进行市场交易,资本需要将标的物的价值调整到合理的范围规避资本风险),而最高价和最低价往往反应了市场投机者(职业交易者与散户投资)的情绪,同时合理考虑这样的多方情绪可以更好的衡量市场的动量变化。

现在我们来尝试使用Python构建动量因子, 在python计算动量因子只需要一行代码即可实现, 其中timeperiod就是我们的时间位移窗口N:

上面是动量因子最简单的实现方式,那么同样我们可以看一下调整后的价格动量因子如何实现:

上图是我们的绘制了2根k线动量与2根k线调整收盘价动量的分析,可以看出调整价的两日动量明显更加明显。

那么到这里我们的动量因子就已经实现完成了,但是由于股票的价格是一个随经济或标的本身经营情况有变化的变量。那么如果变量有指数增长趋势(exponential growth),比如 GDP,股票价格,期货价格,则一般取对数,使得 lnGDP 变为线性增长趋势(linear growth)。

这里我们还可以将我们的因子转变为:

def barMon(data, timeperiod=2):

return np.log(data['price'] - data['price].shift(timeperiod)

或是调整收盘价因子:

我们看到由于对数值取了对数,所以我们发现动量为负值的时候动量变得不连续了(小于零的值的对数在实数域上我们不考虑)。除此之外上述这样的因子考虑的够全面了么?我们知道不同的交易标的由于价格不一样所以价格浮动的绝对值也大相径庭。

例如,

股票A 的每股价格是2000元,当日涨幅1% ,该股的对应上涨的价格是20元/股

而股票B的每股价格是20 元,当日涨幅达到了涨停板的10%,该股的上涨的对应绝对值2元/股。

那么依照前面的动量计算公式,A股的一日动量值为 20, B股的一日动量值为2每股。

这样的动量显然没有办法很好的衡量投资标的物在市场中的变化量(这里主要是针对依据动量选股策略做出调整,因为需要比较不同标的之间的动量关系)。

所以我们继续修改动量指标的计算方式:

所对应的调整收盘价的动量计算方式就为:

可以看出在对数百分比角度上这两个因子就相差比较小了, 在实际的动量策略中我们常常是使用这样的经过对数调整的因子。那么到这里我们动量因子的构建方式就完成啦!

版权说明:
本网站凡注明“广州京杭 原创”的皆为本站原创文章,如需转载请注明出处!
本网转载皆注明出处,遵循行业规范,如发现作品内容版权或其它问题的,请与我们联系处理!
欢迎扫描右侧微信二维码与我们联系。
·上一条:7zip怎么解压rar格式_java | ·下一条:是自学Python好还是学一门手艺好呢_python

Copyright © 广州京杭网络科技有限公司 2005-2025 版权所有    粤ICP备16019765号 

广州京杭网络科技有限公司 版权所有