1. 程式人生 > >Lyndon的量化修煉之路——淺談趨勢指標取參方法

Lyndon的量化修煉之路——淺談趨勢指標取參方法

//文章內容為中州期貨上海分公司所有
//期市妖風大,小心被刮飛。本文不構成任何實質性建議,也不對任何依此進行的交易結果負責

目前市場多許多投資者仍然依託趨勢指標作為交易參考,其中,指標計算過程中給定的引數對交易結果具有相當大的影響,恰當的引數可以讓本來可謂之“平凡”的指標,擁有出彩的效果,有時甚至用“差之毫釐失之千里”來形容也一點不誇張。

但往往我們很難掌握估計合理引數的方法。因為通過調整引數來獲得超額收益,也意味著我們仍可能為此承受巨大的虧損,特別對於程式化交易而言,交易者必須無條件地相信計算機給出的交易訊號,直到發現平倉時賬戶中的銀子紮紮實實地減少了為止。

至少針對趨勢類交易策略而言,似乎沒有比利用歷史資料作為測試樣本

來取參更好的方法,而落實到具體操作方法,還有許多變數。我也希望在這裡簡單地分享一點自己的想法,化繁為簡,從頭出發,當然我不會對一些方法的原理過多闡述,而是儘可能地去分析不同方法的應用結果,以及一些後續改進的思路。

首先仍然需要確定一個測試物件:

交易品種 螺紋鋼主力連續合約
期初餘額 50,000元人民幣
保證金比例 8%
手續費 1%%
持倉手數(比例) 3手(約25%)
策略 雙均線策略
K線週期 30MIN

取參的方法有以下幾種:

  • 對稱窮舉
  • 非對稱窮舉
  • 損益補償
  • 平穩收益

限於時間和精力,除去第4種方法外,分別測試以月份和以周為計算區間的結果,且總時間跨度相同(7、8、9月);第4種僅以月為計算區間,時間跨度為2018年1月至10月。同時也為了簡化分析過程,突出方法本身,在此僅用收益率大小評價引數好壞,同時加快計算速度,引數的閾值限定為[5,25]。

對稱窮舉

對歷史資料使用引數窮舉,來得到最優引數組合的方法由來已久,而對稱則是通過測試相同區間內的策略表現結果,並將窮舉得到的引數應用於下一個相同時間區間內。

以月為測試區間的期末淨值為1.0261,收益率2.61%,年化10.44%;以周為單位的期末淨值0.7390,收益率-5.22%,年化-20.88%,淨值曲線如下圖所示: 在這裡插入圖片描述在這裡插入圖片描述窮舉樣本這一類的思路大約是希望在後一區間內延續之前的趨勢,如果計算的時點預期是位於一個趨勢的中間位置,這樣的方法會得到比較好的結果。但顯然我們往往難以捕捉到一個趨勢在什麼地方結束,甚至很難說它從什麼時候開始。

非對稱窮舉

正是由於實際操作中我們很難去判斷一個趨勢開始和結束的節點,因此與其去捕捉一個趨勢,不如去追隨一個趨勢,用數量較大的樣本去預測一個遠小於前者的時間區間,以期追隨一段趨勢的末端。

這裡用1月~6月作為樣本預測7月的引數,以此類推;用每週一向前60天作為樣本預測當週的引數。以月為測試區間的期末淨值為0.7540,收益率-24.60%,年化-98.40%;以周為測試區間的期末淨值為1.0498,收益率為4.98%,年化19.92%,淨值曲線如下圖所示: 在這裡插入圖片描述從右邊的曲線來看,由於相鄰兩組引數計算所使用的樣本有很大部分重疊,因此在同一趨勢下表現比對稱預測更加相近。

損益補償

前兩種方法有一個始終難以解決的問題,由於趨勢策略自身的特點,不同的引數組合的表現,與單次趨勢持續的時間長度有較為明顯的關聯,那麼去預測趨勢結束的節點變成了關乎策略最終效果的重要因素。

事實上,我們利用程式化交易的初衷,就是儘可能地拋棄主觀觀點對行情資料判斷的干擾。站在這個角度上,單純地利用資料結果進行分析,觀察樣品窮舉的淨值曲線,我們似乎發現一些端倪:不論在那種時間週期上,收益曲線可以近似地看作一個正弦(或餘弦)曲線,或者是其中的一部分。

所以,這裡給出一個假設:在期貨交易這個零和遊戲中,一個固定時段內相同策略的投資收益,多次重複後會趨近於0。照此邏輯,我們在窮舉的時候不僅不應該使用上一區間內得到的最優引數,反而應該使用較差的引數。在這裡窮舉的區間設定為對稱的。 在這裡插入圖片描述 以月為測試區間的期末淨值為0.9096,收益率-9.04%,年化-36.16%;以周為測試區間的期末淨值為0.9618,收益率為-3.82%,年化-15.28%,淨值曲線如下圖所示: 在這裡插入圖片描述 損益補償的方法也有自己的弊端,因為我們並不能確定當前計算時點位於大週期的哪一個位置,而用“最差組合”去預測下一週期則是默認了當前位於收益曲線的極值處,此時點越接近極值位置,預測的效果越好。

這個缺陷的主要原因來自於我設定了樣本和預測的區間相同,事實上並不必要這樣處理,我的同事也提出了一個可能可行的觀點:向前分析一個足夠長的範圍,去發現(或者擬定)一個正弦形態的收益曲線,從而確定當前時點所處的位置,從而確定補償的方法。但仍礙於有限的時間和精力,截止成文,尚未對這一方法進行測試。

平穩收益

在窮舉引數的過程中,我發現總有一些引數組合在相鄰的2個或以上的區間內,始終保持相同的收益水平,儘管行情趨勢在不斷變化,那麼是否在一定時間範圍內,存在一組引數可以使得策略能夠獲得較為穩定的表現。如果存在,在這一段平穩收益的末端,該引數組的收益水平可能會繼續延續。

因此設定,在前N個相同時間區間內(N>=2),找出正收益最平穩的引數組,用於下一個相同時間區間。如果不存在這N個區間內均為正收益的平穩引數組,則取最近單位區間內為正收益的引數組。

這裡用N個區間內所有引數組的收益中的最大最小值作為數值的寬度,用不同組合的收益率所處位置的差值來描述兩者是否接近,將該差值稱為偏差係數。同時,如果偏差係數在一個合理的範圍內出現多組平穩收益組合,則應取收益儘可能高的組合。因為在測試過程中發現,在這一範圍內樣本收益率與實際收益率呈正相關,在這次測試中,將偏差係數範圍確定為(0,0.15]。 在這裡插入圖片描述這裡測試N=2,即用1711和1712來求得平穩收益,並在1801上應用測試,以此類推。測試結果顯示期末淨值為1.1573,收益率15.73%,年化18.88%,淨值曲線如下: 在這裡插入圖片描述在這裡插入圖片描述在測試過程中發現,每當用於測算的樣本和預測的區間不處於同一趨勢範圍時,往往出現負收益。

小結

  • 由於指標本身跟隨趨勢的變化,對於指標引數的預測也應該判斷趨勢的延續長度和計算時點在趨勢中所處的位置;
  • 對稱窮舉適用於計算時點接近與趨勢中間位置,非對稱窮舉適用於計算時點右側可以大致延續左側的趨勢;
  • 損益補償需要判斷計算時點是否處於收益曲線的極值處,越接近極值處,預測效果越好;
  • 平穩收益需要避免計算時點處於趨勢轉變的節點,時點右側儘可能地可以被左側趨勢描述。

改進方向

  • 非對稱窮舉的時間範圍可以做一些合理化調整,在窮舉取參的過程中加入對趨勢的判斷;
  • 損益補償可以不採用對稱觀點;
  • 平穩收益可以對N值進行合理化調整;
  • 通過交叉判斷來避免計算時點恰好處於趨勢轉變節點的附近。