ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

量化策略:基于波动率范围指标的反向交易策略

2020-12-27 10:00:23  阅读:315  来源: 互联网

标签:策略 Data lookback range 反向 回溯 量化 VRI where


金融时间序列非常复杂,我们需要许多变量来理解和解释它们。只有这样,我们才有机会预测价格并从中获利。在本文中,我将介绍一个新的技术指标,称为波动范围指标(VRI),该指标使用波动率,动量和范围的概念来生成高质量的交易信号。

波动范围指标(VRI)

VRI是一个相对复杂的指标,由三个要素组成:

  • 波动率由历史标准偏差衡量。
  • 按收盘价之差衡量的动量。
  • 最大-最小范围技术。

在将每个部分组合在一起之前,我们将单独讨论它们,将“波动率范围指标”(VRI)全部呈现出来,然后创建交易策略并回溯检验。

本文来自《数据黑客》,登录官网可阅读更多精彩资讯和文章。

数据黑客

1. 波动率

最基本的波动类型是标准差。它是描述性统计的支柱之一,并且是某些技术指标中的重要元素。它也用在著名的布林带中。首先让我们定义什么是方差,然后再找到标准差。

方差是与均值的平方偏差(离散度量),我们采用平方偏差以强制与均值的距离为非负值 ,最后求平方根以使度量具有与均值相同的单位。方差通过以下公式计算:

在这里插入图片描述

标准差等于方差的平方根:
在这里插入图片描述

下图显示了EURUSD每日价格的标准差(回溯期为3):

在这里插入图片描述

def volatility(Data, lookback, what, where):

    for i in range(len(Data)):  
      try:  
        Data[i, where] = (Data[i - lookback + 1:i + 1, what].std())  
            except IndexError:  
                pass  
    return Data

2. 动量

VRI用收盘价的一阶差分(减法)衡量动量,我们用当前K线的收盘价减去n根K线前的收盘价,计算公式如下:

在这里插入图片描述

下图第一个面板显示EURUSD的小时图收盘价,第二个面板显示收盘价的差分(回溯期为3)。

在这里插入图片描述

for i in range(len(Data)):      
  Data[i, where] = Data[i, what] - Data[i - lookback, 0]

 # Assuming what = 3, lookback = 3, where = 4, and we have an OHLC array with a few empty columns to be populated

3. 极限范围

极限范围(extreme range)是指回溯期内价格的最大范围和最小范围,此处回溯期选择3,计算包含两个步骤:

  • 最大范围是过去3根K线最高价的最大值。
  • 最小范围是过去3根K线最低价的最小值。

极限范围等于最大范围减去最小范围。

 # High Range   
for i in range(len(Data)):  
  try:  
    Data[i, where + 2] = max(Data[i - lookback:i + 1, high])  
  except ValueError:  
    pass

 # Low Range   
for i in range(len(Data)):  
  try:  
     Data[i, where + 3] = min(Data[i - lookback:i + 1, low])  
  except ValueError:  
     pass

 # Assuming where = 4, high = 1, low = 2, and we have an OHLC array with a few empty columns to be populated

在这里插入图片描述

上图第一个面板显示EURUSD的小时图价格,第二个面板显示极端范围,回溯期为3。

最后,将它们组合起来形成波动率范围指标。计算公式如下,先将价格动量除以极限范围,然后乘以当前的波动率。

在这里插入图片描述

constant是将交易信号归一化的常数。回溯检验时我将常数设为10000,以便更清楚地显示VRI值。

def vri(Data, lookback, what, high, low, where):

    # Volatility Calculation  
    Data = volatility(Data, lookback, what, where)

    # Differencing as a Measure of Momentum  
    for i in range(len(Data)):      
        Data[i, where + 1] = Data[i, what] - Data[i - lookback, 0]

    # Extreme Range  
    for i in range(len(Data)):  
        try:  
            Data[i, where + 2] = max(Data[i - lookback:i + 1, high])  
        except ValueError:  
            pass

    for i in range(len(Data)):  
        try:  
            Data[i, where + 3] = min(Data[i - lookback:i + 1, low])  
        except ValueError:  
            pass  
          
    Data[:, where + 4] = Data[:, where + 1] / (Data[:, where + 2] - Data[:, where + 3])      
          
    Data[:, where + 4] = Data[:, where + 4] * Data[:, where] * 1000  
         
    return Data

在这里插入图片描述

上图第一个面板显示EURUSD小时图价格,第二个面板显示VRI,回溯期为3。

经过仔细观察,我们可以将0.3作为短期顶部的阈值,将-0.3视为短期底部的阈值。

在这里插入图片描述

上图第一个面板显示USDCHF小时图数据,第二个面板中显示VRI,回溯期为3。

策略回测

接下来开发一种交易策略,规则如下:

  • 当VRI达到-0.30且前两个VRI值高于-0.30时,做多(买入)。
  • 当VRI达到0.30且前两个VRI值低于0.30时,做空(卖出)。

我们将再次使用基于ATR的风险管理系统,每轮交易的成本为0.2点(pips)。回溯检验的数据是2010年1月以来的小时图K线。风险管理系统是次优的,以便给予策略喘息的时间,理论上的风险回报率为0.25。

VRI策略多货币对测试结果:

在这里插入图片描述

多货币对净值曲线:

在这里插入图片描述

请注意,结果仅是过去的结果,不应作为未来的预期回报。在金融领域,回报永远无法保证。您必须根据自己的情况进行回测检验,在上面的回测中,我们设置了相对较低的风险回报率,导致胜率相对较高。实际上,您必须使用更好的风险管理,并尝试将VRI整合到您的系统交易算法中。

结论

为什么写这篇文章?必须指出,上述方法并不能保证获利,如果您关注我的文章,您会注意到我将重点放在探索如何盈利上,而不是告诉你这个策略能盈利。在实际交易中,您应该在策略中引入自己的见解和研究,才能实现长期盈利的目标。

来源:Medium
作者:Sofien Kaabar
翻译校对:数据黑客
原文标题:The Volatility Range Indicator — Creating a Profitable Contrarian Trading Strategy


数据黑客:专注金融大数据,聚合全网最好的资讯和教程,提供开源数据接口。

我们聚合全网最优秀的资讯和教程:

  1. 金融大数据
  2. 机器学习/深度学习
  3. 量化交易
  4. 数据工程
  5. 编程语言,Python,R,Julia,Scala,SQL

我们提供开源数据接口:

  1. 下载国内和国外海量金融数据
  2. API接口,将数据整合到您的平台

标签:策略,Data,lookback,range,反向,回溯,量化,VRI,where
来源: https://blog.csdn.net/weixin_42731853/article/details/111772718

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有