1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > 量化策略:基于波动率范围指标的反向交易策略

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

时间:2022-09-23 21:29:13

相关推荐

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

金融时间序列非常复杂,我们需要许多变量来理解和解释它们。只有这样,我们才有机会预测价格并从中获利。在本文中,我将介绍一个新的技术指标,称为波动范围指标(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: passfor 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)。回溯检验的数据是1月以来的小时图K线。风险管理系统是次优的,以便给予策略喘息的时间,理论上的风险回报率为0.25。

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

多货币对净值曲线:

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

结论

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

来源:Medium

作者:Sofien Kaabar

翻译校对:数据黑客

原文标题:The Volatility Range Indicator — Creating a Profitable Contrarian Trading Strategy

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

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

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

我们提供开源数据接口:

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

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。