2017年4月24日 星期一

交易系統建構其之八-策略參數最佳化測試

  
  在青春的路口,曾經有那麼一條小路若隱若現,召喚著我。母親攔住我:「那條路走不得。」
 
  我不信。
 

  「我就是從那條路走過來的,你還有什麼不信?」
  「既然你能從那條路走過來,我為什麼不能?」
  「我不想讓你走彎路。」
  「但是我喜歡,而且我不怕。」
  母親心疼地看我好久,然後嘆口氣:「好吧,你這個倔強的孩子,那條路很難走,一路小心!」

  上路後,我發現母親沒有騙我,那的確是條彎路,我碰壁,摔跟頭,有時碰得頭破血流,但我不停地走,終於走過來了。

  坐下來喘息的時候,我看見一個朋友,自然很年輕,正站在我當年的路口,我忍不住喊:「那條路走不得。」

  她不信。

  「我母親就是從那條路走過來的,我也是。」
  「既然你們都可以從那條路走過來,我為什麼不能?」
  「我不想讓你走同樣的彎路。」
  「但是我喜歡。」
  我看了看她,看了看自己,然後笑了:「一路小心。」

            張愛玲-非走不可的彎路


  我非常推崇「交易.創造自己的聖杯」這本書,但我在初次閱讀這本書的時候,一直有個問題搞不懂:為什麼作者非常堅決地反對系統參數最佳化,甚至認為我們根本不應該做任何的最佳化程序呢?

  這個疑問一直到我做了詳細的參數比較,並且在市場中經歷疑惑痛苦掙扎恐懼,我才領悟到為什麼Van Tharp會反對任何的最佳化程序,因為最佳化根本是沒有用的!或者,說得更明白一點,系統交易者想要藉由最佳化程序來解決的那些問題,其實根本沒辦法靠最佳化來解決。

  但是我認為要讓一個系統交易者領悟到這點,就必須讓他好好地做最佳化程序做到吐,然後實際在交易的過程中感受到,即使你已經做了所能做的一切最佳化,想解決的問題還是會一直重複出現。

  最佳化程序,就是系統交易者非走不可的彎路。

  那麼,我們到底是想靠最佳化程序解決哪些問題呢?最常見的不外乎是抓不住某些行情,特別是錯過了某個進場機會,或是提早出場以致於沒吃到後續的獲利;也可能是人的天性驅使,想要找出績效最好的參數組合;更或者是實際使用後覺得系統績效不如測試結果,擔心系統失效,想要找尋更穩定的參數

  這些問題,每個人都會遇到,也幾乎每個人都會打開電腦,叫出回測軟體,瘋狂地修改系統參數,直到跑出來的歷史績效滿足我們對過去行情的需求為止。但惡夢總會一再重演,系統抓不到的行情會一直出現,甚至有時會讓我們一整年賺不到錢,我們只能一次又一次地修改系統參數,瘋狂回測,如此周而復始。

  的確,這些問題都很重要,但顯然最佳化程序並不是解答。

  真正的解答,在你自己身上:「你,真的了解你的交易系統嗎?」

  你知道你的系統是用什麼邏輯設計的,適用於什麼市況嗎?你知道你的系統什麼時候無法發揮,甚至會連續虧損嗎?你知道系統的最大連續虧損大概是多少嗎?

  讓我們舉個實際的例子:也就是前一篇文章用的多方順勢策略。

  架構:收盤價高於季線才啟動

  這個架構的目的是要尋找適合市場上漲的背景,我們已經測試過季線以上,市場價格走高的機率跟幅度都高於下跌。

  進場訊號:市場價格突破0.4倍的10天期ATR

  市場在沒有任何變化時,通常是隨機地盤整,但如果突然往某個方向不尋常地波動,可能就是有什麼事情發生了,幾乎所有的上漲趨勢開始時都會有這個現象,因此我們選擇價格波動突破作為進場訊號。

  出場訊號:310天期ATR的追蹤型停止點

  為了能夠及早認賠,並讓獲利持續發展,我們使用追蹤型停止點作為出場訊號,只要趨勢持續不反轉,我們就會一直留在場內,直到回檔的幅度讓觸發我們的出場點為止。

  這個策略很單純,邏輯也很合理,最重要的是:歷史測試也支持這一點,它確實可以賺錢。

  但你一定會有一個疑問:為什麼進場是用0.4倍?又為什麼追蹤型停止點要用3倍?會不會當我們稍微更動這些參數,就無法獲利了呢?

  這就是歷史測試可以回答的了,我們之所要執行最佳化程序,不是為了找出績效最好的參數,而是為了了解策略的穩定性。如果我們把進場範圍定義成0.2~2倍的十天期ATR(相當於十幾二十點到一兩百點),出場範圍定義為一倍到五倍的十天期ATR(相當於近百點到四五百點),這麼寬廣的範圍,幾乎可以涵蓋所有你想像得到的進出場方式,那我們將進出場參數各切80等分做成6400個參數組合,在2001-2010這十年之間,你猜這6400個不同參數組合的策略,有多少比例是賠錢的?

  答案是零個。所有的策略績效都是正的。

  但是這些策略各自有各自的績效分布,不可否認的,總有一些參數組合在某些時期特別優秀,但那純粹是因為它們的參數組合恰好迎合了那段期間的市場狀況而已。進場訊號如果比較敏感,那在市場穩定上漲時很吃香,可是當市場波動加劇時卻常常被巴;比較不敏感的進場訊號不容易被假突破騙去,但是相對的也必須損失前段行情的利潤。短的出場訊號適用於穩定的趨勢,但在波動劇烈時常被甩轎;長的出場訊號抓得住大行情,但是趨勢若不夠大時可能會把獲利通通回吐。這世界上根本不存在適用於每個市場狀況的參數,那我們這樣無止境地修改參數又有什麼意義?你該做的不是尋找最好的參數,而是確實了解自己的交易策略做得到什麼做不到什麼,並且在資金規模許可下多採用幾套不一樣的參數組合,如此一來不管市場的下一段趨勢長什麼樣子,你手上總會有些能抓住行情的策略,這比每次績效不如預期時就東改西改地實際多了。

  所以即使是完全相同的策略邏輯,也應該在穩定的範圍內套用參數矩陣的概念:選擇適合的參數區間,分成數等分,將參數交叉地羅織成參數矩陣,將1X1的單點交易策略擴張成NXN的交易面。這個交易策略矩陣不會有特別優秀的績效,但也不太會有特別糟糕的績效。


  之後我們將實際測試參數矩陣的概念,並且跟單參數組合的策略做比較,我們會更清楚穩定性比突出的績效更重要

沒有留言:

張貼留言