1. 程式人生 > >KAMA-庫夫曼自適應移動均線

KAMA-庫夫曼自適應移動均線

KAMA隸屬於MA(Moving Average,移動平均)大類,使用CrossOver(上穿,下穿)或者平滑曲線的斜率來生成交易訊號。KAMA“聰明”之處在於,能根據市場趨勢變化速度自主調節,避免震盪行情中的虛假訊號,同時消除長期趨勢中的滯後。在牛市和熊市中自適應均線緊隨指數向上或向下變化,而在市場處於橫盤震盪時期,其變化明顯減慢,從而減少因噪聲產生的交易成本。

Perry Kaufman推薦的一組引數是KAMA(10,2,30),10是用於計算ER(Efficiency Ratio,效率係數)的週期天數;2和30分別是均線平滑採用的短週期和長週期天數。中間那個引數值越大,曲線越平滑,可以用在長期趨勢的分析,比如KAMA(10,5,30)比KAMA(10,2,30)更平滑。

策略計算:

ER是淨價格變動與總價格位移的比值,用來度量交易日價格的變化程度,計算很簡單。ER的範圍從0到1,ER的值越接近1說明市場趨勢越快,ER的值越接近0,表明市場噪聲越多。

ER = Change/Volatility
Change = ABS(Close - Close (10 periods ago))
Volatility = Sum10(ABS(Close - Prior Close))

根據ER以及兩個指數平滑(exponential moving average)常數,可以推匯出

SC(Smoothing Constant)= [ER x (fastest SC - slowest SC) + slowest]^2

其中,fatest SC=2/(2+1), slowest SC=2/(30+1)。SC表徵趨勢速度,ER變大的過程可以看成是趨勢由慢轉快的過程,SC與ER成正比例變化。值得指出的是,在此取平方是為了在市場橫盤階段更好地阻止趨勢均線的移動。

這樣,我們就可以得到:

Current KAMA = Prior KAMA + SC x (Price - Prior KAMA)

KAMA是自適應的,速度由平滑係數SC決定。

這裡寫圖片描述

策略實證

在進行實證前,囉嗦幾句。Stockchart網站上使用下面的方法來作為多空判據,我認為不妥,KAMA的本意是用來替代SMA以更好地擬合市場價格的走勢,現在策略中又使用SMA和KAMA曲線來判斷市場牛熊,在邏輯上說不通。而且,直接使用收盤價穿越KAMA來識別買點,也不是很有效,一般地,我們需要額外配置一個過濾器,這個過濾器基於市場價格的波動情況給出。

filter=alpha*STD20(KAMA)

其中,20日標準差=(1n1sumti=tn+1(damadama¯¯¯¯¯¯¯¯)2)1/2

下面是一個不好的策略的例子,不管是借鑑別人已有的策略,還是自己動手設計開發策略,都需要謹記好的策略背後是需要有合理的邏輯的,策略不是簡單的指標的疊加與拼湊

做多:
[KAMA(10,5,30) > Daily SMA(50,KAMA(10,5,30))]
AND [Daily Close crosses KAMA(10,2,30)]

做空:
[KAMA(10,5,30) < Daily SMA(50,KAMA(10,5,30))]
AND [KAMA(10,2,30) crosses Daily Close]

我們採用以下交易策略:

  • 入場規則:
連續兩個交易日的自使用均值變動>過濾器,即
做多:
kama_{t}-kama_{t-1} > filter
and kama_{t-1}-kama_{t-2} > filter

做空:
kama_{t}-kama_{t-1} < -filter
and kama_{t-1}-kama_{t-2} < -filter
  • 止損規則:
  • 退出規則:
多頭獲利了結:
kama_{t}-kama_{t-1} < -filter 確保做空前,多頭倉位已經平倉
or kama_{t}-kama_{t-2} < -filter
or kama_{t}-kama_{t-3} < -filter

空頭獲利了結:
kama_{t}-kama_{t-1} > filter 確保做多前,空頭倉位已經平倉
or kama_{t}-kama_{t-2} > filter
or kama_{t}-kama_{t-3} > filter
  • 交易費用:
  • 保證金比例:
  • 資金使用比例: