zoukankan      html  css  js  c++  java
  • 海龟交易法在数字资产量化中的应用

    一、海龟交易法

    海龟交易法是著名的公开交易系统,1983年著名的商品投机家理查德. 丹尼斯在一个交易员培训班上推广而闻名于世,它涵盖了交易系统的各个方面。其法则覆盖了交易的各个方面,并且不给交易员留下一点主观想象决策的余地。它具备一个完整的交易系统的所有成分。 著名的商品投机家理查德·丹尼斯想弄清楚伟大的交易员是天生造就的还是后天培养的。为此,在1983年他招募了13个人,教授给他们期货交易的基本概念,以及他自己的交易方法和原则。 “学员们被称为‘海龟’(丹尼斯先生说这项计划开始时他刚刚从亚洲回来,他解释了自己向别人说过的话,‘我们正在成长为交易员,就象在新加坡他们正在成长为海龟一样’)。”----斯坦利.W.安格瑞斯特,《华尔街期刊》,1989年9月5日。 海龟成为交易史上最著名的实验,因为在随后的四年中海龟们取得了年均复利80%的收益。 丹尼斯证明用一套简单的系统和法则,可以使仅有很少或根本没有交易经验的人成为优秀的交易员。 当时,海龟们认为应对理查德·丹尼斯负责,商定甚至在他们议定的10年保密协定于1993年终止后也不泄露这些法则。但是,有个别海龟在网站上出售海龟交易法则而谋取钱财。两个原版海龟科蒂斯·费思和阿瑟·马多克,为了阻止个别海龟对知识产权的偷窃和出售海龟交易法则而赚钱的行为,决定在网站上将海龟交易法则免费公之于众。
    -百度百科
    

    海龟交易策略是一套非常完整的趋势跟随型的自动化交易策略。这个复杂的策略在入场条件、仓位控制、资金管理、止损止盈等各个环节,都进行了详细的设计,这基本上可以作为复杂交易策略设计和开发的模板。

    二、趋势信号的捕捉

    在趋势信号的扑捉上,海龟交易法则使用了一个非常重要的技术指标—唐奇安通道(Donchian channel)。这个通道很类似布林通道(Bollinger Bands),只是在具体计算方式上有些不一样。

    唐奇安通道指标是Richard Donchian发明的,由3条不同颜色的曲线组成,该指标用周期(一般都是20,有的平台系统设置时可以改变的,有的则设置的不可以)内的最高价和最低价来显示市场价格的波动性,当其通道窄时表示市场波动较小,反之通道宽则表示市场波动比较大。

    如图:(图片来源:fxunion)
    c2.png

    当价格冲破该通道的上轨道时,就是可能的买信号;反之,冲破下轨时就是可能的卖信号。唐奇安通道的各项指标的计算方法为:

    上轨=Max(最高低,n), n日最高价的最大值
    下轨=Min(最低价,n), n日最低价的最小值
    中轨=(上轨+下轨)/2
    

    在金融领域的多因子分析框架内,这个策略对突破后的价格走势预测就是基于动量因子(momentum)的有效性假设。当然,这个因子的有效性也确实被严格地验证过,并作为Fama-French三因素模型的补充,被广泛地应用于金融市场。

    当然,我们可以进行优化,使用更合理的趋势突破型指标。

    三、交易原理

    那么,既然动量因子是已经公开并普遍使用的因子,那么海龟交易法则是凭什么能够脱颖而出呢?答案很简单,海龟交易法则定义了一整套非常严谨的仓位控制、止盈止损的规则。对于币市的大涨大跌行情,海龟交易法则正是应付这种极端行情的利器。下面我们来一一剖析。

    1. 仓位的基本单位N

    海龟法则的加仓原则是定义好一个小单位(Unit),使得该仓位的预期价值波动与总净资产的1%对应。也就是说,如果买入了这1个小单位的资产,那当天该仓位的市值变动幅度不会超过总净资产的1%。

    那么,如何定义这个小单位?又如何预估这个小单位能带来的价值波动呢?首先,在预估这个小单位带来的价值波动(该价值波动被称为N)上,海龟策略使用了对历史的价格波动进行统计的方法。具体计算公式如下:

    TrueRange=Max(High−Low, High−PreClose, PreClose−Low)
    N =(前19日的N值之和+当时的TrueRange)/20
    

    其中,High表示当日最高价,Low表示当日最低价,PreClose表示前一日收盘价。
    我们可以从定义上看出,N值确实能很恰当地表达该资产在价格上的最近波动幅度。
    这样,一个Unit就应该是这样计算出来的:

    Unit = (1%*Total_net)/N, total_net就是总资产净值
    

    可以看出,一个Unit的资产的价格波动幅度 = 总净资产的1%

    1. 什么时候建仓

    建仓的动作来自于趋势突破信号的产生。如果当前价格冲破上轨,就产生了一个买的建仓信号,如果当前价格跌破下轨,就产生了一个卖空的建仓信号(如果该市场支持卖空,某些数字资产市场是支持借币卖空的!)

    初始建仓的大小 = 1个Unit
    
    1. 什么时候加仓
    如果开的底仓是多仓且资产的价格在上一次建仓(或者加仓)的基础上又上涨了0.5N,就再加一个Unit的多仓; 如果开的底仓是空仓且资产的价格在上一次建仓(或者加仓)的基础上又下跌了0.5N,就再加一个Unit的空仓。
    

    我们看到,海龟策略其实是一个追涨杀跌的策略的。

    1. 怎么做动态止损
    如果开的底仓是多仓且资产的价格在上一次建仓(或者加仓)的基础上又下跌了2N,就卖出全部头寸止损; 如果开的底仓是空仓且资产的价格在上一次建仓(或者加仓)的基础上又上涨了2N,就buy cover全部的头寸止损。
    

    当然,用户可以自定义动态止损方案,比如下跌了0.5N就开始部分平仓,而不用等到下跌了2N后才匆忙一次性清仓,毕竟冲击成本摆在那里。

    1. 怎么做止盈,可以自定义动态止盈吗

    海龟法则里面,止盈信号是这样产生的:

    如果开的底仓是多仓且当前资产价格跌破了10日唐奇安通道的下轨,就清空所有头寸结束策略; 如果开的底仓是空仓且当前资产价格升破了10日唐奇安通道的上轨,就清空所有头寸结束策略。
    

    当然,用户可以自定义动态止盈方案,比如总净资产/初始净资产>1.5, 就止盈离场。

    其实海龟策略并不是固定的,它存在很多变种,在传统金融市场中,有些变种的策略还是有效的。数字资产市场是一个非常无效的市场,在这样的市场中,很多被用烂了的传统策略也可以跑得非常有效果,这对于传统量化从业者来讲,是一个非常好的知识变现机会。

  • 相关阅读:
    NIO学习
    XML(二)
    IO和NIO
    Log4j
    异常处理机制
    XML
    数据交互
    分页实现的三种方式
    Idea破解
    数据库连接池
  • 原文地址:https://www.cnblogs.com/impw/p/14841445.html
Copyright © 2011-2022 走看看