注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

期货期权

算法交易

 
 
 

日志

 
 

基于 HMM 的商品期货资金流向交易策略  

2018-03-04 18:00:03|  分类: 量化交易 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

一、引言

资金流向(Money Flow)包括资金的流向和资金的流量,是一个标准的技术指标,反映市场当前对某只股票超额的需求或者供给。把某只股票的主动性买盘看成是资金流入,把主动性卖盘看成是资金流出,若二者差额为正,则形成超额需求;如果为负,则形成超额供给。

资金流向的价值在于它不仅反映了当期股票的超额供给与需求,也反映了未来股票的超额供给与需求。也就是说,理论上资金流向指标不仅与股票当期的收益率有关,也和未来的股票收益率存在着相关性。

而在期货市场中,由于做空机制的存在,无法直接采用股票市场中的资金流向公式刻画期货标的合约真实的资金流向规律。比如某一期货标的合约价格下跌,可能是资金流入导致的,也可能是资金流出导致的。本文综合考虑持仓量与成交量以及价格的涨跌等因素,对期货产品的资金流向进行刻画。

二、模型准备

隐马尔科夫模型 (Hidden Markov Model) 是一种统计模型,用来描述一个含有隐含未知参数的马尔科夫过程。图 1 是一个三个状态的隐马尔科夫模型状态转移图,其中 x表示隐含状态, y 表示可观察的输出, a 表示状态转换概率, b 表示输出概率。下图表示隐马尔科夫模型状态转移图。

对 HMM 来说,有如下三个重要假设: ● 假设 1:马尔科夫假设(状态构成一阶马尔科夫链)

● 假设 2:不动性假设(状态与具体时间无关)

● 假设 3:输出独立性假设(输出仅与当前状态有关) 隐藏的状态和可观察到的状态之间有一种概率上的关系,假设为 P O H ? ? 1 | .如果可以观察的状态有 3 种,则

这样, 可以得到混淆矩阵 (confusion matrix).该矩阵的内容是某个隐藏的状态被分别观察成几种不同的可以观察的状态的概率,举例如下

下图反映了模型的演化,其中方框表示隐藏状态,圆圈表示可观察到状态,箭头表示状态之间的依存概率。

用集合

表示 HMM 模型,其中 N 表示隐藏状态的数量,该数量已知或通过猜测得知, M 表示可观测状态的数量,可通过训练集获得,

为初始状态概率,

为隐藏状态的转移矩阵

表示某个时刻因隐藏状态而可观察的状态的概率,即混淆矩阵

在状态转移矩阵和混淆矩阵中的每个概率都是时间无关的,即当系统演化时,这些矩阵并不随时间改变。对于 N 和 M固定的 HMM 模型,以

表示其参数。

在本文算法运行过程中, HMM 不能被直接的判断,对于给定的可观察状态序列 O来说,无法精确找出最优参数使最大,对此采用前向后向算法(也称为Baum-Welch 算法)寻求最优解决办法。首先定义两个辅助变量,分别为t时状态i和t ?1时状态 j 的概率,即

该式等价于

利用前向变量和后向变量,上式可以表示为

第二个变量定义为后验概率,即在给定观察状态序列和 HMM 的情况下, t 时状态 i 的概率,即

利用前向变量和后向变量,上式可以表示为

该式为在任意时刻状态i 的期望,也就是从状态 i 转移到观察状态o的期望,同样,该式也是从状态i 转移到状态 j 的期望,则定义的两个变量之间的关系为

在前向后向算法的参数学习过程,不断更新 HMM 的参数,从而使得最大。假设初始的 HMM 参数为,分别计算出前向变量,后向变量以及期望依据以下 3 个重估计公式更新 HMM 参数,并对其进行迭代计算,由此不断地重估 HMM的参数,在多次迭代后可以得到 HMM 模型的一个最大似然估计,该估计是一个局部最优解。


3. 指标构建

3.1. 累积/派发 (A/D)指标

累积/派发 (Accumulation/Distribution, A/D) 指标是一个基于交易量的指标,旨在测量流入和流出产品的累计交易流量或资金流量。在经典 A/D 公式中

其中, Highi , Lowi ,Closei 分别表示第i根 K 线的最高价、最低价和收盘价, Volume表示对应的成交量。当收盘价与最低价的价差大于最高价与收盘价的价差时,表明收盘价高于最高价与最低价之和的一半,即

此时视为资金流入该品种;当收盘价与最低价的价差小于最高价与收盘价的价差时,表明收盘价低于最高价与最低价之和的一半,即

此时视为资金流出该品种。在价格波动区间资金流入或流出的幅度可表示为

其范围在-1 到 1 之间。该值的绝对值越接近 1,表明资金流入或流出的幅度越大。经典A/D 公式即成交量加权后的资金流入/流出幅度,反映了整体的资金流向。

进一步改进经典 A/D 公式,将前一周期的 A/D 值与当前周期的 A/D 值相加,得到经典增量公式

将已有的 A / Di进行累加,可以得到 n个周期的总体资金流向

用收盘价与开盘价之差替代经典增量公式中的分子,得到 A/D 公式的另一种表示方法

其中Openi 为第i根 K 线的开盘价。

3.2. CMF 指标

根据经典 A/D 公式建立资金流量指标

CMF 指标则表示为近几期期资金流量之和与近几期总成交量的比值

取 30 天为一个周期, 加减0.1为上下阀值,应用于所有品种。当 CMF 值大于阀值时做多,当 CMF 值小于阀值时做空。

3.3. CHO 指标

依据 A/D 公式的另一种表示方法建立资金流量指标

并将初期至当前期的VAR1累加,得到累加资金流 sumVAR1.分别以 12 天、 20 天为周期对累加资金流进行指数移动平均,形成短期 EMA 和长期 EMA。当短期 EMA 上穿长期EMA 形成金叉时做多,反之形成死叉时做空。

3.4. VTL 成交净量指标

买卖双方的博弈造成某一期货行情的上涨或下跌,下图模拟了 10 分钟内每分钟的期货价格走势变化情况, AB,CD,FG,GH,IG 段价格下跌,表明当前市场为卖方市场,卖出成交量量大于买入成交量,资金流出; BC,DE,EF,HI 段价格上涨,表明买方占优,买入成交量大于卖出成交量,资金流入。

忽略价格变化中的小幅波动,简化后的价格变化情况如下图

建立指标

当收盘价高于开盘价,即上图所示情形时,价格路径组成部分分别包括 AB 段(Open-Low) ,BF 段(High-Low) ,FG 段(High-Close)。资金流入/流出的总量为

指标V 反映了单位资金流动对应的成交量, V 越大,市场越活跃。上图中买量对应 BF段,为

反映买方资金流向;卖量对应(AB+FG)段,为


买卖双方资金流向的差值即成交净量,用 netV 表示。 VTL 指标区分了买卖双方的资金流向,弥补了前文所述指标的不足。

将初期至当前期的 netV 累加,得到累积成交净量序列 sumnetV ,利用 sumnetV 构造布林带、 SMA、心理线等不同类型指标,经过比较,最终选择 EMA 金叉死叉进行择时效果最好。分别以 12 天、 20 天为周期对 sumnetV 进行指数移动平均,形成短期 EMA和长期 EMA。当短期 EMA 上穿长期 EMA 形成金叉时做多,反之形成死叉时做空。

4. 相关性预测

信息系数(Information Coefficient,简称 IC),表示所选品种的因子值与股票下期收益率的截面相关系数, 通过 IC 值可以判断因子值对下期收益率的预测能力。通常 IC大于 0.2 或者小于-0.2,则认为因子比较有效。随机选取 Cu、 Ta 两个品种,分别计算CMF 指标、 CHO 指标、 VTL 指标与对应品种未来收益率的 IC 值。

● Cu 品种 CMF 指标的 IC 值

● Ta 品种 CMF 指标的 IC 值

● Cu 品种 CHO 指标的 IC 值

● Ta 品种 CHO 指标的 IC 值

● Cu 品种 VTL 指标的 IC 值

● Ta 品种 VTL 指标的 IC 值

由上图可知,无论是传统的 CMF、 CHO 指标还是本文构建的 VTL,对商品期货市场资产的未来收益率具有较强的解释能力,故本文利用各指标值构建的量化交易策略能够在捕获期货市场资金流向规律的同时也能获得较好的收益。

5. 策略选择与回测

5.1. 进场策略&信号平仓策略

对于以 CMF 指标为基础的进场策略和信号平仓策略,取 30 天为一个周期, 加减0.1为上下阀值,应用于所有品种。当 CMF 值大于阀值时做多,当 CMF 值小于阀值时做空。对于以 CHO 指标为基础的进场策略和信号平仓策略,分别以 12 天、 20 天为周期对累加资金流 sumVAR1进行指数移动平均,形成短期 EMA 和长期 EMA。当短期 EMA上穿长期 EMA 形成金叉时做多,反之形成死叉时做空。

对于以 VTR 指标为基础的进场策略和信号平仓策略,分别以 12 天、 20 天为周期对累积成交净量序列 sumnetV 进行指数移动平均,形成短期 EMA 和长期 EMA。当短期EMA 上穿长期 EMA 形成金叉时做多,反之形成死叉时做空。

综合以上 3 种指标,引入 HMM 模型。分别用 1,0,-1 表示每个指标信号的方向,根据 CMF 指标、 CHO 指标以及 VTL 指标在不同 K 线的交易信号,形成可观测序列。该序列分为需要训练部分和不需要训练部分,当两种及两种以上指标给出的开平仓信号相同时,少数服从多数,认为该序列不需要训练,即开仓位置确定,具体情况如下:

否则,需要利用 HMM 模型进行训练,具体情况如下:

定义隐藏状态向量

其中状态 1 表示信号改变前后收盘价呈上涨趋势,且上涨幅度大于 2 倍的手续费;状态-1 表示信号改变前后收盘价呈下降趋势,且下降幅度大于 2 倍手续费;状态 0 表示信号改变前后收盘价价差的绝对值小于 2 倍手续费。利用历史数据回测,经过训练得到状态转移矩阵与混淆矩阵,使用维特比算法,结合可观测序列进一步求得隐藏状态下的开仓方向。

5.2. 止盈止损策略

在止盈止损策略中引入 ATR 指标, ATR 平均真实波幅的计算方法如下: ● 当前 K 线的最高价与最低价间的波幅 ● 前一根 K 线收盘价与当前 K 线最高价间的波幅 ● 前一根 K 线收盘价与当前 K 线最低价间的波幅

当前 K 线振幅、当前最高与前 K 线收差价,当前最低与前 K 线收差价中的最大值为真实波幅。求真实波幅的 N 根 K 线移动平均,这里的参数 N 取 10,计算公式为

 多头止损: 记录开仓价格 Avgprice ,当价格 P 跌到开仓价以下 2 ATR 时止损出场,即

 空头止损:记录开仓价格 Avgprice ,当价格 P 涨到开仓价以上 2 ATR 时止损出场,即

 多头止盈: 记录开仓价格 Avgprice ,当最高价上涨至开仓价以上 4 ATR 且最大回撤back 达到1.5 ATR时止盈出场,即

 空头止盈: 记录开仓价格 Avgprice ,当最低价下跌至开仓价以下 4 ATR 且最大回撤back 达到1.5 ATR时止盈出场,即


5.3. 回测结果

选取多个品种的 15minK 线,在 Auto-Trader 平台上分别对上文 4 种策略进行回测,得到回测结果与具体指标如下: ● CMF 指标策略权益曲线


● CHO 指标策略权益曲线


● VTL 指标策略权益曲线


● HMM 模型策略权益曲线


● 策略绩效指标


由上表中可以看出, 4 种策略的绩效指标排名情况分别为 ● 初始资金收益率: HMM>VTL>CHO>CMF ● 年化收益率: HMM>VTL>CHO>CMF ● 最大回撤率: HMM>VTL>CHO>CMF ● 夏普比率: HMM>VTL>CHO>CMF ● 收益风险比: HMM>VTL>CHO>CMF

显然, HMM 策略的各项绩效指标均排名第一,表明该策略在保持高回报的同时也十分稳健。故选用以 HMM 模型为基础的进场策略和信号平仓策略、以 ATR 指标为基础的止盈止损策略作为最终策略组合。

6. 风险控制

为有效控制风险,最大限度地减少回撤,程序对每次交易的手数进行了限制。

● 方法一:获取账户当前可用资金量和账户当前动态权益并分别求出平均值,取二者中较小值, 记为 percash, 取开仓价格 Avgprice 与100* ATR 中的较大值, 记为 price ,定义交易手数

其中

为参数,可通过改变其值来控制每次交易手数的大小。

● 方法二:统计历史亏损资金总量,最大回撤亏损金额占总亏损的比重即亏损贡献率。定义最大回撤率与预期最大回撤率的比值 Rback ,设置初始交易手数 n,建立动态风险控制过程,则交易手数可以表示为初始交易手数按贡献率缩放目标倍数的值:


7. 策略优势

● 考虑资金成交量的技术指标设计,能够有效捕捉商品期货真实资金博弈情况,避免传统技术指标频繁开平仓的缺陷。

● 使用买量卖量分离指标,相对于传统的菜金流量指标能够更好的捕获中国商品期货市场资金流向规律。

● 利用 HMM 模型将交易信号转化为观测状态,将开仓位置看成隐藏状态,通过机器训练将一定收益下的风险减小,做到有效控制风险,回测结果非常理想。

● 无需进行参数优化,有效避免过拟合现象。一些研报中将一些技术指标进行网格参数搜索,使得策略在不同市场环境下的表现非常不一致,利用 HMM 模型对每个品种进行参数估计,有效避免了参数寻优问题。

● 通过优化交易手数对风险进行控制,有效降低了最大回撤率。

DigQuant 量化社区

  评论这张
 
阅读(46)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2018