【研究】关于波动率指标SD与ATR的研究(二)

返回主题列表

【研究】关于波动率指标SD与ATR的研究(二)

莫邪的救赎 发布于2016-03-30

回复 27

浏览 21423

176

listen

分享到:

微信

微博

雪球

### 一、说明

1. 全部实验内容通过60次单独回测完成。

2. 由于本文的目标并不是构造一个具有较高收益率的系统或者是优化这一系统,而是比较两种不同的波动率测度指标在趋势确认过程中的优劣,因此本文只考虑了通道突破的情形,并未对相应的交易信号进行进一步的过滤或优化。

由于趋势型交易系统中,那些事后证明盈利的交易信号往往可以理解成较好的抓住了价格趋势,因此我们对实证分析结果的讨论主要集中在胜率、最大盈利和盈利交易的平均盈利幅度上,而且最为关注的是基于 SD 的交易系统和 ATR 的交易系统在这一实证结果上有何区别,以探讨两者作为趋势确认指标的有效性。

3. 在系统参数选择上,我们对比分析了两个时间窗宽,分别是 20( Bollinger Band的常用窗宽)和 14( ATR 的常用窗宽);对于模型一使用的通道带宽构建因子为 2,也即通过当前时间窗宽内的移动平均价格加上或减去 2 倍 SD 或 ATR 来得到上下轨道;对于模型二使用的通道带宽构建因子为 3,这是 Wilder 推荐的常用参数。

4. SAR模型中,当价格Bollinger Band和Keltner Band的上界则买入。

5. 完成买卖算一次交易记录。

### 二、基于SD和ATR的趋势交易系统的实证对比

####2.1 两个趋势交易系统介绍:通道突破、 SAR

为对比检验基于 SD 和 ATR 的趋势交易系统的效果,我们设定了两个趋势交易系统。

** 模型一:通道突破交易系统 **

对基于 SD 的 Bollinger Band 或基于 ATR 的 Keltner Band 这类通道指标而言,一个最直接的应用是通道突破系统。

通道突破交易系统:每次价格向上(下)突破了由不同的波动率指标构造的上(下)轨道之后,我们对上(下)行的趋势加以确认并做多(空),直至价格再次触及下(上)轨道之后平仓。

** 模型二: SAR( Stop and Reverse)交易系统 **

Wilders 提出的 SAR 交易系统是一个可以用来测试不同波动率指标有效性的工具。最初的 SAR 是基于原始的 ATR 指标来构建的,是一个广义上的趋势交易系统,我们这里主要关注基于 SD 和 ATR 的 SAR 交易系统的优劣。

SAR交易系统:基于当前多头(空头)头寸持有过程中的最高(最低)收盘价减去(加上)一定倍数的波动率测度指标(SD或ATR)值得到止损反向通道,当价格突破该通道后平掉原有头寸并建立反向头寸。

由上可知,该交易系统与模型一中的交易系统有两个主要的不同点:该交易系统并不依赖于当前价格的移动平均值,而是与其当前头寸持有过程中价格的最大或最小值有关系;该交易系统只有一个通道,多头持仓过程中该通道在价格下方,空头持仓时则相反。

####2.2 基于ATR和SD的趋势交易系统结果实证分析

**实验标的**

- 510210.XSHG 富国上证综指ETF 2011-03-25

- 159903.XSHE 深成ETF 2010-02-02

- 159919.XSHE 嘉实沪深300ETF 2012-05-28

- 159915.XSHE 易方达创业板 2011-12-09

- 159902.XSHE 华夏中小板ETF 2006-09-05

####2.3 基于ATR和SD的趋势交易系统结果实证分析

**图一:通道突破交易系统实证结果**

![通道模型.png][1]

**图二:SAR 交易系统实证结果**

![SAR.png][2]

由图一、图二进行分析:

1. 从交易频率来看,基于SD的交易系统比基于ATR的交易系统产生的交易信号更多,这是因为由于SD序列的波动性明显要大于ATR序列的波动性,相对更容易触发交易信号。

2. 从盈利交易平均盈利幅度和最大盈利幅度来看,无论是在通道突破交易系统还是SAR交易系统中,基于ATR指标的实证结果均明显好于SD。

3. 从盈利交易平均盈利幅度和最大盈利幅度来看,无论是在通道突破交易系统还是SAR 交易系统中,基于ATR指标的实证结果均明显好于SD。

4. 从胜率来看,基于SD指标的实证结果要略好于基于ATR指标的实证结果。

### 三、存在问题

1. 由于同一时间窗宽参数下得到的 SD 序列和 ATR 序列的均值有差异,应该对两个波动率测度指标进行标度调整。(这个问题一定程度上影响了回测的结果,及影响到交易次数等指标的统计)

2. 不得不说根据这两个通道获得的模型,收益真是不怎么样,但作为止损指标,貌似还有不错的效果,应该会在之后进行研究。

3. 由于没有对指标进行调整,所以有些心虚,暂时不敢得出什么结论,还望大神们指点一下T_T

[1]: https://image.joinquant.com/2c3607302d1f2c967884dda22bb7251d

[2]: https://image.joinquant.com/e21460bd768b2eeb504eb533c1dc5ec3

176

listen

分享到:

微信

微博

雪球

评论

莫邪的救赎

上面是SAR模型,通道模型见这里。

2016-03-30

风沙碗里熊

主要是第二阶段的收益不行吧,感觉各类信号还是用作开关作用,急需解决的还是选股问题。

2016-03-30

莫邪的救赎

@风沙碗里熊 在其他股票上没有试,都是在ETF上测算的。

其实本来的想法是严重股指期货,计算空头多头。但是聚宽暂时不支持,为了方便就用了ETF。

2016-03-31

软猫克鲁

一直以为ATR通道下沿是 avg-2*atr,原来是持仓最高价格-3*atr

2016-03-31

莫邪的救赎

@软猫克鲁 这个并没有严格定义,只是这是Wilder 在书中推荐的常用参数。

单也许并不一定适用于任何类型的股票,比如沪深和创业板,个人认为应该使用不同的参数。

2016-03-31

Kevin

正好最近在研究SAR指标。

可是百度百科给的SAR指标计算方式是:

SAR(n)=SAR(n-1)+AF[EP(N-1)-SAR(N-1)]

其中,SAR(n)为第n日的SAR值,SAR(n-1)为第(n-1)日的值

AF为加速因子(或叫加速系数),EP为极点价(最高价或最低价)

求解惑

2016-04-02

兔哥八

sar我也挺喜欢这个指标,因为看起来很高简单又很高级,但是回测真的一般。我想再试试类似这样的改进:10日的sar转向上买入,5日的sar转向下卖出,这种策略不知道是不是会更好些

2016-04-06

莫邪的救赎

@Kevin 原版的计算方式是那样,但是因为使用ATR构建,当然我也简化了一些。应该是给ATR也成一个因子的。回头可以加一下。

2016-04-06

James_3

请问胜率、最大盈利、平均盈利这些指标都是怎么计算出来的呀?那些实证是在聚宽做的吗?

2016-04-06

莫邪的救赎

@James_3 代买中都有计算的方法,在代码的最下面。

2016-04-06

James_3

谢谢喔

2016-04-07

James_3

ATR的计算方式,不是MAX((H-L),(H-pre_C),(pre_C-L))么?收盘价应该是H/L的前一天收盘价吧?talib.ATR直接输入参数H/L/C,是如何计算出的ATR呢?

2016-04-07

莫邪的救赎

计算公式如下:

![360反馈意见截图1623031598127112.png][1]

而且,talib给出的计算方式也是这样。

[1]: https://joinquant-image.b0.upaiyun.com/da78a96c3292f3caa494e499f2462b31

2016-04-07

小兵哥

莫邪,ATR 和 SAR 是一样的吗?为什么一会是 atr,一会是 sar?

2016-05-07

莫邪的救赎

@小兵哥 不一样啊,是两个指标

2016-05-09

William_xie

克隆后不能回测

File "user_code.py", line 65, in handle_data

if price > g.high_price:

AttributeError: 'PersistentState' object has no attribute 'high_price'

2016-05-28

Pythonzaixue

@William_xie 在init 定义 g.high_price=0

2016-05-30

哥布林

@莫邪的救赎

2016-05-31 14:38:00 - ERROR - File "user_code.py", line 65, in handle_data

if price > g.high_price:

AttributeError: 'PersistentState' object has no attribute 'high_price'

2016-06-03

莫邪的救赎

@哥布林 应该是当天就触发了卖出的条件。

high_price是在盘后记录的,之后实时更新的。

解决方案1:买完之后即调用get_order获取avg_cost复制给high_price。

解决方案2:增加卖出的判定条件,可改为:if len(context.portfolio.positions) > 0 and context.portfolio.positions[stock].sellable_amount>0:

2016-06-03

fengfeiyang

只看到楼主突破通道系统的源码,没看到SAR系统的源码。

2017-08-15

首页

上一页

1

2

下一页

尾页

您尚未登录,请 登录 或者 注册 聚宽发表回复。

取 消

提 交

关于

关于我们

联系我们

加入我们

数据

指数数据

基金数据

国泰安数据

股票财务数据

金融期货数据

行业概念数据

帮助

常见问题

API文档

Python教程

Python 2 to 3

友情链接

果仁网

关注我们

知乎专栏

雪球

微信公众号

用户协议 | 隐私政策

@2025 @joinquant.com | 京ICP备17068639号-5 | 增值电信业务经营许可证:京B2-20212305

关于

关于我们

加入我们

联系我们

数据

指数数据

基金数据

国泰安数据

股票财务数据

金融期货数据

行业概念数据

帮助

常见问题

API文档

Python教程

@2025 @joinquant.com | 京ICP备17068639号-5 | 增值电信业务经营许可证:京B2-20212305

Copyright © 2022 星辰幻想游戏活动专区 All Rights Reserved.