0%

量化策略笔记

前言

此文中的量化策略,指的是量化经济投资中的策略,从目前的感觉上来说,写这种东西的感觉有点像写数据挖掘的策略,基本上好的策略都是用统计方式去判定,而没有我开始认为的纯数理辩证,这对我来说多不能忍啊,但也无能为力,因为市场经济复杂多变,而且有时会遇上非自然经济的变化,即市场主力反技术控制。

双均线策略

双均线策略,通过建立m天移动平均线,n天移动平均线,则两条均线必有交点。若m>n,n天平均线“上穿越”m天均线则为买入点,反之为卖出点。该策略基于不同天数均线的交叉点,抓住股票(外汇)的强势和弱势时刻,进行交易。

这样的策略看似挺理想的,但是远远不够,因为实际上昨天的收盘价参考意义上会比很多天前的意义大一些,所以昨天的数值的权重要高一些,用移动平均的意义就会大一些,公式如下:

证明也是比较简单的,主要是证明
两部分

海龟策略

海龟

天然的海龟是一个比较成熟而完整的交易系统。构建交易系统的目的就是避免交易员自己做出主观的决策。这样才能真正的让概率发挥作用。海龟的主要捕捉的是趋势。其采用突破法来确定趋势,当价格突破时认为有买入的信号,而随着价格离当初突破的价格越来越远,我们认为趋势成立的概率就越来越高,加仓!那么,这个突破怎么确定呢?我们需要用到唐奇安通道的方法进行处理。

唐奇安通道(Donchian Tune)

首先引入上线中线下线的概念。上线=Max(前N个交易日的最高价),下线=Min(前N个交易日的最低价),中线=(上线+下线)/2,每个交易日结束之后更新当天的数据。这里N一般默认取20。那么唐奇安通道就是这个上线和下线所形成的走势区间。所谓的突破,也就是指今日盘中股价高过了上线。

止损

有了唐奇安通道,我们有了买入和卖出的依据了, 那么止损是干什么的呢?其实止损提出的初衷是,如果某笔交易是亏损的交易,造成的损失不要超过总仓位的k%。在完整的海龟系统里面,海龟用了一系列的公式进行仓位比例的计算,具体的内容可以参考下一节。

完整的海龟交易系统

完整的海龟交易系统包含以下内容:

  • 1、市场:原版海龟选择交易纽约和芝加哥的场内期货。筛选标准则是高流动性,我大A股市场当然也符合这个标准啦。

  • 2、仓位:这可以说是海龟交易系统最核心的部分。Richard Dennis期望通过市场的波动性水平来管理仓位。其构建了指数N来衡量波动性水平。指数的构建为以下四步
    (注:如果暂时不能理解下面的公式,完全不用担心,这些都在代码中体现出来,大家可以在代码的实际使用中搞明白这些麻烦的公式)。

      (1)True Range
    
    True Range = Maximum(H−L,H−PDC,PDC−L)

    公式中,True Range表示一天内的波动量,H为当日日内最高价,L为当日日内最低价,PDC为前一日收盘价。

    (2)N


    N = (19 * PDN+TR) / 20

    公式中,TR为True Range,即一天内波动量,PDN为前一日的N值。此公式的真是含义为计算之前20天(包括今天在内)的N的平均值

    (3)Dollar Volatility


    Dollar Volatility = N * DollarsPerPoint
    公式中,Dollar Volatility指的是波动的价格,Dollars per Point指的是标的股票每波动一个最小单位,1手股票的总价格变化量。在国内最小变化量是0.01元,1手是100股。所以Dollars per Point就是0.01×100=1

    (4)Unit


    Unit = 1% of Account / Market Dollar Volatility
    Unit = 1% of Account / Market Dollar Volatility
    公式中,Unit即为我们买卖的单位,1% of Account是总资产的1%,Market Dollar Volatility就是我们之前算出的Dollar Volatility,通过此公式计算出的Unit就是我们要买入的单位数量。此公式的意义是在一般情况下(市场波动率不大的时候),如果买入1Unit单位的资产,当天震幅使得总资产的变化不超过1%
  • 3、入市:海龟将所有资金分为两部分,一部分资金按系统一执行,一部分资金按系统二执行
    系统一

      (1)若当前价格高于过去20日的最高价,则买入一个Unit(注意是分钟回测)
      (2)加仓:若股价在上一次买入(或加仓)的基础上上涨了0.5N,则加仓一个Unit
    

    系统二
    与系统一相一致,但当如破55日最高价时才购买

      (1)若当前价格高于过去55日的最高价,则买入一个Unit(注意是分钟回测)
      (2)加仓:若股价在上一次买入(或加仓)的基础上上涨了0.5N,则加仓一个Unit
    

    Example:若某只股票A的N为2,20日最高价为100
    则当股价突破100时买入一个Unit,当股价突破100+0.5×2=101时加仓一个Unit,当股价突破101+0.5×2=102时加仓一个Unit。

  • 4、止损:即损失达到多少时就一定要卖出现有仓位。海龟交易系统规定,当价格比最后一次买入价格下跌2N时,则卖出全部头寸止损(也就是,在一般情况下,损失不会超过2%)。

  • 5、止盈:

      系统一
      当股价跌破10日内最低价时(10日唐奇安通道下沿),清空头寸结束本次交易
      系统二
      当股价跌破20日内最低价时(20日唐奇安通道下沿),清空头寸结束本次交易
    
  • 6、技巧:资金的调整。开始时设定两个比例:Loss和Adjust。若交易结束后损失的资金占总资金比例大于Loss,则今后只用现有投资资金的Adjust比例。
    Example:若初始资金为100万,设定Loss=80%,Adjust=90%。则当总资产低于100×80%=80万时,进行一次资金调整,以后只使用80×90%=72万的资金用于投资行为

均线回归