分类
外汇交易技术分析

从而做出交易策略

从而做出交易策略

Dual Thrust 交易策略是由 Michael Chalek 在上个世纪 80 年代开发的,该策略是一个趋势跟踪系统,曾长期位于《 Future Truth 》杂志评选的最赚钱的策略之列。 Dual Thrust 策略的优点在于适用范围广、思路简洁、拟合参数少等特点,从而被广泛应用在股票、债券、期货等市场。该策略对于市场趋势有较强的把握能力,可以为投资者带来长期稳定的收益。

金融资产的价格趋势大致可以分为两类,即趋势行情和震荡行情。震荡行情指价格在一定的区间内波动,这种波动是随机的因而难以判断价格的运动方向。而在趋势行情中,价格的动向比较容易判断,交易的胜率也会大大提高。 Dual Thrust 系统的目的是过滤掉震荡行情,抓住趋势从而获得收益。

Dual Thrust 策略的基本方法如下:

首先 HH 、 NC 、 HC 、 LL 分别表示如下:

:过去 N 日 High 的最高价

LC :过去 N 日 Close 的最低价

HC :过去 N 日 Close 的最高价

LL :过去 N 日 Low 的最低价

我们选取沪深 300 指数期货当月主力合约作为交易对象。由于 2015 年 9 月中金所大幅调整沪深 300 、上证 50 和中证 500 三大指数期货的保证金水平和交易费用导致成交量锐减,因此我们暂且选取该调整之前的历史数据进行测试。具体的时间段为 2014 年 1 月 1 日至 2015 年 9 月 1 日,共计 409 个交易日。从下图可以看出,期货价格在 2014 年 1 月至 11 月之间处于震荡行情, 12 月起先是经历了一个上涨 - 震荡 - 上涨的行情,随后又出现爆跌。我们就 Dual Thrust 策略是否能够把握住市场趋势这一问题,分别观察策略在这三个阶段的表现。本研究所使用数据来源于 从而做出交易策略 Wind 资讯。

从表 1 中可以看出,第一阶段期货指数整体平稳,平均收益率和振幅都比较小, 200 个交易日的振幅仅为 5.39% 。从 K 线图也可以看出,该段数据前半段处于震荡行情,随即在一个短暂的上涨趋势之后重新恢复为震荡行情。该段数据可以测试出策略在震荡行情中的表现。第二段数据为一个中期的牛市,期货指数在 153 个交易日内上涨了 117.1% ,平均对数收益率和振幅较前一段数据都有显著提升,因此本段数据是测试策略能否把握上涨趋势的最佳样本。在第三段数据中期货指数在短短的 49 个交易日中下跌了 29.9% ,平均振幅更是高达 从而做出交易策略 255.26 。因此本段数据将检测出交易策略能否应对突如其来的股灾,在暴跌中是否能够迅速应对并调整仓位。

2015 年中金所前后多次调整股指期货保证金水平,从最初的 10% 几次上调至最后的 30% 。另一方面,本研究的侧重点在于策略对多空方向的判断,因此为了简化计算,我们不考虑保证金问题,同时把佣金定为交易费用的 从而做出交易策略 5% 。

我们首先测试最初的 Dual Thrust 策略,即一旦入场后不再退出,只进行方向调整,始终保持持仓数量为 1 ,一直到交易日的最后一天再平仓退出。在该策略下我们选取 , , 。在对历史数据计算后,我们得到结果如下:

在 401 个交易日中,策略一共进行了 135 次交易,其中 62 次交易盈利, 73 次亏损,胜率为 45.93% 。尽管获胜次数要少于失败次数,但策略的平均盈利要大于平均亏损,因而整体是盈利的。这表明策略在判断失误之后能够及时调整仓位,从而避免进一步的损失。

我们进一步分析每次交易的盈亏,即每次调整仓位带来的收益。图 4 展示了按交易划分的盈亏,可以看出前期策略整体胜率并不算高,但平均盈利要大于平均亏损。

分别对三个阶段的表现进行统计之后,我们可以看出策略在第一阶段的胜率很低,仅为 39.44% ,同时最大回撤也处于较高水平;而策略在第二、三阶段的趋势行情中胜率有所提高,同时收益也超过了基准。

表 4 各参数的测试结果对比分析

从四组参数的测试结果可以看出,当 N 从 1 增大至 2 之后,策略的交易次数、累积利润、最大回撤率、胜率等各方面都显著降低。 K1 减小后策略在第二阶段胜率有所提高,但在第三阶段胜率却显著降低了; 从而做出交易策略 K2 减小后策略在第二阶段小幅提升,在第三阶段则大幅提高。由上表可以看出,参数的变动在不同的行情中效果是不尽相同的。如何选择合适的参数是优化策略的关键所在。

对于 Dual Thrust 策略来说,导致亏损的原因是策略发出了错误的信号,而错误的信号又可以分为以下两种:

A 类错误:策略发出了错误的交易指令

从而做出交易策略 B 类错误:策略未能发出正确交易指令

显而易见的是,如果我们令 Range 扩大,策略发出的交易指令会减少,因此错误 A 的概率会降低,同时错误 B 的概率会增大;反之 Range 减小,策略会更频繁地发出交易指令,因而错误 A 的概率会增大,错误 B 的概率减小。具体关系如下图所示:

基于以上错误的分类,我们对参数 1 的亏损交易日进行了分类,结果如下:

表 5 亏损交易日类型及平均亏损额

可以看出, B 类错误的平均亏损较之 A 类错误要小得多,减小参数 和 可以减少 A 类错误的次数,同时会增加 B 类错误的次数,从而使得总体的平均亏损减小。

图 5 优化参数后的多空示意及单日盈亏

图 6 优化参 数后单次交易盈亏图

与图 3 对比后可以显著看出,经过参数优化后策略少了亏损极大的交易日,单日亏损被控制在一个较小的水平,有效地降低了风险。

图 7 优化参数后的累积收益和最大回撤率

与图 6 对比后可以看出,经过参数优化后,策略在第一阶段也能够优于基准,最大回撤也从 23.05% 大幅降低至 14.79% ,收益和风险两方面都显著提高。

表 7 优化参数后策略在各阶段的表现

优化参数的时候,我们假定整段数据都是已知的,这在实际投资中显然是不合理的。因此我们将上面的方法更进一步,利用每个交易日前 天中的统计数据得出当日的参数。这样就得到了一列时变的参数 和 ,如下图所示:

我们利用 和 计算出每日的 Buyline 和 Sellline ,测试后得到如下结果:

表 8 引入时变参数后的测试结果

从上表中可以看出,时变参数策略的平均盈利和亏损都有所降低,但平均亏损降低的幅度要大得多,从而保持了平均利润与原始策略几乎持平,总盈利则增加了约 45% ,最大回撤率也降低到了 11.98% 。

可以看出时变参数策略的单次交易亏损保持在更加低的水平上,这表明时变的参数减少了很多 A 类错误。

图 11 引入时变参数后累积收益和最大回撤率

表 9 引入时变参数后策略在各阶段的表现

总体来说,引入时变的参数并不能让胜率大幅提高,尤其是在第一阶段的胜率依然保持在较低水平。但时变参数让策略整体更加灵活,减少了 A 类错误的发生从而让平均亏损大幅度降低。因此可以认为在 Dual Thrust 模型中引入时变的参数是有效可行的。

Dual Thrust 作为一种经典的交易策略,至今依然活跃在市场中,表明了该策略的有效性,而实证分析的结果也证实了这一点。另一方面,从对比分析的结果也可以看出,参数的选择对于策略的效果影响非常之大,因此合理地选择参数是最核心的问题之一。

在对参数选取进行优化之后,较之原始策略的累积收益提高了 38% ,最大回撤率从 23.05% 降低至 14.79% ,最大单日亏损和最大交易亏损也都显著下降,策略效果提升明显。而在引入了时变的参数之后,这种提升更加明显,累积收益提高了 45% ,最大回撤率降低至 11.98% 。这表明了在 Dual Thrust 策略中加入时变的参数是可行的。

值得注意的一点是,三种策略在第一阶段的胜率都没有超过 50% ,表明 Dual Thrust 在震荡行情中的表现不尽理想,这主要是由策略中退场机制的缺乏引起的。当前的策略一旦入场之后没有退出机制,导致了震荡行情中只能换边不能退出因而随价格的波动出现损失。在下一篇报告中我将就这一点做出改进,加入止盈止损策略从而在必要的时刻可以平仓退出,避免进一步的损失。此外,保证金和杠杆也会纳入考虑范围之中。

从而做出交易策略

量化专题报告:基于连续挂单的高频做市策略

华泰期货研究所 量化组 陈维嘉 量化研究员  0755-23991517  [email protected] 从业资格号:T236848 投资咨询号:TZ012046 相关研究 基于模糊逻辑神经网络的高频做市策略 2018-10-30 华泰期货|量化专题报告 2018-12-04 基于连续挂单的高频做市策略 高频做市策略简介 高频做市策略通常是指通过向标的物市场提供流动性来获取利润的一系列策略。做市策略通常会围绕标的物的即时价格在不同价位挂出限价单,通过标的物价格的来回波动触碰到低价的买单和高价的卖单,实现低买高卖,从而获利。市场的交易价格总是处在不断变化之中,如果从较长时间来看,例如一天,市场价格可能出现单边上涨或者下跌,但是在实现这一过程中,市场价格却是不断震荡,来回往复的。如果能在来回往复的过程中不断低买高卖,而且累积次数足够多则有可能跑赢单边行情,从而实现盈利。因此做市策略应该尽可能地多挂限价单,并且利用交易系统的优势尽量把限价单挂在队列的前边。 为了模拟这一过程,这偏报告建立了一个基于连续挂单的做市策略回测框架,通过模拟连续挂单和排队成交等因素,研究影响高频做市策略盈利的各种因素,发现影响策略盈利最明显的是限价单的成交次数,这也解释了为何高频交易策略普遍对交易系统有较高要求。 华泰期货|量化专题 2018-12-04 2 / 10 高频做市策略原理 做市策略总是包含着双向报价的目的,通过成交价格在买卖价差之间非常窄幅的波动中获利,这里的窄幅波动通常就只有1至2个买卖变动价位,而非从标的资产大方向性变化中获利。这意味着做市策略必须避免积累了大量的做多或者做空方向的净头寸。因为净头寸的积累将带来价格反向波动时的损失。这也意味着做市策略的盈利是来自于小幅度但是高频率的价格波动。 根据Tanmoy Chakraborty和Michael Kearns的论文Market Making and Mean Reversion, 2011可以对做市策略的盈利作出合理的解释。这里首先假设所有的市场事件出现在离散的时间点位0,1,2. 直到时刻푇。时刻푇是做市策略结束的时间点,可以理解为做市策略从每天开盘开始,到收盘结束。在收盘时刻푇,做市策略必须平掉所有的单方向净头寸。标的资产在所有0≤푡≤푇的时刻,都存在一个即时价格푃푡,这个푃푡用变动单位表示,是标的资产最小变动单位的整数倍。做市策略的理论收益为 12(퐾−푧2) (1) 其中 퐾=∑|푃푡+1−푃푡|푇푡=1 (2) 代表价格波动的绝对幅度。 푧=푃푇−푃0 (3) 代表收盘后平掉净头寸所产生的盈亏。 由于做市商总是围绕着即时价格푃푡进行挂单,所以每当푃푡出现变动后都会有一个挂单成交,所以퐾也等于总的理论成交次数。例如,如果价格从푃0涨到푃0+1,再回到푃0的话,就有一个成交在푃0+1的卖单和一个成交在푃0的买单,变动了2次,也成交了2次,这两个单能互相配对。如果接着价格从푃0跌到푃0−1然后收盘,那么就再多出了一个成交在푃0−1的买单,这个买单没配对上,由此可以推导出在任意终止时刻푇,未配对的净头寸数量为|푧|=|푃푇−푃0|。由于这里假设未配对的净头寸全部用收盘价平仓,则最后一笔未配对的交易不会造成损失,而其他未配对的交易损失为1,2,. ,푧−1,总和为z(푧−1)/2。从配对的交易中做市商获利(퐾−푧)/2,所以最后做市商的总利润为(퐾−푧)2−z(푧−1)2=12(퐾−푧2),即公式(1)。从中可以看出做市策略的盈利主要来源于公式(2)中的퐾值,在理想状态下,只要价 华泰期货|量化专题 2018-12-04 3 / 10 格有变动且能成交就会有盈利,但是实际上却并非如此。为了赚取买一价和卖一价之间的差价,做市策略只能挂出限价单,等待自己挂出的限价单被市价单击中成交。自己挂出的限价单要被击中,则必须按照时间优先和价格优先的原则,也就是等待比自己更优报价的限价单以及更先报出的限价单成交完后,自己的限价单才能成交。所以实际上并非公式(2)中所有的价格变动都能利用。为了被尽量多的价格变动击中,做市策略的交易系统必须足够迅速,把自己的限价单排在市场其他对手的前面。另外公式(3)表明了做市策略的亏损来源在于单边趋势行情后所积累的净持仓,因此做市策略的最终盈利也取决于如何减少净持仓。 这篇报告根据公式(从而做出交易策略 1)的原理,结合市场挂单的实际情况进行模拟回测,探索做市策略盈亏的影响因素。 策略回测框架 做市策略是一个根据即时价格푃푡变化而做出挂撤单的动态决策过程。在时刻푡做市策略在价格푌푡,푌푡−1,푌푡−2. 푌푡−퐶푡上挂出买单,同时在价格푋푡,푋푡+1,푋푡+2. 푋푡+퐶푡上挂出卖单,其中푃푡≥푌푡,푃푡≤푋푡,푌푡퐵푡+1,意味着之前挂的买单被击穿,所有价格大于퐵푡+1的买单都可视为成交,这时所挂的第一档买价变为퐵푡+1,并在之后补上新的买单,使买单数量维持在퐶푡+1。这时可以从行情数据中得到买一量퐵푠푡+1,从而做出交易策略 并把퐵푠푡+1+1作为当前第一买单的排名。 (3) 买一价格퐵푡+1不变,即푌푡=퐵푡=퐵푡+1。这是发生最多的情景,如果푌푡是在푡时刻刚挂上去的,那么当前第一买单的排名就设置为퐵푠푡+1+1。否则根据当前时刻푡+1的成交量和成交额推算排名。首先假设在时刻푡+1所有的成交都发生在买一价퐵푡+1和卖一价퐴푡+1上,那么发生在买一价퐵푡+1上的成交量푉퐵푡+1,发生在卖一价퐴푡+1上的成交 华泰期货|量化专题 2018-12-04 4 / 10 量푉퐴푡+1与总成交量푉푡+1,成交金额푀푡+1,合约乘数퐶푆存在以下关系,为了方便省去下标푡+1 푉퐵+푉퐴=푉 푉퐵∗퐵+푉퐴∗퐴=푀/퐶푆 (4) 求解这个方程组可以得到푉퐵和푉퐴。在没有撤单的情况下,当前第一买单的排名就是之前第一买单的排名减去푉퐵푡+1。当排名值为小于等于0时,即可判断当前买单成交。成交后在当前价位重新挂上买单。 卖单的情况与买单类似: (4) 卖一价格퐴푡+1下跌,即푋푡=퐴푡>퐴푡+1,意味着푋푡及以上报价的卖挂单无机会成交,这时撤去最后一档푋푡+퐶푡的卖单,并追高价格挂上푋푡+1的新卖单,维持总的卖单数量为퐶푡+1。 (5) 卖一价格퐴푡+1上涨,即푋푡=퐴푡

一名交易員的量化投資路線

640?wx_fmt=jpeg&wxfrom=5&wx_lazy=1.jpg

策略基於k線形成的區域設置進出場價格, 通過價格的上下突破來進行交易或取消做單k線區域按時間順序從左向右共由4根k線組成, 最左邊的k線標號為3。如果1號k線收盤價高於3號k線最高點, 開始設置做多交易區域, 上軌為3號K線高點, 下軌為標號為1起CancelFlagN根K線的低點。如果標號為0的K線收盤價在上下軌之間, 則做多區域設置成功, 如果收盤價低於下軌則區域設置取消。如果1號k線收盤價低於3號k線最低點, 開始設置做空交易區域, 下軌為3號K線低點, 上軌為標號為1起CancelFlagN根K線的高點。如果標號為0的K線收盤價在上下軌之間, 則做空區域設置成功, 如果收盤價高於上軌則區域設置取消。

  • 做多區域設置成功時, 當前k線高於標號為0的K線高點時入場做多。
  • 做空區域設置成功時, 當前k線低於標號為0的K線低點時入場做空。
  • 基於ATR的保護性止損。
  • 基於ATR的盈虧平衡止損。
  • 基於ATR的盈利止盈。

我比較喜歡的一種是資產平均值,舉個簡單的例子,我更喜歡在盤整行情中去布置自己的倉位,這個時候你可以把倉位調整到最大,比如你同時持有 了N個品種,多空單相對平衡,你的策略屬於中期策略,一般是把你震盪不出來,那麼你可以激進的把倉位配置進去,因為當趨勢來的時候,你錯誤的倉位會慢慢出來,持有正確的趨勢,假如你進場的倉位為80%,最終其實走 从而做出交易策略 了一個止損到加倉的過程,一開始錯誤的倉位不斷止損,正確的持有,趨勢越來越明顯,錯誤的倉位開始反向,最終形成了一個加倉的過程,一旦利潤較大,可以手動出一半的倉位。這對於一些個體交易員而言是一個不錯的方法,如果涉及到大類資產配置,這就相對複雜,我沒有這個精力和時間繼續討論。

一名交易員的量化投資路線

640?wx_fmt=jpeg&wxfrom=5&wx_lazy=1.jpg

策略基於k線形成的區域設置進出場價格, 通過價格的上下突破來進行交易或取消做單k線區域按時間順序從左向右共由4根k線組成, 最左邊的k線標號為3。如果1號k線收盤價高於3號k線最高點, 開始設置做多交易區域, 上軌為3號K線高點, 下軌為標號為1起CancelFlagN根K線的低點。如果標號為0的K線收盤價在上下軌之間, 則做多區域設置成功, 如果收盤價低於下軌則區域設置取消。如果1號k線收盤價低於3號k線最低點, 開始設置做空交易區域, 下軌為3號K線低點, 上軌為標號為1起CancelFlagN根K線的高點。如果標號為0的K線收盤價在上下軌之間, 則做空區域設置成功, 如果收盤價高於上軌則區域設置取消。

  • 做多區域設置成功時, 當前k線高於標號為0的K線高點時入場做多。
  • 做空區域設置成功時, 當前k線低於標號為0的K線低點時入場做空。
  • 基於ATR的保護性止損。
  • 基於ATR的盈虧平衡止損。
  • 基於ATR的盈利止盈。

我比較喜歡的一種是資產平均值,舉個簡單的例子,我更喜歡在盤整行情中去布置自己的倉位,這個時候你可以把倉位調整到最大,比如你同時持有 了N個品種,多空單相對平衡,你的策略屬於中期策略,一般是把你震盪不出來,那麼你可以激進的把倉位配置進去,因為當趨勢來的時候,你錯誤的倉位會慢慢出來,持有正確的趨勢,假如你進場的倉位為80%,最終其實走 了一個止損到加倉的過程,一開始錯誤的倉位不斷止損,正確的持有,趨勢越來越明顯,錯誤的倉位開始反向,最終形成了一個加倉的過程,一旦利潤較大,可以手動出一半的倉位。這對於一些個體交易員而言是一個不錯的方法,如果涉及到大類資產配置,這就相對複雜,我沒有這個精力和時間繼續討論。