转 有没有哪个趋势指标更好使?

作者:石川,量信投资创始合伙人,清华大学学士、硕士,麻省理工学院博士;精通各种概率模型和统计方法,擅长不确定性随机系统的建模及优化。知乎专栏:https://zhuanlan.zhihu.com/mitcshi。

摘要

趋势追踪策略成功的关键在于选择适当的时间尺度、仓位控制、投资组合构建以及风险管理等要素。与这些相比,具体使用哪个方法来计算趋势则没那么重要。

1. 引言

市场中有句老话“趋势是你的朋友”。无论是表现不俗的 CTA 策略还是股票市场的动量因子,都是依靠追踪趋势而构建的成功策略的典范。

而在技术层面,各种捕捉趋势的方法也是层出不穷:基于收益率的时序动量、来自技术分析的均线交叉或通道突破、各种 state space 模型比如卡尔曼滤波、基于价格的线性回归、甚至是频域分析(如傅里叶变换、小波分析等)。

当某种方法的回测结果不是那么给力的时候,人们的第一反应总是寻找下一个(更复杂)的方法来计算趋势。然而究其核心,上述方法都是基于价格或者收益率的时间序列计算出来的,真的有哪种方法或者指标显著优于其他方法吗?这就是本文关心的问题。

为了回答这个问题,Levine and Pedersen (2016) 提出了 trend signature plots(趋势签名图)这个概念。其目的是把不同计算趋势的方法绘制成价格或者收益率的权重随时间变化的函数,以此来横向比较不同的趋势指标。

下面就来用时序动量和均线交叉来解释 trend signature plots。

2. 时序动量 vs 均线交叉

为了便于讨论和数学推导,假设我们考虑对数价格 —— 因为对数价格的差分就是对数收益率,这样就可以非常简单的在价格和收益率之间转换,从而比较不同的趋势计算方法。

时序动量一般的计算方法为使用过去一段时间的收益率进行加权平均(通常的做法是等权),以此得到趋势指标。假设当前时刻为 t,则 t 时刻的时序动量(time series momemtum)指标 TSMOM_t 可以写成如下形式:

为不失一般性,上式写成了无穷级数的形式。在实际应用中,对于给定的计算窗口 N,只需要令所有 s > N 的权重 c_s 等于零即可。

再来看看均线交叉(moving average crossover)。它是使用快、慢两个均线构成的趋势指标。每个均线都是给定窗口内价格序列的加权平均(因权重不同可以有简单移动平均、指数移动平均等),趋势信号则是快、慢两个均线之差。均线交叉的数学表达式如下:

直观比较 TSMOM 和 MACROSS 两个计算趋势的方法,它们看上去似乎差别很大。但是,通过简单的数学推导可以发现 MACROSS 可以很容易的表达为收益率序列按照某种特定权重加权的组合。具体来说,从 TSMOM 的定义出发,将其转化为如下形式:

比较上式和 MACROSS 的定义就可以看到收益率的权重 c_s 和 MACROSS 权重 w_s^{fast} 及 w_s^{slow} 之间的关联:

该结果意味着,只要按照上述 c_s 对收益率进行加权平均,得到的趋势信号就等价于均线交叉。利用这种等价性就可以把不同的趋势计算方法绘制成不同时刻收益率的权重随 s 的变化,以此得到 trend signature plot。需要指出的是,通过转换价格权重得到的收益率权重序列之和并不等于 1。为了比较不同方法的 trend signature plots,需要对收益率权重进行归一化处理。

上述基于均线交叉的推导也可以推广到更一般的情况。假设某种趋势计算方法是价格序列的加权:Σw_iP_i,则其对应的收益率加权系数为:

其中 A 是将 c_s 序列归一化的系数。下图展示了三种不同方法的 trend signature plots(横坐标最左侧 s = 0 代表着最新的时刻、横坐标增大代表时序 lag 增大),它们分别为:

1.窗口为 260 个交易日、使用等权重计算的 TSMOM 信号;

2.窗口分别为 20 和 260 日的简单移动平均线计算的均线交叉信号;

3.质心(center of mass)分别为 32 和 128 的指数移动平均计算的均线交叉信号。

从上图不难看出,尽管时序动量和均线交叉听起来截然不同,但它们背后的趋势签名其实相差的并不大;而同属于均线交叉的简单平均和指数平均,它们之间的相似性就更高了 —— 这说明如果简单移动平均的效果不好而寄希望于指数移动平均发挥什么神奇的效果,实在是有些不切实际。

3 .其他线性算法

本节再来考虑其他两种常见的计算趋势的线性方法:卡尔曼滤波(Kalman 1960)和线性回归。

卡尔曼滤波是一种从带噪声的动态线性系统中估计隐含状态的有效方法。以价格序列为例,最简单的模型是 random walk + local trend,而 trend 的取值是不可观测的,需要使用卡尔曼滤波来估计。Harvey (1984) 指出,当使用卡尔曼滤波分析 local trend 模型时,对 local trend 的最优估计是收益率序列的指数移动平均。

下图比较了三种不同趋势计算方法的 trend signature plots:

1.窗口为 260 个交易日、使用等权重计算的 TSMOM 信号;

2.质心(center of mass)分别为 32 和 128 的指数移动平均计算的均线交叉信号;

3.使用质心为 96 的指数平滑代表的卡尔曼滤波趋势信号。

相比较其他两种方法,卡尔曼滤波偏重于赋予近期的收益率更高的权重。其他常见线性滤波器还有 HP filter(Hodrick and Prescott 1997),也可以得到类似的结果,这里不再赘述。

再来看看 OLS 线性回归。以下图为例,线性回归使用过去一段时间的价格序列在时序上进行线性拟合 P_s = α + βs + ε;回归系数 β 的正负则代表着趋势上涨或者下降。

具体而言,假设用于回归的(对数)价格序列窗口为 N,则 N 对样本点分别为 (1, P_{t-N+1}), (2, P_{t-N+2}), …, (N-1, P_{t-1}), (N, P_t)。由 OLS 的定义可知,β 的估计值为:

其中 \bar P 是 N 期价格均值。此外,通过简单的代数运算可知:

因此,β 的估计值可以进一步简化为如下形式:

上式说明,β 的估计值是价格序列的线性加权。因此我们可以利用上一节提到的处理方法将它转化为收益率加权,从而得到 trend signature plot。

最后,下图比较了三种不同趋势计算方法的 trend signature plots,说明 OLS 计算的趋势信号和 TSMOM 以及 MACROSS 并无本质的区别:

1. 窗口为 260 个交易日、使用等权重计算的 TSMOM 信号;

2. 窗口分别为 20 和 260 日的简单移动平均线计算的均线交叉信号;

3. 线性回归 OLS 得到的趋势信号。

在本小节和上一节的对比中,我们在选取不同趋势计算方法的参数时,刻意要求它们计算趋势的时间尺度是相同的(只有这样的比较才有意义)。这一点是非常重要的,它说明一旦选定了时间尺度,则不同的趋势计算方法的效果非常接近。归根到底,这些趋势计算方法都可以转化成各自的 trend signature plot 来表示,虽然它们的形态有些差异,但其本质仍然都是收益率的某种加权平均。

4.一个例子

本节使用 Levine and Pedersen (2016) 的例子来对比 TSMOM 和 MACROSS 两种方法,并说明对于趋势策略,计算趋势的时间尺度远比给定尺度下选择哪种计算方法更重要。

具体来说,针对这两种方法,分别考虑一个月、三个月和一年这三个时间尺度。投资标的来自 Moskowitz et al. (2012) 中提及的 58 种资产(包括商品期货、债券、股票和外汇)。根据这三个时间尺度,分别选择 TSMOM 和 MACROSS 的参数如下(MACROSS 中的快、慢均线均使用指数移动平均,参数表示快、慢均线的质心):

使用这些方法构建的趋势追踪策略的收益率、波动率以及夏普率如下表所示。

上述结果说明,对于给定的时间尺度,TSMOM 和 MACROSS 两种方法的结果非常接近;而选择正确的计算趋势的时间尺度则有助于提高策略的收益率和夏普率。

最后,我们可以通过回归进一步比较这两种方法。具体的,使用三个 TSMOM 策略作为解释变量来分别解释每一个 MACROSS 策略;反之用三个 MACROSS 策略作为解释变量来逐一解释 TSMOM 策略。回归结果如下。

从上面的结果可以解读出如下信息:

1. 这六个回归的 R-squared 都很高,说明这两种方法很高的相似性;

2. 对于每一个级别的信号,解释变量中最显著的恰好是和它同级别的另一种方法计算的信号;

3. 从截距来看,TSMOM 信号似乎有 MACROSS 无法解释的 α。

对于第三点,它并不说明 TSMOM 就比 MACROSS 更好。造成这种现象的原因是,三个 TSMOM 信号的 trend signature plots 的组合可以更好的模拟每一个 MACROSS 的 trend signature plot;而反观 MACROSS,它们的 trend signature plots 无法很好的逼近 TSMOM 的 trend signature plot(下图)。

5.结语

趋势追踪策略成功的关键在于选择适当的时间尺度、仓位控制、投资组合构建以及风险管理等要素。与这些相比,具体使用哪个指标或者方法来计算趋势则没那么重要。

之前我在公众号写过一些关于趋势(或动量)的文章,它们包括:

1.《移动平均:你知道的与你不知道的》:探寻均线背后的数学内在,解析不同均线计算方法的相似之处。

2.《什么样的收益率特性适合趋势追踪策略》:研究适合趋势策略的收益率特征,指出计算趋势的时间尺度对于趋势策略的成败至关重要。

3.《动量策略的是与非》:比较时序动量和截面动量的不同。

这些文章,以及今天这篇,都没有去介绍某种具体的趋势策略;相反的,它们是为了探究趋势策略本质而做的尝试。趋势策略容易吗?容易 —— 利用两根均线就可以“走两步”,然而做不好很容易;趋势策略困难吗?困难 —— 这里面有太多的细节需要分析、推敲,持续的做好很困难。

如果你因为文章的标题而点进来并希望看到哪个指标主宰其他的话,那么我向你表示歉意,可能让你失望了。但是希望本文能带给你一些别的启发。随着对趋势策略的进一步理解,我们就可以把有限的精力用到更重要的地方 —— 如仓位控制、风险管理这些 —— 提高趋势策略的风险收益特征。

“ The trend is your friend except at the end where it bends.

参考文献

Harvey, A. C. (1984). A unified view of statistical forecasting procedures. Journal of Forecasting, Vol. 3(3), 245 – 275.

Hodrick, R. J. and E. C. Prescott (1997). Postwar U.S. business cycles: an empirical investigation. Journal of Money, Credit, and Banking, Vol. 29(1), 1 – 16.

Kalman, R. E. (1960). A new approach to linear filtering and prediction problems. Journal of Basic Engineering, Vol. 82(1), 35 – 45.

Levine, A. and L. H. Pedersen (2016). Which trend is your friend? Financial Analysts Journal, Vol. 72(3), 51 – 66.

Moskowitz, T., Y. H. Ooi, and L. H. Pedersen (2012). Time Series Momentum. Journal of Financial Economics, Vol. 104(2), 228 – 250.

来源:量信投资     作者:石川博士      已获授权转载


推荐阅读:

1.从量化角度告诉你常见的技术指标到底能不能赚钱?

2.从回测到实盘(2):如何让回测更贴近实盘结果

3.程序化交易(3):从回测到实盘,还需要注意些什么?

4.股市暴跌深套 | 如何利用日内回转交易策略降低持仓成本

5.仓位管理(1): 鞅与反鞅策略,凯利公司及其局限

6.仓位管理(2): 凯利公式指导投资与多种资金管理方式


《算法导论 第三版英文版》_高清中文版

《深度学习入门:基于Python的理论与实现》_高清中文版

《深入浅出数据分析》_高清中文版

《Python编程:从入门到实践》_高清中文版

《Python科学计算》_高清中文版

《深度学习入门:基于Python的理论与实现》_高清中文版

《深入浅出数据分析》_高清中文版

《Python编程:从入门到实践》_高清中文版


有没有哪个趋势指标,更好使?相关推荐

  1. 高频交易算法研发心得--WAVT指标(Warensoft交易量趋势指标)算法及应用

    高频交易算法研发心得--WAVT指标(Warensoft交易量趋势指标)算法及应用 注:WAVT指标由Warensoft(王宇)原创. 前面聊了一系列的常见应用指标,包括短线.长线的指标,并且也无耐的 ...

  2. Lyndon的量化修炼之路——浅谈趋势指标取参方法

    //期市妖风大,小心被刮飞.本文不构成任何实质性建议,也不对任何依此进行的交易结果负责 `` 目前市场多许多投资者仍然依托趋势指标作为交易参考,其中,指标计算过程中给定的参数对交易结果具有相当大的影响 ...

  3. 底量超顶量超级大黑马指标源码_求通达信顶底趋势指标源码

    展开全部 顶底趋势指标(通达信) 此指标是我精心收藏的指标,无未来函数,62616964757a686964616fe4b893e5b19e31333262353334真正的好指标.图片演示在下面网址 ...

  4. 使用Python实现超级趋势指标(Super Trend Indicator)

    趋势指标(Super Trend Indicator) 超级趋势指标是一种显示当前趋势方向的指标,很像移动平均线.和其他的趋势指标相似,可以在趋势市场中运行良好,但震荡市场中,可能会给出过多错误信号. ...

  5. 小散量化炒股记|趋势指标金叉死叉策略在震荡行情中怎么处理

    前言 相信大家都听说了量化交易这个东西了吧!量化交易是一种新兴的系统化金融投资方法. 那么,什么才是普通股民所适合的量化交易打开方式呢? 本文就用一个接地气的股票分析场景--典型的趋势指标金叉死叉策略 ...

  6. 分享股票level2接口的量价趋势指标源码

    分享股票level2接口的量价趋势指标源码: 价趋势:MA(C,3)LINETHICK2 COLORGRAY; AMOL:=LOG(MA(AMO/C/100,M)); AMOH:=LOG(MA(AMO ...

  7. 提前预测精准选股指标 判断趋势的最佳指标 通达信好用的钻石趋势指标副图

    股市是一个充满悲喜交加的地方,"没有只涨不跌的股市,也没有只跌不涨的股市",那么在下跌过程中或上涨过程中就会出现波段的拐点.那么当趋势拐点出现的时候介入股票,是一种非常有效的赢利模 ...

  8. 7.8趋势简更(美联储的步步紧逼)

    7.8趋势简更(美联储的步步紧逼) 昨晚美联储6月会议纪要出来了,村委会的开会内容,引起了全球金融市场的剧烈波动. 从昨天半夜开始,加密市场就开始跌跌不休,而且没有像样的反弹,欧洲主要股指都是大跌,都 ...

  9. 模型预测精度(数值regression)评价指标 - RMSE, MAE, MAPE Bias哪个指标更好?Forecast KPIs: RMSE, MAE, MAPE Bias

    模型预测精度(数值regression)评价指标 - RMSE, MAE, MAPE & Bias哪个指标更好? 在销量/需求预测时常用的一些模型评价指标,尤其是在supplychain销量预 ...

最新文章

  1. 在项目中同时使用Objective-C和Swift
  2. php 数组转对象_[基础编程学习] [PHP7数组详解]:第1章 (8)数组和对象
  3. 国外persona用户画像_使用Mozilla Persona验证用户的指南
  4. 前端学习(1335):mongoDB导入数据
  5. CSDN博客图片水印|自定义水印|去除水印
  6. pythonutf8转gbk,Python实现把utf-8格式的文件转换成gbk格式的文件
  7. 今日恐慌与贪婪指数为79 贪婪程度有所上升
  8. 《UVM实战》——3.1节UVM的树形结构
  9. 3631: [JLOI2014]松鼠的新家
  10. 分布式存储系统学习笔记(三)—分布式键值系统(2)—淘宝Tair
  11. ABAP中的枚举对象
  12. sql 注入 预防_SQL注入:检测和预防
  13. 小班运用计算机教学活动,小班《小蚂蚁》活动教案精选
  14. EIGRP(Enhanced Interior Gateway Routing Protocol,增加型内部网关路由协议)
  15. Windows系统部分软件显示乱码
  16. vue 跳转页面删除当前tab
  17. DrawerLayout must be measured with MeasureSpec.EXACTLY.
  18. 2019年有效的rtsp流媒体测试地址整理汇总
  19. JVM垃圾回收器工作原理及使用实例介绍
  20. java isnan_Java Double isNaN()用法及代码示例

热门文章

  1. 服务器网卡网速慢怎么维护,网速慢怎么办我通过某单位内部的局域网上互联网,最近一段时间网速巨 爱问知识人...
  2. 3部联动19层电梯控制器的验证计划
  3. 连接中移Onenet云平台的C#上位机
  4. 微联微信管理平台软--- 微信营销平台运营首选的平台软件
  5. C# Revit二次开发基础/核心编程--- Application\Document\Transaction
  6. 随机森林遥感影像识别+Rater转MultiShp
  7. HTML和CSS的常用基础知识笔记
  8. 【原创】积性函数和狄利克雷卷积学习笔记 未完成
  9. 园林技术计算机应用技术,自考本科园林:2011年4月02316计算机应用技术历年真题及答案...
  10. 用股票交易量查询接口是怎么查询a股全天总成交量的?